Browse Source

Patch error when creating new model with open model

Yentl Van Tendeloo 7 years ago
parent
commit
fc0d23343b
3 changed files with 59 additions and 19 deletions
  1. 1 3
      classes/window/browser.xml
  2. 41 10
      classes/window/main_window.xml
  3. 17 6
      frontend.py

+ 1 - 3
classes/window/browser.xml

@@ -301,15 +301,13 @@
             <transition cond="len(self.current_location) > 0 and self.current_location[-1] != '/'" target="../closing">
                 <raise event="browse_result" target="'parent'" scope="narrow">
                     <parameter expr="self.current_location"/>
-                    <script>
-                        print("RAISE RESULT")
-                    </script>
                 </raise>
 
                 <raise event="close_self"/>
 
                 <script>
                     self.to_close = self.labels.values() + [self.button_ok, self.button_back, self.progressbar]
+                    print("Raise result")
                 </script>
             </transition>
 

+ 41 - 10
classes/window/main_window.xml

@@ -656,7 +656,7 @@
                                         current_metamodel = next(iter(result))[0]
                                     else:
                                         current_metamodel = 'formalisms/Bottom'
-                                    self.allowed_metamodels = result
+                                    self.allowed_metamodels = set([i[0] for i in result])
                                 </script>
 
                                 <raise event="mv_request" scope="broad">
@@ -677,6 +677,11 @@
                                     <parameter expr="'transformation_between'"/>
                                     <parameter expr="[{'abstract': current_metamodel, 'rendered': 'formalisms/MM_render/graphical'}, {'rendered': 'formalisms/MM_render/graphical'}]"/>
                                 </raise>
+
+                                <raise event="update_status" scope="narrow" target="'progress_bar'">
+                                    <parameter expr="25"/>
+                                    <parameter expr="'Querying available Concrete Syntax mappers...'"/>
+                                </raise>
                             </onentry>
 
                             <transition event="mv_response" target="../check_CS_mapper">
@@ -692,6 +697,11 @@
                                         if current_mapper == "(none)":
                                             current_mapper = None
                                 </script>
+
+                                <raise event="update_status" scope="narrow" target="'progress_bar'">
+                                    <parameter expr="30"/>
+                                    <parameter expr="'Querying available Concrete Syntax mappers... OK'"/>
+                                </raise>
                             </transition>
 
                             <transition event="mv_exception" target="../check_CS_mapper">
@@ -700,6 +710,11 @@
                                     global current_mapper
                                     current_mapper = None
                                 </script>
+
+                                <raise event="update_status" scope="narrow" target="'progress_bar'">
+                                    <parameter expr="30"/>
+                                    <parameter expr="'Querying available Concrete Syntax mappers... OK'"/>
+                                </raise>
                             </transition>
                         </state>
 
@@ -711,6 +726,11 @@
                                     self.allowed_rendered = []
                                 </script>
                                 <raise event="clear_canvas" scope="narrow" target="'canvas'"/>
+
+                                <raise event="update_status" scope="narrow" target="'progress_bar'">
+                                    <parameter expr="35"/>
+                                    <parameter expr="'Rendering model with internal renderer...'"/>
+                                </raise>
                             </transition>
 
                             <transition cond="current_mapper is not None" target="../search_CS_rendered"/>
@@ -722,6 +742,11 @@
                                     <parameter expr="'model_rendered'"/>
                                     <parameter expr="[current_model, current_mapper]"/>
                                 </raise>
+
+                                <raise event="update_status" scope="narrow" target="'progress_bar'">
+                                    <parameter expr="35"/>
+                                    <parameter expr="'Rendering model with custom renderer...'"/>
+                                </raise>
                             </onentry>
 
                             <transition event="mv_response" target="../store_metamodel">
@@ -812,11 +837,6 @@
                                     global current_metamodel
                                     current_metamodel = result
                                 </script>
-
-                                <raise event="mv_request" scope="broad">
-                                    <parameter expr="'alter_context'"/>
-                                    <parameter expr="[current_model, current_metamodel]"/>
-                                </raise>
                             </transition>
                         </state>
 
