Преглед изворни кода

Move basic widgets to their own folder

Yentl Van Tendeloo пре 8 година
родитељ
комит
92bf3fadc3
3 измењених фајлова са 148 додато и 0 уклоњено
  1. 54 0
      classes/widgets/button.xml
  2. 55 0
      classes/widgets/label.xml
  3. 39 0
      classes/widgets/progress_bar.xml

+ 54 - 0
classes/widgets/button.xml

@@ -0,0 +1,54 @@
+<class name="Button">
+    <relationships>
+        <association name="parent" class="A"/>
+        <inheritance class="MvKWidget" priority='0'/>
+        <inheritance class="tk.Button" priority='1'/>
+    </relationships>
+    <constructor>
+        <parameter name="constructor_parameters" type='dict' default='{}' />
+        <super class="tk.Button">
+            <parameter expr="constructor_parameters['parent']"/>
+            <parameter expr="**(constructor_parameters['visual'].get_params())"/>
+        </super>
+        <super class="MvKWidget">
+        </super>
+        <body>
+            self.event_parameters = constructor_parameters["event_parameters"]
+            if "tooltip_text" in constructor_parameters:
+                self.tooltip = ToolTip(self, constructor_parameters["tooltip_text"])
+            else:
+                self.tooltip = None
+            self.visual = constructor_parameters["visual"]
+            self.pack(**constructor_parameters.get('packing', {}))
+        </body>
+    </constructor>
+    <destructor>
+        <body>
+            self.destroy()
+        </body>
+    </destructor>
+    <scxml initial="main">
+        <state id="main" initial='initializing'>
+            <state id="initializing">
+                <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'">
+                        <parameter expr="self.event_parameters" />
+                    </raise>
+                </transition>
+                <transition port='input' event="enter" target='.' cond='tagorid == id(self) and self.tooltip is not None'>
+                    <parameter name='tagorid' type='int' default='None' />
+                    <script>
+                        self.tooltip.showtip()
+                    </script>
+                </transition>
+                <transition port='input' event="leave" target='.' cond='tagorid == id(self) and self.tooltip is not None'>
+                    <parameter name='tagorid' type='int' default='None' />
+                    <script>
+                        self.tooltip.hidetip()
+                    </script>
+                </transition>
+            </state>
+        </state>
+    </scxml>
+</class>

+ 55 - 0
classes/widgets/label.xml

@@ -0,0 +1,55 @@
+<class name="Label">
+    <relationships>
+        <association name="parent" class="A" min="1" max="1" />
+        <inheritance class="MvKWidget" priority='0'/>
+        <inheritance class="tk.Label" priority='1'/>
+    </relationships>
+    <constructor>
+        <parameter name="constructor_parameters" type="dict" default="{}" />
+        <super class="tk.Label">
+            <parameter expr="constructor_parameters['parent']"/>
+            <parameter expr="**({'text': constructor_parameters['text'], 'bg': 'white'})"/>
+        </super>
+        <super class="MvKWidget">
+        </super>
+        <body>
+            self.pack()
+        </body>
+    </constructor>
+    <destructor>
+        <body>
+            self.destroy()
+        </body>
+    </destructor>
+    <method name="set_text">
+        <parameter name="text" type="str" />
+        <body>
+            self.config(text=text)
+        </body>
+    </method>
+    <scxml initial="root">
+        <state id="root">
+            <state id="running">
+                <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>
+                        self.config(bg="yellow")
+                    </script>
+                </transition>
+                <transition event="unhighlight" target=".">                        
+                    <script>
+                        self.config(bg="white")
+                    </script>
+                </transition>
+            </state>
+        </state>
+    </scxml>
+</class>

+ 39 - 0
classes/widgets/progress_bar.xml

@@ -0,0 +1,39 @@
+<class name="ProgressBar">
+    <relationships>
+        <inheritance class="MvKWidget" priority="0"/>
+        <inheritance class="ttk.Progressbar" priority="1"/>
+    </relationships>
+
+    <constructor>
+        <parameter name="params"/>
+        <super class="ttk.Progressbar">
+            <parameter expr="params['parent']"/>
+            <parameter expr="**({'orient': tk.HORIZONTAL})"/>
+        </super>
+        <body>
+            self.value = tk.DoubleVar()
+            self.configure(variable=self.value)
+            self.pack()
+        </body>
+    </constructor>
+
+    <destructor>
+        <body>
+            self.destroy()
+        </body>
+    </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>
+    </scxml>
+</class>