Преглед на файлове

Fixed visualization of models at Mv side

Yentl Van Tendeloo преди 8 години
родител
ревизия
1e9b3cb54b
променени са 5 файла, в които са добавени 110 реда и са изтрити 5 реда
  1. 104 0
      classes/toolbar/model_toolbar.xml
  2. 2 2
      classes/window/main_window.xml
  3. 3 3
      frontend.py
  4. BIN
      icons/verify.png
  5. 1 0
      models/render_SCD.alc

+ 104 - 0
classes/toolbar/model_toolbar.xml

@@ -0,0 +1,104 @@
+<class name="ModelToolbar">
+    <relationships>
+        <inheritance class="tk.Frame" priority="1"/>
+        <inheritance class="SCCDWidget" priority="0"/>
+        <association name="buttons" class="Button"/>
+        <association name="parent" class="A"/>
+    </relationships>
+
+    <constructor>
+        <parameter name="parent"/>
+        <super class="tk.Frame">
+            <parameter expr="parent"/>
+        </super>
+        <super class="SCCDWidget"/>
+        <body>
+            self.to_create = ["verify"]
+            self.button_info = {"verify": "Check conformance of currently loaded model.",
+                                }
+            self.buttons = {}
+        </body>
+    </constructor>
+    <destructor>
+        <body>
+            self.destroy()
+        </body>
+    </destructor>
+
+    <scxml initial="init">
+        <state id="init" initial="init_buttons">
+            <onexit>
+                <raise event="tk_widget" scope="narrow" target="'parent'">
+                    <parameter expr="self"/>
+                </raise>
+            </onexit>
+
+            <state id="init_buttons">
+                <onentry>
+                    <raise event="create_instance" scope="cd">
+                        <parameter expr="'buttons'"/>
+                        <parameter expr="'Button'"/>
+                        <parameter expr="{'parent': self, 'visual': ImageVisual('icons/%s.png' % self.to_create[0]), 'tooltip_text': self.button_info[self.to_create[0]], 'event_parameters': self.to_create[0]}"/>
+                    </raise>
+                </onentry>
+
+                <transition event="instance_created" target="../pack_button">
+                    <parameter name="association_name"/>
+                    <raise event="start_instance" scope="cd">
+                        <parameter expr="association_name"/>
+                    </raise>
+
+                    <script>
+                        self.buttons[self.to_create[0]] = association_name
+                        self.to_create.pop(0)
+                    </script>
+                </transition>
+            </state>
+
+            <state id="pack_button">
+                <transition event="tk_widget" target="../next_button">
+                    <parameter name="tk_elem"/>
+                    <script>
+                        tk_elem.pack(side=tk.LEFT)
+                    </script>
+                </transition>
+            </state>
+
+            <state id="next_button">
+                <transition cond="len(self.to_create) == 0" target="../../root"/>
+                <transition cond="len(self.to_create) > 0" target="../init_buttons"/>
+            </state>
+        </state>
+
+        <state id="root">
+            <transition event="button_pressed" cond="event_name == 'new'" target=".">
+                <parameter name="event_name"/>
+                <raise event="create_new_model" scope="narrow" target="'parent'"/>
+            </transition>
+
+            <transition event="button_pressed" cond="event_name == 'open'" target=".">
+                <parameter name="event_name"/>
+                <raise event="open_model" scope="narrow" target="'parent'"/>
+            </transition>
+
+            <transition event="close" target="../closing"/>
+        </state>
+
+        <state id="closing">
+            <onentry>
+                <raise event="delete_instance" scope="cd">
+                    <parameter expr="self.buttons.popitem()[1]"/>
+                </raise>
+            </onentry>
+
+            <transition event="instance_deleted" cond="len(self.buttons) > 0" target="../closing"/>
+            <transition event="instance_deleted" cond="len(self.buttons) == 0" target="../close"/>
+        </state>
+            
+        <state id="close">
+            <onentry>
+                <raise event="close_window" scope="narrow" target="'parent'"/>
+            </onentry>
+        </state>
+    </scxml>
+</class>

+ 2 - 2
classes/window/main_window.xml

@@ -414,7 +414,7 @@
                         </raise>
                         <script>
                             global current_rendered_model
-                            current_rendered_model = "rendered/%s%s" % (current_model, 'models/render_SCD')
+                            current_rendered_model = "rendered/%s" % (current_model)
                         </script>
                         <raise event="update_status" scope="narrow" target="'progress_bar'">
                             <parameter expr="50"/>
@@ -446,7 +446,7 @@
                         </script>
                         <raise event="mv_request" scope="broad">
                             <parameter expr="'alter_context'"/>
-                            <parameter expr="['rendered/%s%s' % (current_model, 'models/render_SCD'), 'formalisms/MM_render']"/>
+                            <parameter expr="['rendered/%s' % (current_model), 'formalisms/MM_render']"/>
                         </raise>
                     </onentry>
 

+ 3 - 3
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:   Thu Sep 28 10:43:28 2017
+Date:   Fri Sep 29 09:10:42 2017
 
 Model author: Yentl Van Tendeloo
 Model name:   Modelverse Visual Editor - Tkinter Version 
@@ -4299,7 +4299,7 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.contains = [i for i in self.rendered if i["type"] == "contains"]
         self.rendered = [i for i in self.rendered if i["type"] not in ["Group", "contains"]]
         self.rendered.reverse()
-        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['alter_context', ['rendered/%s%s' % (current_model, 'models/render_SCD'), 'formalisms/MM_render']])]))
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['alter_context', ['rendered/%s' % (current_model), 'formalisms/MM_render']])]))
     
     def _init_generic_toolbar_enter(self):
         self.big_step.outputEventOM(Event("create_instance", None, [self, 'toolbars', 'GenericToolbar', self.toolbar_frame]))
@@ -4344,7 +4344,7 @@ class MainWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
     def _running_rerender_model_request_render_enter(self):
         self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['model_render', [current_model, 'models/render_SCD']])]))
         global current_rendered_model
-        current_rendered_model = "rendered/%s%s" % (current_model, 'models/render_SCD')
+        current_rendered_model = "rendered/%s" % (current_model)
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'progress_bar', Event("update_status", None, [50, 'Perceptualizing model...'])]))
     
     def _close_enter(self):

BIN
icons/verify.png


+ 1 - 0
models/render_SCD.alc

@@ -152,6 +152,7 @@ Boolean function main(model : Element):
 		instantiate_attribute(model, elem, "lineColour", "black")
 		instantiate_attribute(model, elem, "arrow", True)
 		instantiate_attribute(model, elem, "__asid", list_read(string_split(class, "/"), 1))
+		log("Found ASID " + cast_v2s(list_read(string_split(class, "/"), 1)))
 		instantiate_link(model, "rendered/contains", "", group, elem)
 
 	return True!