@@ -870,6 +890,11 @@
                                 <raise event="delete_instance" scope="cd">
                                     <parameter expr="self.subwindow"/>
                                 </raise>
+
+                                <raise event="mv_request" scope="broad">
+                                    <parameter expr="'alter_context'"/>
+                                    <parameter expr="[current_model, current_metamodel]"/>
+                                </raise>
                             </transition>
 
                             <transition event="close_window" cond="current_model == ''" target="../../idle">
@@ -901,6 +926,12 @@
                     </state>
 
                     <state id="rerender_model" initial="initial_render">
+                            <onentry>
+                                <raise event="update_status" scope="narrow" target="'progress_bar'">
+                                    <parameter expr="50"/>
+                                    <parameter expr="'Rendering model...'"/>
+                                </raise>
+                            </onentry>
                         <state id="initial_render">
                             <transition cond="self.model_loaded" target="../recreate_toolbars"/>
                             <transition cond="not self.model_loaded" target="../canvas">
@@ -1059,14 +1090,14 @@
 
                         <state id="request_render">
                             <onentry>
-                                <raise event="mv_request" scope="broad">
-                                    <parameter expr="'model_render' if current_rendered_model else 'element_list_nice'"/>
-                                    <parameter expr="[current_model, current_mapper, current_rendered_model] if current_rendered_model else [current_model]"/>
-                                </raise>
                                 <raise event="update_status" scope="narrow" target="'progress_bar'">
                                     <parameter expr="50"/>
                                     <parameter expr="'Perceptualizing model...'"/>
                                 </raise>
+                                <raise event="mv_request" scope="broad">
+                                    <parameter expr="'model_render' if current_rendered_model else 'element_list_nice'"/>
+                                    <parameter expr="[current_model, current_mapper, current_rendered_model] if current_rendered_model else [current_model]"/>
+                                </raise>
                             </onentry>
 
                             <transition event="mv_response" cond="current_rendered_model" target="../render_model">

+ 17 - 6
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:42:47 2018
+Date:   Tue May 29 09:07:36 2018
 
 Model author: Yentl Van Tendeloo
 Model name:   Modelverse Visual Editor - Tkinter Version 
@@ -3059,7 +3059,7 @@ class Modelverse(RuntimeClassBase):
     def _initialized_http_mapper_init_0_exec(self, parameters):
         value = parameters[0]
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.http_clients[0], Event("HTTP_input", None, [urlencode({"op": "set_input", "data": json.dumps(value), "taskname": self.taskname}), None])]))
-        #print("Request: " + str(value))
+        print("Request: " + str(value))
     
     def _initialized_http_mapper_init_0_guard(self, parameters):
         value = parameters[0]
@@ -3068,7 +3068,7 @@ class Modelverse(RuntimeClassBase):
     def _initialized_http_mapper_init_1_exec(self, parameters):
         value = parameters[0]
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.http_clients[0], Event("HTTP_input", None, [urlencode({"op": "set_input", "value": json.dumps(value), "taskname": self.taskname}), None])]))
-        #print("Request: " + str(value))
+        print("Request: " + str(value))
     
     def _initialized_http_mapper_init_1_guard(self, parameters):
         value = parameters[0]
@@ -3218,6 +3218,7 @@ class Modelverse(RuntimeClassBase):
     
     def _initialized_behaviour_operations_alter_context_0_exec(self, parameters):
         self.registered_metamodel[self.parameters[0]] = self.parameters[1]
+        print("Alter context of " + str(self.parameters[0]) + " to " + str(self.parameters[1]))
     
     def _initialized_behaviour_operations_model_overwrite_init_0_guard(self, parameters):
         return self.parameters[0] in self.registered_metamodel
@@ -5497,6 +5498,7 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         
         # state /init/init/running/rerender_model
         self.states["/init/init/running/rerender_model"] = State(64, "/init/init/running/rerender_model", self)
+        self.states["/init/init/running/rerender_model"].setEnter(self._init_init_running_rerender_model_enter)
         
         # state /init/init/running/rerender_model/initial_render
         self.states["/init/init/running/rerender_model/initial_render"] = State(65, "/init/init/running/rerender_model/initial_render", self)
