graphics/FBD_Objects.py
changeset 112 317148fc1225
parent 103 26c10e28ee3a
child 118 0c53d6a36013
--- a/graphics/FBD_Objects.py	Fri Oct 19 17:08:46 2007 +0200
+++ b/graphics/FBD_Objects.py	Wed Oct 24 15:59:46 2007 +0200
@@ -52,6 +52,16 @@
         self.Pen = wx.BLACK_PEN
         self.SetType(type, extension, inputs, connectors)
     
+    # Make a clone of this FBD_Block
+    def Clone(self, id = None, name = "", pos = None):
+        block = FBD_Block(self.Parent, self.Type, name, id, self.Extension)
+        block.SetSize(self.Size[0], self.Size[1])
+        if pos is not None:
+            block.SetPosition(pos.x, pos.y)
+        block.Inputs = [input.Clone(block) for input in self.Inputs]
+        block.Outputs = [output.Clone(block) for output in self.Outputs]
+        return block
+    
     # Destructor
     def __del__(self):
         self.Inputs = []
@@ -137,7 +147,7 @@
         return None
     
     def GetInputTypes(self):
-        return tuple([input.GetType() for input in self.Inputs])
+        return tuple([input.GetType(True) for input in self.Inputs])
     
     def SetOutputValues(self, values):
         for output in self.Outputs:
@@ -351,6 +361,16 @@
         self.RefreshNameSize()
         self.SetType(type, value_type)
     
+    # Make a clone of this FBD_Variable
+    def Clone(self, id = None, pos = None):
+        variable = FBD_Variable(self.Parent, self.Type, self.Name, self.ValueType, id)
+        variable.SetSize(self.Size[0], self.Size[1])
+        if pos is not None:
+            variable.SetPosition(pos.x, pos.y)
+        variable.Input = self.Input.Clone(variable)
+        variable.Output = self.Output.Clone(variable)
+        return variable
+    
     # Destructor
     def __del__(self):
         self.Input = None
@@ -541,6 +561,15 @@
     def __del__(self):
         self.Connector = None
     
+    # Make a clone of this FBD_Connector
+    def Clone(self, id = None, pos = None):
+        connection = FBD_Connector(self.Parent, self.Type, self.Name, id)
+        connection.SetSize(self.Size[0], self.Size[1])
+        if pos is not None:
+            connection.SetPosition(pos.x, pos.y)
+        connection.Connector = self.Connector.Clone(connection)
+        return connection
+    
     # Unconnect connector
     def Clean(self):
         if self.Connector: