浏览代码

wxGUI mapwin: fix show/hide vdigit toolbar (#578)

Tomas Zigo 5 年之前
父节点
当前提交
a31d3204a9
共有 2 个文件被更改,包括 11 次插入6 次删除
  1. 9 0
      gui/wxpython/mapdisp/frame.py
  2. 2 6
      gui/wxpython/vdigit/toolbars.py

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

@@ -314,6 +314,7 @@ class MapFrame(SingleMapFrame):
                 parent=self, toolSwitcher=self._toolSwitcher,
                 MapWindow=self.MapWindow, digitClass=VDigit,
                 giface=self._giface)
+            self.toolbars['vdigit'].quitDigitizer.connect(self.QuitVDigit)
         self.MapWindowVDigit.SetToolbar(self.toolbars['vdigit'])
 
         self._mgr.AddPane(self.toolbars['vdigit'],
@@ -1579,3 +1580,11 @@ class MapFrame(SingleMapFrame):
 
         self.RemoveToolbar('rdigit', destroy=True)
         self.rdigit = None
+
+    def QuitVDigit(self):
+        """Quit VDigit"""
+        if not self.IsStandalone():
+            # disable the toolbar
+            self.RemoveToolbar("vdigit", destroy=True)
+        else:
+            self.Close()

+ 2 - 6
gui/wxpython/vdigit/toolbars.py

@@ -49,6 +49,7 @@ class VDigitToolbar(BaseToolbar):
         self.editingStarted = Signal("VDigitToolbar.editingStarted")
         self.editingStopped = Signal("VDigitToolbar.editingStopped")
         self.editingBgMap = Signal("VDigitToolbar.editingBgMap")
+        self.quitDigitizer = Signal("VDigitToolbar.quitDigitizer")
         layerTree = self._giface.GetLayerTree()
         if layerTree:
             self.editingStarted.connect(layerTree.StartEditing)
@@ -423,12 +424,7 @@ class VDigitToolbar(BaseToolbar):
         self.parent.GetMapToolbar().SelectDefault()
         self.MapWindow.polycoords = []
 
-        # TODO: replace this by binding wx event in parent (or use signals...)
-        if not self.parent.IsStandalone():
-            # disable the toolbar
-            self.parent.RemoveToolbar("vdigit")
-        else:
-            self.parent.Close()
+        self.quitDigitizer.emit()
 
     def OnMoveVertex(self, event):
         """Move line vertex"""