graphics/SFC_Objects.py
changeset 112 317148fc1225
parent 110 29b6b70e1721
child 127 436268f31dae
equal deleted inserted replaced
111:0ec40799ba11 112:317148fc1225
    61     # Destructor
    61     # Destructor
    62     def __del__(self):
    62     def __del__(self):
    63         self.Input = None
    63         self.Input = None
    64         self.Output = None
    64         self.Output = None
    65         self.Action = None
    65         self.Action = None
       
    66     
       
    67     # Make a clone of this SFC_Step
       
    68     def Clone(self, id = None, pos = None):
       
    69         step = SFC_Step(self.Parent, self.Type, self.Name, id)
       
    70         step.SetSize(self.Size[0], self.Size[1])
       
    71         if pos is not None:
       
    72             step.SetPosition(pos.x, pos.y)
       
    73         step.Input = self.Input.Clone(step)
       
    74         step.Output = self.Output.Clone(step)
       
    75         step.Action = self.Action.Clone(step)
       
    76         return step
    66     
    77     
    67     # Delete this step by calling the appropriate method
    78     # Delete this step by calling the appropriate method
    68     def Delete(self):
    79     def Delete(self):
    69         self.Parent.DeleteStep(self)
    80         self.Parent.DeleteStep(self)
    70     
    81     
   460         self.Input = None
   471         self.Input = None
   461         self.Output = None
   472         self.Output = None
   462         if self.Type == "connection":
   473         if self.Type == "connection":
   463             self.Condition = None
   474             self.Condition = None
   464     
   475     
       
   476     # Make a clone of this SFC_Transition
       
   477     def Clone(self, id = None, pos = None):
       
   478         transition = SFC_Transition(self.Parent, self.Type, self.Condition, self.Priority, id)
       
   479         transition.SetSize(self.Size[0], self.Size[1])
       
   480         if pos is not None:
       
   481             transition.SetPosition(pos.x, pos.y)
       
   482         transition.Input = self.Input.Clone(transition)
       
   483         transition.Output = self.Output.Clone(transition)
       
   484         return transition
       
   485     
   465     # Forbids to change the transition size
   486     # Forbids to change the transition size
   466     def SetSize(self, width, height):
   487     def SetSize(self, width, height):
   467         if self.Parent.GetDrawingMode() == FREEDRAWING_MODE:
   488         if self.Parent.GetDrawingMode() == FREEDRAWING_MODE:
   468             Graphic_Element.SetSize(self, width, height)
   489             Graphic_Element.SetSize(self, width, height)
   469     
   490     
   796     
   817     
   797     # Destructor
   818     # Destructor
   798     def __del__(self):
   819     def __del__(self):
   799         self.Inputs = []
   820         self.Inputs = []
   800         self.Outputs = []
   821         self.Outputs = []
       
   822     
       
   823     # Make a clone of this SFC_Divergence
       
   824     def Clone(self, id = None, pos = None):
       
   825         divergence = SFC_Divergence(self.Parent, self.Type, max(len(self.Inputs), len(self.Outputs)), id)
       
   826         divergence.SetSize(self.Size[0], self.Size[1])
       
   827         if pos is not None:
       
   828             divergence.SetPosition(pos.x, pos.y)
       
   829         divergence.Inputs = [input.Clone(divergence) for input in self.Inputs]
       
   830         divergence.Outputs = [output.Clone(divergence) for output in self.Outputs]
       
   831         return divergence
   801     
   832     
   802     # Forbids to resize the divergence
   833     # Forbids to resize the divergence
   803     def Resize(self, x, y, width, height):
   834     def Resize(self, x, y, width, height):
   804         if self.Parent.GetDrawingMode() == FREEDRAWING_MODE:
   835         if self.Parent.GetDrawingMode() == FREEDRAWING_MODE:
   805             Graphic_Element.Resize(self, x, y, width, height)
   836             Graphic_Element.Resize(self, x, y, width, height)
  1171         
  1202         
  1172     # Destructor
  1203     # Destructor
  1173     def __del__(self):
  1204     def __del__(self):
  1174         self.Input = None
  1205         self.Input = None
  1175     
  1206     
       
  1207     # Make a clone of this SFC_Jump
       
  1208     def Clone(self, id = None, pos = None):
       
  1209         jump = SFC_Jump(self.Parent, self.Target, id)
       
  1210         jump.SetSize(self.Size[0], self.Size[1])
       
  1211         if pos is not None:
       
  1212             jump.SetPosition(pos.x, pos.y)
       
  1213         jump.Input = self.Input.Clone(jump)
       
  1214         return jump
       
  1215     
  1176     # Forbids to change the jump size
  1216     # Forbids to change the jump size
  1177     def SetSize(self, width, height):
  1217     def SetSize(self, width, height):
  1178         if self.Parent.GetDrawingMode() == FREEDRAWING_MODE:
  1218         if self.Parent.GetDrawingMode() == FREEDRAWING_MODE:
  1179             Graphic_Element.SetSize(self, width, height)
  1219             Graphic_Element.SetSize(self, width, height)
  1180     
  1220     
  1343         self.SetActions(actions)
  1383         self.SetActions(actions)
  1344     
  1384     
  1345     # Destructor
  1385     # Destructor
  1346     def __del__(self):
  1386     def __del__(self):
  1347         self.Input = None
  1387         self.Input = None
       
  1388     
       
  1389     # Make a clone of this SFC_ActionBlock
       
  1390     def Clone(self, id = None, pos = None):
       
  1391         actions = [action.copy() for action in self.Actions]
       
  1392         action_block = SFC_ActionBlock(self.Parent, actions, id)
       
  1393         action_block.SetSize(self.Size[0], self.Size[1])
       
  1394         if pos is not None:
       
  1395             action_block.SetPosition(pos.x, pos.y)
       
  1396         action_block.Input = self.Input.Clone(action_block)
       
  1397         return jump
  1348     
  1398     
  1349     # Returns the number of action lines
  1399     # Returns the number of action lines
  1350     def GetLineNumber(self):
  1400     def GetLineNumber(self):
  1351         return len(self.Actions)
  1401         return len(self.Actions)
  1352     
  1402