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

svn_grass at osgeo.org svn_grass at osgeo.org
Sun May 9 14:27:41 EDT 2010


Author: martinl
Date: 2010-05-09 14:27:39 -0400 (Sun, 09 May 2010)
New Revision: 42195

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


Modified: grass/trunk/gui/wxpython/gui_modules/gmodeler.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/gmodeler.py	2010-05-09 17:13:11 UTC (rev 42194)
+++ grass/trunk/gui/wxpython/gui_modules/gmodeler.py	2010-05-09 18:27:39 UTC (rev 42195)
@@ -340,6 +340,11 @@
         
         if self.modelFile:
             self.SetTitle(self.baseTitle + " - " +  os.path.basename(self.modelFile) + '*')
+
+    def OnRemoveItem(self, event):
+        """!Remove shape
+        """
+        self.GetCanvas().RemoveSelected()
         
     def OnCloseWindow(self, event):
         """!Close window"""
@@ -790,10 +795,6 @@
         
         return errList
     
-    def OnRemoveItem(self, event):
-        """!Remove item from model"""
-        pass
-
     def OnDefineRelation(self, event):
         """!Define relation between data and action items"""
         self.canvas.SetCursor(self.cursors["cross"])
@@ -1035,6 +1036,7 @@
 class ModelCanvas(ogl.ShapeCanvas):
     """!Canvas where model is drawn"""
     def __init__(self, parent):
+        self.parent = parent
         ogl.OGLInitialize()
         ogl.ShapeCanvas.__init__(self, parent)
         
@@ -1044,6 +1046,28 @@
         
         self.SetScrollbars(20, 20, 1000/20, 1000/20)
         
+        self.Bind(wx.EVT_CHAR,  self.OnChar)
+        
+    def OnChar(self, event):
+        """!Key pressed"""
+        kc = event.GetKeyCode()
+        diagram = self.GetDiagram()
+        if kc == wx.WXK_DELETE:
+            self.RemoveSelected()
+
+    def RemoveSelected(self):
+        """!Remove selected shapes"""
+        self.parent.ModelChanged()
+        
+        diagram = self.GetDiagram()
+        for shape in diagram.GetShapeList():
+            if not shape.Selected():
+                continue
+            shape.Select(False)
+            diagram.RemoveShape(shape)
+        
+        self.Refresh()
+        
 class ModelAction(ogl.RectangleShape):
     """!Action class (GRASS module)"""
     def __init__(self, parent, x, y, cmd = None, width = None, height = None):
@@ -1484,22 +1508,9 @@
 
     def OnRemove(self, event):
         """!Remove shape
-
-        @todo complex remove
         """
-        self.frame.ModelChanged()
-        shapes = [self.GetShape()]
-        for shape in shapes:
-            if isinstance(shape, ModelAction):
-                pass
-            if isinstance(shape, ModelData):
-                pass
-
-            shape.Select(False)            
-            self.frame.canvas.GetDiagram().RemoveShape(shape)
+        self.frame.GetCanvas().RemoveSelected()
         
-        self.frame.canvas.Refresh()
-        
 class ModelSearchDialog(wx.Dialog):
     def __init__(self, parent, id = wx.ID_ANY, title = _("Select GRASS module"),
                  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, **kwargs):



More information about the grass-commit mailing list