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 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">
                                     <parameter expr="self.current_window"/>
                                 </raise>
@@ -208,13 +220,20 @@
 
                         <state id="mark_dirty">
                             <onentry>
+                                <script>
+                                    print("Marking as dirty")
+                                </script>
                                 <raise event="mv_request" scope="broad">
                                     <parameter expr="'attr_assign'"/>
                                     <parameter expr="[current_rendered_model, self.cs_element, 'dirty', True]"/>
                                 </raise>
                             </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>
 

+ 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)
 
-Date:   Mon May 28 17:37:57 2018
+Date:   Mon May 28 17:42:47 2018
 
 Model author: Yentl Van Tendeloo
 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.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.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)
+        _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
         _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))
         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]))
     
     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]])]))
     
     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
     
     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]))
     
+    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):
         assoc_name = parameters[0]
         self.big_step.outputEventOM(Event("start_instance", None, [self, assoc_name]))