Browse Source

Fixed attribute editor on second time using a local renderer

Yentl Van Tendeloo 7 years ago
parent
commit
ae6ac62045
2 changed files with 44 additions and 3 deletions
  1. 21 2
      classes/window/main_window.xml
  2. 23 1
      frontend.py

+ 21 - 2
classes/window/main_window.xml

@@ -199,7 +199,19 @@
                         </state>
                         </state>
 
 
                         <state id="wait_for_finished">
                         <state id="wait_for_finished">
-                            <transition event="close_window" target="../mark_dirty">
+                            <transition event="close_window" cond="current_rendered_model is not None" target="../mark_dirty">
+                                <script>
+                                    print("Closed window!")
+                                </script>
+                                <raise event="delete_instance" scope="cd">
+                                    <parameter expr="self.current_window"/>
+                                </raise>
+                            </transition>
+
+                            <transition event="close_window" cond="current_rendered_model is None" target="../../rerender_model/request_render">
+                                <script>
+                                    print("Closed window!")
+                                </script>
                                 <raise event="delete_instance" scope="cd">
                                 <raise event="delete_instance" scope="cd">
                                     <parameter expr="self.current_window"/>
                                     <parameter expr="self.current_window"/>
                                 </raise>
                                 </raise>
@@ -208,13 +220,20 @@
 
 
                         <state id="mark_dirty">
                         <state id="mark_dirty">
                             <onentry>
                             <onentry>
+                                <script>
+                                    print("Marking as dirty")
+                                </script>
                                 <raise event="mv_request" scope="broad">
                                 <raise event="mv_request" scope="broad">
                                     <parameter expr="'attr_assign'"/>
                                     <parameter expr="'attr_assign'"/>
                                     <parameter expr="[current_rendered_model, self.cs_element, 'dirty', True]"/>
                                     <parameter expr="[current_rendered_model, self.cs_element, 'dirty', True]"/>
                                 </raise>
                                 </raise>
                             </onentry>
                             </onentry>
 
 
-                            <transition event="mv_response" target="../../rerender_model/request_render"/>
+                            <transition event="mv_response" target="../../rerender_model/request_render">
+                                <script>
+                                    print("Response OK")
+                                </script>
+                            </transition>
                         </state>
                         </state>
                     </state>
                     </state>
 
 

+ 23 - 1
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:   Mon May 28 17:37:57 2018
+Date:   Mon May 28 17:42:47 2018
 
 
 Model author: Yentl Van Tendeloo
 Model author: Yentl Van Tendeloo
 Model name:   Modelverse Visual Editor - Tkinter Version 
 Model name:   Modelverse Visual Editor - Tkinter Version 
@@ -5807,10 +5807,17 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         _init_init_running_modify_defined_attrs_wait_for_finished_0 = Transition(self, self.states["/init/init/running/modify_defined_attrs/wait_for_finished"], [self.states["/init/init/running/modify_defined_attrs/mark_dirty"]])
         _init_init_running_modify_defined_attrs_wait_for_finished_0 = Transition(self, self.states["/init/init/running/modify_defined_attrs/wait_for_finished"], [self.states["/init/init/running/modify_defined_attrs/mark_dirty"]])
         _init_init_running_modify_defined_attrs_wait_for_finished_0.setAction(self._init_init_running_modify_defined_attrs_wait_for_finished_0_exec)
         _init_init_running_modify_defined_attrs_wait_for_finished_0.setAction(self._init_init_running_modify_defined_attrs_wait_for_finished_0_exec)
         _init_init_running_modify_defined_attrs_wait_for_finished_0.setTrigger(Event("close_window", None))
         _init_init_running_modify_defined_attrs_wait_for_finished_0.setTrigger(Event("close_window", None))
+        _init_init_running_modify_defined_attrs_wait_for_finished_0.setGuard(self._init_init_running_modify_defined_attrs_wait_for_finished_0_guard)
         self.states["/init/init/running/modify_defined_attrs/wait_for_finished"].addTransition(_init_init_running_modify_defined_attrs_wait_for_finished_0)
         self.states["/init/init/running/modify_defined_attrs/wait_for_finished"].addTransition(_init_init_running_modify_defined_attrs_wait_for_finished_0)
