Explorar o código

wxGUI/modeler: first steps towards variables

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

+ 36 - 7
gui/wxpython/gui_modules/gmodeler.py

@@ -170,7 +170,8 @@ class Model(object):
                     parameterized = True
                     parameterized = True
                     break
                     break
             for p in task.get_options()['params']:
             for p in task.get_options()['params']:
-                if p.get('value', '') == '' and \
+                if p.get('required', 'no') != 'no' and \
+                        p.get('value', '') == '' and \
                         p.get('default', '') == '':
                         p.get('default', '') == '':
                     valid = False
                     valid = False
                 if p.get('parameterized', False):
                 if p.get('parameterized', False):
@@ -473,6 +474,10 @@ class ModelFrame(wx.Frame):
         
         
         dlg.Destroy()
         dlg.Destroy()
         
         
+    def OnModelVariables(self, event):
+        """!Manage (define) model variables"""
+        pass
+    
     def OnDeleteData(self, event):
     def OnDeleteData(self, event):
         """!Delete intermediate data"""
         """!Delete intermediate data"""
         rast, vect, rast3d, msg = self.model.GetIntermediateData()
         rast, vect, rast3d, msg = self.model.GetIntermediateData()
@@ -1087,7 +1092,8 @@ if __name__ == "__main__":
             # valid ?
             # valid ?
             valid = True
             valid = True
             for p in params['params']:
             for p in params['params']:
-                if p.get('value', '') == '' and \
+                if p.get('required', 'no') != 'no' and \
+                        p.get('value', '') == '' and \
                         p.get('default', '') == '':
                         p.get('default', '') == '':
                     valid = False
                     valid = False
                     break
                     break
@@ -1399,6 +1405,10 @@ class ModelAction(ogl.RectangleShape):
         """!Set action parameterized"""
         """!Set action parameterized"""
         self.isParameterized = isparameterized
         self.isParameterized = isparameterized
         self._setPen()
         self._setPen()
+
+    def IsParameterized(self):
+        """!Check if action is parameterized"""
+        return self.isParameterized
     
     
     def AddData(self, item):
     def AddData(self, item):
         """!Register new data item"""
         """!Register new data item"""
@@ -1482,9 +1492,11 @@ class ModelData(ogl.EllipseShape):
         
         
     def GetLog(self, string = True):
     def GetLog(self, string = True):
         """!Get logging info"""
         """!Get logging info"""
-        if self.rels['from']:
-            name = self.rels['from'].GetName()
-            return name + '=' + self.value + ' (' + self.prompt + ')'
+        name = list()
+        for rel in self.rels['from'] + self.rels['to']:
+            name.append(rel.GetName())
+        if name:
+            return '/'.join(name) + '=' + self.value + ' (' + self.prompt + ')'
         else:
         else:
             return _('unknown')
             return _('unknown')
 
 
@@ -1569,8 +1581,25 @@ class ModelData(ogl.EllipseShape):
         
         
     def _setPen(self):
     def _setPen(self):
         """!Set pen"""
         """!Set pen"""
-        pen = wx.Pen("black")
-        pen.SetWidth(1)
+        isParameterized = False
+        for rel in self.rels['from']:
+            if rel.GetTo().IsParameterized():
+                isParameterized = True
+                break
+        if not isParameterized:
+            for rel in self.rels['to']:
+                if rel.GetFrom().IsParameterized():
+                    isParameterized = True
+                    break
+
+        if isParameterized:
+            width = int(UserSettings.Get(group='modeler', key='action',
+                                         subkey=('width', 'parameterized')))
+        else:
+            width = int(UserSettings.Get(group='modeler', key='action',
+                                         subkey=('width', 'default')))
+        pen = self.GetPen()
+        pen.SetWidth(width)
         self.SetPen(pen)
         self.SetPen(pen)
         
         
     def _setText(self):
     def _setText(self):

+ 5 - 0
gui/wxpython/gui_modules/menuform.py

@@ -1545,6 +1545,11 @@ class cmdPanel(wx.Panel):
                     ifbb = wx.TextCtrl(parent = which_panel, id = wx.ID_ANY,
                     ifbb = wx.TextCtrl(parent = which_panel, id = wx.ID_ANY,
                                        style = wx.TE_MULTILINE,
                                        style = wx.TE_MULTILINE,
                                        size = (-1, 75))
                                        size = (-1, 75))
