Browse Source

Have each element propagate up the level

Yentl Van Tendeloo 8 years ago
parent
commit
7b810991fe

+ 12 - 9
classes/main_app.xml

@@ -130,15 +130,18 @@
                         </state>
 
                         <state id="wait_for_credentials">
-                            <transition event="prompt_results" target="../login">
-                                <parameter name="results"/>
-                                <script>
-                                    self.username = results["username"]
-                                    self.password = results["password"]
-                                </script>
-                            </transition>
-
-                            <transition event="close_window" target="../prompt_username"/>
+                            <state id="responsive">
+                                <transition event="prompt_results" target=".">
+                                    <parameter name="results"/>
+                                    <script>
+                                        self.username = results["username"]
+                                        self.password = results["password"]
+                                    </script>
+                                </transition>
+
+                                <transition event="close_window" cond="self.username == None or self.password == None" target="../../prompt_username"/>
+                                <transition event="close_window" cond="self.username != None and self.password != None" target="../../login"/>
+                            </state>
 
                             <onexit>
                                 <raise event="delete_instance" scope="cd">

+ 14 - 5
classes/toolbar/generic_toolbar.xml

@@ -28,9 +28,9 @@
     <scxml initial="init">
         <state id="init" initial="init_buttons">
             <onexit>
-                <script>
-                    self.pack()
-                </script>
+                <raise event="tk_widget" scope="narrow" target="'parent'">
+                    <parameter expr="self"/>
+                </raise>
             </onexit>
 
             <state id="init_buttons">
@@ -38,11 +38,11 @@
                     <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], 'packing': {'side': tk.LEFT}}"/>
+                        <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="../next_button">
+                <transition event="instance_created" target="../pack_button">
                     <parameter name="association_name"/>
                     <raise event="start_instance" scope="cd">
                         <parameter expr="association_name"/>
@@ -55,6 +55,15 @@
                 </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"/>

+ 8 - 1
classes/widgets/button.xml

@@ -19,7 +19,6 @@
             else:
                 self.tooltip = None
             self.visual = constructor_parameters["visual"]
-            self.pack(**constructor_parameters.get('packing', {}))
         </body>
     </constructor>
     <destructor>
@@ -30,6 +29,14 @@
     <scxml initial="main">
         <state id="main" initial='initializing'>
             <state id="initializing">
+                <transition target="../ready">
+                    <raise event="tk_widget" scope="narrow" target="'parent'">
+                        <parameter expr="self"/>
+                    </raise>
+                </transition>
+            </state>
+
+            <state id="ready">
                 <transition port='input' event="left-click" target='.' cond='tagorid == id(self)'>
                     <parameter name='tagorid' type='int' default='None' />
                     <raise event="button_pressed" scope="narrow" target="'parent'">

+ 10 - 8
classes/widgets/label.xml

@@ -12,9 +12,6 @@
         </super>
         <super class="MvKWidget">
         </super>
-        <body>
-            self.pack()
-        </body>
     </constructor>
     <destructor>
         <body>
@@ -28,16 +25,21 @@
         </body>
     </method>
     <scxml initial="root">
-        <state id="root">
-            <state id="running">
+        <state id="root" initial="initializing">
+            <state id="initializing">
+                <transition target="../ready">
+                    <raise event="tk_widget" scope="narrow" target="'parent'">
+                        <parameter expr="self"/>
+                    </raise>
+                </transition>
+            </state>
+
+            <state id="ready">
                 <transition port='input' event="left-click" target='.' cond='tagorid == id(self)'>
                     <parameter name='tagorid' type='int' default='None' />
                     <raise event="label_pressed" scope="narrow" target="'parent'">
                         <parameter expr="self.cget('text')" />
                     </raise>
-                    <script>
-                        print("Left clicked label!")
-                    </script>
                 </transition>
                 <transition event="highlight" target=".">                        
                     <script>

+ 21 - 11
classes/widgets/progress_bar.xml

@@ -2,6 +2,7 @@
     <relationships>
         <inheritance class="MvKWidget" priority="0"/>
         <inheritance class="ttk.Progressbar" priority="1"/>
+        <association name="parent" class="A"/>
     </relationships>
 
     <constructor>
@@ -13,7 +14,6 @@
         <body>
             self.value = tk.DoubleVar()
             self.configure(variable=self.value)
-            self.pack()
         </body>
     </constructor>
 
@@ -24,16 +24,26 @@
     </destructor>
 
     <scxml initial="root">
-        <state id="root">
-            <transition event="update_status" target=".">
-                <parameter name="value"/>
-                <parameter name="text"/>
-                <script>
-                    #TODO update text as well
-                    self.value.set(value)
-                    print("%s percent -- %s" % (self.value.get(), text))
-                </script>
-            </transition>
+        <state id="root" initial="initializing">
+            <state id="initializing">
+                <transition target="../ready">
+                    <raise event="tk_widget" scope="narrow" target="'parent'">
+                        <parameter expr="self"/>
+                    </raise>
+                </transition>
+            </state>
+
+            <state id="ready">
+                <transition event="update_status" target=".">
+                    <parameter name="value"/>
+                    <parameter name="text"/>
+                    <script>
+                        #TODO update text as well
+                        self.value.set(value)
+                        print("%s percent -- %s" % (self.value.get(), text))
+                    </script>
+                </transition>
+            </state>
         </state>
     </scxml>
 </class>

