--- a/Viewer.py Mon Dec 07 22:06:04 2009 +0100
+++ b/Viewer.py Tue Dec 08 16:29:16 2009 +0100
@@ -727,8 +727,8 @@
iec_path = "%s.%s.X"%(self.InstancePath, element.GetName())
elif isinstance(element, SFC_Transition):
connectors = element.GetConnectors()
- previous_steps = self.GetPreviousSteps(connectors["input"])
- next_steps = self.GetNextSteps(connectors["output"])
+ previous_steps = self.GetPreviousSteps(connectors["inputs"])
+ next_steps = self.GetNextSteps(connectors["outputs"])
iec_path = "%s.%s->%s"%(self.InstancePath, ",".join(previous_steps), ",".join(next_steps))
return iec_path
@@ -876,30 +876,30 @@
self.ShowErrors()
self.Refresh(False)
- def GetPreviousSteps(self, connector):
+ def GetPreviousSteps(self, connectors):
steps = []
- for wire, handle in connector.GetWires():
- previous = wire.GetOtherConnected(connector).GetParentBlock()
- if isinstance(previous, SFC_Step):
- steps.append(previous.GetName())
- elif isinstance(previous, SFC_Divergence) and previous.GetType() in [SIMULTANEOUS_CONVERGENCE, SELECTION_DIVERGENCE]:
- connectors = previous.GetConnectors()
- for input in connectors["inputs"]:
- steps.extend(self.GetPreviousSteps(input))
+ for connector in connectors:
+ for wire, handle in connector.GetWires():
+ previous = wire.GetOtherConnected(connector).GetParentBlock()
+ if isinstance(previous, SFC_Step):
+ steps.append(previous.GetName())
+ elif isinstance(previous, SFC_Divergence) and previous.GetType() in [SIMULTANEOUS_CONVERGENCE, SELECTION_DIVERGENCE]:
+ connectors = previous.GetConnectors()
+ steps.extend(self.GetPreviousSteps(connectors["inputs"]))
return steps
- def GetNextSteps(self, connector):
+ def GetNextSteps(self, connectors):
steps = []
- for wire, handle in connector.GetWires():
- next = wire.GetOtherConnected(connector).GetParentBlock()
- if isinstance(next, SFC_Step):
- steps.append(next.GetName())
- elif isinstance(next, SFC_Jump):
- steps.append(next.GetTarget())
- elif isinstance(next, SFC_Divergence) and next.GetType() in [SIMULTANEOUS_DIVERGENCE, SELECTION_CONVERGENCE]:
- connectors = next.GetConnectors()
- for output in connectors["outputs"]:
- steps.extend(self.GetNextSteps(output))
+ for connector in connectors:
+ for wire, handle in connector.GetWires():
+ next = wire.GetOtherConnected(connector).GetParentBlock()
+ if isinstance(next, SFC_Step):
+ steps.append(next.GetName())
+ elif isinstance(next, SFC_Jump):
+ steps.append(next.GetTarget())
+ elif isinstance(next, SFC_Divergence) and next.GetType() in [SIMULTANEOUS_DIVERGENCE, SELECTION_CONVERGENCE]:
+ connectors = next.GetConnectors()
+ steps.extend(self.GetNextSteps(connectors["outputs"]))
return steps
def GetMaxSize(self):