[GRASS-SVN] r31517 - in grass/trunk/gui/wxpython: . gui_modules

svn_grass at osgeo.org svn_grass at osgeo.org
Sat May 24 17:03:23 EDT 2008


Author: martinl
Date: 2008-05-24 17:03:23 -0400 (Sat, 24 May 2008)
New Revision: 31517

Modified:
   grass/trunk/gui/wxpython/gui_modules/menuform.py
   grass/trunk/gui/wxpython/wxgui.py
Log:
wxGUI: check for input/map parameter type when calling module for menu, trac #177) [merge devbr r31516]

Modified: grass/trunk/gui/wxpython/gui_modules/menuform.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/menuform.py	2008-05-24 21:00:30 UTC (rev 31516)
+++ grass/trunk/gui/wxpython/gui_modules/menuform.py	2008-05-24 21:03:23 UTC (rev 31517)
@@ -1348,6 +1348,7 @@
     """
     def __init__(self, parent=-1):
         self.parent = parent
+        self.grass_task = None
 
     def ParseCommand(self, cmd, gmpath=None, completed=None, parentframe=-1, show=True, modal=False):
         """
@@ -1435,6 +1436,31 @@
         # print >> sys.stderr, time.time() - start
         return cmd
 
+    def GetCommandInputMapParamKey(self, cmd):
+        """Get parameter key for input raster/vector map
+        
+        @param cmd module name
+        
+        @return parameter key
+        @return None on failure
+        """
+        # parse the interface decription
+        if not self.grass_task:
+            self.grass_task = grassTask()
+            handler = processTask(self.grass_task)
+            xml.sax.parseString(getInterfaceDescription(cmd), handler)
+
+            for p in self.grass_task.params:
+                if p.get('name', '') in ('input', 'map'):
+                    age = p.get('age', '')
+                    prompt = p.get('prompt', '')
+                    element = p.get('element', '') 
+                    if age == 'old' and \
+                            element in ('cell', 'grid3', 'vector') and \
+                            prompt in ('raster', '3d-raster', 'vector'):
+                        return p.get('name', None)
+        return None
+
 class StaticWrapText(wx.StaticText):
     """
     A Static Text field that wraps its text to fit its width, enlarging its height if necessary.

Modified: grass/trunk/gui/wxpython/wxgui.py
===================================================================
--- grass/trunk/gui/wxpython/wxgui.py	2008-05-24 21:00:30 UTC (rev 31516)
+++ grass/trunk/gui/wxpython/wxgui.py	2008-05-24 21:03:23 UTC (rev 31517)
@@ -432,10 +432,11 @@
         except:
             layer = None
         if layer and len(cmdlist) == 1: # only if no paramaters given
-            if type == 'raster' and cmdlist[0][0] == 'r' and cmdlist[0][1] != '3':
-                cmdlist.append(name) # TODO map/input=
-            elif type == 'vector' and cmdlist[0][0] == 'v':
-                cmdlist.append(name) # TODO map/input=
+            if (type == 'raster' and cmdlist[0][0] == 'r' and cmdlist[0][1] != '3') or \
+                    (type == 'vector' and cmdlist[0][0] == 'v'):
+                input = menuform.GUI().GetCommandInputMapParamKey(cmdlist[0])
+                if input:
+                    cmdlist.append("%s=%s" % (input, name))
 
         return cmdlist
 



More information about the grass-commit mailing list