瀏覽代碼

Fixed add of object diagrams, but render_OD.alc doesn't compile

Yentl Van Tendeloo 8 年之前
父節點
當前提交
37db099e83
共有 3 個文件被更改,包括 132 次插入63 次删除
  1. 1 0
      classes/modelverse/modelverse.xml
  2. 40 3
      classes/window/main_window.xml
  3. 91 60
      frontend.py

+ 1 - 0
classes/modelverse/modelverse.xml

@@ -574,6 +574,7 @@
 
                                     <script>
                                         self.context = str(uuid.uuid4())
+                                        print("Create new context: " + str(self.context))
                                         self.actions[self.context] = []
                                         self.code = self.parameters[3]
                                     </script>

+ 40 - 3
classes/window/main_window.xml

@@ -138,13 +138,50 @@
             <state id="add_object_diagrams" initial="init">
                 <state id="init">
                     <onentry>
-                        <raise event="mv_request">
+                        <raise event="mv_request" scope="broad">
                             <parameter expr="'transformation_add_AL'"/>
-                            <parameter expr="[{'rendered': 'formalisms/MM_render', 'abstract': current_metamodel}, {'rendered': 'formalisms/MM_render'}, 'render_OD/' + current_model, open('models/render_OD.alc', 'r').read()]"/>
+                            <parameter expr="[{'rendered': 'formalisms/MM_render', 'abstract': current_metamodel}, {'rendered': 'formalisms/MM_render'}, 'models/render_OD/' + current_metamodel, open('models/render_OD.alc', 'r').read()]"/>
+                        </raise>
+                        <raise event="update_status" scope="narrow" target="'progress_bar'">
+                            <parameter expr="10"/>
+                            <parameter expr="'Adding transformation...'"/>
                         </raise>
                     </onentry>
 
-                    <transition event="mv_response" target="../../rerender_model"/>
+                    <transition event="mv_response" target="../modify_render_OD">
+                        <parameter name="context"/>
+                        <raise event="update_status" scope="narrow" target="'progress_bar'">
+                            <parameter expr="25"/>
+                            <parameter expr="'Switching contexts...'"/>
+                        </raise>
+                        <script>
+                            self.context = context
+                        </script>
+                    </transition>
+                </state>
+
+                <state id="modify_render_OD" initial="exit">
+                    <onexit>
+                        <script>
+                            self.context = None
+                        </script>
+                    </onexit>
+
+                    <state id="exit">
+                        <onentry>
+                            <raise event="mv_request_context" scope="broad">
+                                <parameter expr="'exit'"/>
+                                <parameter expr="[]"/>
+                                <parameter expr="self.context"/>
+                            </raise>
+                            <raise event="update_status" scope="narrow" target="'progress_bar'">
+                                <parameter expr="30"/>
+                                <parameter expr="'Modifying transformation merged metamodel...'"/>
+                            </raise>
+                        </onentry>
+
+                        <transition event="mv_response" target="../../../rerender_model"/>
+                    </state>
                 </state>
             </state>
 

+ 91 - 60
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:   Wed Oct  4 16:42:10 2017
+Date:   Thu Oct  5 08:57:58 2017
 
 Model author: Yentl Van Tendeloo
 Model name:   Modelverse Visual Editor - Tkinter Version 
@@ -2286,6 +2286,7 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_store_on_scripted_transformation_add_AL_send_metadata_enter(self):
         self.raiseInternalEvent(Event("request", None, [['transformation_add_AL'] + self.dict_to_list(self.parameters[0]) + self.dict_to_list(self.parameters[1]) + [self.parameters[2]]]))
         self.context = str(uuid.uuid4())
+        print("Create new context: " + str(self.context))
         self.actions[self.context] = []
         self.code = self.parameters[3]
         self.raiseInternalEvent(Event("result", None, [self.context]))
@@ -4022,198 +4023,206 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.states["/running/add_object_diagrams/init"] = State(9, "/running/add_object_diagrams/init", self)
         self.states["/running/add_object_diagrams/init"].setEnter(self._running_add_object_diagrams_init_enter)
         
