ソースを参照

Fixed Entry widget

Yentl Van Tendeloo 8 年 前
コミット
2862b6588b
2 ファイル変更13 行追加26 行削除
  1. 5 12
      classes/widgets/entry.xml
  2. 8 14
      frontend.py

+ 5 - 12
classes/widgets/entry.xml

@@ -1,8 +1,6 @@
 <class name="Entry">
     <relationships>
         <association name="parent" class="A"/>
-        <inheritance class="SCCDWidget" priority='0'/>
-        <inheritance class="tk.Entry" priority='1'/>
     </relationships>
 
     <method name="construct_strvar">
@@ -18,20 +16,15 @@
 
     <constructor>
         <parameter name="constructor_parameters" type='dict' default='{}' />
-        <super class="tk.Entry">
-            <parameter expr="constructor_parameters['parent']"/>
-            <parameter expr="**{'textvariable': self.construct_strvar(constructor_parameters['parent'], constructor_parameters['value'])}"/>
-        </super>
-        <super class="SCCDWidget">
-        </super>
         <body>
             self.name = constructor_parameters['name']
+            self.entry = tk.Entry(constructor_parameters['parent'], textvariable=self.construct_strvar(constructor_parameters['parent'], constructor_parameters['value']))
         </body>
     </constructor>
 
     <destructor>
         <body>
-            self.destroy()
+            self.entry.destroy()
         </body>
     </destructor>
 
@@ -40,7 +33,7 @@
             <state id="initializing">
                 <transition target="../ready">
                     <raise event="tk_widget" scope="narrow" target="'parent'">
-                        <parameter expr="self"/>
+                        <parameter expr="self.entry"/>
                     </raise>
                 </transition>
             </state>
@@ -57,13 +50,13 @@
 
                 <transition event="mark_committed" target=".">
                     <script>
-                        self.configure(bg="lightgreen")
+                        self.entry.configure(bg="lime green")
                     </script>
                 </transition>
 
                 <transition event="mark_uncommitted" target=".">
                     <script>
-                        self.configure(bg="lightorange")
+                        self.entry.configure(bg="orange2")
                     </script>
                 </transition>
 

+ 8 - 14
frontend.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Fri Oct 13 10:15:00 2017
+Date:   Fri Oct 13 10:28:24 2017
 
 Model author: Yentl Van Tendeloo
 Model name:   Modelverse Visual Editor - Tkinter Version 
@@ -4240,7 +4240,7 @@ class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
     
     def _all_init_create_entries_create_entry_enter(self):
         current_attr = self.attrs_modify.popitem()
-        self.current_attr = {'name': current_attr[0][1:-1], 'type': current_attr[1][0][1:-1], 'optional': current_attr[1][1]}
+        self.current_attr = {'name': current_attr[0], 'type': current_attr[1][0][1:-1], 'optional': current_attr[1][1]}
     
     def _all_init_create_entries_create_entry_exit(self):
         print("INC counter")
@@ -7899,7 +7899,7 @@ class ConcreteSyntaxToolbar(Toolbar):
         self.default_targets = self.states["/init"].getEffectiveTargetStates()
         RuntimeClassBase.initializeStatechart(self)
 
-class Entry(RuntimeClassBase, tk.Entry, SCCDWidget):
+class Entry(RuntimeClassBase):
     def __init__(self, controller, constructor_parameters = None):
         if constructor_parameters == None: constructor_parameters = {}
         RuntimeClassBase.__init__(self, controller)
@@ -7918,17 +7918,11 @@ class Entry(RuntimeClassBase, tk.Entry, SCCDWidget):
     
     def user_defined_constructor(self, constructor_parameters = None):
         if constructor_parameters == None: constructor_parameters = {}
-        tk.Entry.__init__(self, constructor_parameters['parent'], **{'textvariable': self.construct_strvar(constructor_parameters['parent'], constructor_parameters['value'])})
-        SCCDWidget.__init__(self)
         self.name = constructor_parameters['name']
+        self.entry = tk.Entry(constructor_parameters['parent'], textvariable=self.construct_strvar(constructor_parameters['parent'], constructor_parameters['value']))
     
     def user_defined_destructor(self):
-        self.destroy()
-        # call super class destructors
-        if hasattr(tk.Entry, "__del__"):
-            tk.Entry.__del__(self)
-        if hasattr(SCCDWidget, "__del__"):
-            SCCDWidget.__del__(self)
+        self.entry.destroy()
     
     
     # user defined method
@@ -7988,7 +7982,7 @@ class Entry(RuntimeClassBase, tk.Entry, SCCDWidget):
         self.states["/main/ready"].addTransition(_main_ready_3)
     
     def _main_initializing_0_exec(self, parameters):
-        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("tk_widget", None, [self])]))
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("tk_widget", None, [self.entry])]))
     
     def _main_ready_0_exec(self, parameters):
         tagorid = parameters[0]
@@ -8001,10 +7995,10 @@ class Entry(RuntimeClassBase, tk.Entry, SCCDWidget):
         return tagorid == id(self)
     
     def _main_ready_1_exec(self, parameters):
-        self.configure(bg="lightgreen")
+        self.entry.configure(bg="lime green")
     
     def _main_ready_2_exec(self, parameters):
-        self.configure(bg="lightorange")
+        self.entry.configure(bg="orange2")
     
     def _main_ready_3_exec(self, parameters):
         new_name = parameters[0]