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

+ 41 - 10
classes/window/main_window.xml

@@ -656,7 +656,7 @@
                                         current_metamodel = next(iter(result))[0]
                                         current_metamodel = next(iter(result))[0]
                                     else:
                                     else:
                                         current_metamodel = 'formalisms/Bottom'
                                         current_metamodel = 'formalisms/Bottom'
-                                    self.allowed_metamodels = result
+                                    self.allowed_metamodels = set([i[0] for i in result])
                                 </script>
                                 </script>
 
 
                                 <raise event="mv_request" scope="broad">
                                 <raise event="mv_request" scope="broad">
@@ -677,6 +677,11 @@
                                     <parameter expr="'transformation_between'"/>
                                     <parameter expr="'transformation_between'"/>
                                     <parameter expr="[{'abstract': current_metamodel, 'rendered': 'formalisms/MM_render/graphical'}, {'rendered': 'formalisms/MM_render/graphical'}]"/>
                                     <parameter expr="[{'abstract': current_metamodel, 'rendered': 'formalisms/MM_render/graphical'}, {'rendered': 'formalisms/MM_render/graphical'}]"/>
                                 </raise>
                                 </raise>
+
+                                <raise event="update_status" scope="narrow" target="'progress_bar'">
+                                    <parameter expr="25"/>
+                                    <parameter expr="'Querying available Concrete Syntax mappers...'"/>
+                                </raise>
                             </onentry>
                             </onentry>
 
 
                             <transition event="mv_response" target="../check_CS_mapper">
                             <transition event="mv_response" target="../check_CS_mapper">
@@ -692,6 +697,11 @@
                                         if current_mapper == "(none)":
                                         if current_mapper == "(none)":
                                             current_mapper = None
                                             current_mapper = None
                                 </script>
                                 </script>
+
+                                <raise event="update_status" scope="narrow" target="'progress_bar'">
+                                    <parameter expr="30"/>
+                                    <parameter expr="'Querying available Concrete Syntax mappers... OK'"/>
+                                </raise>
                             </transition>
                             </transition>
 
 
                             <transition event="mv_exception" target="../check_CS_mapper">
                             <transition event="mv_exception" target="../check_CS_mapper">
@@ -700,6 +710,11 @@
                                     global current_mapper
                                     global current_mapper
                                     current_mapper = None
                                     current_mapper = None
                                 </script>
                                 </script>
+
+                                <raise event="update_status" scope="narrow" target="'progress_bar'">
+                                    <parameter expr="30"/>
+                                    <parameter expr="'Querying available Concrete Syntax mappers... OK'"/>
+                                </raise>
                             </transition>
                             </transition>
                         </state>
                         </state>
 
 
@@ -711,6 +726,11 @@
                                     self.allowed_rendered = []
                                     self.allowed_rendered = []
                                 </script>
                                 </script>
                                 <raise event="clear_canvas" scope="narrow" target="'canvas'"/>
                                 <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>
 
 
                             <transition cond="current_mapper is not None" target="../search_CS_rendered"/>
                             <transition cond="current_mapper is not None" target="../search_CS_rendered"/>
@@ -722,6 +742,11 @@
                                     <parameter expr="'model_rendered'"/>
                                     <parameter expr="'model_rendered'"/>
                                     <parameter expr="[current_model, current_mapper]"/>
                                     <parameter expr="[current_model, current_mapper]"/>
                                 </raise>
                                 </raise>
+
+                                <raise event="update_status" scope="narrow" target="'progress_bar'">
+                                    <parameter expr="35"/>
+                                    <parameter expr="'Rendering model with custom renderer...'"/>
+                                </raise>
                             </onentry>
                             </onentry>
 
 
                             <transition event="mv_response" target="../store_metamodel">
                             <transition event="mv_response" target="../store_metamodel">
@@ -812,11 +837,6 @@
                                     global current_metamodel
                                     global current_metamodel
                                     current_metamodel = result
                                     current_metamodel = result
                                 </script>
                                 </script>
-
-                                <raise event="mv_request" scope="broad">
-                                    <parameter expr="'alter_context'"/>
-                                    <parameter expr="[current_model, current_metamodel]"/>
-                                </raise>
                             </transition>
                             </transition>
                         </state>
                         </state>
 
 
@@ -870,6 +890,11 @@
                                 <raise event="delete_instance" scope="cd">
                                 <raise event="delete_instance" scope="cd">
                                     <parameter expr="self.subwindow"/>
                                     <parameter expr="self.subwindow"/>
                                 </raise>
                                 </raise>
+
+                                <raise event="mv_request" scope="broad">
+                                    <parameter expr="'alter_context'"/>
+                                    <parameter expr="[current_model, current_metamodel]"/>
+                                </raise>
                             </transition>
                             </transition>
 
 
                             <transition event="close_window" cond="current_model == ''" target="../../idle">
                             <transition event="close_window" cond="current_model == ''" target="../../idle">
