瀏覽代碼

Added simple Text widget for multi-line text

Yentl Van Tendeloo 7 年之前
父節點
當前提交
751363b735
共有 1 個文件被更改,包括 48 次插入0 次删除
  1. 48 0
      classes/widgets/text.xml

+ 48 - 0
classes/widgets/text.xml

@@ -0,0 +1,48 @@
+<class name="Text">
+    <relationships>
+        <association name="parent" class="A"/>
+    </relationships>
+
+    <constructor>
+        <parameter name="constructor_parameters" type='dict' default='{}' />
+        <body>
+            self.name = constructor_parameters['name']
+            self.entry = tk.Text(constructor_parameters['parent'])
+            self.entry.config(state=tk.DISABLED)
+        </body>
+    </constructor>
+
+    <destructor>
+        <body>
+            self.entry.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.entry"/>
+                    </raise>
+                </transition>
+            </state>
+
+            <state id="ready">
+                <transition event="append_value" target=".">
+                    <parameter name="new_value"/>
+                    <script>
+                        print("Appending value")
+                        self.entry.config(state=tk.NORMAL)
+                        self.entry.insert(tk.END, new_value)
+                        self.entry.config(state=tk.DISABLED)
+                    </script>
+                    <raise event="changed_value" scope="narrow" target="'parent'">
+                        <parameter expr="self.name"/>
+                        <parameter expr="self.entry.get(1.0, tk.END)"/>
+                    </raise>
+                </transition>
+            </state>
+        </state>
+    </scxml>
+</class>