Explorar o código

Keep previous CS mapper and rendered when switching (if possible)

Yentl Van Tendeloo %!s(int64=8) %!d(string=hai) anos
pai
achega
32b5a12060
Modificáronse 2 ficheiros con 31 adicións e 9 borrados
  1. 15 4
      classes/window/main_window.xml
  2. 16 5
      frontend.py

+ 15 - 4
classes/window/main_window.xml

@@ -21,6 +21,15 @@
             self.canvas_frame.pack(fill=tk.BOTH, expand=tk.TRUE)
             self.progressbar_frame.pack(fill=tk.X)
             self.model_loaded = False
+
+            global current_mapper
+            current_mapper = None
+            global current_rendered_model
+            current_rendered_model = None
+            global current_metamodel
+            current_metamodel = None
+            global current_model
+            current_model = None
         </body>
     </constructor>
 
@@ -119,7 +128,7 @@
                     </raise>
                 </onentry>
 
-                <transition event="mv_response" target="../rerender_model"/>
+                <transition event="mv_response" target="../open_model/search_CS_mappers"/>
             </state>
 
             <state id="verify_model" initial="request">
@@ -267,7 +276,8 @@
                             print("Allowed mappers: " + str(result))
                             self.allowed_mappers = list(result)
                             global current_mapper
-                            current_mapper = next(iter(result))
+                            if current_mapper not in result:
+                                current_mapper = next(iter(result))
                         </script>
                     </transition>
                 </state>
@@ -288,8 +298,9 @@
                             global current_rendered_model
 
                             if (len(result) > 0):
-                                print("Reusing an existing rendered model")
-                                current_rendered_model = next(iter(result))
+                                if current_rendered_model not in result:
+                                    print("Reusing an existing rendered model")
+                                    current_rendered_model = next(iter(result))
                             else:
                                 print("Creating new rendered model!")
                                 current_rendered_model = "rendered/%s" % str(uuid.uuid4())

+ 16 - 5
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 Oct  2 11:40:09 2017
+Date:   Mon Oct  2 11:56:15 2017
 
 Model author: Yentl Van Tendeloo
 Model name:   Modelverse Visual Editor - Tkinter Version 
@@ -3966,6 +3966,15 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.canvas_frame.pack(fill=tk.BOTH, expand=tk.TRUE)
         self.progressbar_frame.pack(fill=tk.X)
         self.model_loaded = False
+        
+        global current_mapper
+        current_mapper = None
+        global current_rendered_model
+        current_rendered_model = None
+        global current_metamodel
+        current_metamodel = None
+        global current_model
+        current_model = None
     
     def user_defined_destructor(self):
         self.destroy()
@@ -4251,7 +4260,7 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.states["/running/idle"].addTransition(_running_idle_4)
         
         # transition /running/change_metamodel
-        _running_change_metamodel_0 = Transition(self, self.states["/running/change_metamodel"], [self.states["/running/rerender_model"]])
+        _running_change_metamodel_0 = Transition(self, self.states["/running/change_metamodel"], [self.states["/running/open_model/search_CS_mappers"]])
         _running_change_metamodel_0.setTrigger(Event("mv_response", None))
         self.states["/running/change_metamodel"].addTransition(_running_change_metamodel_0)
         
@@ -4650,7 +4659,8 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         print("Allowed mappers: " + str(result))
         self.allowed_mappers = list(result)
         global current_mapper
-        current_mapper = next(iter(result))
+        if current_mapper not in result:
+            current_mapper = next(iter(result))
     
     def _running_open_model_search_CS_rendered_0_exec(self, parameters):
         result = parameters[0]
@@ -4659,8 +4669,9 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         global current_rendered_model
         
         if (len(result) > 0):
-            print("Reusing an existing rendered model")
-            current_rendered_model = next(iter(result))
+            if current_rendered_model not in result:
+                print("Reusing an existing rendered model")
+                current_rendered_model = next(iter(result))
         else:
             print("Creating new rendered model!")
             current_rendered_model = "rendered/%s" % str(uuid.uuid4())