sccd.xml 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?xml version="1.0" ?>
  2. <diagram author="Simon Van Mierlo" name="Timer">
  3. <description>
  4. </description>
  5. <top>
  6. from sccd.runtime.libs.ui import ui
  7. from sccd.runtime.accurate_time import time
  8. from sccd.runtime.statecharts_core import get_simulated_time
  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,100,100,{'background':'#eee'})
  16. self.clock_text = self.canvas.element.create_text(25,25,{'text':'0.0'})
  17. self.actual_clock_text = self.canvas.element.create_text(25,50,{'text':'0.0'})
  18. interrupt_button = ui.append_button(ui.window, 'INTERRUPT');
  19. continue_button = ui.append_button(ui.window, 'CONTINUE');
  20. ui.bind_event(interrupt_button.element, ui.EVENTS.MOUSE_CLICK, self.controller, 'interrupt_clicked');
  21. ui.bind_event(continue_button.element, ui.EVENTS.MOUSE_CLICK, self.controller, 'continue_clicked');
  22. ]]>
  23. </body>
  24. </method>
  25. <method name="update_timers">
  26. <body>
  27. self.canvas.element.itemconfigure(self.clock_text, text=str('%.2f' % get_simulated_time()))
  28. self.canvas.element.itemconfigure(self.actual_clock_text, text='%.2f' % time())
  29. </body>
  30. </method>
  31. <scxml initial="running">
  32. <state id="running">
  33. <transition target="." after="0.05">
  34. <script>
  35. self.update_timers()
  36. </script>
  37. </transition>
  38. <transition target="../interrupted" event="interrupt_clicked" port="ui">
  39. <script>
  40. self.update_timers()
  41. </script>
  42. </transition>
  43. </state>
  44. <state id="interrupted">
  45. <transition target="." event="interrupt_clicked" port="ui">
  46. <script>
  47. self.update_timers()
  48. </script>
  49. </transition>
  50. <transition target="../running" event="continue_clicked" port="ui">
  51. <script>
  52. self.update_timers()
  53. </script>
  54. </transition>
  55. </state>
  56. </scxml>
  57. </class>
  58. </diagram>