Explorar o código

wxGUI: fix command layer (unnamed parameter)

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@53815 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa %!s(int64=12) %!d(string=hai) anos
pai
achega
3fd59b2f68

+ 4 - 4
gui/wxpython/core/render.py

@@ -151,10 +151,10 @@ class Layer(object):
                                       quiet = True,
                                       **self.cmd[1])
                 
-            if msg:
-                sys.stderr.write(_("Command '%s' failed\n") % self.GetCmd(string = True))
-                sys.stderr.write(_("Details: %s\n") % msg)
             if ret != 0:
+                sys.stderr.write(_("Command '%s' failed\n") % self.GetCmd(string = True))
+                if msg:
+                    sys.stderr.write(_("Details: %s\n") % msg)
                 raise GException()
         
         except GException:
@@ -277,7 +277,7 @@ class Layer(object):
             for c in cmd:
                 self.cmd.append(utils.CmdToTuple(c))
         else:
-            self.cmd  = utils.CmdToTuple(cmd)
+            self.cmd = utils.CmdToTuple(cmd)
         Debug.msg(3, "Layer.SetCmd(): cmd='%s'" % self.GetCmd(string = True))
         
         # for re-rendering

+ 8 - 6
gui/wxpython/core/utils.py

@@ -493,7 +493,7 @@ def CmdToTuple(cmd):
     """!Convert command list to tuple for gcmd.RunCommand()"""
     if len(cmd) < 1:
         return None
-        
+    
     dcmd = {}
     for item in cmd[1:]:
         if '=' in item: # params
@@ -503,13 +503,15 @@ def CmdToTuple(cmd):
             flag = item[2:]
             if flag in ('verbose', 'quiet', 'overwrite'):
                 dcmd[str(flag)] = True
-        else: # -> flags
+        elif len(item) == 2 and item[0] == '-': # -> flags
             if 'flags' not in dcmd:
                 dcmd['flags'] = ''
-            dcmd['flags'] += item.replace('-', '')
-                
-    return (cmd[0],
-            dcmd)
+            dcmd['flags'] += item[1]
+        else: # unnamed parameter
+            module = gtask.parse_interface(cmd[0])
+            dcmd[module.define_first()] = item
+    
+    return (cmd[0], dcmd)
 
 def PathJoin(*args):
     """!Check path created by os.path.join"""

+ 3 - 5
gui/wxpython/lmgr/layertree.py

@@ -1221,14 +1221,13 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
         ctrl = event.GetEventObject().GetId()
         cmd = event.GetString()
         
+        # find layer tree item by ctrl
         layer = self.GetFirstVisibleItem()
-
         while layer and layer.IsOk():
             if self.GetPyData(layer)[0]['ctrl'] == ctrl:
                 break
-            
             layer = self.GetNextVisible(layer)
-
+        
         # change parameters for item in layers list in render.Map
         self.ChangeLayer(layer)
         
@@ -1629,8 +1628,7 @@ class LayerTree(treemixin.DragAndDrop, CT.CustomTreeCtrl):
             self.mapdisplay.GetToolbar('vdigit').UpdateListOfLayers(updateTool = True)
         
         # redraw map if auto-rendering is enabled
-        self.rerender = True
-        self.reorder = True
+        self.rerender = self.reorder = True
         
     def OnCloseWindow(self, event):
         pass

+ 4 - 0
lib/python/task.py

@@ -73,10 +73,14 @@ class grassTask:
         
     def define_first(self):
         """!Define first parameter
+
+        @return name of first parameter
         """
         if len(self.params) > 0:
             self.firstParam = self.params[0]['name']
         
+        return self.firstParam
+    
     def get_error_msg(self):
         """!Get error message ('' for no error)
         """