+        # state /running/add_object_diagrams/modify_render_OD
+        self.states["/running/add_object_diagrams/modify_render_OD"] = State(10, "/running/add_object_diagrams/modify_render_OD", self)
+        self.states["/running/add_object_diagrams/modify_render_OD"].setExit(self._running_add_object_diagrams_modify_render_OD_exit)
+        
+        # state /running/add_object_diagrams/modify_render_OD/exit
+        self.states["/running/add_object_diagrams/modify_render_OD/exit"] = State(11, "/running/add_object_diagrams/modify_render_OD/exit", self)
+        self.states["/running/add_object_diagrams/modify_render_OD/exit"].setEnter(self._running_add_object_diagrams_modify_render_OD_exit_enter)
+        
         # state /running/upload_MVC
-        self.states["/running/upload_MVC"] = State(10, "/running/upload_MVC", self)
+        self.states["/running/upload_MVC"] = State(12, "/running/upload_MVC", self)
         
         # state /running/upload_MVC/load_code
-        self.states["/running/upload_MVC/load_code"] = State(11, "/running/upload_MVC/load_code", self)
+        self.states["/running/upload_MVC/load_code"] = State(13, "/running/upload_MVC/load_code", self)
         self.states["/running/upload_MVC/load_code"].setEnter(self._running_upload_MVC_load_code_enter)
         
         # state /running/upload_MVC/overwriting_model
-        self.states["/running/upload_MVC/overwriting_model"] = State(12, "/running/upload_MVC/overwriting_model", self)
+        self.states["/running/upload_MVC/overwriting_model"] = State(14, "/running/upload_MVC/overwriting_model", self)
         
         # state /running/change_metamodel
-        self.states["/running/change_metamodel"] = State(13, "/running/change_metamodel", self)
+        self.states["/running/change_metamodel"] = State(15, "/running/change_metamodel", self)
         self.states["/running/change_metamodel"].setEnter(self._running_change_metamodel_enter)
         
         # state /running/conf_bottom
-        self.states["/running/conf_bottom"] = State(14, "/running/conf_bottom", self)
+        self.states["/running/conf_bottom"] = State(16, "/running/conf_bottom", self)
         
         # state /running/conf_bottom/check_if_exists
-        self.states["/running/conf_bottom/check_if_exists"] = State(15, "/running/conf_bottom/check_if_exists", self)
+        self.states["/running/conf_bottom/check_if_exists"] = State(17, "/running/conf_bottom/check_if_exists", self)
         
         # state /running/conf_bottom/add_bottom
-        self.states["/running/conf_bottom/add_bottom"] = State(16, "/running/conf_bottom/add_bottom", self)
+        self.states["/running/conf_bottom/add_bottom"] = State(18, "/running/conf_bottom/add_bottom", self)
         self.states["/running/conf_bottom/add_bottom"].setEnter(self._running_conf_bottom_add_bottom_enter)
         
         # state /running/custom_MM
-        self.states["/running/custom_MM"] = State(17, "/running/custom_MM", self)
+        self.states["/running/custom_MM"] = State(19, "/running/custom_MM", self)
         
         # state /running/custom_MM/query
-        self.states["/running/custom_MM/query"] = State(18, "/running/custom_MM/query", self)
+        self.states["/running/custom_MM/query"] = State(20, "/running/custom_MM/query", self)
         self.states["/running/custom_MM/query"].setEnter(self._running_custom_MM_query_enter)
         
         # state /running/custom_MM/wait_for_metamodel
-        self.states["/running/custom_MM/wait_for_metamodel"] = State(19, "/running/custom_MM/wait_for_metamodel", self)
+        self.states["/running/custom_MM/wait_for_metamodel"] = State(21, "/running/custom_MM/wait_for_metamodel", self)
         self.states["/running/custom_MM/wait_for_metamodel"].setEnter(self._running_custom_MM_wait_for_metamodel_enter)
         
         # state /running/custom_MM/wait_for_metamodel/wait_for_result
-        self.states["/running/custom_MM/wait_for_metamodel/wait_for_result"] = State(20, "/running/custom_MM/wait_for_metamodel/wait_for_result", self)
+        self.states["/running/custom_MM/wait_for_metamodel/wait_for_result"] = State(22, "/running/custom_MM/wait_for_metamodel/wait_for_result", self)
         
         # state /running/custom_MM/wait_for_metamodel/got_result
-        self.states["/running/custom_MM/wait_for_metamodel/got_result"] = State(21, "/running/custom_MM/wait_for_metamodel/got_result", self)
+        self.states["/running/custom_MM/wait_for_metamodel/got_result"] = State(23, "/running/custom_MM/wait_for_metamodel/got_result", self)
         
         # state /running/custom_MM/wait_for_metamodel/mv_processing
-        self.states["/running/custom_MM/wait_for_metamodel/mv_processing"] = State(22, "/running/custom_MM/wait_for_metamodel/mv_processing", self)
+        self.states["/running/custom_MM/wait_for_metamodel/mv_processing"] = State(24, "/running/custom_MM/wait_for_metamodel/mv_processing", self)
         
         # state /running/change_mapper
-        self.states["/running/change_mapper"] = State(23, "/running/change_mapper", self)
+        self.states["/running/change_mapper"] = State(25, "/running/change_mapper", self)
         
         # state /running/change_rendered
-        self.states["/running/change_rendered"] = State(24, "/running/change_rendered", self)
+        self.states["/running/change_rendered"] = State(26, "/running/change_rendered", self)
         
         # state /running/verify_model
-        self.states["/running/verify_model"] = State(25, "/running/verify_model", self)
+        self.states["/running/verify_model"] = State(27, "/running/verify_model", self)
         
         # state /running/verify_model/request
-        self.states["/running/verify_model/request"] = State(26, "/running/verify_model/request", self)
+        self.states["/running/verify_model/request"] = State(28, "/running/verify_model/request", self)
         self.states["/running/verify_model/request"].setEnter(self._running_verify_model_request_enter)
         
         # state /running/verify_model/show_result
-        self.states["/running/verify_model/show_result"] = State(27, "/running/verify_model/show_result", self)
+        self.states["/running/verify_model/show_result"] = State(29, "/running/verify_model/show_result", self)
         
         # state /running/verify_model/wait_for_close
-        self.states["/running/verify_model/wait_for_close"] = State(28, "/running/verify_model/wait_for_close", self)
+        self.states["/running/verify_model/wait_for_close"] = State(30, "/running/verify_model/wait_for_close", self)
         
         # state /running/open_model
-        self.states["/running/open_model"] = State(29, "/running/open_model", self)
+        self.states["/running/open_model"] = State(31, "/running/open_model", self)
         
         # state /running/open_model/query_model
-        self.states["/running/open_model/query_model"] = State(30, "/running/open_model/query_model", self)
+        self.states["/running/open_model/query_model"] = State(32, "/running/open_model/query_model", self)
         self.states["/running/open_model/query_model"].setEnter(self._running_open_model_query_model_enter)
         
         # state /running/open_model/wait_for_model
-        self.states["/running/open_model/wait_for_model"] = State(31, "/running/open_model/wait_for_model", self)
+        self.states["/running/open_model/wait_for_model"] = State(33, "/running/open_model/wait_for_model", self)
         
         # state /running/open_model/got_model
-        self.states["/running/open_model/got_model"] = State(32, "/running/open_model/got_model", self)
+        self.states["/running/open_model/got_model"] = State(34, "/running/open_model/got_model", self)
         
         # state /running/open_model/search_metamodels
-        self.states["/running/open_model/search_metamodels"] = State(33, "/running/open_model/search_metamodels", self)
+        self.states["/running/open_model/search_metamodels"] = State(35, "/running/open_model/search_metamodels", self)
         self.states["/running/open_model/search_metamodels"].setEnter(self._running_open_model_search_metamodels_enter)
         
         # state /running/open_model/search_CS_mappers
-        self.states["/running/open_model/search_CS_mappers"] = State(34, "/running/open_model/search_CS_mappers", self)
+        self.states["/running/open_model/search_CS_mappers"] = State(36, "/running/open_model/search_CS_mappers", self)
         self.states["/running/open_model/search_CS_mappers"].setEnter(self._running_open_model_search_CS_mappers_enter)
         
         # state /running/open_model/check_CS_mapper
