|
@@ -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>
|