--- a/SFCViewer.py Mon Jul 09 11:10:14 2007 +0200
+++ b/SFCViewer.py Tue Jul 10 09:52:53 2007 +0200
@@ -767,78 +767,230 @@
#-------------------------------------------------------------------------------
def DeleteStep(self, step):
- step_connectors = step.GetConnectors()
- if not step.GetInitial() or not step_connectors["output"]:
- previous = step.GetPreviousConnector()
- if previous:
- previous_block = previous.GetParentBlock()
- else:
- previous_block = None
- next = step.GetNextConnector()
- if next:
- next_block = next.GetParentBlock()
- else:
- next_block = None
- if isinstance(next_block, SFC_Transition):
- self.RemoveTransition(next_block)
+ if self.GetDrawingMode() == FREEDRAWING_MODE:
+ Viewer.DeleteStep(self, step)
+ else:
+ step_connectors = step.GetConnectors()
+ if not step.GetInitial() or not step_connectors["output"]:
+ previous = step.GetPreviousConnector()
+ if previous:
+ previous_block = previous.GetParentBlock()
+ else:
+ previous_block = None
next = step.GetNextConnector()
if next:
next_block = next.GetParentBlock()
else:
next_block = None
- elif isinstance(previous_block, SFC_Transition):
- self.RemoveTransition(previous_block)
- previous = step.GetPreviousConnector()
- if previous:
- previous_block = previous.GetParentBlock()
- else:
- previous_block = None
- wire = self.RemoveStep(step)
- self.SelectedElement = None
- if next_block:
- if isinstance(next_block, SFC_Divergence) and next_block.GetType() == SIMULTANEOUS_CONVERGENCE and isinstance(previous_block, SFC_Divergence) and previous_block.GetType() == SIMULTANEOUS_DIVERGENCE:
- wire.Clean()
- self.Wires.remove(wire)
- self.Elements.remove(wire)
- next_block.RemoveBranch(next)
- if next_block.GetBranchNumber() < 2:
- self.DeleteDivergence(next_block)
+ if isinstance(next_block, SFC_Transition):
+ self.RemoveTransition(next_block)
+ next = step.GetNextConnector()
+ if next:
+ next_block = next.GetParentBlock()
else:
- next_block.RefreshModel()
- previous_block.RemoveBranch(previous)
- if previous_block.GetBranchNumber() < 2:
- self.DeleteDivergence(previous_block)
+ next_block = None
+ elif isinstance(previous_block, SFC_Transition):
+ self.RemoveTransition(previous_block)
+ previous = step.GetPreviousConnector()
+ if previous:
+ previous_block = previous.GetParentBlock()
else:
- previous_block.RefreshModel()
- else:
- pos = previous.GetPosition(False)
- next_pos = next.GetPosition(False)
- wire_size = GetWireSize(previous_block)
- previous_block.RefreshOutputPosition((0, pos.y + wire_size - next_pos.y))
- wire.SetPoints([wxPoint(pos.x, pos.y + wire_size), wxPoint(pos.x, pos.y)])
- if isinstance(next_block, SFC_Divergence):
- next_block.RefreshPosition()
- previous_block.RefreshOutputModel(True)
- else:
- if isinstance(previous_block, SFC_Step):
- previous_block.RemoveOutput()
- self.RefreshStepModel(previous_block)
- elif isinstance(previous_block, SFC_Divergence):
- if previous_block.GetType() in [SELECTION_CONVERGENCE, SIMULTANEOUS_CONVERGENCE]:
- self.DeleteDivergence(previous_block)
- else:
+ previous_block = None
+ wire = self.RemoveStep(step)
+ self.SelectedElement = None
+ if next_block:
+ if isinstance(next_block, SFC_Divergence) and next_block.GetType() == SIMULTANEOUS_CONVERGENCE and isinstance(previous_block, SFC_Divergence) and previous_block.GetType() == SIMULTANEOUS_DIVERGENCE:
+ wire.Clean()
+ self.Wires.remove(wire)
+ self.Elements.remove(wire)
+ next_block.RemoveBranch(next)
+ if next_block.GetBranchNumber() < 2:
+ self.DeleteDivergence(next_block)
+ else:
+ next_block.RefreshModel()
previous_block.RemoveBranch(previous)
if previous_block.GetBranchNumber() < 2:
self.DeleteDivergence(previous_block)
else:
- self.RefreshDivergenceModel(previous_block)
+ previous_block.RefreshModel()
+ else:
+ pos = previous.GetPosition(False)
+ next_pos = next.GetPosition(False)
+ wire_size = GetWireSize(previous_block)
+ previous_block.RefreshOutputPosition((0, pos.y + wire_size - next_pos.y))
+ wire.SetPoints([wxPoint(pos.x, pos.y + wire_size), wxPoint(pos.x, pos.y)])
+ if isinstance(next_block, SFC_Divergence):
+ next_block.RefreshPosition()
+ previous_block.RefreshOutputModel(True)
+ else:
+ if isinstance(previous_block, SFC_Step):
+ previous_block.RemoveOutput()
+ self.RefreshStepModel(previous_block)
+ elif isinstance(previous_block, SFC_Divergence):
+ if previous_block.GetType() in [SELECTION_CONVERGENCE, SIMULTANEOUS_CONVERGENCE]:
+ self.DeleteDivergence(previous_block)
+ else:
+ previous_block.RemoveBranch(previous)
+ if previous_block.GetBranchNumber() < 2:
+ self.DeleteDivergence(previous_block)
+ else:
+ self.RefreshDivergenceModel(previous_block)
def DeleteTransition(self, transition):
- previous = transition.GetPreviousConnector()
- previous_block = previous.GetParentBlock()
- next = transition.GetNextConnector()
- next_block = next.GetParentBlock()
- if isinstance(previous_block, SFC_Divergence) and previous_block.GetType() == SELECTION_DIVERGENCE and isinstance(next_block, SFC_Divergence) and next_block.GetType() == SELECTION_CONVERGENCE:
+ if self.GetDrawingMode() == FREEDRAWING_MODE:
+ Viewer.DeleteTransition(self, transition)
+ else:
+ previous = transition.GetPreviousConnector()
+ previous_block = previous.GetParentBlock()
+ next = transition.GetNextConnector()
+ next_block = next.GetParentBlock()
+ if isinstance(previous_block, SFC_Divergence) and previous_block.GetType() == SELECTION_DIVERGENCE and isinstance(next_block, SFC_Divergence) and next_block.GetType() == SELECTION_CONVERGENCE:
+ wires = previous.GetWires()
+ if len(wires) != 1:
+ return
+ wire = wires[0][0]
+ wire.Clean()
+ self.Wires.remove(wire)
+ self.Elements.remove(wire)
+ wires = next.GetWires()
+ if len(wires) != 1:
+ return
+ wire = wires[0][0]
+ wire.Clean()
+ self.Wires.remove(wire)
+ self.Elements.remove(wire)
+ transition.Clean()
+ self.Blocks.remove(transition)
+ self.Elements.remove(transition)
+ self.Controler.RemoveCurrentElementEditingInstance(transition.GetId())
+ previous_block.RemoveBranch(previous)
+ if previous_block.GetBranchNumber() < 2:
+ self.DeleteDivergence(previous_block)
+ else:
+ self.RefreshDivergenceModel(previous_block)
+ next_block.RemoveBranch(next)
+ if next_block.GetBranchNumber() < 2:
+ self.DeleteDivergence(next_block)
+ else:
+ self.RefreshDivergenceModel(next_block)
+ self.Parent.RefreshProjectTree()
+
+ def DeleteDivergence(self, divergence):
+ if self.GetDrawingMode() == FREEDRAWING_MODE:
+ Viewer.DeleteDivergence(self, divergence)
+ else:
+ connectors = divergence.GetConnectors()
+ type = divergence.GetType()
+ if type in [SELECTION_CONVERGENCE, SIMULTANEOUS_CONVERGENCE]:
+ wires = connectors["outputs"][0].GetWires()
+ if len(wires) > 1:
+ return
+ elif len(wires) == 1:
+ next = wires[0][0].StartConnected
+ next_block = next.GetParentBlock()
+ wire = wires[0][0]
+ wire.Clean()
+ self.Wires.remove(wire)
+ self.Elements.remove(wire)
+ else:
+ next = None
+ next_block = None
+ for index, connector in enumerate(connectors["inputs"]):
+ if next and index == 0:
+ wires = connector.GetWires()
+ wire = wires[0][0]
+ previous = wires[0][0].EndConnected
+ wire.Clean()
+ self.Wires.remove(wire)
+ self.Elements.remove(wire)
+ else:
+ if type == SELECTION_CONVERGENCE:
+ wires = connector.GetWires()
+ previous_block = wires[0][0].EndConnected.GetParentBlock()
+ self.RemoveTransition(previous_block)
+ wires = connector.GetWires()
+ wire = wires[0][0]
+ previous_connector = wire.EndConnected
+ previous_block = previous_connector.GetParentBlock()
+ wire.Clean()
+ self.Wires.remove(wire)
+ self.Elements.remove(wire)
+ if isinstance(previous_block, SFC_Step):
+ previous_block.RemoveOutput()
+ self.RefreshStepModel(previous_block)
+ elif isinstance(previous_block, SFC_Divergence):
+ if previous_block.GetType() in [SELECTION_DIVERGENCE, SIMULTANEOUS_DIVERGENCE]:
+ previous_block.RemoveBranch(previous_connector)
+ if previous_block.GetBranchNumber() < 2:
+ self.DeleteDivergence(previous_block)
+ else:
+ self.RefreshDivergenceModel(previous_block)
+ else:
+ self.DeleteDivergence(previous_block)
+ divergence.Clean()
+ self.Blocks.remove(divergence)
+ self.Elements.remove(divergence)
+ self.Controler.RemoveCurrentElementEditingInstance(divergence.GetId())
+ if next:
+ wire = self.ConnectConnectors(next, previous)
+ previous_block = previous.GetParentBlock()
+ pos = previous.GetPosition(False)
+ next_pos = next.GetPosition(False)
+ wire_size = GetWireSize(previous_block)
+ previous_block.RefreshOutputPosition((0, previous_pos.y + wire_size - next_pos.y))
+ wire.SetPoints([wxPoint(previous_pos.x, previous_pos.y + wire_size),
+ wxPoint(previous_pos.x, previous_pos.y)])
+ if isinstance(next_block, SFC_Divergence):
+ next_block.RefreshPosition()
+ previous_block.RefreshOutputModel(True)
+ elif divergence.GetBranchNumber() == 1:
+ wires = connectors["inputs"][0].GetWires()
+ if len(wires) != 1:
+ return
+ wire = wires[0][0]
+ previous = wire.EndConnected
+ previous_block = previous.GetParentBlock()
+ wire.Clean()
+ self.Wires.remove(wire)
+ self.Elements.remove(wire)
+ wires = connectors["outputs"][0].GetWires()
+ if len(wires) != 1:
+ return
+ wire = wires[0][0]
+ next = wire.StartConnected
+ next_block = next.GetParentBlock()
+ wire.Clean()
+ self.Wires.remove(wire)
+ self.Elements.remove(wire)
+ divergence.Clean()
+ self.Blocks.remove(divergence)
+ self.Elements.remove(divergence)
+ self.Controler.RemoveCurrentElementEditingInstance(divergence.GetId())
+ wire = self.ConnectConnectors(next, previous)
+ previous_pos = previous.GetPosition(False)
+ next_pos = next.GetPosition(False)
+ wire_size = GetWireSize(previous_block)
+ previous_block.RefreshOutputPosition((previous_pos.x - next_pos.x, previous_pos.y + wire_size - next_pos.y))
+ wire.SetPoints([wxPoint(previous_pos.x, previous_pos.y + wire_size),
+ wxPoint(previous_pos.x, previous_pos.y)])
+ if isinstance(next_block, SFC_Divergence):
+ next_block.RefreshPosition()
+ previous_block.RefreshOutputModel(True)
+ self.Parent.RefreshProjectTree()
+
+ def DeleteJump(self, jump):
+ if self.GetDrawingMode() == FREEDRAWING_MODE:
+ Viewer.DeleteJump(self, jump)
+ else:
+ previous = jump.GetPreviousConnector()
+ previous_block = previous.GetParentBlock()
+ if isinstance(previous_block, SFC_Transition):
+ self.RemoveTransition(previous_block)
+ previous = jump.GetPreviousConnector()
+ if previous:
+ previous_block = previous.GetParentBlock()
+ else:
+ previous_block = None
wires = previous.GetWires()
if len(wires) != 1:
return
@@ -846,188 +998,48 @@
wire.Clean()
self.Wires.remove(wire)
self.Elements.remove(wire)
- wires = next.GetWires()
+ jump.Clean()
+ self.Blocks.remove(jump)
+ self.Elements.remove(jump)
+ self.Controler.RemoveCurrentElementEditingInstance(jump.GetId())
+ if isinstance(previous_block, SFC_Step):
+ previous_block.RemoveOutput()
+ self.RefreshStepModel(previous_block)
+ elif isinstance(previous_block, SFC_Divergence):
+ if previous_block.GetType() in [SELECTION_CONVERGENCE, SIMULTANEOUS_CONVERGENCE]:
+ self.DeleteDivergence(previous_block)
+ else:
+ previous_block.RemoveBranch(previous)
+ if previous_block.GetBranchNumber() < 2:
+ self.DeleteDivergence(previous_block)
+ else:
+ previous_block.RefreshModel()
+ self.Parent.RefreshProjectTree()
+
+ def DeleteActionBlock(self, actionblock):
+ if self.GetDrawingMode() == FREEDRAWING_MODE:
+ Viewer.DeleteActionBlock(self, actionblock)
+ else:
+ connector = actionblock.GetConnector()
+ wires = connector.GetWires()
if len(wires) != 1:
return
wire = wires[0][0]
+ step = wire.EndConnected.GetParentBlock()
wire.Clean()
self.Wires.remove(wire)
self.Elements.remove(wire)
- transition.Clean()
- self.Blocks.remove(transition)
- self.Elements.remove(transition)
- self.Controler.RemoveCurrentElementEditingInstance(transition.GetId())
- previous_block.RemoveBranch(previous)
- if previous_block.GetBranchNumber() < 2:
- self.DeleteDivergence(previous_block)
- else:
- self.RefreshDivergenceModel(previous_block)
- next_block.RemoveBranch(next)
- if next_block.GetBranchNumber() < 2:
- self.DeleteDivergence(next_block)
- else:
- self.RefreshDivergenceModel(next_block)
- self.Parent.RefreshProjectTree()
-
- def DeleteDivergence(self, divergence):
- connectors = divergence.GetConnectors()
- type = divergence.GetType()
- if type in [SELECTION_CONVERGENCE, SIMULTANEOUS_CONVERGENCE]:
- wires = connectors["outputs"][0].GetWires()
- if len(wires) > 1:
- return
- elif len(wires) == 1:
- next = wires[0][0].StartConnected
- next_block = next.GetParentBlock()
- wire = wires[0][0]
- wire.Clean()
- self.Wires.remove(wire)
- self.Elements.remove(wire)
- else:
- next = None
- next_block = None
- for index, connector in enumerate(connectors["inputs"]):
- if next and index == 0:
- wires = connector.GetWires()
- wire = wires[0][0]
- previous = wires[0][0].EndConnected
- wire.Clean()
- self.Wires.remove(wire)
- self.Elements.remove(wire)
- else:
- if type == SELECTION_CONVERGENCE:
- wires = connector.GetWires()
- previous_block = wires[0][0].EndConnected.GetParentBlock()
- self.RemoveTransition(previous_block)
- wires = connector.GetWires()
- wire = wires[0][0]
- previous_connector = wire.EndConnected
- previous_block = previous_connector.GetParentBlock()
- wire.Clean()
- self.Wires.remove(wire)
- self.Elements.remove(wire)
- if isinstance(previous_block, SFC_Step):
- previous_block.RemoveOutput()
- self.RefreshStepModel(previous_block)
- elif isinstance(previous_block, SFC_Divergence):
- if previous_block.GetType() in [SELECTION_DIVERGENCE, SIMULTANEOUS_DIVERGENCE]:
- previous_block.RemoveBranch(previous_connector)
- if previous_block.GetBranchNumber() < 2:
- self.DeleteDivergence(previous_block)
- else:
- self.RefreshDivergenceModel(previous_block)
- else:
- self.DeleteDivergence(previous_block)
- divergence.Clean()
- self.Blocks.remove(divergence)
- self.Elements.remove(divergence)
- self.Controler.RemoveCurrentElementEditingInstance(divergence.GetId())
- if next:
- wire = self.ConnectConnectors(next, previous)
- previous_block = previous.GetParentBlock()
- pos = previous.GetPosition(False)
- next_pos = next.GetPosition(False)
- wire_size = GetWireSize(previous_block)
- previous_block.RefreshOutputPosition((0, previous_pos.y + wire_size - next_pos.y))
- wire.SetPoints([wxPoint(previous_pos.x, previous_pos.y + wire_size),
- wxPoint(previous_pos.x, previous_pos.y)])
- if isinstance(next_block, SFC_Divergence):
- next_block.RefreshPosition()
- previous_block.RefreshOutputModel(True)
- elif divergence.GetBranchNumber() == 1:
- wires = connectors["inputs"][0].GetWires()
- if len(wires) != 1:
- return
- wire = wires[0][0]
- previous = wire.EndConnected
- previous_block = previous.GetParentBlock()
- wire.Clean()
- self.Wires.remove(wire)
- self.Elements.remove(wire)
- wires = connectors["outputs"][0].GetWires()
- if len(wires) != 1:
- return
- wire = wires[0][0]
- next = wire.StartConnected
- next_block = next.GetParentBlock()
- wire.Clean()
- self.Wires.remove(wire)
- self.Elements.remove(wire)
- divergence.Clean()
- self.Blocks.remove(divergence)
- self.Elements.remove(divergence)
- self.Controler.RemoveCurrentElementEditingInstance(divergence.GetId())
- wire = self.ConnectConnectors(next, previous)
- previous_pos = previous.GetPosition(False)
- next_pos = next.GetPosition(False)
- wire_size = GetWireSize(previous_block)
- previous_block.RefreshOutputPosition((previous_pos.x - next_pos.x, previous_pos.y + wire_size - next_pos.y))
- wire.SetPoints([wxPoint(previous_pos.x, previous_pos.y + wire_size),
- wxPoint(previous_pos.x, previous_pos.y)])
- if isinstance(next_block, SFC_Divergence):
- next_block.RefreshPosition()
- previous_block.RefreshOutputModel(True)
- self.Parent.RefreshProjectTree()
-
- def DeleteJump(self, jump):
- previous = jump.GetPreviousConnector()
- previous_block = previous.GetParentBlock()
- if isinstance(previous_block, SFC_Transition):
- self.RemoveTransition(previous_block)
- previous = jump.GetPreviousConnector()
- if previous:
- previous_block = previous.GetParentBlock()
- else:
- previous_block = None
- wires = previous.GetWires()
- if len(wires) != 1:
- return
- wire = wires[0][0]
- wire.Clean()
- self.Wires.remove(wire)
- self.Elements.remove(wire)
- jump.Clean()
- self.Blocks.remove(jump)
- self.Elements.remove(jump)
- self.Controler.RemoveCurrentElementEditingInstance(jump.GetId())
- if isinstance(previous_block, SFC_Step):
- previous_block.RemoveOutput()
- self.RefreshStepModel(previous_block)
- elif isinstance(previous_block, SFC_Divergence):
- if previous_block.GetType() in [SELECTION_CONVERGENCE, SIMULTANEOUS_CONVERGENCE]:
- self.DeleteDivergence(previous_block)
- else:
- previous_block.RemoveBranch(previous)
- if previous_block.GetBranchNumber() < 2:
- self.DeleteDivergence(previous_block)
- else:
- previous_block.RefreshModel()
- self.Parent.RefreshProjectTree()
-
- def DeleteActionBlock(self, actionblock):
- connector = actionblock.GetConnector()
- wires = connector.GetWires()
- if len(wires) != 1:
- return
- wire = wires[0][0]
- step = wire.EndConnected.GetParentBlock()
- wire.Clean()
- self.Wires.remove(wire)
- self.Elements.remove(wire)
- actionblock.Clean()
- self.Blocks.remove(actionblock)
- self.Elements.remove(actionblock)
- self.Controler.RemoveCurrentElementEditingInstance(actionblock.GetId())
- step.RemoveAction()
- self.RefreshStepModel(step)
- step.RefreshOutputPosition()
- step.RefreshOutputModel(True)
- self.Parent.RefreshProjectTree()
-
- def DeleteComment(self, comment):
- self.Elements.remove(self.SelectedElement)
- self.Controler.RemoveCurrentElementEditingInstance(comment.GetId())
-
+ actionblock.Clean()
+ self.Blocks.remove(actionblock)
+ self.Elements.remove(actionblock)
+ self.Controler.RemoveCurrentElementEditingInstance(actionblock.GetId())
+ step.RemoveAction()
+ self.RefreshStepModel(step)
+ step.RefreshOutputPosition()
+ step.RefreshOutputModel(True)
+ self.Parent.RefreshProjectTree()
+
def DeleteWire(self, wire):
- pass
-
+ if self.GetDrawingMode() == FREEDRAWING_MODE:
+ Viewer.DeleteWire(self, wire)
+