-        self.states["/running/open_model/check_CS_mapper"] = State(35, "/running/open_model/check_CS_mapper", self)
+        self.states["/running/open_model/check_CS_mapper"] = State(37, "/running/open_model/check_CS_mapper", self)
         
         # state /running/open_model/search_CS_rendered
-        self.states["/running/open_model/search_CS_rendered"] = State(36, "/running/open_model/search_CS_rendered", self)
+        self.states["/running/open_model/search_CS_rendered"] = State(38, "/running/open_model/search_CS_rendered", self)
         self.states["/running/open_model/search_CS_rendered"].setEnter(self._running_open_model_search_CS_rendered_enter)
         
         # state /running/open_model/store_metamodel
-        self.states["/running/open_model/store_metamodel"] = State(37, "/running/open_model/store_metamodel", self)
+        self.states["/running/open_model/store_metamodel"] = State(39, "/running/open_model/store_metamodel", self)
         self.states["/running/open_model/store_metamodel"].setEnter(self._running_open_model_store_metamodel_enter)
         
         # state /running/new_rendered
-        self.states["/running/new_rendered"] = State(38, "/running/new_rendered", self)
+        self.states["/running/new_rendered"] = State(40, "/running/new_rendered", self)
         self.states["/running/new_rendered"].setEnter(self._running_new_rendered_enter)
         
         # state /running/create_new_model
-        self.states["/running/create_new_model"] = State(39, "/running/create_new_model", self)
+        self.states["/running/create_new_model"] = State(41, "/running/create_new_model", self)
         
         # state /running/create_new_model/query_metamodel
-        self.states["/running/create_new_model/query_metamodel"] = State(40, "/running/create_new_model/query_metamodel", self)
+        self.states["/running/create_new_model/query_metamodel"] = State(42, "/running/create_new_model/query_metamodel", self)
         self.states["/running/create_new_model/query_metamodel"].setEnter(self._running_create_new_model_query_metamodel_enter)
         
         # state /running/create_new_model/wait_for_metamodel
-        self.states["/running/create_new_model/wait_for_metamodel"] = State(41, "/running/create_new_model/wait_for_metamodel", self)
+        self.states["/running/create_new_model/wait_for_metamodel"] = State(43, "/running/create_new_model/wait_for_metamodel", self)
         
         # state /running/create_new_model/got_mm
-        self.states["/running/create_new_model/got_mm"] = State(42, "/running/create_new_model/got_mm", self)
+        self.states["/running/create_new_model/got_mm"] = State(44, "/running/create_new_model/got_mm", self)
         
         # state /running/create_new_model/prompt_model_name
-        self.states["/running/create_new_model/prompt_model_name"] = State(43, "/running/create_new_model/prompt_model_name", self)
+        self.states["/running/create_new_model/prompt_model_name"] = State(45, "/running/create_new_model/prompt_model_name", self)
         self.states["/running/create_new_model/prompt_model_name"].setEnter(self._running_create_new_model_prompt_model_name_enter)
         
         # state /running/create_new_model/waiting_for_model_name
-        self.states["/running/create_new_model/waiting_for_model_name"] = State(44, "/running/create_new_model/waiting_for_model_name", self)
+        self.states["/running/create_new_model/waiting_for_model_name"] = State(46, "/running/create_new_model/waiting_for_model_name", self)
         
         # state /running/create_new_model/creating_model
-        self.states["/running/create_new_model/creating_model"] = State(45, "/running/create_new_model/creating_model", self)
+        self.states["/running/create_new_model/creating_model"] = State(47, "/running/create_new_model/creating_model", self)
         self.states["/running/create_new_model/creating_model"].setEnter(self._running_create_new_model_creating_model_enter)
         
         # state /running/rerender_model
-        self.states["/running/rerender_model"] = State(46, "/running/rerender_model", self)
+        self.states["/running/rerender_model"] = State(48, "/running/rerender_model", self)
         
         # state /running/rerender_model/initial_render
-        self.states["/running/rerender_model/initial_render"] = State(47, "/running/rerender_model/initial_render", self)
+        self.states["/running/rerender_model/initial_render"] = State(49, "/running/rerender_model/initial_render", self)
         
         # state /running/rerender_model/recreate_toolbars
