瀏覽代碼

wxGUI/wx.psmap: enabled to pan with middle mouse button

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@50265 15284696-431f-4ddb-bdfa-cd5b030d7da7
Anna Petrášová 13 年之前
父節點
當前提交
f97f76c89e
共有 1 個文件被更改,包括 19 次插入7 次删除
  1. 19 7
      gui/wxpython/psmap/frame.py

+ 19 - 7
gui/wxpython/psmap/frame.py

@@ -1165,6 +1165,9 @@ class PsMapBufferedWindow(wx.Window):
                     self.parent.SetStatusText('', 0)
                     self.SetCursor(self.cursors["default"])
                     
+        elif event.MiddleDown():
+            self.mouse['begin'] = event.GetPosition()
+            
         elif event.LeftDown():
             self.mouse['begin'] = event.GetPosition()
             self.begin = self.mouse['begin']
@@ -1200,7 +1203,11 @@ class PsMapBufferedWindow(wx.Window):
                     self.pdcTmp.RemoveId(self.idResizeBoxTmp)
                     self.Refresh()           
                     
-                    
+        elif event.Dragging() and event.MiddleIsDown():
+            self.mouse['end'] = event.GetPosition()
+            self.Pan(begin = self.mouse['begin'], end = self.mouse['end'])
+            self.mouse['begin'] = event.GetPosition()
+            
         elif event.Dragging() and event.LeftIsDown():
             #draw box when zooming, creating map 
             if self.mouse['use'] in ('zoomin', 'zoomout', 'addMap'):
@@ -1211,12 +1218,10 @@ class PsMapBufferedWindow(wx.Window):
                 self.Draw(pen = self.pen['box'], brush = self.brush['box'], pdc = self.pdcTmp, drawid = self.idZoomBoxTmp,
                           pdctype = 'rect', bb = r)
                 
-            # panning                
+            # panning
             if self.mouse["use"] == 'pan':
                 self.mouse['end'] = event.GetPosition()
-                view = self.mouse['begin'][0] - self.mouse['end'][0], self.mouse['begin'][1] - self.mouse['end'][1]
-                zoomFactor = 1
-                self.Zoom(zoomFactor, view)
+                self.Pan(begin = self.mouse['begin'], end = self.mouse['end'])
                 self.mouse['begin'] = event.GetPosition()
                 
             #move object
@@ -1363,8 +1368,15 @@ class PsMapBufferedWindow(wx.Window):
                 type = self.instruction[self.dragId].type
                 itemCall[type](**itemArg[type])
 
-                
-                
+    def Pan(self, begin, end):
+        """!Move canvas while dragging.
+        
+        @param begin x,y coordinates of first point
+        @param end x,y coordinates of second point
+        """
+        view = begin[0] - end[0], begin[1] - end[1]
+        zoomFactor = 1
+        self.Zoom(zoomFactor, view)
                 
     def RecalculatePosition(self, ids):
         for id in ids: