Преглед на файлове

wxNviz: fix bug made when nviz toolbar was moved

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@47940 15284696-431f-4ddb-bdfa-cd5b030d7da7
Anna Petrášová преди 13 години
родител
ревизия
58fea97ef7

+ 2 - 2
gui/wxpython/gui_modules/gdialogs.py

@@ -496,7 +496,7 @@ class DecorationDialog(wx.Dialog):
             resize.SetToolTipString(_("Click and drag on the map display to set legend"
                                         " size and position and then press OK"))
             resize.SetName('resize')
-            if self.parent.toolbars['nviz']:
+            if self.parent.IsPaneShown('3d'):
                 resize.Disable()
             box.Add(item=resize, proportion=0, flag=wx.ALIGN_CENTRE|wx.ALL, border=5)
             sizer.Add(item=box, proportion=0,
@@ -626,7 +626,7 @@ class DecorationDialog(wx.Dialog):
         self.parent.Map.GetOverlay(self.ovlId).SetActive(self.chkbox.IsChecked())
 
         # update map
-        if self.parent.MapWindow.parent.toolbars['nviz']:
+        if self.parent.IsPaneShown('3d'):
             self.parent.MapWindow.UpdateOverlays()
         
         self.parent.MapWindow.UpdateMap()

+ 6 - 6
gui/wxpython/gui_modules/layertree.py

@@ -290,7 +290,7 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
                 self.popupMenu.Enable(self.popupID['opacity'], False)
                 self.popupMenu.Enable(self.popupID['properties'], False)
             
-            if ltype in ('raster', 'vector', '3d-raster') and self.mapdisplay.toolbars['nviz']:
+            if ltype in ('raster', 'vector', '3d-raster') and self.lmgr.IsPaneShown('toolbarNviz'):
                 self.popupMenu.Append(self.popupID['nviz'], _("3D view properties"))
                 self.Bind (wx.EVT_MENU, self.OnNvizProperties, id = self.popupID['nviz'])
             
@@ -1081,7 +1081,7 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
         #
         # nviz
         #
-        if self.mapdisplay.toolbars['nviz'] and \
+        if self.lmgr.IsPaneShown('toolbarNviz') and \
                 self.GetPyData(item) is not None:
             # nviz - load/unload data layer
             mapLayer = self.GetPyData(item)[0]['maplayer']
@@ -1131,7 +1131,7 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
         #
         # nviz
         #
-        if self.mapdisplay.toolbars['nviz'] and \
+        if self.lmgr.IsPaneShown('toolbarNviz') and \
                 self.GetPyData(item) is not None:
             # nviz - load/unload data layer
             mapLayer = self.GetPyData(item)[0]['maplayer']
@@ -1242,7 +1242,7 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
                                                     render = render)
         
         # update nviz tools
-        if self.mapdisplay.toolbars['nviz'] and \
+        if self.lmgr.IsPaneShown('toolbarNviz') and \
                 self.GetPyData(self.layer_selected) is not None:
             if self.layer_selected.IsChecked():
                 # update Nviz tool window
@@ -1282,7 +1282,7 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
             self.OnDrop(dropTarget, self._dragItem)
         elif dropTarget == None:
             self.OnDrop(dropTarget, self._dragItem)
-
+            
     def OnDrop(self, dropTarget, dragItem):
         # save everthing associated with item to drag
         try:
@@ -1454,7 +1454,7 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
                                                     render = render)
         
         # update nviz session        
-        if self.mapdisplay.toolbars['nviz'] and dcmd:
+        if self.lmgr.IsPaneShown('toolbarNviz') and dcmd:
             mapLayer = self.GetPyData(layer)[0]['maplayer']
             mapWin = self.mapdisplay.MapWindow
             if len(mapLayer.GetCmd()) > 0:

+ 8 - 6
gui/wxpython/gui_modules/mapdisp.py

@@ -429,6 +429,7 @@ class MapFrame(wx.Frame):
     
     def RemoveNviz(self):
         """!Restore 2D view"""
+        self.toolbars['map'].RemoveTool(self.toolbars['map'].rotate)
         # update status bar
         self.statusbarWin['toggle'].Enable(True)
         self.statusbar.SetStatusText(_("Please wait, unloading data..."), 0)
@@ -513,7 +514,9 @@ class MapFrame(wx.Frame):
     
     def IsPaneShown(self, name):
         """!Check if pane (toolbar, mapWindow ...) of given name is currently shown"""
-        return self._mgr.GetPane(name).IsShown()
+        if self._mgr.GetPane(name).IsOk():
+            return self._mgr.GetPane(name).IsShown()
+        return False
     
     def _initDisplay(self):
         """!Initialize map display, set dimensions and map region
@@ -1126,7 +1129,7 @@ class MapFrame(wx.Frame):
     def SaveToFile(self, event):
         """!Save map to image
         """
-        if self.toolbars['nviz']:
+        if self.IsPaneShown('3d'):
             filetype = "PPM file (*.ppm)|*.ppm|TIF file (*.tif)|*.tif"
             ltype = [{ 'ext' : 'ppm', 'type' : 'ppm' },
                      { 'ext' : 'tif', 'type' : 'tif' }]
@@ -1207,9 +1210,8 @@ class MapFrame(wx.Frame):
             maplayer = self.toolbars['vdigit'].GetLayer()
             if maplayer:
                 self.toolbars['vdigit'].OnExit()
-        
-        if self.toolbars['nviz']:
-            self.toolbars['nviz'].OnExit()
+        if self.IsPaneShown('3d'):
+            self.RemoveNviz()
         
         if not self._layerManager:
             self.Destroy()
@@ -1690,7 +1692,7 @@ class MapFrame(wx.Frame):
         decmenu.AppendItem(AddScale)
         self.Bind(wx.EVT_MENU, self.OnAddBarscale, AddScale)
         # temporary
-        if self.toolbars['nviz']:
+        if self.IsPaneShown('3d'):
             AddScale.Enable(False)
             AddArrow = wx.MenuItem(decmenu, wx.ID_ANY, _("Add north arrow"))
             AddArrow.SetBitmap(icons["addBarscale"].GetBitmap(self.iconsize))

+ 0 - 1
gui/wxpython/gui_modules/toolbars.py

@@ -371,7 +371,6 @@ class MapToolbar(AbstractToolbar):
         if self.parent.toolbars['vdigit']:
             self.parent.toolbars['vdigit'].OnExit()
         if self.parent.GetLayerManager().IsPaneShown('toolbarNviz'):
-            self.RemoveTool(self.rotate)
             self.parent.RemoveNviz()
         
     def Enable2D(self, enabled):

+ 3 - 1
gui/wxpython/wxgui.py

@@ -240,7 +240,9 @@ class GMFrame(wx.Frame):
     
     def IsPaneShown(self, name):
         """!Check if pane (toolbar, ...) of given name is currently shown"""
-        return self._auimgr.GetPane(name).IsShown()
+        if self._auimgr.GetPane(name).IsOk():
+            return self._auimgr.GetPane(name).IsShown()
+        return False
     
     def _createNoteBook(self):
         """!Creates notebook widgets"""