Viewer.py
changeset 28 fc23e1f415d8
parent 27 dae55dd9ee14
child 42 4a8400732001
--- a/Viewer.py	Mon Jul 09 11:10:14 2007 +0200
+++ b/Viewer.py	Tue Jul 10 09:52:53 2007 +0200
@@ -274,7 +274,7 @@
             connector = connection.GetConnector()
             connector.SetPosition(wxPoint(*instance["connector"]["position"]))
         elif instance["type"] == "connection":
-            connection = FBD_Connection(self, CONNECTOR, instance["name"], instance["id"])
+            connection = FBD_Connector(self, CONNECTOR, instance["name"], instance["id"])
             connection.SetPosition(instance["x"], instance["y"])
             connection.SetSize(instance["width"], instance["height"])
             self.Blocks.append(connection)
@@ -874,9 +874,9 @@
             id = self.GetNewId()
             values = dialog.GetValues()
             if "name" in values:
-                block = FBD_Block(self, values["type"], values["name"], id, values["extension"])
+                block = FBD_Block(self, values["type"], values["name"], id, values["extension"], values["inputs"])
             else:
-                block = FBD_Block(self, values["type"], "", id, values["extension"])
+                block = FBD_Block(self, values["type"], "", id, values["extension"], values["inputs"])
             block.SetPosition(bbox.x, bbox.y)
             block.SetSize(values["width"], values["height"])
             self.Blocks.append(block)
@@ -952,7 +952,7 @@
                     varlist.append(var["Name"])
         dialog.SetVariables(varlist)
         dialog.SetValues({"name":"","type":CONTACT_NORMAL})
-        dialog.SetElementSize(bbox.width, bbox.height)
+        dialog.SetElementSize((bbox.width, bbox.height))
         if dialog.ShowModal() == wxID_OK:
             id = self.GetNewId()
             values = dialog.GetValues()
@@ -979,7 +979,7 @@
             varlist.append(self.Controler.GetCurrentElementEditingName())
         dialog.SetVariables(varlist)
         dialog.SetValues({"name":"","type":COIL_NORMAL})
-        dialog.SetElementSize(bbox.width, bbox.height)
+        dialog.SetElementSize((bbox.width, bbox.height))
         if dialog.ShowModal() == wxID_OK:
             id = self.GetNewId()
             values = dialog.GetValues()
@@ -1043,209 +1043,6 @@
             self.Refresh()
         dialog.Destroy()
 
-#-------------------------------------------------------------------------------
-#                          Model update functions
-#-------------------------------------------------------------------------------
-
-    def RefreshBlockModel(self, block):
-        blockid = block.GetId()
-        infos = {}
-        infos["type"] = block.GetType()
-        infos["name"] = block.GetName()
-        infos["x"], infos["y"] = block.GetPosition()
-        infos["width"], infos["height"] = block.GetSize()
-        infos["connectors"] = block.GetConnectors()
-        self.Controler.SetCurrentElementEditingBlockInfos(blockid, infos)
-    
-    def RefreshVariableModel(self, variable):
-        variableid = variable.GetId()
-        infos = {}
-        infos["name"] = variable.GetName()
-        infos["x"], infos["y"] = variable.GetPosition()
-        infos["width"], infos["height"] = variable.GetSize()
-        infos["connectors"] = variable.GetConnectors()
-        self.Controler.SetCurrentElementEditingVariableInfos(variableid, infos)
-
-    def RefreshConnectionModel(self, connection):
-        connectionid = connection.GetId()
-        infos = {}
-        infos["name"] = connection.GetName()
-        infos["x"], infos["y"] = connection.GetPosition()
-        infos["width"], infos["height"] = connection.GetSize()
-        infos["connector"] = connection.GetConnector()
-        self.Controler.SetCurrentElementEditingConnectionInfos(connectionid, infos)
-
-    def RefreshCommentModel(self, comment):
-        commentid = comment.GetId()
-        infos = {}
-        infos["content"] = comment.GetContent()
-        infos["x"], infos["y"] = comment.GetPosition()
-        infos["width"], infos["height"] = comment.GetSize()
-        self.Controler.SetCurrentElementEditingCommentInfos(commentid, infos)
-
-    def RefreshPowerRailModel(self, powerrail):
-        powerrailid = powerrail.GetId()
-        infos = {}
-        infos["x"], infos["y"] = powerrail.GetPosition()
-        infos["width"], infos["height"] = powerrail.GetSize()
-        infos["connectors"] = powerrail.GetConnectors()
-        self.Controler.SetCurrentElementEditingPowerRailInfos(powerrailid, infos)
-
-    def RefreshContactModel(self, contact):
-        contactid = contact.GetId()
-        infos = {}
-        infos["name"] = contact.GetName()
-        infos["type"] = contact.GetType()
-        infos["x"], infos["y"] = contact.GetPosition()
-        infos["width"], infos["height"] = contact.GetSize()
-        infos["connectors"] = contact.GetConnectors()
-        self.Controler.SetCurrentElementEditingContactInfos(contactid, infos)
-
-    def RefreshCoilModel(self, coil):
-        coilid = coil.GetId()
-        infos = {}
-        infos["name"] = coil.GetName()
-        infos["type"] = coil.GetType()
-        infos["x"], infos["y"] = coil.GetPosition()
-        infos["width"], infos["height"] = coil.GetSize()
-        infos["connectors"] = coil.GetConnectors()
-        self.Controler.SetCurrentElementEditingCoilInfos(coilid, infos)
-
-    def RefreshStepModel(self, step):
-        stepid = step.GetId()
-        infos = {}
-        infos["name"] = step.GetName()
-        infos["initial"] = step.GetInitial()
-        infos["x"], infos["y"] = step.GetPosition()
-        infos["width"], infos["height"] = step.GetSize()
-        infos["connectors"] = step.GetConnectors()
-        self.Controler.SetCurrentElementEditingStepInfos(stepid, infos)
-
-    def RefreshTransitionModel(self, transition):
-        transitionid = transition.GetId()
-        infos = {}
-        infos["type"] = transition.GetType()
-        infos["condition"] = transition.GetCondition()
-        infos["x"], infos["y"] = transition.GetPosition()
-        infos["width"], infos["height"] = transition.GetSize()
-        infos["connectors"] = transition.GetConnectors()
-        self.Controler.SetCurrentElementEditingTransitionInfos(transitionid, infos)
-
-    def RefreshDivergenceModel(self, divergence):
-        divergenceid = divergence.GetId()
-        infos = {}
-        infos["x"], infos["y"] = divergence.GetPosition()
-        infos["width"], infos["height"] = divergence.GetSize()
-        infos["connectors"] = divergence.GetConnectors()
-        self.Controler.SetCurrentElementEditingDivergenceInfos(divergenceid, infos)
-
-    def RefreshJumpModel(self, jump):
-        jumpid = jump.GetId()
-        infos = {}
-        infos["target"] = jump.GetTarget()
-        infos["x"], infos["y"] = jump.GetPosition()
-        infos["width"], infos["height"] = jump.GetSize()
-        infos["connector"] = jump.GetConnector()
-        self.Controler.SetCurrentElementEditingJumpInfos(jumpid, infos)
-
-    def RefreshActionBlockModel(self, actionblock):
-        actionblockid = actionblock.GetId()
-        infos = {}
-        infos["actions"] = actionblock.GetActions()
-        infos["x"], infos["y"] = actionblock.GetPosition()
-        infos["width"], infos["height"] = actionblock.GetSize()
-        infos["connector"] = actionblock.GetConnector()
-        self.Controler.SetCurrentElementEditingActionBlockInfos(actionblockid, infos)
-
-
-#-------------------------------------------------------------------------------
-#                          Model delete functions
-#-------------------------------------------------------------------------------
-
-
-    def DeleteBlock(self, block):
-        elements = []
-        for output in block.GetConnectors()["outputs"]:
-            for element in output.GetConnectedBlocks():
-                if element not in elements:
-                    elements.append(element)
-        block.Clean()
-        self.Blocks.remove(block)
-        self.Elements.remove(block)
-        self.Controler.RemoveCurrentElementEditingInstance(block.GetId())
-        for element in elements:
-            element.RefreshModel()
-
-    def DeleteVariable(self, variable):
-        connectors = variable.GetConnectors()
-        if connectors["output"]:
-            elements = connectors["output"].GetConnectedBlocks()
-        else:
-            elements = []
-        variable.Clean()
-        self.Blocks.remove(variable)
-        self.Elements.remove(variable)
-        self.Controler.RemoveCurrentElementEditingInstance(variable.GetId())
-        for element in elements:
-            element.RefreshModel()
-
-    def DeleteConnection(self, connection):
-        if connection.GetType() == CONTINUATION:
-            elements = connection.GetConnector().GetConnectedBlocks()
-        else:
-            elements = []
-        connection.Clean()
-        self.Blocks.remove(connection)
-        self.Elements.remove(connection)
-        self.Controler.RemoveCurrentElementEditingInstance(connection.GetId())
-        for element in elements:
-            element.RefreshModel()
-
-    def DeleteComment(self, comment):
-        self.Elements.remove(comment)
-        self.Controler.RemoveCurrentElementEditingInstance(comment.GetId())
-
-    def DeleteWire(self, wire):
-        connected = wire.GetConnected()
-        wire.Clean()
-        self.Wires.remove(wire)
-        self.Elements.remove(wire)
-        for connector in connected:
-            connector.RefreshParentBlock()
-
-    def DeleteContact(self, contact):
-        connectors = contact.GetConnectors()
-        elements = connectors["output"].GetConnectedBlocks()
-        contact.Clean()
-        self.Blocks.remove(contact)
-        self.Elements.remove(contact)
-        self.Controler.RemoveCurrentElementEditingInstance(contact.GetId())
-        for element in elements:
-            element.RefreshModel()
-
-    def DeleteCoil(self, coil):
-        connectors = coil.GetConnectors()
-        elements = connectors["output"].GetConnectedBlocks()
-        coil.Clean()
-        self.Blocks.remove(coil)
-        self.Elements.remove(coil)
-        self.Controler.RemoveCurrentElementEditingInstance(coil.GetId())
-        for element in elements:
-            element.RefreshModel()
-
-    def DeletePowerRail(self, powerrail):
-        elements = []
-        if powerrail.GetType() == LEFTRAIL:
-            for connector in powerrail.GetConnectors():
-                for element in connector.GetConnectedBlocks():
-                    if element not in elements:
-                        elements.append(element)
-        powerrrail.Clean()
-        self.Blocks.remove(powerrrail)
-        self.Elements.remove(powerrrail)
-        self.Controler.RemoveCurrentElementEditingInstance(powerrrail.GetId())
-        for element in elements:
-            element.RefreshModel()
 
 #-------------------------------------------------------------------------------
 #                          Edit element content functions
@@ -1255,7 +1052,7 @@
         dialog = BlockPropertiesDialog(self.Parent)
         dialog.SetBlockList(self.Controler.GetBlockTypes())
         dialog.SetMinBlockSize(block.GetSize())
-        values = {"name" : block.GetName(), "type" : block.GetType()}
+        values = {"name" : block.GetName(), "type" : block.GetType(), "inputs" : block.GetInputTypes()}
         values["extension"] = block.GetExtension()
         dialog.SetValues(values)
         if dialog.ShowModal() == wxID_OK:
@@ -1296,6 +1093,384 @@
             self.Refresh()
         dialog.Destroy()
 
+    def EditConnectionContent(self, connection):
+        dialog = ConnectionPropertiesDialog(self.Parent)
+        dialog.SetMinConnectionSize(connection.GetSize())
+        values = {"name" : connection.GetName(), "type" : connection.GetType()}
+        dialog.SetValues(values)
+        if dialog.ShowModal() == wxID_OK:
+            old_type = connection.GetType()
+            values = dialog.GetValues()
+            connection.SetName(values["name"])
+            connection.SetType(values["type"])
+            connection.SetSize(values["width"], values["height"])
+            if old_type != values["type"]:
+                id = connection.GetId()
+                self.Controler.RemoveCurrentElementEditingInstance(id)
+                self.Controler.AddCurrentElementEditingConnection(id, values["type"])
+            self.RefreshConnectionModel(connection)
+            self.Refresh()
+        dialog.Destroy()
+
+    def EditContactContent(self, contact):
+        dialog = LDElementDialog(self.Parent, "contact")
+        varlist = []
+        vars = self.Controler.GetCurrentElementEditingInterfaceVars()
+        if vars:
+            for var in vars:
+                if var["Class"] != "Output" and var["Type"] == "BOOL":
+                    varlist.append(var["Name"])
+        dialog.SetVariables(varlist)
+        values = {"name" : contact.GetName(), "type" : contact.GetType()}
+        dialog.SetValues(values)
+        dialog.SetElementSize(contact.GetSize())
+        if dialog.ShowModal() == wxID_OK:
+            values = dialog.GetValues()
+            contact.SetName(values["name"])
+            contact.SetType(values["type"])
+            contact.SetSize(values["width"], values["height"])
+            self.RefreshContactModel(contact)
+            self.Refresh()
+        dialog.Destroy()
+
+    def EditCoilContent(self, coil):
+        dialog = LDElementDialog(self.Parent, "coil")
+        varlist = []
+        vars = self.Controler.GetCurrentElementEditingInterfaceVars()
+        if vars:
+            for var in vars:
+                if var["Class"] != "Input" and var["Type"] == "BOOL":
+                    varlist.append(var["Name"])
+        returntype = self.Controler.GetCurrentElementEditingInterfaceReturnType()
+        if returntype == "BOOL":
+            varlist.append(self.Controler.GetCurrentElementEditingName())
+        dialog.SetVariables(varlist)
+        values = {"name" : coil.GetName(), "type" : coil.GetType()}
+        dialog.SetValues(values)
+        dialog.SetElementSize(contact.GetSize())
+        if dialog.ShowModal() == wxID_OK:
+            values = dialog.GetValues()
+            coil.SetName(values["name"])
+            coil.SetType(values["type"])
+            coil.SetSize(values["width"], values["height"])
+            self.RefreshContactModel(coil)
+            self.Refresh()
+        dialog.Destroy()
+
+    def EditPowerRailContent(self, powerrail):
+        dialog = LDPowerRailDialog(self.Parent, powerrail.GetType(), len(powerrail.GetConnectors()))
+        dialog.SetMinSize(powerrail.GetSize())
+        if dialog.ShowModal() == wxID_OK:
+            old_type = powerrail.GetType()
+            values = dialog.GetValues()
+            powerrail.SetType(values["type"])
+            powerrail.SetSize(values["width"], values["height"])
+            if old_type != values["type"]:
+                id = powerrail.GetId()
+                self.Controler.RemoveCurrentElementEditingInstance(id)
+                self.Controler.AddCurrentElementEditingPowerRail(id, values["type"])
+            self.RefreshPowerRailModel(powerrail)
+            self.Refresh()
+        dialog.Destroy()
+
+
+    def AddNewTransition(self, bbox):
+        dialog = TransitionContentDialog(self.Parent)
+        dialog.SetTransitions(self.Controler.GetCurrentElementEditingTransitions())
+        if dialog.ShowModal() == wxID_OK:
+            id = self.GetNewId()
+            values = dialog.GetValues()
+            transition = SFC_Transition(self, values["type"], values["value"], id)
+            transition.SetPosition(bbox.x, bbox.y)
+            min_width, min_height = transition.GetMinSize()
+            transition.SetSize(max(bbox.width, min_width), max(bbox.height, min_height))
+            self.Blocks.append(transition)
+            self.Elements.append(transition)
+            self.Controler.AddCurrentElementEditingTransition(id)
+            self.RefreshTransitionModel(transition)
+            self.Refresh()
+        dialog.Destroy()
+
+    def AddNewDivergence(self, bbox):
+        dialog = DivergenceCreateDialog(self.Parent)
+        dialog.SetMinSize((bbox.width, bbox.height))
+        if dialog.ShowModal() == wxID_OK:
+            id = self.GetNewId()
+            values = dialog.GetValues()
+            divergence = SFC_Divergence(self, values["type"], values["number"], id)
+            divergence.SetPosition(bbox.x, bbox.y)
+            min_width, min_height = divergence.GetMinSize()
+            divergence.SetSize(max(bbox.width, min_width), max(bbox.height, min_height))
+            self.Blocks.append(divergence)
+            self.Elements.append(divergence)
+            self.Controler.AddCurrentElementEditingDivergence(id, values["type"])
+            self.RefreshDivergenceModel(divergence)
+            self.Refresh()
+        dialog.Destroy()
+
+#-------------------------------------------------------------------------------
+#                          Model update functions
+#-------------------------------------------------------------------------------
+
+    def RefreshBlockModel(self, block):
+        blockid = block.GetId()
+        infos = {}
+        infos["type"] = block.GetType()
+        infos["name"] = block.GetName()
+        infos["x"], infos["y"] = block.GetPosition()
+        infos["width"], infos["height"] = block.GetSize()
+        infos["connectors"] = block.GetConnectors()
+        self.Controler.SetCurrentElementEditingBlockInfos(blockid, infos)
+    
+    def RefreshVariableModel(self, variable):
+        variableid = variable.GetId()
+        infos = {}
+        infos["name"] = variable.GetName()
+        infos["x"], infos["y"] = variable.GetPosition()
+        infos["width"], infos["height"] = variable.GetSize()
+        infos["connectors"] = variable.GetConnectors()
+        self.Controler.SetCurrentElementEditingVariableInfos(variableid, infos)
+
+    def RefreshConnectionModel(self, connection):
+        connectionid = connection.GetId()
+        infos = {}
+        infos["name"] = connection.GetName()
+        infos["x"], infos["y"] = connection.GetPosition()
+        infos["width"], infos["height"] = connection.GetSize()
+        infos["connector"] = connection.GetConnector()
+        self.Controler.SetCurrentElementEditingConnectionInfos(connectionid, infos)
+
+    def RefreshCommentModel(self, comment):
+        commentid = comment.GetId()
+        infos = {}
+        infos["content"] = comment.GetContent()
+        infos["x"], infos["y"] = comment.GetPosition()
+        infos["width"], infos["height"] = comment.GetSize()
+        self.Controler.SetCurrentElementEditingCommentInfos(commentid, infos)
+
+    def RefreshPowerRailModel(self, powerrail):
+        powerrailid = powerrail.GetId()
+        infos = {}
+        infos["x"], infos["y"] = powerrail.GetPosition()
+        infos["width"], infos["height"] = powerrail.GetSize()
+        infos["connectors"] = powerrail.GetConnectors()
+        self.Controler.SetCurrentElementEditingPowerRailInfos(powerrailid, infos)
+
+    def RefreshContactModel(self, contact):
+        contactid = contact.GetId()
+        infos = {}
+        infos["name"] = contact.GetName()
+        infos["type"] = contact.GetType()
+        infos["x"], infos["y"] = contact.GetPosition()
+        infos["width"], infos["height"] = contact.GetSize()
+        infos["connectors"] = contact.GetConnectors()
+        self.Controler.SetCurrentElementEditingContactInfos(contactid, infos)
+
+    def RefreshCoilModel(self, coil):
+        coilid = coil.GetId()
+        infos = {}
+        infos["name"] = coil.GetName()
+        infos["type"] = coil.GetType()
+        infos["x"], infos["y"] = coil.GetPosition()
+        infos["width"], infos["height"] = coil.GetSize()
+        infos["connectors"] = coil.GetConnectors()
+        self.Controler.SetCurrentElementEditingCoilInfos(coilid, infos)
+
+    def RefreshStepModel(self, step):
+        stepid = step.GetId()
+        infos = {}
+        infos["name"] = step.GetName()
+        infos["initial"] = step.GetInitial()
+        infos["x"], infos["y"] = step.GetPosition()
+        infos["width"], infos["height"] = step.GetSize()
+        infos["connectors"] = step.GetConnectors()
+        self.Controler.SetCurrentElementEditingStepInfos(stepid, infos)
+
+    def RefreshTransitionModel(self, transition):
+        transitionid = transition.GetId()
+        infos = {}
+        infos["type"] = transition.GetType()
+        infos["condition"] = transition.GetCondition()
+        infos["x"], infos["y"] = transition.GetPosition()
+        infos["width"], infos["height"] = transition.GetSize()
+        infos["connectors"] = transition.GetConnectors()
+        self.Controler.SetCurrentElementEditingTransitionInfos(transitionid, infos)
+
+    def RefreshDivergenceModel(self, divergence):
+        divergenceid = divergence.GetId()
+        infos = {}
+        infos["x"], infos["y"] = divergence.GetPosition()
+        infos["width"], infos["height"] = divergence.GetSize()
+        infos["connectors"] = divergence.GetConnectors()
+        self.Controler.SetCurrentElementEditingDivergenceInfos(divergenceid, infos)
+
+    def RefreshJumpModel(self, jump):
+        jumpid = jump.GetId()
+        infos = {}
+        infos["target"] = jump.GetTarget()
+        infos["x"], infos["y"] = jump.GetPosition()
+        infos["width"], infos["height"] = jump.GetSize()
+        infos["connector"] = jump.GetConnector()
+        self.Controler.SetCurrentElementEditingJumpInfos(jumpid, infos)
+
+    def RefreshActionBlockModel(self, actionblock):
+        actionblockid = actionblock.GetId()
+        infos = {}
+        infos["actions"] = actionblock.GetActions()
+        infos["x"], infos["y"] = actionblock.GetPosition()
+        infos["width"], infos["height"] = actionblock.GetSize()
+        infos["connector"] = actionblock.GetConnector()
+        self.Controler.SetCurrentElementEditingActionBlockInfos(actionblockid, infos)
+
+
+#-------------------------------------------------------------------------------
+#                          Model delete functions
+#-------------------------------------------------------------------------------
+
+
+    def DeleteBlock(self, block):
+        elements = []
+        for output in block.GetConnectors()["outputs"]:
+            for element in output.GetConnectedBlocks():
+                if element not in elements:
+                    elements.append(element)
+        block.Clean()
+        self.Blocks.remove(block)
+        self.Elements.remove(block)
+        self.Controler.RemoveCurrentElementEditingInstance(block.GetId())
+        for element in elements:
+            element.RefreshModel()
+
+    def DeleteVariable(self, variable):
+        connectors = variable.GetConnectors()
+        if connectors["output"]:
+            elements = connectors["output"].GetConnectedBlocks()
+        else:
+            elements = []
+        variable.Clean()
+        self.Blocks.remove(variable)
+        self.Elements.remove(variable)
+        self.Controler.RemoveCurrentElementEditingInstance(variable.GetId())
+        for element in elements:
+            element.RefreshModel()
+
+    def DeleteConnection(self, connection):
+        if connection.GetType() == CONTINUATION:
+            elements = connection.GetConnector().GetConnectedBlocks()
+        else:
+            elements = []
+        connection.Clean()
+        self.Blocks.remove(connection)
+        self.Elements.remove(connection)
+        self.Controler.RemoveCurrentElementEditingInstance(connection.GetId())
+        for element in elements:
+            element.RefreshModel()
+
+    def DeleteComment(self, comment):
+        self.Elements.remove(comment)
+        self.Controler.RemoveCurrentElementEditingInstance(comment.GetId())
+
+    def DeleteWire(self, wire):
+        if wire in self.Wires:
+            connected = wire.GetConnected()
+            wire.Clean()
+            self.Wires.remove(wire)
+            self.Elements.remove(wire)
+            for connector in connected:
+                connector.RefreshParentBlock()
+
+    def DeleteContact(self, contact):
+        connectors = contact.GetConnectors()
+        elements = connectors["output"].GetConnectedBlocks()
+        contact.Clean()
+        self.Blocks.remove(contact)
+        self.Elements.remove(contact)
+        self.Controler.RemoveCurrentElementEditingInstance(contact.GetId())
+        for element in elements:
+            element.RefreshModel()
+
+    def DeleteCoil(self, coil):
+        connectors = coil.GetConnectors()
+        elements = connectors["output"].GetConnectedBlocks()
+        coil.Clean()
+        self.Blocks.remove(coil)
+        self.Elements.remove(coil)
+        self.Controler.RemoveCurrentElementEditingInstance(coil.GetId())
+        for element in elements:
+            element.RefreshModel()
+
+    def DeletePowerRail(self, powerrail):
+        elements = []
+        if powerrail.GetType() == LEFTRAIL:
+            for connector in powerrail.GetConnectors():
+                for element in connector.GetConnectedBlocks():
+                    if element not in elements:
+                        elements.append(element)
+        powerrrail.Clean()
+        self.Blocks.remove(powerrrail)
+        self.Elements.remove(powerrrail)
+        self.Controler.RemoveCurrentElementEditingInstance(powerrrail.GetId())
+        for element in elements:
+            element.RefreshModel()
+
+    def DeleteStep(self, step):
+        elements = []
+        connectors = step.GetConnectors()
+        if connectors["output"]:
+            for element in connectors["output"].GetConnectedBlocks():
+                if element not in elements:
+                    elements.append(element)
+        if connectors["action"]:
+            for element in connectors["action"].GetConnectedBlocks():
+                if element not in elements:
+                    elements.append(element)
+        step.Clean()
+        self.Blocks.remove(step)
+        self.Elements.remove(step)
+        self.Controler.RemoveCurrentElementEditingInstance(step.GetId())
+        for element in elements:
+            element.RefreshModel()
+            
+    def DeleteTransition(self, transition):
+        elements = []
+        connectors = transition.GetConnectors()
+        if connectors["output"]:
+            for element in connectors["output"].GetConnectedBlocks():
+                if element not in elements:
+                    elements.append(element)
+        transition.Clean()
+        self.Blocks.remove(transition)
+        self.Elements.remove(transition)
+        self.Controler.RemoveCurrentElementEditingInstance(transition.GetId())
+        for element in elements:
+            element.RefreshModel()
+
+    def DeleteDivergence(self, divergence):
+        elements = []
+        connectors = divergence.GetConnectors()
+        for output in connectors["outputs"]:
+            for element in output.GetConnectedBlocks():
+                if element not in elements:
+                    elements.append(element)
+        divergence.Clean()
+        self.Blocks.remove(divergence)
+        self.Elements.remove(divergence)
+        self.Controler.RemoveCurrentElementEditingInstance(divergence.GetId())
+        for element in elements:
+            element.RefreshModel()
+    
+    def DeleteJump(self, jump):
+        jump.Clean()
+        self.Blocks.remove(jump)
+        self.Elements.remove(jump)
+        self.Controler.RemoveCurrentElementEditingInstance(jump.GetId())
+    
+    def DeleteActionBlock(self, actionblock):
+        actionblock.Clean()
+        self.Blocks.remove(actionblock)
+        self.Elements.remove(actionblock)
+        self.Controler.RemoveCurrentElementEditingInstance(actionblock.GetId())
+
 
 #-------------------------------------------------------------------------------
 #                            Editing functions