+        _init_init_running_modify_defined_attrs_wait_for_finished_1 = Transition(self, self.states["/init/init/running/modify_defined_attrs/wait_for_finished"], [self.states["/init/init/running/rerender_model/request_render"]])
+        _init_init_running_modify_defined_attrs_wait_for_finished_1.setAction(self._init_init_running_modify_defined_attrs_wait_for_finished_1_exec)
+        _init_init_running_modify_defined_attrs_wait_for_finished_1.setTrigger(Event("close_window", None))
+        _init_init_running_modify_defined_attrs_wait_for_finished_1.setGuard(self._init_init_running_modify_defined_attrs_wait_for_finished_1_guard)
+        self.states["/init/init/running/modify_defined_attrs/wait_for_finished"].addTransition(_init_init_running_modify_defined_attrs_wait_for_finished_1)
         
         
         # transition /init/init/running/modify_defined_attrs/mark_dirty
         # transition /init/init/running/modify_defined_attrs/mark_dirty
         _init_init_running_modify_defined_attrs_mark_dirty_0 = Transition(self, self.states["/init/init/running/modify_defined_attrs/mark_dirty"], [self.states["/init/init/running/rerender_model/request_render"]])
         _init_init_running_modify_defined_attrs_mark_dirty_0 = Transition(self, self.states["/init/init/running/modify_defined_attrs/mark_dirty"], [self.states["/init/init/running/rerender_model/request_render"]])
+        _init_init_running_modify_defined_attrs_mark_dirty_0.setAction(self._init_init_running_modify_defined_attrs_mark_dirty_0_exec)
         _init_init_running_modify_defined_attrs_mark_dirty_0.setTrigger(Event("mv_response", None))
         _init_init_running_modify_defined_attrs_mark_dirty_0.setTrigger(Event("mv_response", None))
         self.states["/init/init/running/modify_defined_attrs/mark_dirty"].addTransition(_init_init_running_modify_defined_attrs_mark_dirty_0)
         self.states["/init/init/running/modify_defined_attrs/mark_dirty"].addTransition(_init_init_running_modify_defined_attrs_mark_dirty_0)
         
         
@@ -6274,6 +6281,7 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.big_step.outputEventOM(Event("create_instance", None, [self, 'subwindow', 'AttributeEditor', self.as_element]))
         self.big_step.outputEventOM(Event("create_instance", None, [self, 'subwindow', 'AttributeEditor', self.as_element]))
     
     
     def _init_init_running_modify_defined_attrs_mark_dirty_enter(self):
     def _init_init_running_modify_defined_attrs_mark_dirty_enter(self):
+        print("Marking as dirty")
         self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['attr_assign', [current_rendered_model, self.cs_element, 'dirty', True]])]))
         self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['attr_assign', [current_rendered_model, self.cs_element, 'dirty', True]])]))
     
     
     def _init_init_running_execute_activity_open_window_enter(self):
     def _init_init_running_execute_activity_open_window_enter(self):
@@ -6436,8 +6444,22 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.current_window = assoc_name
         self.current_window = assoc_name
     
     
     def _init_init_running_modify_defined_attrs_wait_for_finished_0_exec(self, parameters):
     def _init_init_running_modify_defined_attrs_wait_for_finished_0_exec(self, parameters):
+        print("Closed window!")
         self.big_step.outputEventOM(Event("delete_instance", None, [self, self.current_window]))
         self.big_step.outputEventOM(Event("delete_instance", None, [self, self.current_window]))
     
     
+    def _init_init_running_modify_defined_attrs_wait_for_finished_0_guard(self, parameters):
+        return current_rendered_model is not None
+    
+    def _init_init_running_modify_defined_attrs_wait_for_finished_1_exec(self, parameters):
+        print("Closed window!")
+        self.big_step.outputEventOM(Event("delete_instance", None, [self, self.current_window]))
+    
+    def _init_init_running_modify_defined_attrs_wait_for_finished_1_guard(self, parameters):
+        return current_rendered_model is None
+    
+    def _init_init_running_modify_defined_attrs_mark_dirty_0_exec(self, parameters):
+        print("Response OK")
+    
     def _init_init_running_execute_activity_open_window_0_exec(self, parameters):
     def _init_init_running_execute_activity_open_window_0_exec(self, parameters):
         assoc_name = parameters[0]
         assoc_name = parameters[0]
         self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))
         self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))