소스 검색

wxGUI: cleanup zoomback, enable/disable tool

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@38337 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 16 년 전
부모
커밋
0246fcec03
2개의 변경된 파일35개의 추가작업 그리고 20개의 파일을 삭제
  1. 20 20
      gui/wxpython/gui_modules/mapdisp_window.py
  2. 15 0
      gui/wxpython/gui_modules/toolbars.py

+ 20 - 20
gui/wxpython/gui_modules/mapdisp_window.py

@@ -2459,27 +2459,24 @@ class BufferedWindow(MapWindow, wx.Window):
         """!
         Zoom to previous extents in zoomhistory list
         """
-
-        zoom = []
+        zoom = list()
+        
         if len(self.zoomhistory) > 1:
             self.zoomhistory.pop()
-            zoom = self.zoomhistory[len(self.zoomhistory)-1]
-            # (n, s, e, w)
-        if zoom:
-            # zoom to selected region
-            self.Map.region['center_easting'] = zoom[3] + \
-                (zoom[2] - zoom[3]) / 2
-            self.Map.region['center_northing'] = zoom[1] + \
-                (zoom[0] - zoom[1]) / 2
-            self.Map.region["ewres"] = (zoom[2] - zoom[3]) / self.Map.width
-            self.Map.region["nsres"] = (zoom[0] - zoom[1]) / self.Map.height
-            self.Map.AlignExtentFromDisplay()
-
-            # update map
-            self.UpdateMap()
-
-            # update statusbar
-            self.parent.StatusbarUpdate()
+            zoom = self.zoomhistory[-1]
+        
+        if len(self.zoomhistory) < 2: # disable tool
+            self.parent.toolbars['map'].Enable('zoomback', enable = False)
+        
+        # zoom to selected region
+        self.Map.GetRegion(n = zoom[0], s = zoom[1],
+                           e = zoom[2], w = zoom[3],
+                           update = True)
+        # update map
+        self.UpdateMap()
+        
+        # update statusbar
+        self.parent.StatusbarUpdate()
 
     def ZoomHistory(self, n, s, e, w):
         """!
@@ -2499,7 +2496,10 @@ class BufferedWindow(MapWindow, wx.Window):
         else:
             Debug.msg(4, "BufferedWindow.ZoomHistory(): hist=%s" %
                       (self.zoomhistory))
-
+        
+        if len(self.zoomhistory) > 1:
+            self.parent.toolbars['map'].Enable('zoomback')
+        
         return removed
 
     def OnZoomToMap(self, event):

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

@@ -180,6 +180,8 @@ class MapToolbar(AbstractToolbar):
                                'bind' : self.mapdisplay.OnPointer }
         self.OnTool(None)
         
+        self.toolbar.EnableTool(self.zoomback, False)
+        
         self.FixSize(width = 90)
         
     def ToolbarData(self):
@@ -290,6 +292,19 @@ class MapToolbar(AbstractToolbar):
                      self.printmap):
             self.toolbar.EnableTool(tool, enabled)
 
+    def Enable(self, tool, enable = True):
+        """!Enable defined tool
+
+        @param tool name
+        @param enable True to enable otherwise disable tool
+        """
+        try:
+            id = getattr(self, tool)
+        except AttributeError:
+            return
+        
+        self.toolbar.EnableTool(self.zoomback, enable)
+
 class GRToolbar(AbstractToolbar):
     """
     Georectification Display toolbar