فهرست منبع

Add some more data for a first kind of toolbar

Yentl Van Tendeloo 8 سال پیش
والد
کامیت
796cdaf50c

+ 7 - 17
classes/main_app.xml

@@ -133,7 +133,6 @@
                             <transition event="prompt_results" target="../login">
                                 <parameter name="results"/>
                                 <script>
-                                    print("Got results from prompt: " + str(results))
                                     self.username = results["username"]
                                     self.password = results["password"]
                                 </script>
@@ -189,27 +188,18 @@
                             <parameter expr="'windows'"/>
                             <parameter expr="'MainWindow'"/>
                         </raise>
-
-                        <raise event="close" target="self.splash_window"/>
                     </onentry>
 
-                    <transition event="instance_created" target="../main_behaviour"/>
+                    <transition event="instance_created" target="../main_behaviour">
+                        <parameter name="association_name"/>
+                        <raise event="start_instance" scope="cd">
+                            <parameter expr="association_name"/>
+                        </raise>
+                    </transition>
                 </state>
 
                 <state id="main_behaviour">
-                    <transition event="window_created" target=".">
-                        <script>
-                            self.nr_of_windows += 1
-                        </script>
-                    </transition>
-                    <transition event="window_deleted" target="." cond="self.nr_of_windows > 1">
-                        <script>
-                            self.nr_of_windows -= 1
-                        </script>
-                    </transition>
-                    <transition cond="self.nr_of_windows == 0" target="../stopped">
-                        <raise event="stop" scope="local" />
-                    </transition>
+                    <transition event="close_window" target="../stopped"/>
                 </state>
 
                 <state id="stopped">

BIN
classes/toolbar/.generic_toolbar.xml.swp


+ 92 - 0
classes/toolbar/generic_toolbar.xml

@@ -0,0 +1,92 @@
+<class name="GenericToolbar">
+    <relationships>
+        <inheritance class="tk.Toplevel" priority="1"/>
+        <inheritance class="MvKWidget" priority="0"/>
+        <association name="buttons" class="Button"/>
+        <association name="parent" class="A"/>
+    </relationships>
+
+    <constructor>
+        <super class="tk.TopLevel"/>
+        <super class="MvKWidget"/>
+        <body>
+            self.to_create = ["new", "open"]
+            self.button_info = {"new": "Create a new model",
+                                "open": "Open an existing model"}
+            self.buttons = {}
+        </body>
+    </constructor>
+    <destructor>
+        <body>
+            self.destroy()
+        </body>
+    </destructor>
+
+    <scxml initial="init">
+        <state id="init" initial="init_buttons">
+            <state id="init_buttons">
+                <onentry>
+                    <raise event="create_instance" scope="cd">
+                        <parameter expr="'buttons'"/>
+                        <parameter expr="'Button'"/>
+                        <parameter expr="{'parent': self, 'visual': TextVisual(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="../next_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="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 == 'OK'" target="../closing">
+                <parameter name="event_name"/>
+
+                <script>
+                    results = {}
+                    for k, v in self.entries.items():
+                        results[k] = v.get()
+                </script>
+
+                <raise event="prompt_results" scope="narrow" target="'parent'">
+                    <parameter expr="results"/>
+                </raise>
+            </transition>
+
+            <transition event="window-close" cond="ID == id(self)" target="../closing">
+                <parameter name="ID"/>
+            </transition>
+        </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="broad"/>
+            </onentry>
+        </state>
+    </scxml>
+</class>

+ 70 - 0
classes/window/main_window.xml

@@ -0,0 +1,70 @@
+<class name="MainWindow">
+    <relationships>
+        <inheritance class="tk.Toplevel" priority="1"/>
+        <inheritance class="MvKWidget" priority="0"/>
+        <association name="parent" class="A"/>
+        <association name="toolbars" class="Toolbar"/>
+    </relationships>
+
+    <constructor>
+        <super class="tk.TopLevel"/>
+        <super class="MvKWidget"/>
+        <body>
+            self.current_model = None
+        </body>
+    </constructor>
+
+    <destructor>
+        <body>
+            self.destroy()
+        </body>
+    </destructor>
+
+    <scxml initial="init">
+        <state id="init" initial="generic_toolbar">
+            <state id="generic_toolbar">
+                <onentry>
+                    <raise event="create_instance" scope="cd">
+                        <parameter expr="'toolbars'"/>
+                        <parameter expr="'GenericToolbar'"/>
+                    </raise>
+                </onentry>
+
+                <transition event="instance_created" target="../canvas">
+                    <parameter name="association_name"/>
+                    <raise event="start_instance" scope="cd">
+                        <parameter expr="association_name"/>
+                    </raise>
+                </transition>
+            </state>
+
+            <state id="canvas">
+                <!--
+                <onentry>
+                    <raise event="create_instance" scope="cd">
+                        <parameter expr="canvas"/>
+                        <parameter expr="Canvas"/>
+                    </raise>
+                </onentry>
+                
+                <transition event="instance_created" target="../../running">
+                    <parameter name="association_name"/>
+                    <raise event="start_instance" scope="cd">
+                        <parameter expr="association_name"/>
+                    </raise>
+                </transition>
+                -->
+            </state>
+        </state>
+
+        <state id="running">
+            <transition event="window-close" target="../close"/>
+        </state>
+
+        <state id="close">
+            <onentry>
+                <raise event="close_window" scope="narrow" target="'parent'"/>
+            </onentry>
+        </state>
+    </scxml>
+</class>

+ 6 - 4
classes/window/splash_window.xml

@@ -12,6 +12,12 @@
         </body>
     </constructor>
 
+    <destructor>
+        <body>
+            self.destroy()
+        </body>
+    </destructor>
+
     <scxml initial="root">
         <state id="root">
             <transition event="update_status" target=".">
@@ -33,10 +39,6 @@
         <state id="close">
             <onentry>
                 <raise event="close_window" scope="broad"/>
-
-                <script>
-                    self.quit()
-                </script>
             </onentry>
         </state>
     </scxml>

+ 2 - 0
frontend.xml

@@ -22,5 +22,7 @@
     <class src="classes/modelverse/http_client.xml"/>
     <class src="classes/window/splash_window.xml"/>
     <class src="classes/window/prompt_window.xml"/>
+    <class src="classes/window/main_window.xml"/>
+    <class src="classes/toolbar/generic_toolbar.xml"/>
     <class src="classes/button/button.xml"/>
 </diagram>