Yentl Van Tendeloo 8 лет назад
Родитель
Сommit
405d41285f
1 измененных файлов с 70 добавлено и 0 удалено
  1. 70 0
      classes/widgets/entry.xml

+ 70 - 0
classes/widgets/entry.xml

@@ -0,0 +1,70 @@
+<class name="Entry">
+    <relationships>
+        <association name="parent" class="A"/>
+        <inheritance class="SCCDWidget" priority='0'/>
+        <inheritance class="tk.Entry" priority='1'/>
+    </relationships>
+
+    <constructor>
+        <parameter name="constructor_parameters" type='dict' default='{}' />
+        <body>
+            self.strvar = tk.StringVar(self)
+            self.strvar.set(constructor_parameters['initial']
+            self.strvar.trace('w', lambda _, _, _: self.controller.addInput(Event("change_entry", "input", [id(self), self.strvar.get()])))
+            self.name = constructor_parameters['name']
+        </body>
+        <super class="tk.Entry">
+            <parameter expr="constructor_parameters['parent']"/>
+        </super>
+        <super class="SCCDWidget">
+        </super>
+    </constructor>
+
+    <destructor>
+        <body>
+            self.destroy()
+        </body>
+    </destructor>
+
+    <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="change_entry" target='.' cond='tagorid == id(self)'>
+                    <parameter name='tagorid'/>
+                    <parameter name='new_value'/>
+                    <raise event="changed_entry" scope="narrow" target="'parent'">
+                        <parameter expr="self.name"/>
+                        <parameter expr="new_value"/>
+                    </raise>
+                </transition>
+
+                <transition event="mark_committed" target=".">
+                    <script>
+                        self.configure(bg="lightgreen")
+                    </script>
+                </transition>
+
+                <transition event="mark_uncommitted" target=".">
+                    <script>
+                        self.configure(bg="lightorange")
+                    </script>
+                </transition>
+
+                <transition event="change_event_name" target=".">
+                    <parameter name="new_name"/>
+                    <script>
+                        self.name = new_name
+                    </script>
+                </transition>
+            </state>
+        </state>
+    </scxml>
+</class>