graphics/GraphicCommons.py
changeset 99 2b18a72dcaf0
parent 98 ec5d7af033d8
child 102 85875dcb7754
--- a/graphics/GraphicCommons.py	Wed Sep 19 15:20:59 2007 +0200
+++ b/graphics/GraphicCommons.py	Wed Sep 19 17:23:15 2007 +0200
@@ -24,7 +24,7 @@
 
 import wx
 from math import *
-from plcopen.structures import IsOfType
+from plcopen.structures import IsOfType, IsEndType
 
 #-------------------------------------------------------------------------------
 #                               Common constants
@@ -703,13 +703,25 @@
     def GetParentBlock(self):
         return self.ParentBlock
     
-    # Returns the connector name
+    # Returns the connector type
     def GetType(self):
+        if IsEndType(self.Type):
+            return self.Type
+        else:
+            return self.ParentBlock.GetConnectionResultType(self)
+    
+    # Returns the connector type
+    def GetConnectedType(self):
+        if IsEndType(self.Type):
+            return self.Type
+        elif len(self.Wires) == 1:
+            return self.Wires[0][0].GetOtherConnectedType(self.Wires[0][1])
         return self.Type
     
     # Returns if connector type is compatible with type given
     def IsCompatible(self, type):
-        return IsOfType(type, self.Type) or IsOfType(self.Type, type)
+        reference = self.GetType()
+        return IsOfType(type, reference) or IsOfType(reference, type)
     
     # Changes the connector name
     def SetType(self, type):
@@ -988,6 +1000,12 @@
             return self.EndConnected.GetType()
         return None
     
+    def GetOtherConnectedType(self, handle):
+        if handle == 0:
+            return self.GetEndConnectedType()
+        else:
+            return self.GetStartConnectedType()
+    
     def IsConnectedCompatible(self):
         if self.StartConnected:
             return self.StartConnected.IsCompatible(self.GetEndConnectedType())