model.xml 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. <class name="ChatWindow" default="true">
  2. <relationships>
  3. <association name="client" class="NetworkClient"/>
  4. </relationships>
  5. <method name="ChatWindow">
  6. <parameter name="my_controller"/>
  7. <body><![CDATA[
  8. self.colors = {'service': 'black', 'me': 'red', 'other': 'blue'}
  9. self.numbers = set([str(c) for c in range(10)])
  10. self.characters = set([chr(c) for c in range(32,126)])
  11. self.server_list = [('localhost', 8000), ('localhost', 8001)]
  12. self.connecting_server = 0
  13. self.buffer = ''
  14. self.my_controller = my_controller
  15. try:
  16. data = json.dumps({'text':'CLIENT_BDAPI :: {"func":"_unhighlight","args":{}}'})
  17. headers = {'Content-Type': 'text/plain'}
  18. conn = httplib.HTTPConnection('127.0.0.1:8124')
  19. conn.request('PUT', '/GET/console?wid=5', data, headers)
  20. conn.getresponse()
  21. conn.close()
  22. except:
  23. pass
  24. ]]></body>
  25. </method>
  26. <method name="add_message">
  27. <parameter name="msg"/>
  28. <parameter name="color"/>
  29. <body><![CDATA[
  30. self.my_controller.addMessage(msg, color)
  31. ]]></body>
  32. </method>
  33. <method name="append_to_buffer">
  34. <parameter name="character"/>
  35. <body><![CDATA[
  36. self.buffer = ''.join([self.buffer, character])
  37. self.my_controller.redraw_buffer(self.buffer)
  38. ]]></body>
  39. </method>
  40. <method name="remove_last_in_buffer">
  41. <body><![CDATA[
  42. self.buffer = self.buffer[:-1]
  43. self.my_controller.redraw_buffer(self.buffer)
  44. ]]></body>
  45. </method>
  46. <method name="clear_input">
  47. <body><![CDATA[
  48. self.buffer = ''
  49. self.my_controller.redraw_buffer(self.buffer)
  50. ]]></body>
  51. </method>
  52. <method name="input_join">
  53. <body><![CDATA[self.my_controller.setColor('green')
  54. ]]></body>
  55. </method>
  56. <method name="input_msg">
  57. <body><![CDATA[self.my_controller.setColor('white')
  58. ]]></body>
  59. </method>
  60. <method name="input_command">
  61. <body><![CDATA[self.my_controller.setColor('grey')
  62. ]]></body>
  63. </method>
  64. <method name="get_buffer">
  65. <body><![CDATA[return self.buffer
  66. ]]></body>
  67. </method>
  68. <scxml initial="init_network" priority="source_child">
  69. <state id="connecting">
  70. <transition event="connected" target="./../connected" >
  71. </transition>
  72. <onentry>
  73. <script><![CDATA[try:
  74. data = json.dumps({'text':'CLIENT_BDAPI :: {"func":"_highlightState","args":{"asid":"232","followCrossFormalismLinks":"*"}}'})
  75. headers = {'Content-Type': 'text/plain'}
  76. conn = httplib.HTTPConnection('127.0.0.1:8124')
  77. conn.request('PUT', '/GET/console?wid=5', data, headers)
  78. conn.getresponse()
  79. conn.close()
  80. except:
  81. pass
  82. ]]></script>
  83. <raise event="connect" scope="broad">
  84. <parameter expr="'localhost'"/>
  85. <parameter expr="8000"/>
  86. </raise>
  87. </onentry>
  88. <onexit>
  89. <script><![CDATA[try:
  90. data = json.dumps({'text':'CLIENT_BDAPI :: {"func":"_unhighlightState","args":{"asid":"232"}}'})
  91. headers = {'Content-Type': 'text/plain'}
  92. conn = httplib.HTTPConnection('127.0.0.1:8124')
  93. conn.request('PUT', '/GET/console?wid=5', data, headers)
  94. conn.getresponse()
  95. conn.close()
  96. except:
  97. pass
  98. ]]></script>
  99. </onexit>
  100. </state>
  101. <state id="leaving">
  102. <transition event="left" target="./../left" >
  103. </transition>
  104. <onentry>
  105. <script><![CDATA[try:
  106. data = json.dumps({'text':'CLIENT_BDAPI :: {"func":"_highlightState","args":{"asid":"233","followCrossFormalismLinks":"*"}}'})
  107. headers = {'Content-Type': 'text/plain'}
  108. conn = httplib.HTTPConnection('127.0.0.1:8124')
  109. conn.request('PUT', '/GET/console?wid=5', data, headers)
  110. conn.getresponse()
  111. conn.close()
  112. except:
  113. pass
  114. self.add_message('leaving', self.colors['service'])]]></script>
  115. <raise event="leave" scope="broad">
  116. </raise>
  117. </onentry>
  118. <onexit>
  119. <script><![CDATA[try:
  120. data = json.dumps({'text':'CLIENT_BDAPI :: {"func":"_unhighlightState","args":{"asid":"233"}}'})
  121. headers = {'Content-Type': 'text/plain'}
  122. conn = httplib.HTTPConnection('127.0.0.1:8124')
  123. conn.request('PUT', '/GET/console?wid=5', data, headers)
  124. conn.getresponse()
  125. conn.close()
  126. except:
  127. pass
  128. ]]></script>
  129. </onexit>
  130. </state>
  131. <state id="joined">
  132. <transition event="input" cond="character == 'k'" port="tkinter_input" target="./../leaving" >
  133. <parameter name="character"/>
  134. </transition>
  135. <transition after="10.0" target="./../leaving" >
  136. </transition>
  137. <onentry>
  138. <script><![CDATA[try:
  139. data = json.dumps({'text':'CLIENT_BDAPI :: {"func":"_highlightState","args":{"asid":"228","followCrossFormalismLinks":"*"}}'})
  140. headers = {'Content-Type': 'text/plain'}
  141. conn = httplib.HTTPConnection('127.0.0.1:8124')
  142. conn.request('PUT', '/GET/console?wid=5', data, headers)
  143. conn.getresponse()
  144. conn.close()
  145. except:
  146. pass
  147. self.add_message('joined room', self.colors['service'])]]></script>
  148. </onentry>
  149. <onexit>
  150. <script><![CDATA[try:
  151. data = json.dumps({'text':'CLIENT_BDAPI :: {"func":"_unhighlightState","args":{"asid":"228"}}'})
  152. headers = {'Content-Type': 'text/plain'}
  153. conn = httplib.HTTPConnection('127.0.0.1:8124')
  154. conn.request('PUT', '/GET/console?wid=5', data, headers)
  155. conn.getresponse()
  156. conn.close()
  157. except:
  158. pass
  159. ]]></script>
  160. </onexit>
  161. </state>
  162. <state id="left">
  163. <onentry>
  164. <script><![CDATA[try:
  165. data = json.dumps({'text':'CLIENT_BDAPI :: {"func":"_highlightState","args":{"asid":"229","followCrossFormalismLinks":"*"}}'})
  166. headers = {'Content-Type': 'text/plain'}
  167. conn = httplib.HTTPConnection('127.0.0.1:8124')
  168. conn.request('PUT', '/GET/console?wid=5', data, headers)
  169. conn.getresponse()
  170. conn.close()
  171. except:
  172. pass
  173. self.add_message('left room', self.colors['service'])]]></script>
  174. </onentry>
  175. <onexit>
  176. <script><![CDATA[try:
  177. data = json.dumps({'text':'CLIENT_BDAPI :: {"func":"_unhighlightState","args":{"asid":"229"}}'})
  178. headers = {'Content-Type': 'text/plain'}
  179. conn = httplib.HTTPConnection('127.0.0.1:8124')
  180. conn.request('PUT', '/GET/console?wid=5', data, headers)
  181. conn.getresponse()
  182. conn.close()
  183. except:
  184. pass
  185. ]]></script>
  186. </onexit>
  187. </state>
  188. <state id="connected">
  189. <transition event="joined" target="./../joined" >
  190. </transition>
  191. <onentry>
  192. <script><![CDATA[try:
  193. data = json.dumps({'text':'CLIENT_BDAPI :: {"func":"_highlightState","args":{"asid":"230","followCrossFormalismLinks":"*"}}'})
  194. headers = {'Content-Type': 'text/plain'}
  195. conn = httplib.HTTPConnection('127.0.0.1:8124')
  196. conn.request('PUT', '/GET/console?wid=5', data, headers)
  197. conn.getresponse()
  198. conn.close()
  199. except:
  200. pass
  201. self.add_message('joining room 1', self.colors['service'])]]></script>
  202. <raise event="join" scope="broad">
  203. <parameter expr="1"/>
  204. </raise>
  205. </onentry>
  206. <onexit>
  207. <script><![CDATA[try:
  208. data = json.dumps({'text':'CLIENT_BDAPI :: {"func":"_unhighlightState","args":{"asid":"230"}}'})
  209. headers = {'Content-Type': 'text/plain'}
  210. conn = httplib.HTTPConnection('127.0.0.1:8124')
  211. conn.request('PUT', '/GET/console?wid=5', data, headers)
  212. conn.getresponse()
  213. conn.close()
  214. except:
  215. pass
  216. ]]></script>
  217. </onexit>
  218. </state>
  219. <state id="init_network">
  220. <transition event="instance_created" target="./../connecting" >
  221. <parameter name="association_name"/>
  222. <raise event="start_instance" scope="cd">
  223. <parameter expr="association_name"/>
  224. </raise>
  225. </transition>
  226. <onentry>
  227. <script><![CDATA[try:
  228. data = json.dumps({'text':'CLIENT_BDAPI :: {"func":"_highlightState","args":{"asid":"226","followCrossFormalismLinks":"*"}}'})
  229. headers = {'Content-Type': 'text/plain'}
  230. conn = httplib.HTTPConnection('127.0.0.1:8124')
  231. conn.request('PUT', '/GET/console?wid=5', data, headers)
  232. conn.getresponse()
  233. conn.close()
  234. except:
  235. pass
  236. ]]></script>
  237. <raise event="create_instance" scope="cd">
  238. <parameter expr="'client'"/>
  239. </raise>
  240. </onentry>
  241. <onexit>
  242. <script><![CDATA[try:
  243. data = json.dumps({'text':'CLIENT_BDAPI :: {"func":"_unhighlightState","args":{"asid":"226"}}'})
  244. headers = {'Content-Type': 'text/plain'}
  245. conn = httplib.HTTPConnection('127.0.0.1:8124')
  246. conn.request('PUT', '/GET/console?wid=5', data, headers)
  247. conn.getresponse()
  248. conn.close()
  249. except:
  250. pass
  251. ]]></script>
  252. </onexit>
  253. </state>
  254. </scxml>
  255. </class>