ソースを参照

wxGUI: 'extent' attribute added to 'display' tag (merge devbr6, https://trac.osgeo.org/grass/changeset/31641)

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@31642 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 17 年 前
コミット
cc977b4616
2 ファイル変更36 行追加10 行削除
  1. 11 1
      gui/wxpython/gui_modules/workspace.py
  2. 25 9
      gui/wxpython/wxgui.py

+ 11 - 1
gui/wxpython/gui_modules/workspace.py

@@ -66,6 +66,8 @@ class ProcessWorkspaceFile(HandlerBase):
         elif name == 'display':
             self.inDisplay = True
             self.displayIndex += 1
+
+            # window position and size
             posAttr = attrs.get('dim', '')
             if posAttr:
                 posVal = map(int, posAttr.split(','))
@@ -79,12 +81,20 @@ class ProcessWorkspaceFile(HandlerBase):
                 pos = None
                 size = None
 
+            extentAttr = attrs.get('extent', '')
+            if extentAttr:
+                # w, s, e, n
+                extent = map(float, extentAttr.split(','))
+            else:
+                extent = None
+
             self.displays.append({
                 "render"         : bool(int(attrs.get('render', "0"))),
                 "mode"           : int(attrs.get('mode', 0)),
                 "showCompExtent" : bool(int(attrs.get('showCompExtent', "0"))),
                 "pos"            : pos,
-                "size"           : size})
+                "size"           : size,
+                "extent"         : extent})
             
         elif name == 'group':
             self.groupName    = attrs.get('name', None)

+ 25 - 9
gui/wxpython/wxgui.py

@@ -627,8 +627,11 @@ class GMFrame(wx.Frame):
             #
             # start map displays first (list of layers can be empty)
             #
+            displayId = 0
             for display in gxwXml.displays:
                 mapdisplay = self.NewDisplay(show=False)
+                maptree = self.gm_cb.GetPage(displayId).maptree
+
                 # set windows properties
                 mapdisplay.SetProperties(render=display['render'],
                                          mode=display['mode'],
@@ -641,7 +644,14 @@ class GMFrame(wx.Frame):
                     if display['size']:
                         mapdisplay.SetSize(display['size'])
 
+                # set extent if defined
+                if display['extent']:
+                    w, s, e, n = display['extent']
+                    maptree.Map.region = maptree.Map.GetRegion(w=w, s=s, e=e, n=n)
+
                 mapdisplay.Show()
+
+                displayId += 1
     
             maptree = None 
             selected = [] # list of selected layers
@@ -899,21 +909,27 @@ class GMFrame(wx.Frame):
             # list of displays
             for page in range(0, self.gm_cb.GetPageCount()):
                 mapTree = self.gm_cb.GetPage(page).maptree
+                region = mapTree.Map.region
 
                 displayPos = mapTree.mapdisplay.GetPosition()
                 displaySize = mapTree.mapdisplay.GetSize()
 
                 file.write('%s<display render="%d" '
                            'mode="%d" showCompExtent="%d" '
-                           'dim="%d,%d,%d,%d">\n' % (' ' * self.indent,
-                                                     int(mapTree.mapdisplay.autoRender.IsChecked()),
-                                                     mapTree.mapdisplay.toggleStatus.GetSelection(),
-                                                     int(mapTree.mapdisplay.showRegion.IsChecked()),
-                                                     displayPos[0],
-                                                     displayPos[1],
-                                                     displaySize[0],
-                                                     displaySize[1]
-                                                     ))
+                           'dim="%d,%d,%d,%d" '
+                           'extent="%f,%f,%f,%f">\n' % (' ' * self.indent,
+                                                      int(mapTree.mapdisplay.autoRender.IsChecked()),
+                                                      mapTree.mapdisplay.toggleStatus.GetSelection(),
+                                                      int(mapTree.mapdisplay.showRegion.IsChecked()),
+                                                      displayPos[0],
+                                                      displayPos[1],
+                                                      displaySize[0],
+                                                      displaySize[1],
+                                                      region['w'],
+                                                      region['s'],
+                                                      region['e'],
+                                                      region['n']
+                                                      ))
 
                 # list of layers
                 item = mapTree.GetFirstChild(mapTree.root)[0]