|
@@ -4,7 +4,9 @@
|
|
|
<inheritance class="SCCDWidget" priority="0"/>
|
|
|
<association name="parent" class="A"/>
|
|
|
<association name="toolbars" class="Toolbar"/>
|
|
|
- <association name="browsers" class="Browser"/>
|
|
|
+ <association name="subwindow" class="Window"/>
|
|
|
+ <association name="canvas" class="Canvas"/>
|
|
|
+ <association name="progress_bar" class="ProgressBar"/>
|
|
|
</relationships>
|
|
|
|
|
|
<constructor>
|
|
@@ -13,6 +15,12 @@
|
|
|
<body>
|
|
|
self.current_model = None
|
|
|
self.metamodel = None
|
|
|
+ self.toolbar_frame = tk.Frame(self)
|
|
|
+ self.canvas_frame = tk.Frame(self)
|
|
|
+ self.progressbar_frame = tk.Frame(self)
|
|
|
+ self.toolbar_frame.pack(fill=tk.X)
|
|
|
+ self.canvas_frame.pack(fill=tk.BOTH, expand=tk.TRUE)
|
|
|
+ self.progressbar_frame.pack(fill=tk.X)
|
|
|
</body>
|
|
|
</constructor>
|
|
|
|
|
@@ -29,7 +37,7 @@
|
|
|
<raise event="create_instance" scope="cd">
|
|
|
<parameter expr="'toolbars'"/>
|
|
|
<parameter expr="'GenericToolbar'"/>
|
|
|
- <parameter expr="self"/>
|
|
|
+ <parameter expr="self.toolbar_frame"/>
|
|
|
</raise>
|
|
|
</onentry>
|
|
|
|
|
@@ -45,31 +53,61 @@
|
|
|
<transition event="tk_widget" target="../canvas">
|
|
|
<parameter name="tk_elem"/>
|
|
|
<script>
|
|
|
- print("Got generic toolbar")
|
|
|
- tk_elem.pack(side=tk.LEFT)
|
|
|
+ tk_elem.pack(side=tk.LEFT, fill=tk.X, expand=tk.TRUE)
|
|
|
</script>
|
|
|
</transition>
|
|
|
</state>
|
|
|
|
|
|
<state id="canvas">
|
|
|
- <!--
|
|
|
<onentry>
|
|
|
<raise event="create_instance" scope="cd">
|
|
|
- <parameter expr="canvas"/>
|
|
|
- <parameter expr="Canvas"/>
|
|
|
+ <parameter expr="'canvas'"/>
|
|
|
+ <parameter expr="'Canvas'"/>
|
|
|
+ <parameter expr="self.canvas_frame"/>
|
|
|
</raise>
|
|
|
</onentry>
|
|
|
|
|
|
- <transition event="instance_created" target="../../running">
|
|
|
+ <transition event="instance_created" target="../pack_canvas">
|
|
|
<parameter name="association_name"/>
|
|
|
<raise event="start_instance" scope="cd">
|
|
|
<parameter expr="association_name"/>
|
|
|
</raise>
|
|
|
</transition>
|
|
|
- -->
|
|
|
+ </state>
|
|
|
+
|
|
|
+ <state id="pack_canvas">
|
|
|
+ <transition event="tk_widget" target="../progressbar">
|
|
|
+ <parameter name="tk_elem"/>
|
|
|
+ <script>
|
|
|
+ tk_elem.pack(fill=tk.BOTH, expand=tk.TRUE)
|
|
|
+ </script>
|
|
|
+ </transition>
|
|
|
+ </state>
|
|
|
+
|
|
|
+ <state id="progressbar">
|
|
|
+ <onentry>
|
|
|
+ <raise event="create_instance" scope="cd">
|
|
|
+ <parameter expr="'progress_bar'"/>
|
|
|
+ <parameter expr="'ProgressBar'"/>
|
|
|
+ <parameter expr="{'parent': self.progressbar_frame}"/>
|
|
|
+ </raise>
|
|
|
+ </onentry>
|
|
|
+
|
|
|
+ <transition event="instance_created" target="../pack_progressbar">
|
|
|
+ <parameter name="association_name"/>
|
|
|
+ <raise event="start_instance" scope="cd">
|
|
|
+ <parameter expr="association_name"/>
|
|
|
+ </raise>
|
|
|
+ </transition>
|
|
|
+ </state>
|
|
|
|
|
|
- <!-- TODO remove -->
|
|
|
- <transition target="../../running"/>
|
|
|
+ <state id="pack_progressbar">
|
|
|
+ <transition event="tk_widget" target="../../running">
|
|
|
+ <parameter name="tk_elem"/>
|
|
|
+ <script>
|
|
|
+ tk_elem.pack(fill=tk.X, expand=tk.TRUE)
|
|
|
+ </script>
|
|
|
+ </transition>
|
|
|
</state>
|
|
|
</state>
|
|
|
|
|
@@ -82,7 +120,7 @@
|
|
|
<state id="query_metamodel">
|
|
|
<onentry>
|
|
|
<raise event="create_instance" scope="cd">
|
|
|
- <parameter expr="'browsers'"/>
|
|
|
+ <parameter expr="'subwindow'"/>
|
|
|
<parameter expr="'Browser'"/>
|
|
|
<parameter expr="'Select metamodel to instantiate'"/>
|
|
|
<parameter expr="['formalisms/SimpleClassDiagrams']"/>
|
|
@@ -116,14 +154,91 @@
|
|
|
</state>
|
|
|
|
|
|
<state id="got_mm">
|
|
|
- <transition event="close_window" target="../../idle">
|
|
|
+ <transition event="close_window" target="../prompt_model_name">
|
|
|
+ <raise event="delete_instance" scope="cd">
|
|
|
+ <parameter expr="self.subwindow"/>
|
|
|
+ </raise>
|
|
|
+ </transition>
|
|
|
+ </state>
|
|
|
+
|
|
|
+ <state id="prompt_model_name">
|
|
|
+ <onentry>
|
|
|
+ <raise event="create_instance" scope="cd">
|
|
|
+ <parameter expr="'subwindow'"/>
|
|
|
+ <parameter expr="'PromptWindow'"/>
|
|
|
+ <parameter expr="{'Model name': ''}"/>
|
|
|
+ <parameter expr="{}"/>
|
|
|
+ </raise>
|
|
|
+ </onentry>
|
|
|
+
|
|
|
+ <transition event="instance_created" target="../waiting_for_model_name">
|
|
|
+ <parameter name="association_name"/>
|
|
|
+ <raise event="start_instance" scope="cd">
|
|
|
+ <parameter expr="association_name"/>
|
|
|
+ </raise>
|
|
|
+ <script>
|
|
|
+ self.subwindow = association_name
|
|
|
+ self.current_model = ""
|
|
|
+ </script>
|
|
|
+ </transition>
|
|
|
+ </state>
|
|
|
+
|
|
|
+ <state id="waiting_for_model_name">
|
|
|
+ <transition event="prompt_results" target=".">
|
|
|
+ <parameter name="results"/>
|
|
|
+ <script>
|
|
|
+ self.current_model = results["Model name"]
|
|
|
+ </script>
|
|
|
+ </transition>
|
|
|
+
|
|
|
+ <transition event="close_window" cond="self.current_model != ''" target="../creating_model">
|
|
|
+ <raise event="delete_instance" scope="cd">
|
|
|
+ <parameter expr="self.subwindow"/>
|
|
|
+ </raise>
|
|
|
+ </transition>
|
|
|
+
|
|
|
+ <transition event="close_window" cond="self.current_model == ''" target="../../idle">
|
|
|
<raise event="delete_instance" scope="cd">
|
|
|
<parameter expr="self.subwindow"/>
|
|
|
</raise>
|
|
|
+ </transition>
|
|
|
+ </state>
|
|
|
+
|
|
|
+ <state id="creating_model">
|
|
|
+ <onentry>
|
|
|
+ <raise event="mv_request" scope="broad">
|
|
|
+ <parameter expr="'model_add'"/>
|
|
|
+ <parameter expr="[self.current_model, self.metamodel, '']"/>
|
|
|
+ </raise>
|
|
|
+ </onentry>
|
|
|
+
|
|
|
+ <transition event="mv_response" target="../../rerender_model">
|
|
|
+ <script>
|
|
|
+ print("Got added model")
|
|
|
+ </script>
|
|
|
+ </transition>
|
|
|
+ </state>
|
|
|
+ </state>
|
|
|
+
|
|
|
+ <state id="rerender_model" initial="request_render">
|
|
|
+ <state id="request_render">
|
|
|
+ <onentry>
|
|
|
+ <raise event="mv_request" scope="broad">
|
|
|
+ <parameter expr="'model_render'"/>
|
|
|
+ <parameter expr="[self.current_model, 'render_SCD']"/>
|
|
|
+ </raise>
|
|
|
+ </onentry>
|
|
|
+
|
|
|
+ <transition event="mv_response" target="../render_model">
|
|
|
+ <parameter name="result"/>
|
|
|
<script>
|
|
|
- print("Got MM: " + str(self.metamodel))
|
|
|
+ print("Result: " + str(result))
|
|
|
</script>
|
|
|
</transition>
|
|
|
+ <transition event="mv_exception" target="../../../close"/>
|
|
|
+ </state>
|
|
|
+
|
|
|
+ <state id="render_model">
|
|
|
</state>
|
|
|
</state>
|
|
|
|
|
@@ -132,21 +247,11 @@
|
|
|
</transition>
|
|
|
</state>
|
|
|
|
|
|
- <state id="closing">
|
|
|
- <onentry>
|
|
|
- <raise event="delete_instance" scope="cd">
|
|
|
- <parameter expr="self.to_remove.pop(0)"/>
|
|
|
- </raise>
|
|
|
- </onentry>
|
|
|
-
|
|
|
- <transition event="instance_deleted" cond="len(self.to_remove) > 0" target="."/>
|
|
|
- <transition event="instance_deleted" cond="len(self.to_remove) == 0" target="../close"/>
|
|
|
- </state>
|
|
|
-
|
|
|
<state id="close">
|
|
|
<onentry>
|
|
|
<raise event="close_window" scope="narrow" target="'parent'"/>
|
|
|
</onentry>
|
|
|
</state>
|
|
|
+
|
|
|
</scxml>
|
|
|
</class>
|