Pārlūkot izejas kodu

Only rerender on attribute change if at least one attribute changed

Yentl Van Tendeloo 8 gadi atpakaļ
vecāks
revīzija
7df83bf6ac
2 mainītis faili ar 23 papildinājumiem un 2 dzēšanām
  1. 7 1
      classes/canvas/canvas_element.xml
  2. 16 1
      frontend.py

+ 7 - 1
classes/canvas/canvas_element.xml

@@ -158,7 +158,13 @@
                     </script>
                 </transition>
 
-                <transition event="close_window" target="../process_results">
+                <transition event="close_window" cond="self.remaining_responses > 0" target="../process_results">
+                    <raise event="delete_instance" scope="cd">
+                        <parameter expr="'prompt'"/>
+                    </raise>
+                </transition>
+
+                <transition event="close_window" cond="self.remaining_responses == 0" target="../../main">
                     <raise event="delete_instance" scope="cd">
                         <parameter expr="'prompt'"/>
                     </raise>

+ 16 - 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:   Thu Oct  5 15:39:06 2017
+Date:   Thu Oct  5 15:57:44 2017
 
 Model author: Yentl Van Tendeloo
 Model name:   Modelverse Visual Editor - Tkinter Version 
@@ -7424,7 +7424,13 @@ class CanvasElement(RuntimeClassBase, SCCDWidget):
         _update_attrs_wait_for_results_1 = Transition(self, self.states["/update_attrs/wait_for_results"], [self.states["/update_attrs/process_results"]])
         _update_attrs_wait_for_results_1.setAction(self._update_attrs_wait_for_results_1_exec)
         _update_attrs_wait_for_results_1.setTrigger(Event("close_window", None))
+        _update_attrs_wait_for_results_1.setGuard(self._update_attrs_wait_for_results_1_guard)
         self.states["/update_attrs/wait_for_results"].addTransition(_update_attrs_wait_for_results_1)
+        _update_attrs_wait_for_results_2 = Transition(self, self.states["/update_attrs/wait_for_results"], [self.states["/main"]])
+        _update_attrs_wait_for_results_2.setAction(self._update_attrs_wait_for_results_2_exec)
+        _update_attrs_wait_for_results_2.setTrigger(Event("close_window", None))
+        _update_attrs_wait_for_results_2.setGuard(self._update_attrs_wait_for_results_2_guard)
+        self.states["/update_attrs/wait_for_results"].addTransition(_update_attrs_wait_for_results_2)
         
         # transition /update_attrs/process_results
         _update_attrs_process_results_0 = Transition(self, self.states["/update_attrs/process_results"], [self.states["/update_attrs/process_results"]])
@@ -7562,6 +7568,15 @@ class CanvasElement(RuntimeClassBase, SCCDWidget):
     def _update_attrs_wait_for_results_1_exec(self, parameters):
         self.big_step.outputEventOM(Event("delete_instance", None, [self, 'prompt']))
     
+    def _update_attrs_wait_for_results_1_guard(self, parameters):
+        return self.remaining_responses > 0
+    
+    def _update_attrs_wait_for_results_2_exec(self, parameters):
+        self.big_step.outputEventOM(Event("delete_instance", None, [self, 'prompt']))
+    
+    def _update_attrs_wait_for_results_2_guard(self, parameters):
+        return self.remaining_responses == 0
+    
     def _update_attrs_process_results_0_exec(self, parameters):
         k, v = self.diff_results.popitem()
         self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['attr_assign', [current_model, self.as_element, k, v]])]))