Переглянути джерело

wxGUI/modeler: fix closing loops

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@42788 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 14 роки тому
батько
коміт
14406b86a0
1 змінених файлів з 23 додано та 28 видалено
  1. 23 28
      gui/wxpython/gui_modules/gmodeler.py

+ 23 - 28
gui/wxpython/gui_modules/gmodeler.py

@@ -1432,7 +1432,7 @@ if __name__ == "__main__":
         if points:
             for x, y in points:
                 rel.InsertLineControlPoint(point = wx.RealPoint(x, y))
-            
+        
         self._addEvent(rel)
         if isinstance(fromShape, ModelCondition): ### ???
             fromShape = toShape
@@ -1540,44 +1540,37 @@ if __name__ == "__main__":
             self.canvas.GetDiagram().RemoveShape(rel)
         loop.Clear()
         
-        for action in loop.GetItems():
-            rel = ModelRelation(parent, action)
-            dx = action.GetX() - parent.GetX()
-            dy = action.GetY() - parent.GetY()
+        for item in loop.GetItems():
+            rel = ModelRelation(parent, item)
+            dx = item.GetX() - parent.GetX()
+            dy = item.GetY() - parent.GetY()
             loop.AddRelation(rel)
-            self.AddLine(rel)
             if dx != 0:
-                rel.MakeLineControlPoints(0)
-                rel.InsertLineControlPoint(point = wx.RealPoint(parent.GetX(),
-                                                                parent.GetY() + parent.GetHeight() / 2))
-                rel.InsertLineControlPoint(point = wx.RealPoint(action.GetX(),
-                                                                action.GetY() - action.GetHeight() / 2))
-                rel.InsertLineControlPoint(point = wx.RealPoint(parent.GetX(),
-                                                                parent.GetY() + dy / 2))
-                rel.InsertLineControlPoint(point = wx.RealPoint(parent.GetX() + dx,
-                                                                parent.GetY() + dy / 2))
-            parent = action
+                rel.SetControlPoints(((parent.GetX(), parent.GetY() + dy / 2),
+                                     (parent.GetX() + dx, parent.GetY() + dy / 2)))
+            self.AddLine(rel)
+            parent = item
         
         # close loop
-        action = loop.GetItems()[-1]
-        rel = ModelRelation(action, loop)
+        item = loop.GetItems()[-1]
+        rel = ModelRelation(item, loop)
         loop.AddRelation(rel)
         self.AddLine(rel)
-        dx = (action.GetX() - loop.GetX()) + loop.GetWidth() / 2 + 50
-        dy = action.GetHeight() / 2 + 50
+        dx = (item.GetX() - loop.GetX()) + loop.GetWidth() / 2 + 50
+        dy = item.GetHeight() / 2 + 50
         rel.MakeLineControlPoints(0)
         rel.InsertLineControlPoint(point = wx.RealPoint(loop.GetX() - loop.GetWidth() / 2 ,
                                                         loop.GetY()))
-        rel.InsertLineControlPoint(point = wx.RealPoint(action.GetX(),
-                                                        action.GetY() + action.GetHeight() / 2))
-        rel.InsertLineControlPoint(point = wx.RealPoint(action.GetX(),
-                                                        action.GetY() + dy))
-        rel.InsertLineControlPoint(point = wx.RealPoint(action.GetX() - dx,
-                                                        action.GetY() + dy))
-        rel.InsertLineControlPoint(point = wx.RealPoint(action.GetX() - dx,
+        rel.InsertLineControlPoint(point = wx.RealPoint(item.GetX(),
+                                                        item.GetY() + item.GetHeight() / 2))
+        rel.InsertLineControlPoint(point = wx.RealPoint(item.GetX(),
+                                                        item.GetY() + dy))
+        rel.InsertLineControlPoint(point = wx.RealPoint(item.GetX() - dx,
+                                                        item.GetY() + dy))
+        rel.InsertLineControlPoint(point = wx.RealPoint(item.GetX() - dx,
                                                         loop.GetY()))
         
-        self.canvas.Refresh(False)
+        self.canvas.Refresh()
         
 class ModelCanvas(ogl.ShapeCanvas):
     """!Canvas where model is drawn"""
@@ -2201,6 +2194,8 @@ class ModelEvtHandler(ogl.ShapeEvtHandler):
             self._previousHandler.OnEndDragLeft(x, y, keys, attachment)
         
         shape = self.GetShape()
+        if isinstance(shape, ModelLoop):
+            self.frame.DefineLoop(shape)
         loop = shape.GetLoop()
         if loop:
             self.frame.DefineLoop(loop)