123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- <class name="PromptWindow">
- <relationships>
- <inheritance class="tk.Toplevel" priority="1"/>
- <inheritance class="SCCDWidget" priority="0"/>
- <association name="buttons" class="Button"/>
- <association name="parent" class="A"/>
- </relationships>
- <constructor>
- <parameter name="entries"/>
- <parameter name="options"/>
- <super class="tk.TopLevel"/>
- <super class="SCCDWidget"/>
- <body>
- self.entries = {}
- self.frame = tk.Frame(self)
- counter = 0
- for k, v in entries.items():
- label = tk.Label(self.frame, text=k)
- entry = tk.Entry(self.frame, **options.get(k, {}))
- entry.insert(0, v)
- label.grid(row=counter, column=0)
- entry.grid(row=counter, column=1)
- counter += 1
- self.entries[k] = entry
- self.frame.pack()
- </body>
- </constructor>
- <destructor>
- <body>
- self.destroy()
- </body>
- </destructor>
- <scxml initial="init">
- <state id="init" initial="init_button_OK">
- <state id="init_button_OK">
- <onentry>
- <raise event="create_instance" scope="cd">
- <parameter expr="'buttons'"/>
- <parameter expr="'Button'"/>
- <parameter expr="{'parent': self, 'visual': TextVisual('OK'), 'tooltip_text': 'Accept values', 'event_parameters': 'OK'}"/>
- </raise>
- </onentry>
- <transition event="instance_created" target="../wait_for_packing">
- <parameter name="association_name"/>
- <raise event="start_instance" scope="cd">
- <parameter expr="association_name"/>
- </raise>
- <script>
- self.button = association_name
- </script>
- </transition>
- </state>
- <state id="wait_for_packing">
- <transition event="tk_widget" target="../../root">
- <parameter name="tk_elem"/>
- <script>
- tk_elem.pack(fill=tk.X)
- </script>
- </transition>
- </state>
- </state>
- <state id="root">
- <transition event="button_pressed" cond="event_name == 'OK'" target="../closing">
- <parameter name="event_name"/>
- <script>
- results = {}
- for k, v in self.entries.items():
- results[k] = v.get()
- print("SENDING DATA")
- </script>
- <raise event="prompt_results" scope="narrow" target="'parent'">
- <parameter expr="results"/>
- </raise>
- </transition>
- <transition event="window-close" cond="ID == id(self)" target="../closing">
- <parameter name="ID"/>
- </transition>
- </state>
- <state id="closing">
- <onentry>
- <raise event="delete_instance" scope="cd">
- <parameter expr="self.button"/>
- </raise>
- </onentry>
- <transition event="instance_deleted" target="../close"/>
- </state>
-
- <state id="close">
- <onentry>
- <raise event="close_window" scope="narrow" target="'parent'"/>
- </onentry>
- </state>
- </scxml>
- </class>
|