浏览代码

wxGUI/nviz: attempt to fix error on Windows when switching to 3D for the second time due to different order of initialization steps

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@64473 15284696-431f-4ddb-bdfa-cd5b030d7da7
Anna Petrášová 10 年之前
父节点
当前提交
0b92802ef4
共有 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

@@ -105,6 +105,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")
@@ -392,6 +393,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)
@@ -406,6 +408,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"""