sccd.xml 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?xml version="1.0" ?>
  2. <diagram author="Sam Pieters" name="Timer (Eventloop Version)">
  3. <top>
  4. from sccd.runtime.libs.ui import ui
  5. import time
  6. CANVAS_WIDTH = 350
  7. CANVAS_HEIGHT = 300
  8. </top>
  9. <inport name="ui" />
  10. <class name="MainApp" default="true">
  11. <attribute name="window_id" />
  12. <attribute name="canvas_id" />
  13. <attribute name="clock_id" />
  14. <attribute name="actual_clock_id" />
  15. <attribute name="button_id" />
  16. <attribute name="starting_time" />
  17. <inport name="field_ui"/>
  18. <scxml initial="creating_window">
  19. <state id="creating_window">
  20. <onentry>
  21. <raise port="ui" event="create_window">
  22. <parameter expr="CANVAS_WIDTH"/><!-- width -->
  23. <parameter expr="CANVAS_HEIGHT"/><!-- height -->
  24. <parameter expr='"Fixed Timer"'/><!-- title -->
  25. <parameter expr="self.inports['field_ui']"/><!-- inport for response -->
  26. </raise>
  27. </onentry>
  28. <transition event="window_created" target="../creating_canvas">
  29. <parameter name="window_id" type="int" />
  30. <script>
  31. <![CDATA[
  32. self.window_id = window_id
  33. self.starting_time = time.time()
  34. ]]>
  35. </script>
  36. <raise port="ui" event="bind_event">
  37. <parameter expr="window_id"/><!-- widget_id -->
  38. <parameter expr="ui.EVENTS.WINDOW_CLOSE"/><!-- tk_event -->
  39. <parameter expr="'window_close'"/><!-- sccd_event_name -->
  40. <parameter expr="self.inports['field_ui']"/><!-- inport for response -->
  41. </raise>
  42. <raise port="ui" event="bind_event">
  43. <parameter expr="window_id"/><!-- widget_id -->
  44. <parameter expr="ui.EVENTS.KEY_PRESS"/><!-- tk_event -->
  45. <parameter expr="'key_press'"/><!-- sccd_event_name -->
  46. <parameter expr="self.inports['field_ui']"/><!-- inport for response -->
  47. </raise>
  48. </transition>
  49. </state>
  50. <state id="creating_canvas">
  51. <onentry>
  52. <raise port="ui" event="create_canvas">
  53. <parameter expr="self.window_id"/><!-- window_id -->
  54. <parameter expr="CANVAS_WIDTH"/><!-- width -->
  55. <parameter expr="CANVAS_HEIGHT - 200"/><!-- height -->
  56. <parameter expr="{'background':'#222222'}"/><!-- style -->
  57. <parameter expr="self.inports['field_ui']"/><!-- inport for response -->
  58. </raise>
  59. </onentry>
  60. <transition event="canvas_created" target="../creating_clock_text">
  61. <parameter name="canvas_id" type="int"/>
  62. <script>
  63. <![CDATA[
  64. self.canvas_id = canvas_id
  65. ]]>
  66. </script>
  67. <raise scope="narrow" event="set_association_name" target="association_name">
  68. <parameter expr="association_name" />
  69. </raise>
  70. </transition>
  71. </state>
  72. <state id="running">
  73. </state>
  74. </scxml>
  75. </class>
  76. <class name="Elevator">
  77. <attribute name="canvas_id" />
  78. <atrribute name="circle_id" />
  79. <attribute name="pos" />
  80. <inport name="elevator_ui"/>
  81. <relationships>
  82. <association name="parent" class="MainApp" min="1" max="1" />
  83. </relationships>
  84. <scxml initial="root">
  85. <state id="root" initial="waiting">
  86. <state id="waiting">
  87. <transition event="set_association_name" target="../creating_elevator">
  88. <parameter name="association_name" type="str" />
  89. <script>
  90. self.association_name = association_name
  91. </script>
  92. </transition>
  93. </state>
  94. <state id="creating_elevator">
  95. <onentry>
  96. <raise port="ui" event="create_rectangle">
  97. canvas_id, x, y, r, style, res_port
  98. <parameter expr="self.canvas_id"/><!-- canvas_id -->
  99. <parameter expr="self.pos['x']"/><!-- x -->
  100. <parameter expr="self.pos['y']"/><!-- y -->
  101. <parameter expr="self.r"/><!-- r -->
  102. <parameter expr="{'fill':'#000'}"/><!-- style -->
  103. <parameter expr="self.inports['ball_ui']"/><!-- inport for response -->
  104. </raise>
  105. </onentry>
  106. </state>
  107. </state>
  108. </scxml>
  109. </class>
  110. </diagram>