-        self.states["/running/rerender_model/recreate_toolbars"] = State(48, "/running/rerender_model/recreate_toolbars", self)
+        self.states["/running/rerender_model/recreate_toolbars"] = State(50, "/running/rerender_model/recreate_toolbars", self)
         self.states["/running/rerender_model/recreate_toolbars"].setEnter(self._running_rerender_model_recreate_toolbars_enter)
         
         # state /running/rerender_model/recreate_toolbars/waiting
-        self.states["/running/rerender_model/recreate_toolbars/waiting"] = State(49, "/running/rerender_model/recreate_toolbars/waiting", self)
+        self.states["/running/rerender_model/recreate_toolbars/waiting"] = State(51, "/running/rerender_model/recreate_toolbars/waiting", self)
         
         # state /running/rerender_model/recreate_toolbars/close_all
-        self.states["/running/rerender_model/recreate_toolbars/close_all"] = State(50, "/running/rerender_model/recreate_toolbars/close_all", self)
+        self.states["/running/rerender_model/recreate_toolbars/close_all"] = State(52, "/running/rerender_model/recreate_toolbars/close_all", self)
         
         # state /running/rerender_model/canvas
-        self.states["/running/rerender_model/canvas"] = State(51, "/running/rerender_model/canvas", self)
+        self.states["/running/rerender_model/canvas"] = State(53, "/running/rerender_model/canvas", self)
         self.states["/running/rerender_model/canvas"].setEnter(self._running_rerender_model_canvas_enter)
         
         # state /running/rerender_model/pack_canvas
-        self.states["/running/rerender_model/pack_canvas"] = State(52, "/running/rerender_model/pack_canvas", self)
+        self.states["/running/rerender_model/pack_canvas"] = State(54, "/running/rerender_model/pack_canvas", self)
         
         # state /running/rerender_model/model_toolbars
-        self.states["/running/rerender_model/model_toolbars"] = State(53, "/running/rerender_model/model_toolbars", self)
+        self.states["/running/rerender_model/model_toolbars"] = State(55, "/running/rerender_model/model_toolbars", self)
         
         # state /running/rerender_model/model_toolbars/mm_toolbar
-        self.states["/running/rerender_model/model_toolbars/mm_toolbar"] = State(54, "/running/rerender_model/model_toolbars/mm_toolbar", self)
+        self.states["/running/rerender_model/model_toolbars/mm_toolbar"] = State(56, "/running/rerender_model/model_toolbars/mm_toolbar", self)
         self.states["/running/rerender_model/model_toolbars/mm_toolbar"].setEnter(self._running_rerender_model_model_toolbars_mm_toolbar_enter)
         
         # state /running/rerender_model/model_toolbars/pack_mm_toolbar
-        self.states["/running/rerender_model/model_toolbars/pack_mm_toolbar"] = State(55, "/running/rerender_model/model_toolbars/pack_mm_toolbar", self)
+        self.states["/running/rerender_model/model_toolbars/pack_mm_toolbar"] = State(57, "/running/rerender_model/model_toolbars/pack_mm_toolbar", self)
         
         # state /running/rerender_model/model_toolbars/cs_toolbar
-        self.states["/running/rerender_model/model_toolbars/cs_toolbar"] = State(56, "/running/rerender_model/model_toolbars/cs_toolbar", self)
+        self.states["/running/rerender_model/model_toolbars/cs_toolbar"] = State(58, "/running/rerender_model/model_toolbars/cs_toolbar", self)
         self.states["/running/rerender_model/model_toolbars/cs_toolbar"].setEnter(self._running_rerender_model_model_toolbars_cs_toolbar_enter)
         
         # state /running/rerender_model/model_toolbars/pack_cs_toolbar
-        self.states["/running/rerender_model/model_toolbars/pack_cs_toolbar"] = State(57, "/running/rerender_model/model_toolbars/pack_cs_toolbar", self)
+        self.states["/running/rerender_model/model_toolbars/pack_cs_toolbar"] = State(59, "/running/rerender_model/model_toolbars/pack_cs_toolbar", self)
         
         # state /running/rerender_model/model_toolbars/dsl_toolbar
