sccd.xml 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?xml version="1.0" ?>
  2. <diagram author="Simon Van Mierlo" name="Timer (Eventloop Version)">
  3. <top>
  4. from sccd.runtime.libs.ui import ui_v2 as ui
  5. from time import time
  6. CANVAS_WIDTH = 500
  7. CANVAS_HEIGHT = 250
  8. FONT_SIZE = 50
  9. </top>
  10. <inport name="ui" />
  11. <class name="MainApp" default="true">
  12. <method name="MainApp">
  13. <body>
  14. <![CDATA[
  15. self.canvas = ui.append_canvas(ui.window,CANVAS_WIDTH,CANVAS_HEIGHT,{'background':'#222222'})
  16. self.clock_text = self.canvas.element.create_text(
  17. CANVAS_WIDTH / 2,
  18. CANVAS_HEIGHT / 2,
  19. text='0.0',
  20. anchor='center',
  21. font=("TkDefaultFont", FONT_SIZE)
  22. )
  23. self.actual_clock_text = self.canvas.element.create_text(
  24. CANVAS_WIDTH / 2,
  25. (CANVAS_HEIGHT / 2) + FONT_SIZE,
  26. text='0.0',
  27. anchor='center',
  28. font=("TkDefaultFont", FONT_SIZE)
  29. )
  30. interrupt_button = ui.append_button(ui.window, 'INTERRUPT');
  31. continue_button = ui.append_button(ui.window, 'CONTINUE');
  32. #ui.bind_event(interrupt_button.element, ui.EVENTS.MOUSE_CLICK, self.controller, 'interrupt_clicked');
  33. #ui.bind_event(continue_button.element, ui.EVENTS.MOUSE_CLICK, self.controller, 'continue_clicked');
  34. ]]>
  35. </body>
  36. </method>
  37. <method name="update_timers">
  38. <body>
  39. self.canvas.element.itemconfigure(self.clock_text, text=str('%.2f' % (self.getSimulatedTime() / 1000.0)))
  40. self.canvas.element.itemconfigure(self.actual_clock_text, text='%.2f' % (time() / 1000.0))
  41. </body>
  42. </method>
  43. <scxml initial="running">
  44. <state id="running">
  45. <transition target="." after="0.05">
  46. <script>
  47. self.update_timers()
  48. </script>
  49. </transition>
  50. <transition target="../interrupted" event="interrupt_clicked" port="ui">
  51. <script>
  52. self.update_timers()
  53. </script>
  54. </transition>
  55. </state>
  56. <state id="interrupted">
  57. <transition target="." event="interrupt_clicked" port="ui">
  58. <script>
  59. self.update_timers()
  60. </script>
  61. </transition>
  62. <transition target="../running" event="continue_clicked" port="ui">
  63. <script>
  64. self.update_timers()
  65. </script>
  66. </transition>
  67. </state>
  68. </scxml>
  69. </class>
  70. </diagram>