Browse Source

Add missing chatwindow

Yentl Van Tendeloo 8 years ago
parent
commit
478f629d96
1 changed files with 179 additions and 0 deletions
  1. 179 0
      classes/window/chatwindow.xml

+ 179 - 0
classes/window/chatwindow.xml

@@ -0,0 +1,179 @@
+<class name="ChatWindow">
+    <relationships>
+        <inheritance class="tk.Toplevel" priority="1"/>
+        <inheritance class="SCCDWidget" priority="0"/>
+        <association name="buttons" class="Button"/>
+        <association name="entries" class="Entry"/>
+        <association name="parent" class="A"/>
+    </relationships>
+
+    <constructor>
+        <parameter name="context"/>
+        <parameter name="activity_name"/>
+        <super class="tk.TopLevel"/>
+        <super class="SCCDWidget"/>
+        <body>
+            tk.Label(self, text="Executing %s" % activity_name).pack()
+            self.input_value = ""
+            self.context = context
+        </body>
+    </constructor>
+
+    <destructor>
+        <body>
+            self.destroy()
+        </body>
+    </destructor>
+
+    <scxml initial="init">
+        <state id="init" initial="init_entry_log">
+            <state id="init_entry_log" initial="create">
+                <state id="create">
+                    <onentry>
+                        <raise event="create_instance" scope="cd">
+                            <parameter expr="'entries'"/>
+                            <parameter expr="'Text'"/>
+                            <parameter expr="{'parent': self, 'name': 'history'}"/>
+                        </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.entry_log = association_name
+                        </script>
+                    </transition>
+                </state>
+
+                <state id="wait_for_packing">
+                    <transition event="tk_widget" target="../../init_entry_input">
+                        <parameter name="tk_elem"/>
+                        <script>
+                            tk_elem.pack()
+                        </script>
+                    </transition>
+                </state>
+            </state>
+
+            <state id="init_entry_input" initial="create">
+                <state id="create">
+                    <onentry>
+                        <raise event="create_instance" scope="cd">
+                            <parameter expr="'entries'"/>
+                            <parameter expr="'Entry'"/>
+                            <parameter expr="{'parent': self, 'value': self.input_value, 'name': 'input_value'}"/>
+                        </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.entry_input = association_name
+                        </script>
+                    </transition>
+                </state>
+
+                <state id="wait_for_packing">
+                    <transition event="tk_widget" target="../../init_button_send">
+                        <parameter name="tk_elem"/>
+                        <script>
+                            tk_elem.pack()
+                        </script>
+                    </transition>
+                </state>
+            </state>
+
+            <state id="init_button_send" initial="create">
+                <state id="create">
+                    <onentry>
+                        <raise event="create_instance" scope="cd">
+                            <parameter expr="'buttons'"/>
+                            <parameter expr="'Button'"/>
+                            <parameter expr="{'parent': self, 'visual': TextVisual('send'), 'tooltip_text': 'Send data to active activity.', 'event_parameters': 'send'}"/>
+                        </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()
+                        </script>
+                    </transition>
+                </state>
+            </state>
+        </state>
+
+        <state id="root">
+            <transition event="button_pressed" cond="event_name == 'send'" target=".">
+                <parameter name="event_name"/>
+                <raise event="mv_data_input" scope="broad">
+                    <parameter expr="self.input_value"/>
+                    <parameter expr="self.context"/>
+                </raise>
+                <raise event="change_value" scope="narrow" target="self.entry_input">
+                    <parameter expr="''"/>
+                </raise>
+                <raise event="append_value" scope="narrow" target="self.entry_log">
+                    <parameter expr="'&lt; ' + self.input_value + '\n'"/>
+                </raise>
+            </transition>
+
+            <transition event="mv_data_output" target=".">
+                <parameter name="value"/>
+                <raise event="append_value" scope="narrow" target="self.entry_log">
+                    <parameter expr="'> ' + value + '\n'"/>
+                </raise>
+            </transition>
+
+            <transition event="changed_entry" cond="name == 'input_value'" target=".">
+                <parameter name="name"/>
+                <parameter name="value"/>
+                <script>
+                    self.input_value = value
+                </script>
+            </transition>
+
+            <transition event="close_window" target="../closing"/>
+        </state>
+
+        <state id="closing">
+            <onentry>
+                <raise event="delete_instance" scope="cd">
+                    <parameter expr="'buttons'"/>
+                </raise>
+                <raise event="delete_instance" scope="cd">
+                    <parameter expr="'entries'"/>
+                </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>