+                    if p.get('value', '') and os.path.isfile(p['value']):
+                        f = open(p['value'])
+                        ifbb.SetValue(''.join(f.readlines()))
+                        f.close()
+                    
                     ifbb.Bind(wx.EVT_TEXT, self.OnFileText)
                     ifbb.Bind(wx.EVT_TEXT, self.OnFileText)
                     which_sizer.Add(item = wx.StaticText(parent = which_panel, id = wx.ID_ANY,
                     which_sizer.Add(item = wx.StaticText(parent = which_panel, id = wx.ID_ANY,
                                                          label = _('or enter values interactively')),
                                                          label = _('or enter values interactively')),

+ 7 - 0
gui/wxpython/gui_modules/preferences.py

@@ -514,6 +514,13 @@ class Settings:
                     'lighting' : {
                     'lighting' : {
                         'color' : (255, 255, 255, 255), # white
                         'color' : (255, 255, 255, 255), # white
                     },
                     },
+                'lighting' : {
+                    'pos' : {
+                        'x' : 0.68,
+                        'y' : 0.68,
+                        'z' : 0.80,
+                        },
+                    },
                 },
                 },
             'modeler' : {
             'modeler' : {
                 'action' : {
                 'action' : {

+ 9 - 4
gui/wxpython/gui_modules/toolbars.py

@@ -307,6 +307,7 @@ class MapToolbar(AbstractToolbar):
                      self.zoomout,
                      self.zoomout,
                      self.zoomback,
                      self.zoomback,
                      self.zoommenu,
                      self.zoommenu,
+                     self.zoomextent,
                      self.analyze,
                      self.analyze,
                      self.dec,
                      self.dec,
                      self.printmap):
                      self.printmap):
@@ -1403,7 +1404,8 @@ class ModelToolbar(AbstractToolbar):
         self.run = wx.NewId()
         self.run = wx.NewId()
         self.validate = wx.NewId()
         self.validate = wx.NewId()
         self.settings = wx.NewId()
         self.settings = wx.NewId()
-        self.properties = wx.NewId()
+        # self.properties = wx.NewId()
+        self.variables = wx.NewId()
         self.quit = wx.NewId()
         self.quit = wx.NewId()
         
         
         # tool, label, bitmap, kind, shortHelp, longHelp, handler
         # tool, label, bitmap, kind, shortHelp, longHelp, handler
@@ -1433,9 +1435,12 @@ class ModelToolbar(AbstractToolbar):
             (self.relation, 'relation', Icons['modelRelation'].GetBitmap(),
             (self.relation, 'relation', Icons['modelRelation'].GetBitmap(),
              wx.ITEM_NORMAL, Icons['modelRelation'].GetLabel(), Icons['modelRelation'].GetDesc(),
              wx.ITEM_NORMAL, Icons['modelRelation'].GetLabel(), Icons['modelRelation'].GetDesc(),
              self.parent.OnDefineRelation),
              self.parent.OnDefineRelation),
-            (self.properties, "properties", Icons["modelProperties"].GetBitmap(),
-             wx.ITEM_NORMAL, Icons["modelProperties"].GetLabel(), Icons["modelProperties"].GetDesc(),
-             self.parent.OnModelProperties),
+            # (self.properties, "properties", Icons["modelProperties"].GetBitmap(),
+            #  wx.ITEM_NORMAL, Icons["modelProperties"].GetLabel(), Icons["modelProperties"].GetDesc(),
+            #  self.parent.OnModelProperties),
+            (self.variables, "variables", Icons["modelVariables"].GetBitmap(),
+             wx.ITEM_NORMAL, Icons["modelVariables"].GetLabel(), Icons["modelVariables"].GetDesc(),
+             self.parent.OnModelVariables),
             ('', '', '', '', '', '', ''),
             ('', '', '', '', '', '', ''),
             (self.run, 'run', Icons['modelRun'].GetBitmap(),
             (self.run, 'run', Icons['modelRun'].GetBitmap(),
              wx.ITEM_NORMAL, Icons['modelRun'].GetLabel(), Icons['modelRun'].GetDesc(),
              wx.ITEM_NORMAL, Icons['modelRun'].GetLabel(), Icons['modelRun'].GetDesc(),