@@ -901,6 +926,12 @@
                     </state>
                     </state>
 
 
                     <state id="rerender_model" initial="initial_render">
                     <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">
                         <state id="initial_render">
                             <transition cond="self.model_loaded" target="../recreate_toolbars"/>
                             <transition cond="self.model_loaded" target="../recreate_toolbars"/>
                             <transition cond="not self.model_loaded" target="../canvas">
                             <transition cond="not self.model_loaded" target="../canvas">
@@ -1059,14 +1090,14 @@
 
 
                         <state id="request_render">
                         <state id="request_render">
                             <onentry>
                             <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'">
                                 <raise event="update_status" scope="narrow" target="'progress_bar'">
                                     <parameter expr="50"/>
                                     <parameter expr="50"/>
                                     <parameter expr="'Perceptualizing model...'"/>
                                     <parameter expr="'Perceptualizing model...'"/>
                                 </raise>
                                 </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>
                             </onentry>
 
 
                             <transition event="mv_response" cond="current_rendered_model" target="../render_model">
                             <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)
 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 author: Yentl Van Tendeloo
 Model name:   Modelverse Visual Editor - Tkinter Version 
 Model name:   Modelverse Visual Editor - Tkinter Version 
@@ -3059,7 +3059,7 @@ class Modelverse(RuntimeClassBase):
     def _initialized_http_mapper_init_0_exec(self, parameters):
     def _initialized_http_mapper_init_0_exec(self, parameters):
         value = parameters[0]
         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])]))
         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):
     def _initialized_http_mapper_init_0_guard(self, parameters):
         value = parameters[0]
         value = parameters[0]
@@ -3068,7 +3068,7 @@ class Modelverse(RuntimeClassBase):
     def _initialized_http_mapper_init_1_exec(self, parameters):
     def _initialized_http_mapper_init_1_exec(self, parameters):
         value = parameters[0]
         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])]))
         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):
     def _initialized_http_mapper_init_1_guard(self, parameters):
         value = parameters[0]
         value = parameters[0]
@@ -3218,6 +3218,7 @@ class Modelverse(RuntimeClassBase):
     
     
     def _initialized_behaviour_operations_alter_context_0_exec(self, parameters):
     def _initialized_behaviour_operations_alter_context_0_exec(self, parameters):
         self.registered_metamodel[self.parameters[0]] = self.parameters[1]
         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):
     def _initialized_behaviour_operations_model_overwrite_init_0_guard(self, parameters):
         return self.parameters[0] in self.registered_metamodel
         return self.parameters[0] in self.registered_metamodel
@@ -5497,6 +5498,7 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         
         
         # state /init/init/running/rerender_model
         # 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"] = 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
         # 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)
         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):
     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'])]))
         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):
     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.big_step.outputEventOM(Event("narrow_cast", None, [self, 'model_toolbars', Event("close", None, [])]))
         self.nr_toolbars = 3
         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):
     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("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):
     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("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):
     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]])]))
         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]])]))
         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):
     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("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):
     def _init_init_close_enter(self):
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("close_window", None, [])]))
         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]
             current_metamodel = next(iter(result))[0]
         else:
         else:
             current_metamodel = 'formalisms/Bottom'
             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("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'])]))
         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))
             current_mapper = next(iter(result))
             if current_mapper == "(none)":
             if current_mapper == "(none)":
                 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):
     def _init_init_running_open_model_search_CS_mappers_1_exec(self, parameters):
         self.allowed_mappers = ["(none)"]
         self.allowed_mappers = ["(none)"]
         global current_mapper
         global current_mapper
         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_check_CS_mapper_0_exec(self, parameters):
     def _init_init_running_open_model_check_CS_mapper_0_exec(self, parameters):
         global current_rendered_model
         global current_rendered_model
         current_rendered_model = None
         current_rendered_model = None
         self.allowed_rendered = []
         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, '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):
     def _init_init_running_open_model_check_CS_mapper_0_guard(self, parameters):
         return current_mapper is None
         return current_mapper is None
@@ -6645,7 +6655,6 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         result = parameters[0]
         result = parameters[0]
         global current_metamodel
         global current_metamodel
         current_metamodel = result
         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):
     def _init_init_running_create_new_model_got_mm_0_exec(self, parameters):
         self.big_step.outputEventOM(Event("delete_instance", None, [self, self.subwindow]))
         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):
     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("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):
     def _init_init_running_create_new_model_waiting_for_model_name_1_guard(self, parameters):
         return current_model != ''
         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.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("browse_result", None, [self.current_location])]))
         self.raiseInternalEvent(Event("close_self", None, []))
         self.raiseInternalEvent(Event("close_self", None, []))
         self.to_close = self.labels.values() + [self.button_ok, self.button_back, self.progressbar]
         self.to_close = self.labels.values() + [self.button_ok, self.button_back, self.progressbar]
+        print("Raise result")
     
     
     def _root_0_guard(self, parameters):
     def _root_0_guard(self, parameters):
         return len(self.current_location) > 0 and self.current_location[-1] != '/'
         return len(self.current_location) > 0 and self.current_location[-1] != '/'