-        self.states["/running/rerender_model/model_toolbars/dsl_toolbar"] = State(58, "/running/rerender_model/model_toolbars/dsl_toolbar", self)
+        self.states["/running/rerender_model/model_toolbars/dsl_toolbar"] = State(60, "/running/rerender_model/model_toolbars/dsl_toolbar", self)
         self.states["/running/rerender_model/model_toolbars/dsl_toolbar"].setEnter(self._running_rerender_model_model_toolbars_dsl_toolbar_enter)
         
         # state /running/rerender_model/model_toolbars/pack_dsl_toolbar
-        self.states["/running/rerender_model/model_toolbars/pack_dsl_toolbar"] = State(59, "/running/rerender_model/model_toolbars/pack_dsl_toolbar", self)
+        self.states["/running/rerender_model/model_toolbars/pack_dsl_toolbar"] = State(61, "/running/rerender_model/model_toolbars/pack_dsl_toolbar", self)
         
         # state /running/rerender_model/request_render
-        self.states["/running/rerender_model/request_render"] = State(60, "/running/rerender_model/request_render", self)
+        self.states["/running/rerender_model/request_render"] = State(62, "/running/rerender_model/request_render", self)
         self.states["/running/rerender_model/request_render"].setEnter(self._running_rerender_model_request_render_enter)
         
         # state /running/rerender_model/render_model
-        self.states["/running/rerender_model/render_model"] = State(61, "/running/rerender_model/render_model", self)
+        self.states["/running/rerender_model/render_model"] = State(63, "/running/rerender_model/render_model", self)
         self.states["/running/rerender_model/render_model"].setEnter(self._running_rerender_model_render_model_enter)
         
         # state /running/rerender_model/render_model/allocate_groups
-        self.states["/running/rerender_model/render_model/allocate_groups"] = State(62, "/running/rerender_model/render_model/allocate_groups", self)
+        self.states["/running/rerender_model/render_model/allocate_groups"] = State(64, "/running/rerender_model/render_model/allocate_groups", self)
         
         # state /running/rerender_model/render_model/allocating_group
-        self.states["/running/rerender_model/render_model/allocating_group"] = State(63, "/running/rerender_model/render_model/allocating_group", self)
+        self.states["/running/rerender_model/render_model/allocating_group"] = State(65, "/running/rerender_model/render_model/allocating_group", self)
         
         # state /running/rerender_model/render_model/allocate_contains
-        self.states["/running/rerender_model/render_model/allocate_contains"] = State(64, "/running/rerender_model/render_model/allocate_contains", self)
+        self.states["/running/rerender_model/render_model/allocate_contains"] = State(66, "/running/rerender_model/render_model/allocate_contains", self)
         
         # state /running/rerender_model/render_model/render_elements
-        self.states["/running/rerender_model/render_model/render_elements"] = State(65, "/running/rerender_model/render_model/render_elements", self)
+        self.states["/running/rerender_model/render_model/render_elements"] = State(67, "/running/rerender_model/render_model/render_elements", self)
         
         # state /close
-        self.states["/close"] = State(66, "/close", self)
+        self.states["/close"] = State(68, "/close", self)
         self.states["/close"].setEnter(self._close_enter)
         
         # add children
@@ -4238,6 +4247,8 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.states["/running"].addChild(self.states["/running/create_new_model"])
         self.states["/running"].addChild(self.states["/running/rerender_model"])
         self.states["/running/add_object_diagrams"].addChild(self.states["/running/add_object_diagrams/init"])
+        self.states["/running/add_object_diagrams"].addChild(self.states["/running/add_object_diagrams/modify_render_OD"])
+        self.states["/running/add_object_diagrams/modify_render_OD"].addChild(self.states["/running/add_object_diagrams/modify_render_OD/exit"])
         self.states["/running/upload_MVC"].addChild(self.states["/running/upload_MVC/load_code"])
         self.states["/running/upload_MVC"].addChild(self.states["/running/upload_MVC/overwriting_model"])
         self.states["/running/conf_bottom"].addChild(self.states["/running/conf_bottom/check_if_exists"])