@@ -6251,6 +6253,9 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
     def _init_init_running_custom_MM_wait_for_metamodel_enter(self):
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [10, 'Browsing for model... OK'])]))
     
+    def _init_init_running_rerender_model_enter(self):
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [50, 'Rendering model...'])]))
+    
     def _init_init_running_rerender_model_recreate_toolbars_enter(self):
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'model_toolbars', Event("close", None, [])]))
         self.nr_toolbars = 3
@@ -6328,9 +6333,11 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
     
     def _init_init_running_open_model_search_CS_mappers_enter(self):
         self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['transformation_between', [{'abstract': current_metamodel, 'rendered': 'formalisms/MM_render/graphical'}, {'rendered': 'formalisms/MM_render/graphical'}]])]))
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [25, 'Querying available Concrete Syntax mappers...'])]))
     
     def _init_init_running_open_model_search_CS_rendered_enter(self):
         self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['model_rendered', [current_model, current_mapper]])]))
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [35, 'Rendering model with custom renderer...'])]))
     
     def _init_init_running_open_model_store_metamodel_enter(self):
         self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['alter_context', [current_model, current_metamodel]])]))
@@ -6366,8 +6373,8 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['types', [current_model]])]))
     
     def _init_init_running_rerender_model_request_render_enter(self):
-        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['model_render' if current_rendered_model else 'element_list_nice', [current_model, current_mapper, current_rendered_model] if current_rendered_model else [current_model]])]))
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [50, 'Perceptualizing model...'])]))
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['model_render' if current_rendered_model else 'element_list_nice', [current_model, current_mapper, current_rendered_model] if current_rendered_model else [current_model]])]))
     
     def _init_init_close_enter(self):
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("close_window", None, [])]))
@@ -6583,7 +6590,7 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
             current_metamodel = next(iter(result))[0]
         else:
             current_metamodel = 'formalisms/Bottom'
-        self.allowed_metamodels = result
+        self.allowed_metamodels = set([i[0] for i in result])
         self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['alter_context', [current_model, current_metamodel]])]))
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [20, 'Querying existing metamodels... OK'])]))
     
@@ -6598,17 +6605,20 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
             current_mapper = next(iter(result))
             if current_mapper == "(none)":
                 current_mapper = None
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [30, 'Querying available Concrete Syntax mappers... OK'])]))
     
     def _init_init_running_open_model_search_CS_mappers_1_exec(self, parameters):
         self.allowed_mappers = ["(none)"]
         global current_mapper
         current_mapper = None
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [30, 'Querying available Concrete Syntax mappers... OK'])]))
     
     def _init_init_running_open_model_check_CS_mapper_0_exec(self, parameters):
         global current_rendered_model
         current_rendered_model = None
         self.allowed_rendered = []
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'canvas', Event("clear_canvas", None, [])]))
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [35, 'Rendering model with internal renderer...'])]))
     
     def _init_init_running_open_model_check_CS_mapper_0_guard(self, parameters):
         return current_mapper is None
@@ -6645,7 +6655,6 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         result = parameters[0]
         global current_metamodel
         current_metamodel = result
-        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['alter_context', [current_model, current_metamodel]])]))
     
     def _init_init_running_create_new_model_got_mm_0_exec(self, parameters):
         self.big_step.outputEventOM(Event("delete_instance", None, [self, self.subwindow]))
@@ -6666,6 +6675,7 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
     
     def _init_init_running_create_new_model_waiting_for_model_name_1_exec(self, parameters):
         self.big_step.outputEventOM(Event("delete_instance", None, [self, self.subwindow]))
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['alter_context', [current_model, current_metamodel]])]))
     
     def _init_init_running_create_new_model_waiting_for_model_name_1_guard(self, parameters):
         return current_model != ''
@@ -7223,6 +7233,7 @@ class Browser(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("browse_result", None, [self.current_location])]))
         self.raiseInternalEvent(Event("close_self", None, []))
         self.to_close = self.labels.values() + [self.button_ok, self.button_back, self.progressbar]
+        print("Raise result")
     
     def _root_0_guard(self, parameters):
         return len(self.current_location) > 0 and self.current_location[-1] != '/'