+ 39 - 4
classes/window/browser.xml

@@ -45,7 +45,7 @@
                     </raise>
                 </onentry>
 
-                <transition event="instance_created" target="../button_back">
+                <transition event="instance_created" target="../wait_for_packing_OK">
                     <parameter name="association_name"/>
                     <raise event="start_instance" scope="cd">
                         <parameter expr="association_name"/>
@@ -57,6 +57,15 @@
                 </transition>
             </state>
 
+            <state id="wait_for_packing_OK">
+                <transition event="tk_widget" target="../button_back">
+                    <parameter name="tk_elem"/>
+                    <script>
+                        tk_elem.pack()
+                    </script>
+                </transition>
+            </state>
+
             <state id="button_back">
                 <onentry>
                     <raise event="create_instance" scope="cd">
@@ -66,7 +75,7 @@
                     </raise>
                 </onentry>
 
-                <transition event="instance_created" target="../progressbar">
+                <transition event="instance_created" target="../wait_for_packing_up">
                     <parameter name="association_name"/>
                     <raise event="start_instance" scope="cd">
                         <parameter expr="association_name"/>
@@ -78,6 +87,15 @@
                 </transition>
             </state>
 
+            <state id="wait_for_packing_up">
+                <transition event="tk_widget" target="../progressbar">
+                    <parameter name="tk_elem"/>
+                    <script>
+                        tk_elem.pack()
+                    </script>
+                </transition>
+            </state>
+
             <state id="progressbar">
                 <onentry>
                     <raise event="create_instance" scope="cd">
@@ -87,7 +105,7 @@
                     </raise>
                 </onentry>
 
-                <transition event="instance_created" target="../../root">
+                <transition event="instance_created" target="../wait_for_packing_progressbar">
                     <parameter name="association_name"/>
                     <raise event="start_instance" scope="cd">
                         <parameter expr="association_name"/>
@@ -98,6 +116,15 @@
                     </script>
                 </transition>
             </state>
+
+            <state id="wait_for_packing_progressbar">
+                <transition event="tk_widget" target="../../root">
+                    <parameter name="tk_elem"/>
+                    <script>
+                        tk_elem.pack()
+                    </script>
+                </transition>
+            </state>
         </state>
 
         <parallel id="root">
@@ -227,7 +254,7 @@
                                 </raise>
                             </onentry>
 
-                            <transition event="instance_created" target="../check_type">
+                            <transition event="instance_created" target="../pack_label">
                                 <parameter name="association_name"/>
                                 <raise event="start_instance" scope="cd">
                                     <parameter expr="association_name"/>
@@ -237,6 +264,14 @@
                                 </script>
                             </transition>
                         </state>
+                        <state id="pack_label">
+                            <transition event="tk_widget" target="../check_type">
+                                <parameter name="tk_elem"/>
+                                <script>
+                                    tk_elem.pack()
+                                </script>
+                            </transition>
+                        </state>
                     </state>
                 </state>
 

+ 22 - 1
classes/window/main_window.xml

@@ -33,13 +33,23 @@
                     </raise>
                 </onentry>
 
-                <transition event="instance_created" target="../canvas">
+                <transition event="instance_created" target="../pack_generic">
                     <parameter name="association_name"/>
                     <raise event="start_instance" scope="cd">
                         <parameter expr="association_name"/>
                     </raise>
                 </transition>
             </state>
+            
+            <state id="pack_generic">
+                <transition event="tk_widget" target="../canvas">
+                    <parameter name="tk_elem"/>
+                    <script>
+                        print("Got generic toolbar")
+                        tk_elem.pack()
+                    </script>
+                </transition>
+            </state>
 
             <state id="canvas">
                 <!--
@@ -122,6 +132,17 @@
             </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'"/>

+ 11 - 2
classes/window/prompt_window.xml

@@ -47,7 +47,7 @@
                     </raise>
                 </onentry>
 
-                <transition event="instance_created" target="../../root">
+                <transition event="instance_created" target="../wait_for_packing">
                     <parameter name="association_name"/>
                     <raise event="start_instance" scope="cd">
                         <parameter expr="association_name"/>
@@ -58,6 +58,15 @@
                     </script>
                 </transition>
             </state>
+
+            <state id="wait_for_packing">
+                <transition event="tk_widget" target="../../root">
+                    <parameter name="tk_elem"/>
+                    <script>
+                        tk_elem.pack()
+                    </script>
+                </transition>
+            </state>
         </state>
 
         <state id="root">
@@ -92,7 +101,7 @@
             
         <state id="close">
             <onentry>
-                <raise event="close_window" scope="broad"/>
+                <raise event="close_window" scope="narrow" target="'parent'"/>
             </onentry>
         </state>
     </scxml>