Sfoglia il codice sorgente

wxGUI/modeler: fix Normalize() fn + sort variables

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@58612 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 11 anni fa
parent
commit
5025863e59
1 ha cambiato i file con 14 aggiunte e 1 eliminazioni
  1. 14 1
      gui/wxpython/gmodeler/model.py

+ 14 - 1
gui/wxpython/gmodeler/model.py

@@ -139,6 +139,17 @@ class Model(object):
                     self.canvas.parent.DefineCondition(mo)
             
     def Normalize(self):
+        # check for inconsistecies
+        for idx in range(1, len(self.items)):
+            if not self.items[idx].GetBlock() and \
+                    isinstance(self.items[idx-1], ModelLoop):
+                # swap action not-in-block with previously defined
+                # loop
+                itemPrev = self.items[idx-1]
+                self.items[idx-1] = self.items[idx]
+                self.items[idx] = itemPrev
+        
+        # update ids
         iId = 1
         for item in self.items:
             item.SetId(iId)
@@ -1096,7 +1107,9 @@ class ModelAction(ModelObject, ogl.DividedShape):
                     variables.append(p.get('name', ''))
             else:
                 variables = self.parent.GetVariables()
-            for variable in variables:
+
+            # order variables by length
+            for variable in sorted(variables, key=len, reverse=True):
                 pattern= re.compile('%' + variable)
                 value = ''
                 if substitute and 'variables' in substitute: