Преглед изворни кода

wxGUI/nviz: attempt to fix error on Windows when switching to 3D for the second time due to different order of initialization steps (merge from trunk, https://trac.osgeo.org/grass/changeset/64473)

git-svn-id: https://svn.osgeo.org/grass/grass/branches/releasebranch_7_0@64474 15284696-431f-4ddb-bdfa-cd5b030d7da7
Anna Petrášová пре 10 година
родитељ
комит
04309aa9bb
2 измењених фајлова са 6 додато и 1 уклоњено
  1. 5 0
      gui/wxpython/mapdisp/frame.py
  2. 1 1
      gui/wxpython/nviz/tools.py

+ 5 - 0
gui/wxpython/mapdisp/frame.py

@@ -102,6 +102,7 @@ class MapFrame(SingleMapFrame):
         # Emitted when starting (switching to) 3D mode.
         # Parameter firstTime specifies if 3D was already actived.
         self.starting3dMode = Signal("MapFrame.starting3dMode")
+        self.starting3dModeSetInitialMaps = Signal("MapFrame.starting3dMode")
 
         # Emitted when ending (switching from) 3D mode.
         self.ending3dMode = Signal("MapFrame.ending3dMode")
@@ -382,6 +383,7 @@ class MapFrame(SingleMapFrame):
             self.MapWindow3D.overlayActivated.connect(self._activateOverlay)
             self.MapWindow3D.overlayHidden.connect(self._hideOverlay)
             self.legend.overlayChanged.connect(self.MapWindow3D.UpdateOverlays)
+            self.starting3dModeSetInitialMaps.emit()
         else:
             self._switchMapWindow(self.MapWindow3D)
             os.environ['GRASS_REGION'] = self.Map.SetRegion(windres = True, windres3 = True)
@@ -396,6 +398,9 @@ class MapFrame(SingleMapFrame):
             self.starting3dMode.emit(firstTime=False)
 
             self.MapWindow3D.ResetViewHistory()
+            # explicitly load layers so that we can call SetInitialMaps after that
+            self.MapWindow3D.LoadDataLayers()
+            self.starting3dModeSetInitialMaps.emit()
 
         self._giface.updateMap.disconnect(self.MapWindow2D.UpdateMap)
         self._giface.updateMap.connect(self.MapWindow3D.UpdateMap)

+ 1 - 1
gui/wxpython/nviz/tools.py

@@ -114,6 +114,7 @@ class NvizToolWindow(FN.FlatNotebook):
         # bindings
         self.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.OnPageChanged)
         self.Bind(wx.EVT_SIZE, self.OnSize)
+        self.mapDisplay.starting3dModeSetInitialMaps.connect(self.SetInitialMaps)
         
         self.mapWindow.GetAnimation().animationFinished.connect(self.OnAnimationFinished)
         self.mapWindow.GetAnimation().animationUpdateIndex.connect(self.OnAnimationUpdateIndex)
@@ -124,7 +125,6 @@ class NvizToolWindow(FN.FlatNotebook):
         wx.CallAfter(self.SetPage, 'view')
         wx.CallAfter(self.UpdateScrolling, (self.foldpanelData, self.foldpanelAppear,
                                             self.foldpanelAnalysis))       
-        wx.CallAfter(self.SetInitialMaps)
         
     def SetInitialMaps(self):
         """Set initial raster and vector map"""