toggle_button.xml 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <class name="ToggleButton">
  2. <relationships>
  3. <association name="parent" class="A"/>
  4. <inheritance class="SCCDWidget" priority='0'/>
  5. <inheritance class="tk.Button" priority='1'/>
  6. </relationships>
  7. <constructor>
  8. <parameter name="constructor_parameters" type='dict' default='{}' />
  9. <super class="tk.Button">
  10. <parameter expr="constructor_parameters['parent']"/>
  11. <parameter expr="**(constructor_parameters['visual'].get_params())"/>
  12. </super>
  13. <super class="SCCDWidget">
  14. </super>
  15. <body>
  16. self.on_activate = constructor_parameters["on_activate"]
  17. self.on_deactivate = constructor_parameters["on_deactivate"]
  18. if "tooltip_text" in constructor_parameters:
  19. self.tooltip = ToolTip(self, constructor_parameters["tooltip_text"])
  20. else:
  21. self.tooltip = None
  22. self.initial_active = constructor_parameters["active"]
  23. </body>
  24. </constructor>
  25. <destructor>
  26. <body>
  27. self.destroy()
  28. </body>
  29. </destructor>
  30. <scxml initial="main">
  31. <state id="main" initial='initializing'>
  32. <state id="initializing">
  33. <transition target="../ready">
  34. <raise event="tk_widget" scope="narrow" target="'parent'">
  35. <parameter expr="self"/>
  36. </raise>
  37. </transition>
  38. </state>
  39. <state id="ready" initial="decide">
  40. <state id="decide">
  41. <transition cond="self.initial_active" target="../active"/>
  42. <transition cond="not self.initial_active" target="../inactive"/>
  43. </state>
  44. <state id="active">
  45. <onentry>
  46. <script>
  47. self.configure(state=tk.ACTIVE, relief=tk.SUNKEN)
  48. </script>
  49. </onentry>
  50. <transition port='input' event="left-click" target='../inactive' cond='tagorid == id(self)'>
  51. <parameter name='tagorid' type='int' default='None' />
  52. <raise event="button_pressed" scope="narrow" target="'parent'">
  53. <parameter expr="self.on_deactivate" />
  54. </raise>
  55. </transition>
  56. <transition event="deactivate" target="../inactive"/>
  57. </state>
  58. <state id="inactive">
  59. <onentry>
  60. <script>
  61. self.configure(state=tk.NORMAL, relief=tk.RAISED)
  62. </script>
  63. </onentry>
  64. <transition port='input' event="left-click" target='../active' cond='tagorid == id(self)'>
  65. <parameter name='tagorid' type='int' default='None' />
  66. <raise event="button_pressed" scope="narrow" target="'parent'">
  67. <parameter expr="self.on_activate" />
  68. </raise>
  69. </transition>
  70. <transition event="activate" target="../active"/>
  71. </state>
  72. <history id="history" type="deep"/>
  73. </state>
  74. <transition port='input' event="enter" target='ready/history' cond='tagorid == id(self) and self.tooltip is not None'>
  75. <parameter name='tagorid' type='int' default='None' />
  76. <script>
  77. self.tooltip.showtip()
  78. </script>
  79. </transition>
  80. <transition port='input' event="leave" target='ready/history' cond='tagorid == id(self) and self.tooltip is not None'>
  81. <parameter name='tagorid' type='int' default='None' />
  82. <script>
  83. self.tooltip.hidetip()
  84. </script>
  85. </transition>
  86. <transition event="change_triggers" target='ready/history'>
  87. <parameter name="on_activate"/>
  88. <parameter name="on_deactivate"/>
  89. <script>
  90. self.on_activate = on_activate
  91. self.on_deactivate = on_deactivate
  92. </script>
  93. </transition>
  94. </state>
  95. </scxml>
  96. </class>