--- 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: