Просмотр исходного кода

Fixed remove of element that was previously linked

Yentl Van Tendeloo 8 лет назад
Родитель
Сommit
381c66c579
4 измененных файлов с 18 добавлено и 12 удалено
  1. 1 0
      classes/canvas/canvas.xml
  2. 0 1
      classes/canvas/canvas_element.xml
  3. 3 1
      classes/canvas/connecting_line.xml
  4. 14 10
      frontend.py

+ 1 - 0
classes/canvas/canvas.xml

@@ -146,6 +146,7 @@
                         <parameter name="group_element"/>
                         <parameter name="group_element"/>
                         <script>
                         <script>
                             del self.group_location[group_element]
                             del self.group_location[group_element]
+                            print("Remove group_location " + str(group_element))
                         </script>
                         </script>
                         <raise event="deleted_element" scope="narrow" target="'connecting_lines'">
                         <raise event="deleted_element" scope="narrow" target="'connecting_lines'">
                             <parameter expr="group_element"/>
                             <parameter expr="group_element"/>

+ 0 - 1
classes/canvas/canvas_element.xml

@@ -2,7 +2,6 @@
     <relationships>
     <relationships>
         <association name="parent" class="A" min="1" max="1" />
         <association name="parent" class="A" min="1" max="1" />
         <inheritance class="SCCDWidget" priority='0'/>
         <inheritance class="SCCDWidget" priority='0'/>
-        <association name="elements" class="CanvasElement"/>
         <association name="prompt" class="PromptWindow"/>
         <association name="prompt" class="PromptWindow"/>
     </relationships>
     </relationships>
     <constructor>
     <constructor>

+ 3 - 1
classes/canvas/connecting_line.xml

@@ -126,7 +126,7 @@
                 </raise>
                 </raise>
             </transition>
             </transition>
 
 
-            <transition event="deleted_element" cond="element == self.cs_element['__source'] or element == self.cs_element['__target']" target=".">
+            <transition event="deleted_element" cond="element == self.cs_element['__source'] or element == self.cs_element['__target']" target="../deleted">
                 <parameter name="element"/>
                 <parameter name="element"/>
                 <script>
                 <script>
                     for f in self.elements:
                     for f in self.elements:
@@ -138,6 +138,8 @@
                 </raise>
                 </raise>
             </transition>
             </transition>
         </state>
         </state>
+        
+        <state id="deleted"/>
 
 
         <state id="remove_element">
         <state id="remove_element">
             <onentry>
             <onentry>

+ 14 - 10
frontend.py

@@ -1,7 +1,7 @@
 """
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
 
-Date:   Wed Oct 11 17:50:22 2017
+Date:   Wed Oct 11 19:26:54 2017
 
 
 Model author: Yentl Van Tendeloo
 Model author: Yentl Van Tendeloo
 Model name:   Modelverse Visual Editor - Tkinter Version 
 Model name:   Modelverse Visual Editor - Tkinter Version 
@@ -8010,6 +8010,7 @@ class Canvas(RuntimeClassBase, tk.Canvas, SCCDWidget):
     def _ready_process_events_ready_9_exec(self, parameters):
     def _ready_process_events_ready_9_exec(self, parameters):
         group_element = parameters[0]
         group_element = parameters[0]
         del self.group_location[group_element]
         del self.group_location[group_element]
+        print("Remove group_location " + str(group_element))
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'connecting_lines', Event("deleted_element", None, [group_element])]))
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'connecting_lines', Event("deleted_element", None, [group_element])]))
     
     
     def _ready_process_events_creating_line_drawing_0_exec(self, parameters):
     def _ready_process_events_creating_line_drawing_0_exec(self, parameters):
@@ -8188,34 +8189,38 @@ class ConnectingLine(RuntimeClassBase, SCCDWidget):
         # state /main
         # state /main
         self.states["/main"] = State(2, "/main", self)
         self.states["/main"] = State(2, "/main", self)
         
         
+        # state /deleted
+        self.states["/deleted"] = State(3, "/deleted", self)
+        
         # state /remove_element
         # state /remove_element
-        self.states["/remove_element"] = State(3, "/remove_element", self)
+        self.states["/remove_element"] = State(4, "/remove_element", self)
         self.states["/remove_element"].setEnter(self._remove_element_enter)
         self.states["/remove_element"].setEnter(self._remove_element_enter)
         
         
         # state /update_attrs
         # state /update_attrs
-        self.states["/update_attrs"] = State(4, "/update_attrs", self)
+        self.states["/update_attrs"] = State(5, "/update_attrs", self)
         
         
         # state /update_attrs/query
         # state /update_attrs/query
-        self.states["/update_attrs/query"] = State(5, "/update_attrs/query", self)
+        self.states["/update_attrs/query"] = State(6, "/update_attrs/query", self)
         self.states["/update_attrs/query"].setEnter(self._update_attrs_query_enter)
         self.states["/update_attrs/query"].setEnter(self._update_attrs_query_enter)
         
         
         # state /update_attrs/prompt
         # state /update_attrs/prompt
-        self.states["/update_attrs/prompt"] = State(6, "/update_attrs/prompt", self)
+        self.states["/update_attrs/prompt"] = State(7, "/update_attrs/prompt", self)
         self.states["/update_attrs/prompt"].setEnter(self._update_attrs_prompt_enter)
         self.states["/update_attrs/prompt"].setEnter(self._update_attrs_prompt_enter)
         
         
         # state /update_attrs/wait_for_results
         # state /update_attrs/wait_for_results
-        self.states["/update_attrs/wait_for_results"] = State(7, "/update_attrs/wait_for_results", self)
+        self.states["/update_attrs/wait_for_results"] = State(8, "/update_attrs/wait_for_results", self)
         
         
         # state /update_attrs/process_results
         # state /update_attrs/process_results
-        self.states["/update_attrs/process_results"] = State(8, "/update_attrs/process_results", self)
+        self.states["/update_attrs/process_results"] = State(9, "/update_attrs/process_results", self)
         
         
         # state /update_attrs/mark_dirty
         # state /update_attrs/mark_dirty
-        self.states["/update_attrs/mark_dirty"] = State(9, "/update_attrs/mark_dirty", self)
+        self.states["/update_attrs/mark_dirty"] = State(10, "/update_attrs/mark_dirty", self)
         self.states["/update_attrs/mark_dirty"].setEnter(self._update_attrs_mark_dirty_enter)
         self.states["/update_attrs/mark_dirty"].setEnter(self._update_attrs_mark_dirty_enter)
         
         
         # add children
         # add children
         self.states[""].addChild(self.states["/init"])
         self.states[""].addChild(self.states["/init"])
         self.states[""].addChild(self.states["/main"])
         self.states[""].addChild(self.states["/main"])
+        self.states[""].addChild(self.states["/deleted"])
         self.states[""].addChild(self.states["/remove_element"])
         self.states[""].addChild(self.states["/remove_element"])
         self.states[""].addChild(self.states["/update_attrs"])
         self.states[""].addChild(self.states["/update_attrs"])
         self.states["/update_attrs"].addChild(self.states["/update_attrs/query"])
         self.states["/update_attrs"].addChild(self.states["/update_attrs/query"])
@@ -8258,7 +8263,7 @@ class ConnectingLine(RuntimeClassBase, SCCDWidget):
         _main_4.setTrigger(Event("moved_element", None))
         _main_4.setTrigger(Event("moved_element", None))
         _main_4.setGuard(self._main_4_guard)
         _main_4.setGuard(self._main_4_guard)
         self.states["/main"].addTransition(_main_4)
         self.states["/main"].addTransition(_main_4)
-        _main_5 = Transition(self, self.states["/main"], [self.states["/main"]])
+        _main_5 = Transition(self, self.states["/main"], [self.states["/deleted"]])
         _main_5.setAction(self._main_5_exec)
         _main_5.setAction(self._main_5_exec)
         _main_5.setTrigger(Event("deleted_element", None))
         _main_5.setTrigger(Event("deleted_element", None))
         _main_5.setGuard(self._main_5_guard)
         _main_5.setGuard(self._main_5_guard)
@@ -9025,7 +9030,6 @@ class ObjectManager(ObjectManagerBase):
             instance = CanvasElement(self.controller, construct_params[0], construct_params[1], construct_params[2], construct_params[3])
             instance = CanvasElement(self.controller, construct_params[0], construct_params[1], construct_params[2], construct_params[3])
             instance.associations = {}
             instance.associations = {}
             instance.associations["parent"] = Association("A", 1, 1)
             instance.associations["parent"] = Association("A", 1, 1)
-            instance.associations["elements"] = Association("CanvasElement", 0, -1)
             instance.associations["prompt"] = Association("PromptWindow", 0, -1)
             instance.associations["prompt"] = Association("PromptWindow", 0, -1)
         else:
         else:
             raise Exception("Cannot instantiate class " + class_name)
             raise Exception("Cannot instantiate class " + class_name)