Fixed move of LD_PowerRail and SFC_Divergence connectors using Right button
authorLaurent Bessard
Fri, 14 Jun 2013 10:52:08 +0200
changeset 1258 441f31474b50
parent 1257 4b7ef7ea318f
child 1259 8350222a81c3
Fixed move of LD_PowerRail and SFC_Divergence connectors using Right button
graphics/GraphicCommons.py
graphics/LD_Objects.py
graphics/SFC_Objects.py
--- a/graphics/GraphicCommons.py	Fri Jun 14 10:49:14 2013 +0200
+++ b/graphics/GraphicCommons.py	Fri Jun 14 10:52:08 2013 +0200
@@ -504,7 +504,7 @@
         # If the cursor is dragging and the element have been clicked
         if event.Dragging() and self.oldPos:
             # Calculate the movement of cursor
-            pos = event.GetLogicalPosition(dc)
+            pos = GetScaledEventPosition(event, dc, scaling)
             movex = pos.x - self.oldPos.x
             movey = pos.y - self.oldPos.y
             # If movement is greater than MIN_MOVE then a dragging is initiated
--- a/graphics/LD_Objects.py	Fri Jun 14 10:49:14 2013 +0200
+++ b/graphics/LD_Objects.py	Fri Jun 14 10:52:08 2013 +0200
@@ -120,8 +120,10 @@
         self.RefreshBoundingBox()
     
     # Returns the block minimum size
-    def GetMinSize(self):
-        return LD_POWERRAIL_WIDTH, self.Extensions[0] + self.Extensions[1]
+    def GetMinSize(self, default=False):
+        height = (LD_LINE_SIZE * (len(self.Connectors) - 1)
+                  if default else 0)
+        return LD_POWERRAIL_WIDTH, height + self.Extensions[0] + self.Extensions[1]
     
     # Add a connector or a blank to this power rail at the last place
     def AddConnector(self):
@@ -279,7 +281,7 @@
     # Method called when a RightUp event have been generated
     def OnRightUp(self, event, dc, scaling):
         handle_type, handle = self.Handle
-        if handle_type == HANDLE_CONNECTOR:
+        if handle_type == HANDLE_CONNECTOR and self.Dragging and self.oldPos:
             wires = handle.GetWires()
             if len(wires) == 1:
                 if handle == wires[0][0].StartConnected:
--- a/graphics/SFC_Objects.py	Fri Jun 14 10:49:14 2013 +0200
+++ b/graphics/SFC_Objects.py	Fri Jun 14 10:52:08 2013 +0200
@@ -1360,11 +1360,25 @@
     
     # Method called when a LeftDown event have been generated
     def OnLeftDown(self, event, dc, scaling):
-        connector = None
-        if event.ControlDown():
-            pos = GetScaledEventPosition(event, dc, scaling)
-            # Test if a connector have been handled
-            connector = self.TestConnector(pos, exclude=False)
+        self.RealConnectors = {"Inputs":[],"Outputs":[]}
+        for input in self.Inputs:
+            position = input.GetRelPosition()
+            self.RealConnectors["Inputs"].append(float(position.x)/float(self.Size[0]))
+        for output in self.Outputs:
+            position = output.GetRelPosition()
+            self.RealConnectors["Outputs"].append(float(position.x)/float(self.Size[0]))
+        Graphic_Element.OnLeftDown(self, event, dc, scaling)
+    
+    # Method called when a LeftUp event have been generated
+    def OnLeftUp(self, event, dc, scaling):
+        Graphic_Element.OnLeftUp(self, event, dc, scaling)
+        self.RealConnectors = None
+    
+    # Method called when a RightDown event have been generated
+    def OnRightDown(self, event, dc, scaling):
+        pos = GetScaledEventPosition(event, dc, scaling)
+        # Test if a connector have been handled
+        connector = self.TestConnector(pos, exclude=False)
         if connector:
             self.Handle = (HANDLE_CONNECTOR, connector)
             wx.CallAfter(self.Parent.SetCurrentCursor, 1)
@@ -1372,17 +1386,11 @@
             # Initializes the last position
             self.oldPos = GetScaledEventPosition(event, dc, scaling)
         else:
-            self.RealConnectors = {"Inputs":[],"Outputs":[]}
-            for input in self.Inputs:
-                position = input.GetRelPosition()
-                self.RealConnectors["Inputs"].append(float(position.x)/float(self.Size[0]))
-            for output in self.Outputs:
-                position = output.GetRelPosition()
-                self.RealConnectors["Outputs"].append(float(position.x)/float(self.Size[0]))
-            Graphic_Element.OnLeftDown(self, event, dc, scaling)
-    
-    # Method called when a LeftUp event have been generated
-    def OnLeftUp(self, event, dc, scaling):
+            Graphic_Element.OnRightDown(self, event, dc, scaling)
+    
+    # Method called when a RightUp event have been generated
+    def OnRightUp(self, event, dc, scaling):
+        pos = GetScaledEventPosition(event, dc, scaling)
         handle_type, handle = self.Handle
         if handle_type == HANDLE_CONNECTOR and self.Dragging and self.oldPos:
             wires = handle.GetWires()
@@ -1394,21 +1402,17 @@
                         block.RefreshInputModel()
                     else:
                         block.RefreshOutputModel()
-        Graphic_Element.OnLeftUp(self, event, dc, scaling)
-        self.RealConnectors = None
-    
-    # Method called when a RightUp event have been generated
-    def OnRightUp(self, event, dc, scaling):
-        pos = GetScaledEventPosition(event, dc, scaling)
-        # Popup the menu with special items for a block and a connector if one is handled
-        connector = self.TestConnector(pos, exclude=False)
-        if connector:
-            self.Handle = (HANDLE_CONNECTOR, connector)
-            self.Parent.PopupDivergenceMenu(True)
-        else:
-            # Popup the divergence menu without delete branch
-            self.Parent.PopupDivergenceMenu(False)
-    
+            Graphic_Element.OnRightUp(self, event, dc, scaling)
+        else:
+            # Popup the menu with special items for a block and a connector if one is handled
+            connector = self.TestConnector(pos, exclude=False)
+            if connector:
+                self.Handle = (HANDLE_CONNECTOR, connector)
+                self.Parent.PopupDivergenceMenu(True)
+            else:
+                # Popup the divergence menu without delete branch
+                self.Parent.PopupDivergenceMenu(False)
+        
     # Refreshes the divergence state according to move defined and handle selected
     def ProcessDragging(self, movex, movey, event, scaling):
         handle_type, handle = self.Handle