浏览代码

wxGUI Georectifier: fix Mac issues and zoom

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@45074 15284696-431f-4ddb-bdfa-cd5b030d7da7
Markus Metz 14 年之前
父节点
当前提交
ee13dfb5f4
共有 2 个文件被更改,包括 23 次插入31 次删除
  1. 12 10
      gui/wxpython/gui_modules/gcpmanager.py
  2. 11 21
      gui/wxpython/gui_modules/gcpmapdisp.py

+ 12 - 10
gui/wxpython/gui_modules/gcpmanager.py

@@ -1676,7 +1676,7 @@ class GCP(MapFrame, wx.Frame, ColumnSorterMixin):
         self.bkw_rmserror = round((sumsq_bkw_err/GCPcount)**0.5,4)
         self.list.ResizeColumns()
 
-    def GetNewExtend(self, region, map = None):
+    def GetNewExtent(self, region, map = None):
 
         coord_file = utils.GetTempfile()
         newreg = { 'n' : 0.0, 's' : 0.0, 'e' : 0.0, 'w' : 0.0,}
@@ -1844,8 +1844,9 @@ class GCP(MapFrame, wx.Frame, ColumnSorterMixin):
             self.UpdateActive(self.TgtMapWindow)
 
         # get new N, S, E, W for target
-        newreg = self.GetNewExtend(self.SrcMap.region, 'source')
-        self.AdjustMap(newreg)
+        newreg = self.GetNewExtent(self.SrcMap.region, 'source')
+        if newreg:
+            self.AdjustMap(newreg)
 
     def OnZoomToTarget(self, event):
         """!Set source map window to match extents of target map window
@@ -1857,8 +1858,9 @@ class GCP(MapFrame, wx.Frame, ColumnSorterMixin):
             self.UpdateActive(self.SrcMapWindow)
 
         # get new N, S, E, W for target
-        newreg = self.GetNewExtend(self.TgtMap.region, 'target')
-        self.AdjustMap(newreg)
+        newreg = self.GetNewExtent(self.TgtMap.region, 'target')
+        if newreg:
+            self.AdjustMap(newreg)
 
     def OnZoomMenuGCP(self, event):
         """!Popup Zoom menu
@@ -1886,11 +1888,11 @@ class GCP(MapFrame, wx.Frame, ColumnSorterMixin):
         if self.toolbars['gcpdisp']:
             srcwidth, srcheight = self.SrcMapWindow.GetSize()
             tgtwidth, tgtheight = self.TgtMapWindow.GetSize()
-            tgtwidth = (srcwidth + tgtwidth) / 2
+            srcwidth = (srcwidth + tgtwidth) / 2
             self._mgr.GetPane("target").Hide()
             self._mgr.Update()
-            self._mgr.GetPane("source").BestSize((tgtwidth, srcheight))
-            self._mgr.GetPane("target").BestSize((tgtwidth, tgtheight))
+            self._mgr.GetPane("source").BestSize((srcwidth, srcheight))
+            self._mgr.GetPane("target").BestSize((srcwidth, tgtheight))
             if self.show_target:
                 self._mgr.GetPane("target").Show()
             self._mgr.Update()
@@ -2739,18 +2741,18 @@ class GrSettingsDialog(wx.Dialog):
                 if self.parent.show_target == False:
                     self.parent.show_target = True
                     self.parent._mgr.GetPane("target").Show()
+                    self.parent._mgr.Update()
                     self.parent.toolbars['gcpdisp'].Enable('zoommenu', enable = True)
                     self.parent.activemap.Enable()
                     self.parent.TgtMapWindow.ZoomToMap(layers = self.parent.TgtMap.GetListOfLayers())
-                    self.parent._mgr.Update()
             else: # tgt_map == ''
                 if self.parent.show_target == True:
                     self.parent.show_target = False
                     self.parent._mgr.GetPane("target").Hide()
+                    self.parent._mgr.Update()
                     self.parent.activemap.SetSelection(0)
                     self.parent.activemap.Enable(False)
                     self.parent.toolbars['gcpdisp'].Enable('zoommenu', enable = False)
-                    self.parent._mgr.Update()
 
         self.parent.UpdateColours(srcrender, srcrenderVector, tgtrender, tgtrenderVector)
 

+ 11 - 21
gui/wxpython/gui_modules/gcpmapdisp.py

@@ -23,6 +23,7 @@ import glob
 import math
 import tempfile
 import copy
+import platform
 
 import globalvar
 if not os.getenv("GRASS_WXBUNDLED"):
@@ -296,17 +297,18 @@ class MapFrame(wx.Frame):
 
         srcwidth, srcheight = self.SrcMapWindow.GetSize()
         tgtwidth, tgtheight = self.TgtMapWindow.GetSize()
-        tgtwidth = (srcwidth + tgtwidth) / 2
+        srcwidth = (srcwidth + tgtwidth) / 2
         self._mgr.GetPane("target").Hide()
         self._mgr.Update()
-        self._mgr.GetPane("source").BestSize((tgtwidth, tgtheight))
-        self._mgr.GetPane("target").BestSize((tgtwidth, tgtheight))
+        self._mgr.GetPane("source").BestSize((srcwidth, srcheight))
+        self._mgr.GetPane("target").BestSize((srcwidth, srcheight))
         if self.show_target:
             self._mgr.GetPane("target").Show()
         else:
             self.activemap.Enable(False)
-        # called by GCPWizard
-        #self._mgr.Update()
+        # needed by Mac OS, does not harm on Linux, breaks display on Windows
+        if platform.system() != 'Windows':
+            self._mgr.Update()
 
         #
         # Init print module and classes
@@ -321,20 +323,8 @@ class MapFrame(wx.Frame):
         # set active map
         self.MapWindow = self.SrcMapWindow
         self.Map = self.SrcMap
-        #
-        # Init zoom history for TgtMapWindow
-        #
-        self.TgtMapWindow.ZoomHistory(self.Map.region['n'],
-                                   self.Map.region['s'],
-                                   self.Map.region['e'],
-                                   self.Map.region['w'])
-        #
-        # Init zoom history
-        #
-        self.MapWindow.ZoomHistory(self.Map.region['n'],
-                                   self.Map.region['s'],
-                                   self.Map.region['e'],
-                                   self.Map.region['w'])
+        
+        # do not init zoom history here, that happens when zooming to map(s)
 
         #
         # Re-use dialogs
@@ -456,8 +446,8 @@ class MapFrame(wx.Frame):
             self.Map.DeleteLayer(layer)
 
         self.SrcMapWindow.UpdateMap(render=True)
-        self.TgtMapWindow.UpdateMap(render=True)
-        self._mgr.Update()
+        if self.show_target:
+            self.TgtMapWindow.UpdateMap(render=True)
         
         # update statusbar
         self.StatusbarUpdate()