chatwindow.xml 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <class name="ChatWindow">
  2. <relationships>
  3. <inheritance class="tk.Toplevel" priority="1"/>
  4. <inheritance class="SCCDWidget" priority="0"/>
  5. <association name="buttons" class="Button"/>
  6. <association name="entries" class="Entry"/>
  7. <association name="parent" class="A"/>
  8. </relationships>
  9. <constructor>
  10. <super class="tk.TopLevel"/>
  11. <super class="SCCDWidget"/>
  12. <body>
  13. self.input_value = ""
  14. </body>
  15. </constructor>
  16. <destructor>
  17. <body>
  18. self.destroy()
  19. </body>
  20. </destructor>
  21. <scxml initial="init">
  22. <state id="init" initial="init_entry_log">
  23. <state id="init_entry_log" initial="create">
  24. <state id="create">
  25. <onentry>
  26. <raise event="create_instance" scope="cd">
  27. <parameter expr="'entries'"/>
  28. <parameter expr="'Text'"/>
  29. <parameter expr="{'parent': self, 'name': 'history'}"/>
  30. </raise>
  31. </onentry>
  32. <transition event="instance_created" target="../wait_for_packing">
  33. <parameter name="association_name"/>
  34. <raise event="start_instance" scope="cd">
  35. <parameter expr="association_name"/>
  36. </raise>
  37. <script>
  38. self.entry_log = association_name
  39. </script>
  40. </transition>
  41. </state>
  42. <state id="wait_for_packing">
  43. <transition event="tk_widget" target="../../init_entry_input">
  44. <parameter name="tk_elem"/>
  45. <script>
  46. tk_elem.pack()
  47. </script>
  48. </transition>
  49. </state>
  50. </state>
  51. <state id="init_entry_input" initial="create">
  52. <state id="create">
  53. <onentry>
  54. <raise event="create_instance" scope="cd">
  55. <parameter expr="'entries'"/>
  56. <parameter expr="'Entry'"/>
  57. <parameter expr="{'parent': self, 'value': self.input_value, 'name': 'input_value'}"/>
  58. </raise>
  59. </onentry>
  60. <transition event="instance_created" target="../wait_for_packing">
  61. <parameter name="association_name"/>
  62. <raise event="start_instance" scope="cd">
  63. <parameter expr="association_name"/>
  64. </raise>
  65. <script>
  66. self.entry_input = association_name
  67. </script>
  68. </transition>
  69. </state>
  70. <state id="wait_for_packing">
  71. <transition event="tk_widget" target="../../init_button_send">
  72. <parameter name="tk_elem"/>
  73. <script>
  74. tk_elem.pack()
  75. </script>
  76. </transition>
  77. </state>
  78. </state>
  79. <state id="init_button_send" initial="create">
  80. <state id="create">
  81. <onentry>
  82. <raise event="create_instance" scope="cd">
  83. <parameter expr="'buttons'"/>
  84. <parameter expr="'Button'"/>
  85. <parameter expr="{'parent': self, 'visual': TextVisual('send'), 'tooltip_text': 'Send data to active activity.', 'event_parameters': 'send'}"/>
  86. </raise>
  87. </onentry>
  88. <transition event="instance_created" target="../wait_for_packing">
  89. <parameter name="association_name"/>
  90. <raise event="start_instance" scope="cd">
  91. <parameter expr="association_name"/>
  92. </raise>
  93. <script>
  94. self.button = association_name
  95. </script>
  96. </transition>
  97. </state>
  98. <state id="wait_for_packing">
  99. <transition event="tk_widget" target="../../../root">
  100. <parameter name="tk_elem"/>
  101. <script>
  102. tk_elem.pack()
  103. </script>
  104. </transition>
  105. </state>
  106. </state>
  107. </state>
  108. <state id="root">
  109. <transition event="button_pressed" cond="event_name == 'send'" target=".">
  110. <parameter name="event_name"/>
  111. <raise event="stdout_output" scope="output" port="stdout_port">
  112. <parameter expr="self.input_value"/>
  113. </raise>
  114. <raise event="change_value" scope="narrow" target="self.entry_input">
  115. <parameter expr="''"/>
  116. </raise>
  117. <raise event="append_value" scope="narrow" target="self.entry_log">
  118. <parameter expr="'&lt; ' + self.input_value + '\n'"/>
  119. </raise>
  120. </transition>
  121. <transition event="stdin_input" port="stdin_port" target=".">
  122. <parameter name="value"/>
  123. <raise event="append_value" scope="narrow" target="self.entry_log">
  124. <parameter expr="'> ' + value + '\n'"/>
  125. </raise>
  126. </transition>
  127. <transition event="changed_entry" cond="name == 'input_value'" target=".">
  128. <parameter name="name"/>
  129. <parameter name="value"/>
  130. <script>
  131. self.input_value = value
  132. </script>
  133. </transition>
  134. <transition event="close_window" target="../closing"/>
  135. </state>
  136. <state id="closing">
  137. <onentry>
  138. <raise event="delete_instance" scope="cd">
  139. <parameter expr="'buttons'"/>
  140. </raise>
  141. <raise event="delete_instance" scope="cd">
  142. <parameter expr="'entries'"/>
  143. </raise>
  144. </onentry>
  145. <transition event="instance_deleted" target="../close"/>
  146. </state>
  147. <state id="close"/>
  148. </scxml>
  149. </class>