graphics/SFC_Objects.py
changeset 537 a31bf722aa82
parent 478 dc403c47af54
child 553 1e1b632c7a41
--- a/graphics/SFC_Objects.py	Thu Apr 21 15:15:57 2011 +0200
+++ b/graphics/SFC_Objects.py	Thu Apr 21 16:06:33 2011 +0200
@@ -261,22 +261,17 @@
                 return self.Output
             if self.Action and name == self.Action.GetName():
                 return self.Action
+        connectors = []
         # Test input connector if it exists
         if self.Input:
-            input_pos = self.Input.GetRelPosition()
-            if position.x == self.Pos.x + input_pos.x and position.y == self.Pos.y + input_pos.y:
-                return self.Input
+            connectors.append(self.Input)
         # Test output connector if it exists
         if self.Output:
-            output_pos = self.Output.GetRelPosition()
-            if position.x == self.Pos.x + output_pos.x and position.y == self.Pos.y + output_pos.y:
-                return self.Output
+            connectors.append(self.Output)
         # Test action connector if it exists
         if self.Action:
-            action_pos = self.Action.GetRelPosition()
-            if position.x == self.Pos.x + action_pos.x and position.y == self.Pos.y + action_pos.y:
-                return self.Action
-        return None
+            connectors.append(self.Action)
+        return self.FindNearestConnector(position, connectors)
     
     # Returns action step connector 
     def GetActionConnector(self):
@@ -759,20 +754,10 @@
                 return self.Output
             if self.Type == "connection" and name == self.Condition.GetName():
                 return self.Condition
-        # Test input connector
-        input_pos = self.Input.GetRelPosition()
-        if position.x == self.Pos.x + input_pos.x and position.y == self.Pos.y + input_pos.y:
-            return self.Input
-        # Test output connector
-        output_pos = self.Output.GetRelPosition()
-        if position.x == self.Pos.x + output_pos.x and position.y == self.Pos.y + output_pos.y:
-            return self.Output
+        connectors = [self.Input, self.Output]
         if self.Type == "connection":
-            # Test condition connector
-            condition_pos = self.Condition.GetRelPosition()
-            if position.x == self.Pos.x + condition_pos.x and position.y == self.Pos.y + condition_pos.y:
-                return self.Condition
-        return None
+            connectors.append(self.Connection)
+        return self.FindNearestConnector(position, connectors)
     
     # Returns the transition condition connector
     def GetConditionConnector(self):
@@ -1228,17 +1213,7 @@
             for output in self.Outputs:
                 if name == output.GetName():
                     return output
-        # Test input connector
-        for input in self.Inputs:
-            input_pos = input.GetPosition(False)
-            if position.x == input_pos.x and position.y == input_pos.y:
-                return input
-        # Test output connector
-        for output in self.Outputs:
-            output_pos = output.GetPosition(False)
-            if position.x == output_pos.x and position.y == output_pos.y:
-                return output
-        return None
+        return self.FindNearestConnector(position, self.Inputs + self.Outputs)
     
     # Returns input and output divergence connectors 
     def GetConnectors(self):