[GRASS-SVN] r41875 - grass/trunk/gui/wxpython/gui_modules

svn_grass at osgeo.org svn_grass at osgeo.org
Wed Apr 14 19:41:11 EDT 2010


Author: martinl
Date: 2010-04-14 19:41:10 -0400 (Wed, 14 Apr 2010)
New Revision: 41875

Modified:
   grass/trunk/gui/wxpython/gui_modules/gmodeler.py
Log:
wxGUI/modeler: implement ModelRelation class


Modified: grass/trunk/gui/wxpython/gui_modules/gmodeler.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/gmodeler.py	2010-04-14 23:12:29 UTC (rev 41874)
+++ grass/trunk/gui/wxpython/gui_modules/gmodeler.py	2010-04-14 23:41:10 UTC (rev 41875)
@@ -10,6 +10,7 @@
  - ModelSearchDialog
  - ModelData
  - ModelDataDialog
+ - ModelRelation
  - ProcessModelFile
  - WriteModelFile
 
@@ -734,7 +735,7 @@
                     self.canvas.diagram.AddShape(data)
                     data.Show(True)
                     
-                    self._addEvent(data)                    
+                    self._addEvent(data)
                     self.data.append(data)
                     
                     if p.get('age', 'old') == 'old':
@@ -767,12 +768,13 @@
         @param fromShape from
         @param toShape to
         """
-        line = ogl.LineShape()
+        line = ModelRelation()
         line.SetCanvas(self)
         line.SetPen(wx.BLACK_PEN)
         line.SetBrush(wx.BLACK_BRUSH)
         line.AddArrow(ogl.ARROW_ARROW)
         line.MakeLineControlPoints(2)
+        self._addEvent(line)
         
         fromShape.AddLine(line, toShape)
         
@@ -1193,9 +1195,10 @@
                 s.Select(False, dc)
                 
         canvas.Refresh(False)
+
+        if hasattr(shape, "GetLog"):
+            self.log.SetStatusText(shape.GetLog(), 0)
         
-        self.log.SetStatusText(shape.GetLog(), 0)
-        
     def OnLeftDoubleClick(self, x, y, keys = 0, attachment = 0):
         """!Left mouse button pressed (double-click) -> show properties"""
         self.OnProperties()
@@ -1228,15 +1231,14 @@
             self.popupID2 = wx.NewId()
             self.popupID3 = wx.NewId()
 
+        shape = self.GetShape()
         popupMenu = wx.Menu()
         
         popupMenu.Append(self.popupID1, text=_('Remove'))
         self.frame.Bind(wx.EVT_MENU, self.OnRemove, id = self.popupID1)
         
-        popupMenu.AppendSeparator()
-
-        shape = self.GetShape()
         if isinstance(shape, ModelData) and '@' not in shape.GetValue():
+            popupMenu.AppendSeparator()
             popupMenu.Append(self.popupID3, text=_('Intermediate'),
                              kind = wx.ITEM_CHECK)
             if self.GetShape().IsIntermediate():
@@ -1244,10 +1246,11 @@
             
             self.frame.Bind(wx.EVT_MENU, self.OnIntermediate, id = self.popupID3)
             
+        if isinstance(shape, ModelData) or \
+                isinstance(shape, ModelAction):
             popupMenu.AppendSeparator()
-        
-        popupMenu.Append(self.popupID2, text=_('Properties'))
-        self.frame.Bind(wx.EVT_MENU, self.OnProperties, id = self.popupID2)
+            popupMenu.Append(self.popupID2, text=_('Properties'))
+            self.frame.Bind(wx.EVT_MENU, self.OnProperties, id = self.popupID2)
 
         self.frame.PopupMenu(popupMenu)
         popupMenu.Destroy()
@@ -1262,8 +1265,13 @@
     def OnRemove(self, event):
         """!Remove shape"""
         self.frame.ModelChanged()
-        shape = self.GetShape()
-        self.frame.canvas.GetDiagram().RemoveShape(shape)
+        shapes = [self.GetShape()]
+        if isinstance(shape, ModelAction):
+            pass
+        if isinstance(shape, ModelData):
+            pass
+        for shape in shapes:
+            self.frame.canvas.GetDiagram().RemoveShape(shape)
         self.frame.canvas.Refresh()
         
 class ModelSearchDialog(wx.Dialog):
@@ -1429,6 +1437,11 @@
         self.search.SetValue('')
         self.cmd_prompt.OnCmdErase(None)
 
+class ModelRelation(ogl.LineShape):
+    """!Data - action relation"""
+    def __init__(self):
+        ogl.LineShape.__init__(self)
+    
 class ProcessModelFile:
     """!Process GRASS model file (gxm)"""
     def __init__(self, tree):



More information about the grass-commit mailing list