@@ -4288,6 +4299,7 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.states["/init"].default_state = self.states["/init/generic_toolbar"]
         self.states["/running"].default_state = self.states["/running/idle"]
         self.states["/running/add_object_diagrams"].default_state = self.states["/running/add_object_diagrams/init"]
+        self.states["/running/add_object_diagrams/modify_render_OD"].default_state = self.states["/running/add_object_diagrams/modify_render_OD/exit"]
         self.states["/running/upload_MVC"].default_state = self.states["/running/upload_MVC/load_code"]
         self.states["/running/conf_bottom"].default_state = self.states["/running/conf_bottom/check_if_exists"]
         self.states["/running/custom_MM"].default_state = self.states["/running/custom_MM/query"]
@@ -4367,10 +4379,16 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.states["/running/idle"].addTransition(_running_idle_11)
         
         # transition /running/add_object_diagrams/init
-        _running_add_object_diagrams_init_0 = Transition(self, self.states["/running/add_object_diagrams/init"], [self.states["/running/rerender_model"]])
+        _running_add_object_diagrams_init_0 = Transition(self, self.states["/running/add_object_diagrams/init"], [self.states["/running/add_object_diagrams/modify_render_OD"]])
+        _running_add_object_diagrams_init_0.setAction(self._running_add_object_diagrams_init_0_exec)
         _running_add_object_diagrams_init_0.setTrigger(Event("mv_response", None))
         self.states["/running/add_object_diagrams/init"].addTransition(_running_add_object_diagrams_init_0)
         
+        # transition /running/add_object_diagrams/modify_render_OD/exit
+        _running_add_object_diagrams_modify_render_OD_exit_0 = Transition(self, self.states["/running/add_object_diagrams/modify_render_OD/exit"], [self.states["/running/rerender_model"]])
+        _running_add_object_diagrams_modify_render_OD_exit_0.setTrigger(Event("mv_response", None))
+        self.states["/running/add_object_diagrams/modify_render_OD/exit"].addTransition(_running_add_object_diagrams_modify_render_OD_exit_0)
+        
         # transition /running/upload_MVC/load_code
         _running_upload_MVC_load_code_0 = Transition(self, self.states["/running/upload_MVC/load_code"], [self.states["/running/upload_MVC/overwriting_model"]])
         _running_upload_MVC_load_code_0.setAction(self._running_upload_MVC_load_code_0_exec)
@@ -4713,6 +4731,9 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         _running_0.setGuard(self._running_0_guard)
         self.states["/running"].addTransition(_running_0)
     
+    def _running_add_object_diagrams_modify_render_OD_exit(self):
+        self.context = None
+    
     def _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'])]))
     
@@ -4739,7 +4760,12 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [0, 'Ready for action!'])]))
     
     def _running_add_object_diagrams_init_enter(self):
-        self.raiseInternalEvent(Event("mv_request", None, ['transformation_add_AL', [{'rendered': 'formalisms/MM_render', 'abstract': current_metamodel}, {'rendered': 'formalisms/MM_render'}, 'render_OD/' + current_model, open('models/render_OD.alc', 'r').read()]]))
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['transformation_add_AL', [{'rendered': 'formalisms/MM_render', 'abstract': current_metamodel}, {'rendered': 'formalisms/MM_render'}, 'models/render_OD/' + current_metamodel, open('models/render_OD.alc', 'r').read()]])]))
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [10, 'Adding transformation...'])]))
+    
+    def _running_add_object_diagrams_modify_render_OD_exit_enter(self):
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request_context", None, ['exit', [], self.context])]))
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [30, 'Modifying transformation merged metamodel...'])]))
     
     def _running_upload_MVC_load_code_enter(self):
         from tkFileDialog import askopenfilename
@@ -4855,6 +4881,11 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         global current_rendered_model
         current_rendered_model = new_rendered
     
+    def _running_add_object_diagrams_init_0_exec(self, parameters):
+        context = parameters[0]
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [25, 'Switching contexts...'])]))
+        self.context = context
+    
     def _running_upload_MVC_load_code_0_exec(self, parameters):
         self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['model_overwrite', [current_model, open(self.filename, 'r').read()]])]))
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [10, 'Uploading model...'])]))