SFCViewer.py
changeset 80 c798a68c5560
parent 71 0578bc212c20
child 90 2245e8776086
--- a/SFCViewer.py	Thu Aug 23 09:50:35 2007 +0200
+++ b/SFCViewer.py	Mon Aug 27 17:37:50 2007 +0200
@@ -46,7 +46,7 @@
     def CreateTransition(self, connector, next = None):
         previous = connector.GetParentBlock()
         id = self.GetNewId()
-        transition = SFC_Transition(self, "reference", "", id)
+        transition = SFC_Transition(self, "reference", "", 0, id)
         pos = connector.GetPosition(False)
         transition.SetPosition(pos.x, pos.y + SFC_WIRE_MIN_SIZE)
         transition_connectors = transition.GetConnectors()
@@ -384,7 +384,6 @@
             self.AddBlock(step)
             self.Controler.AddCurrentElementEditingStep(id)
             self.RefreshStepModel(step)
-            self.Parent.RefreshProjectTree()
             self.RefreshBuffer()
             self.RefreshScrollBars()
             self.Refresh()
@@ -439,7 +438,6 @@
                     self.SelectedElement.SetSelected(False)
                     self.SelectedElement = step
                     self.SelectedElement.SetSelected(True)
-                self.Parent.RefreshProjectTree()
                 self.RefreshBuffer()
                 self.RefreshScrollBars()
                 self.Refresh()
@@ -672,17 +670,28 @@
     
     def AddDivergenceBranch(self, divergence):
         if isinstance(divergence, SFC_Divergence):
-            type = divergence.GetType()
-            if type in [SELECTION_DIVERGENCE, SIMULTANEOUS_DIVERGENCE]:
+            if self.GetDrawingMode() == FREEDRAWING_MODE:
                 divergence.AddBranch()
-                divergence_connectors = divergence.GetConnectors()
-                if type == SELECTION_DIVERGENCE:
-                    transition = self.CreateTransition(divergence_connectors["outputs"][-1])
-                    transition_connectors = transition.GetConnectors()
-                    previous = transition_connectors["output"]
-                else:
-                    previous = divergence_connectors["outputs"][-1]
-                step = self.CreateStep("Step", previous)
+            else:
+                type = divergence.GetType()
+                if type in [SELECTION_DIVERGENCE, SIMULTANEOUS_DIVERGENCE]:
+                    divergence.AddBranch()
+                    divergence_connectors = divergence.GetConnectors()
+                    if type == SELECTION_DIVERGENCE:
+                        transition = self.CreateTransition(divergence_connectors["outputs"][-1])
+                        transition_connectors = transition.GetConnectors()
+                        previous = transition_connectors["output"]
+                    else:
+                        previous = divergence_connectors["outputs"][-1]
+                    step = self.CreateStep("Step", previous)
+            self.RefreshBuffer()
+            self.RefreshScrollBars()
+            self.Refresh()
+    
+    def RemoveDivergenceBranch(self, divergence):
+        if isinstance(divergence, SFC_Divergence):
+            if self.GetDrawingMode() == FREEDRAWING_MODE:
+                divergence.RemoveHandledBranch()
                 self.RefreshBuffer()
                 self.RefreshScrollBars()
                 self.Refresh()
@@ -844,8 +853,7 @@
                     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)
@@ -940,8 +948,7 @@
                 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)
@@ -976,8 +983,7 @@
                         self.DeleteDivergence(previous_block)
                     else:
                         previous_block.RefreshModel()
-            self.Parent.RefreshProjectTree()
-
+            
     def DeleteActionBlock(self, actionblock):
         if self.GetDrawingMode() == FREEDRAWING_MODE:
             Viewer.DeleteActionBlock(self, actionblock)
@@ -997,8 +1003,7 @@
             self.RefreshStepModel(step)
             step.RefreshOutputPosition()
             step.RefreshOutputModel(True)
-            self.Parent.RefreshProjectTree()
-
+            
     def DeleteWire(self, wire):
         if self.GetDrawingMode() == FREEDRAWING_MODE:
             Viewer.DeleteWire(self, wire)