bec-widgets 0.94.3__tar.gz → 0.94.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/CHANGELOG.md +26 -20
  2. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/PKG-INFO +3 -3
  3. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/cli/auto_updates.py +31 -0
  4. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/cli/client_utils.py +32 -60
  5. bec_widgets-0.94.5/bec_widgets/qt_utils/redis_message_waiter.py +47 -0
  6. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/bec_dispatcher.py +1 -15
  7. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/image/image_widget.py +0 -1
  8. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/jupyter_console/jupyter_console.py +0 -2
  9. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/waveform/waveform_widget.py +0 -1
  10. bec_widgets-0.94.5/docs/developer/developer.md +50 -0
  11. bec_widgets-0.94.5/docs/developer/introduction/concepts.md +14 -0
  12. bec_widgets-0.94.3/docs/developer/getting_started/development.md → bec_widgets-0.94.5/docs/developer/introduction/contributing.md +5 -4
  13. bec_widgets-0.94.5/docs/developer/introduction/introduction.md +15 -0
  14. bec_widgets-0.94.3/docs/developer/widgets/widgets.md → bec_widgets-0.94.5/docs/developer/widget_development/widget_development.md +2 -2
  15. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/pyproject.toml +7 -7
  16. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/end-2-end/test_bec_dock_rpc_e2e.py +1 -0
  17. bec_widgets-0.94.3/docs/developer/developer.md +0 -46
  18. bec_widgets-0.94.3/docs/developer/getting_started/getting_started.md +0 -12
  19. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/.git_hooks/pre-commit +0 -0
  20. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/.gitignore +0 -0
  21. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/.gitlab/issue_templates/bug_report_template.md +0 -0
  22. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/.gitlab/issue_templates/documentation_update_template.md +0 -0
  23. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/.gitlab/issue_templates/feature_request_template.md +0 -0
  24. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/.gitlab/merge_request_templates/default.md +0 -0
  25. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/.gitlab-ci.yml +0 -0
  26. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/.pylintrc +0 -0
  27. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/.readthedocs.yaml +0 -0
  28. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/LICENSE +0 -0
  29. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/README.md +0 -0
  30. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/__init__.py +0 -0
  31. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/app_icons/BEC-Dark.png +0 -0
  32. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
  33. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/app_icons/terminal_icon.png +0 -0
  34. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/code.png +0 -0
  35. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/color_button.png +0 -0
  36. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/colormap_selector.png +0 -0
  37. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/device_combo_box.png +0 -0
  38. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/device_line_edit.png +0 -0
  39. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/dock_area.png +0 -0
  40. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/games.png +0 -0
  41. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/image.png +0 -0
  42. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/motor_map.png +0 -0
  43. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/position_indicator.png +0 -0
  44. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/positioner_box.png +0 -0
  45. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/queue.png +0 -0
  46. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/ring_progress.png +0 -0
  47. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/scan_control.png +0 -0
  48. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/spinner.png +0 -0
  49. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/status.png +0 -0
  50. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/stop.png +0 -0
  51. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/text.png +0 -0
  52. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/toggle.png +0 -0
  53. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/waveform.png +0 -0
  54. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/designer_icons/web.png +0 -0
  55. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/status_icons/error.svg +0 -0
  56. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/status_icons/not_connected.svg +0 -0
  57. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/status_icons/refresh.svg +0 -0
  58. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/status_icons/running.svg +0 -0
  59. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/status_icons/warning.svg +0 -0
  60. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/add.svg +0 -0
  61. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/attach_all.svg +0 -0
  62. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/auto_range.svg +0 -0
  63. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/compare.svg +0 -0
  64. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/connection.svg +0 -0
  65. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/device_line_edit.svg +0 -0
  66. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/drag_pan_mode.svg +0 -0
  67. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/export.svg +0 -0
  68. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/fft.svg +0 -0
  69. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/fitting_parameters.svg +0 -0
  70. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/history.svg +0 -0
  71. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/image.svg +0 -0
  72. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/image_autorange.svg +0 -0
  73. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/import.svg +0 -0
  74. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/line_axis.svg +0 -0
  75. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/line_curve.svg +0 -0
  76. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/lock_aspect_ratio.svg +0 -0
  77. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/log_scale.png +0 -0
  78. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/motor_map.svg +0 -0
  79. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/photo_library.svg +0 -0
  80. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/positioner_box.svg +0 -0
  81. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/progress.svg +0 -0
  82. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/queue.svg +0 -0
  83. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/rectangle_mode.svg +0 -0
  84. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/remove.svg +0 -0
  85. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/reset_settings.svg +0 -0
  86. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/restore_state.svg +0 -0
  87. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/ring_progress.svg +0 -0
  88. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/rotate_left.svg +0 -0
  89. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/rotate_right.svg +0 -0
  90. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/save.svg +0 -0
  91. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/save_state.svg +0 -0
  92. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/scan_control.svg +0 -0
  93. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/settings.svg +0 -0
  94. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/status.svg +0 -0
  95. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/terminal.svg +0 -0
  96. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/transform.svg +0 -0
  97. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/assets/toolbar_icons/waveform.svg +0 -0
  98. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/cli/__init__.py +0 -0
  99. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/cli/client.py +0 -0
  100. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/cli/generate_cli.py +0 -0
  101. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/cli/rpc_register.py +0 -0
  102. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/cli/rpc_wigdet_handler.py +0 -0
  103. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/cli/server.py +0 -0
  104. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/examples/__init__.py +0 -0
  105. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/examples/general_app/__init__.py +0 -0
  106. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/examples/general_app/general_app.py +0 -0
  107. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/examples/general_app/general_app.ui +0 -0
  108. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/examples/general_app/web_links.py +0 -0
  109. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  110. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
  111. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
  112. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
  113. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
  114. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
  115. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
  116. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
  117. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
  118. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/qt_utils/__init__.py +0 -0
  119. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/qt_utils/error_popups.py +0 -0
  120. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/qt_utils/settings_dialog.py +0 -0
  121. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/qt_utils/toolbar.py +0 -0
  122. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/__init__.py +0 -0
  123. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/bec_connector.py +0 -0
  124. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/bec_designer.py +0 -0
  125. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/bec_table.py +0 -0
  126. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/bec_widget.py +0 -0
  127. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/colors.py +0 -0
  128. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/container_utils.py +0 -0
  129. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/crosshair.py +0 -0
  130. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/entry_validator.py +0 -0
  131. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/generate_designer_plugin.py +0 -0
  132. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/layout_manager.py +0 -0
  133. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
  134. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/plugin_templates/register.template +0 -0
  135. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/plugin_utils.py +0 -0
  136. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/reference_utils.py +0 -0
  137. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/rpc_decorator.py +0 -0
  138. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/thread_checker.py +0 -0
  139. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/ui_loader.py +0 -0
  140. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/validator_delegate.py +0 -0
  141. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/widget_io.py +0 -0
  142. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/utils/yaml_dialog.py +0 -0
  143. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/__init__.py +0 -0
  144. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/base_classes/__init__.py +0 -0
  145. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/base_classes/device_input_base.py +0 -0
  146. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/bec_queue/__init__.py +0 -0
  147. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/bec_queue/bec_queue.py +0 -0
  148. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/bec_queue/bec_queue.pyproject +0 -0
  149. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/bec_queue/bec_queue_plugin.py +0 -0
  150. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/bec_queue/register_bec_queue.py +0 -0
  151. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/bec_status_box/__init__.py +0 -0
  152. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/bec_status_box/bec_status_box.py +0 -0
  153. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/bec_status_box/bec_status_box.pyproject +0 -0
  154. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py +0 -0
  155. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/bec_status_box/register_bec_status_box.py +0 -0
  156. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/bec_status_box/status_item.py +0 -0
  157. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/color_button/__init__.py +0 -0
  158. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/color_button/color_button.py +0 -0
  159. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/color_button/color_button.pyproject +0 -0
  160. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/color_button/color_button_plugin.py +0 -0
  161. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/color_button/register_color_button.py +0 -0
  162. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/colormap_selector/__init__.py +0 -0
  163. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/colormap_selector/colormap_selector.py +0 -0
  164. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/colormap_selector/colormap_selector.pyproject +0 -0
  165. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py +0 -0
  166. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/colormap_selector/register_colormap_selector.py +0 -0
  167. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/console/console.py +0 -0
  168. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/device_combobox/__init__.py +0 -0
  169. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/device_combobox/device_combo_box.pyproject +0 -0
  170. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/device_combobox/device_combo_box_plugin.py +0 -0
  171. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/device_combobox/device_combobox.py +0 -0
  172. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/device_combobox/register_device_combo_box.py +0 -0
  173. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/device_line_edit/__init__.py +0 -0
  174. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/device_line_edit/device_line_edit.py +0 -0
  175. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/device_line_edit/device_line_edit.pyproject +0 -0
  176. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py +0 -0
  177. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/device_line_edit/register_device_line_edit.py +0 -0
  178. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/dock/__init__.py +0 -0
  179. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/dock/dock.py +0 -0
  180. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/dock/dock_area.py +0 -0
  181. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/dock/dock_area.pyproject +0 -0
  182. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/dock/dock_area_plugin.py +0 -0
  183. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/dock/register_dock_area.py +0 -0
  184. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/figure/__init__.py +0 -0
  185. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/figure/figure.py +0 -0
  186. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/figure/plots/__init__.py +0 -0
  187. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/figure/plots/axis_settings.py +0 -0
  188. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/figure/plots/axis_settings.ui +0 -0
  189. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/figure/plots/image/__init__.py +0 -0
  190. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/figure/plots/image/image.py +0 -0
  191. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/figure/plots/image/image_item.py +0 -0
  192. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/figure/plots/image/image_processor.py +0 -0
  193. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/figure/plots/motor_map/__init__.py +0 -0
  194. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/figure/plots/motor_map/motor_map.py +0 -0
  195. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/figure/plots/plot_base.py +0 -0
  196. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/figure/plots/waveform/__init__.py +0 -0
  197. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/figure/plots/waveform/waveform.py +0 -0
  198. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +0 -0
  199. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/image/__init__.py +0 -0
  200. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/image/bec_image_widget.pyproject +0 -0
  201. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/image/bec_image_widget_plugin.py +0 -0
  202. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/image/register_bec_image_widget.py +0 -0
  203. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/jupyter_console/__init__.py +0 -0
  204. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/motor_map/__init__.py +0 -0
  205. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/motor_map/bec_motor_map_widget.pyproject +0 -0
  206. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py +0 -0
  207. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/motor_map/motor_map_dialog/__init__.py +0 -0
  208. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py +0 -0
  209. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui +0 -0
  210. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/motor_map/motor_map_widget.py +0 -0
  211. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py +0 -0
  212. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/position_indicator/__init__.py +0 -0
  213. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/position_indicator/position_indicator.py +0 -0
  214. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/position_indicator/position_indicator.pyproject +0 -0
  215. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/position_indicator/position_indicator_plugin.py +0 -0
  216. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/position_indicator/register_position_indicator.py +0 -0
  217. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/positioner_box/__init__.py +0 -0
  218. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/positioner_box/positioner_box.py +0 -0
  219. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/positioner_box/positioner_box.pyproject +0 -0
  220. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/positioner_box/positioner_box.ui +0 -0
  221. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/positioner_box/positioner_box_plugin.py +0 -0
  222. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/positioner_box/positioner_control_line.py +0 -0
  223. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/positioner_box/positioner_control_line.pyproject +0 -0
  224. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/positioner_box/positioner_control_line.ui +0 -0
  225. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py +0 -0
  226. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/positioner_box/register_positioner_box.py +0 -0
  227. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/positioner_box/register_positioner_control_line.py +0 -0
  228. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/ring_progress_bar/__init__.py +0 -0
  229. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/ring_progress_bar/register_ring_progress_bar.py +0 -0
  230. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/ring_progress_bar/ring.py +0 -0
  231. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.py +0 -0
  232. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject +0 -0
  233. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
  234. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/scan_control/__init__.py +0 -0
  235. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/scan_control/register_scan_control.py +0 -0
  236. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/scan_control/scan_control.py +0 -0
  237. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/scan_control/scan_control.pyproject +0 -0
  238. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/scan_control/scan_control_plugin.py +0 -0
  239. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/scan_control/scan_group_box.py +0 -0
  240. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/spinner/__init__.py +0 -0
  241. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/spinner/register_spinner_widget.py +0 -0
  242. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/spinner/spinner.py +0 -0
  243. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/spinner/spinner_widget.pyproject +0 -0
  244. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/spinner/spinner_widget_plugin.py +0 -0
  245. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/stop_button/__init__.py +0 -0
  246. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/stop_button/register_stop_button.py +0 -0
  247. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/stop_button/stop_button.py +0 -0
  248. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/stop_button/stop_button.pyproject +0 -0
  249. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/stop_button/stop_button_plugin.py +0 -0
  250. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/text_box/__init__.py +0 -0
  251. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/text_box/register_text_box.py +0 -0
  252. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/text_box/text_box.py +0 -0
  253. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/text_box/text_box.pyproject +0 -0
  254. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/text_box/text_box_plugin.py +0 -0
  255. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/toggle/__init__.py +0 -0
  256. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/toggle/register_toggle_switch.py +0 -0
  257. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/toggle/toggle.py +0 -0
  258. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/toggle/toggle_switch.pyproject +0 -0
  259. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/toggle/toggle_switch_plugin.py +0 -0
  260. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/vscode/__init__.py +0 -0
  261. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/vscode/register_vs_code_editor.py +0 -0
  262. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/vscode/vs_code_editor.pyproject +0 -0
  263. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/vscode/vs_code_editor_plugin.py +0 -0
  264. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/vscode/vscode.py +0 -0
  265. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/waveform/__init__.py +0 -0
  266. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/waveform/bec_waveform_widget.pyproject +0 -0
  267. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py +0 -0
  268. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/waveform/register_bec_waveform_widget.py +0 -0
  269. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/waveform/waveform_popups/__init__.py +0 -0
  270. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/__init__.py +0 -0
  271. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.py +0 -0
  272. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.ui +0 -0
  273. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/__init__.py +0 -0
  274. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary.ui +0 -0
  275. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py +0 -0
  276. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/website/__init__.py +0 -0
  277. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/website/register_website_widget.py +0 -0
  278. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/website/website.py +0 -0
  279. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/website/website_widget.pyproject +0 -0
  280. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/bec_widgets/widgets/website/website_widget_plugin.py +0 -0
  281. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/Makefile +0 -0
  282. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/_static/custom.css +0 -0
  283. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/_templates/custom-class-template.rst +0 -0
  284. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/_templates/custom-module-template.rst +0 -0
  285. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/api_reference/api_reference.md +0 -0
  286. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/assets/apps_48dp.svg +0 -0
  287. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/assets/display_settings_48dp.svg +0 -0
  288. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/assets/index_api.svg +0 -0
  289. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/assets/index_contribute.svg +0 -0
  290. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/assets/index_getting_started.svg +0 -0
  291. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/assets/index_user_guide.svg +0 -0
  292. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/assets/rocket_launch_48dp.svg +0 -0
  293. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/conf.py +0 -0
  294. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/index.md +0 -0
  295. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/introduction/introduction.md +0 -0
  296. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/make.bat +0 -0
  297. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/requirements.txt +0 -0
  298. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/api_reference/api_reference.md +0 -0
  299. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/applications/applications.md +0 -0
  300. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/customisation.md +0 -0
  301. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/getting_started/BECDockArea.png +0 -0
  302. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/getting_started/auto_updates.md +0 -0
  303. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/getting_started/getting_started.md +0 -0
  304. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/getting_started/gui_complex_gui.gif +0 -0
  305. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/getting_started/installation.md +0 -0
  306. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/getting_started/quick_start.md +0 -0
  307. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/getting_started/video_tutorials.md +0 -0
  308. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/user.md +0 -0
  309. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/widgets/BECFigure.png +0 -0
  310. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/widgets/bec_figure.md +0 -0
  311. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/widgets/bec_figure_dap.gif +0 -0
  312. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/widgets/bec_status_box.gif +0 -0
  313. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/widgets/bec_status_box.md +0 -0
  314. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/widgets/buttons.md +0 -0
  315. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/widgets/image_plot.gif +0 -0
  316. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/widgets/motor.gif +0 -0
  317. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/widgets/progress_bar.gif +0 -0
  318. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/widgets/ring_progress_bar.md +0 -0
  319. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/widgets/scan_control.gif +0 -0
  320. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/widgets/scan_control.md +0 -0
  321. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/widgets/scatter_2D.gif +0 -0
  322. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/widgets/text_box.md +0 -0
  323. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/widgets/w1D.gif +0 -0
  324. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/widgets/website.md +0 -0
  325. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/docs/user/widgets/widgets.md +0 -0
  326. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/__init__.py +0 -0
  327. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/end-2-end/__init__.py +0 -0
  328. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/end-2-end/conftest.py +0 -0
  329. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/end-2-end/test_bec_figure_rpc_e2e.py +0 -0
  330. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/end-2-end/test_rpc_register_e2e.py +0 -0
  331. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/end-2-end/test_scan_control_e2e.py +0 -0
  332. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/references/SpinnerWidget/SpinnerWidget_darwin.png +0 -0
  333. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/references/SpinnerWidget/SpinnerWidget_linux.png +0 -0
  334. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/references/SpinnerWidget/SpinnerWidget_started_darwin.png +0 -0
  335. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/references/SpinnerWidget/SpinnerWidget_started_linux.png +0 -0
  336. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/__init__.py +0 -0
  337. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/client_mocks.py +0 -0
  338. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/conftest.py +0 -0
  339. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_bec_connector.py +0 -0
  340. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_bec_dispatcher.py +0 -0
  341. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_bec_dock.py +0 -0
  342. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_bec_figure.py +0 -0
  343. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_bec_image.py +0 -0
  344. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_bec_image_widget.py +0 -0
  345. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_bec_motor_map.py +0 -0
  346. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_bec_queue.py +0 -0
  347. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_bec_status_box.py +0 -0
  348. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_client_utils.py +0 -0
  349. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_color_map_selector.py +0 -0
  350. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_color_validation.py +0 -0
  351. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_configs/config_device.yaml +0 -0
  352. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_configs/config_device_no_entry.yaml +0 -0
  353. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_configs/config_scan.yaml +0 -0
  354. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_crosshair.py +0 -0
  355. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_device_input_base.py +0 -0
  356. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_device_input_widgets.py +0 -0
  357. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_error_utils.py +0 -0
  358. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_generate_cli_client.py +0 -0
  359. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_generate_plugin.py +0 -0
  360. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_motor_map_widget.py +0 -0
  361. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_msgs/__init__.py +0 -0
  362. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_msgs/available_scans_message.py +0 -0
  363. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_plot_base.py +0 -0
  364. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_plugin_utils.py +0 -0
  365. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_positioner_box.py +0 -0
  366. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_ring_progress_bar.py +0 -0
  367. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_rpc_register.py +0 -0
  368. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_rpc_server.py +0 -0
  369. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_rpc_widget_handler.py +0 -0
  370. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_scan_control.py +0 -0
  371. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_scan_control_group_box.py +0 -0
  372. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_setting_dialog.py +0 -0
  373. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_spinner.py +0 -0
  374. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_stop_button.py +0 -0
  375. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_text_box_widget.py +0 -0
  376. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_toggle.py +0 -0
  377. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_vscode_widget.py +0 -0
  378. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_waveform1d.py +0 -0
  379. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_waveform_widget.py +0 -0
  380. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_website_widget.py +0 -0
  381. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_widget_io.py +0 -0
  382. {bec_widgets-0.94.3 → bec_widgets-0.94.5}/tests/unit_tests/test_yaml_dialog.py +0 -0
@@ -1,5 +1,31 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.94.5 (2024-08-14)
4
+
5
+ ### Build
6
+
7
+ * build: increased min version of bec to 2.21.4
8
+
9
+ Since we now rely on reusing the BECClient singleton, we need the fix introduced with 2.21.4 in BEC. ([`4f96d0e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4f96d0e4a14edc4b2839c1dddeda384737dc7a8a))
10
+
11
+ ### Fix
12
+
13
+ * fix(rpc): use client singleton instead of dispatcher ([`ea9240d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ea9240d2f71931082f33fb6b68231469875c3d63))
14
+
15
+ * fix: removed qcoreapplication for polling events ([`4d02b42`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4d02b42f11e9882b843317255a4975565c8a536f))
16
+
17
+ ## v0.94.4 (2024-08-14)
18
+
19
+ ### Documentation
20
+
21
+ * docs: review developer section; add introduction ([`2af5c94`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/2af5c94913a3435c1839034df4f45f885b56d08b))
22
+
23
+ ### Fix
24
+
25
+ * fix: do not shutdown client in "close"
26
+
27
+ Terminating client connections has to be done at the application level ([`198c1d1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/198c1d1064cc2dae55de4b941929341faddacb28))
28
+
3
29
  ## v0.94.3 (2024-08-13)
4
30
 
5
31
  ### Fix
@@ -129,23 +155,3 @@ This reverts commit fd6ae91993a23a7b8dbb2cf3c4b7c3eda6d2b0f6 ([`5aad401`](https:
129
155
  * fix: fix missmatch of signal/slot in image and motormap ([`dcc5fd7`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/dcc5fd71ee9f51767a7b2b1ed6200e89d1ef754c))
130
156
 
131
157
  ## v0.92.3 (2024-07-28)
132
-
133
- ### Fix
134
-
135
- * fix(docs): moved to pyside6 ([`71873dd`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/71873ddf359516ded8f74f4d2f73df4156aa1368))
136
-
137
- ## v0.92.2 (2024-07-28)
138
-
139
- ### Fix
140
-
141
- * fix(widgets): fixed import for tictactoe example ([`995a795`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/995a795060bebe25c17108d80ae0fa30463f03b1))
142
-
143
- ## v0.92.1 (2024-07-28)
144
-
145
- ### Fix
146
-
147
- * fix: use SafeSlot instead of Slot ([`bc1e239`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/bc1e23944cc0e5a861e3d0b4dc5b4ac6292d5269))
148
-
149
- * fix: linting ([`a3fe205`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a3fe20500ae2ac03dcde07432f7e21ce5262ce46))
150
-
151
- * fix: always add a QApplication for tests ([`61a4e32`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/61a4e32deb337ed27f2f43358b88b7266413b58e))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.94.3
3
+ Version: 0.94.5
4
4
  Summary: BEC Widgets
5
5
  Project-URL: Bug Tracker, https://gitlab.psi.ch/bec/bec_widgets/issues
6
6
  Project-URL: Homepage, https://gitlab.psi.ch/bec/bec_widgets
@@ -9,8 +9,8 @@ Classifier: Development Status :: 3 - Alpha
9
9
  Classifier: Programming Language :: Python :: 3
10
10
  Classifier: Topic :: Scientific/Engineering
11
11
  Requires-Python: >=3.10
12
- Requires-Dist: bec-ipython-client~=2.16
13
- Requires-Dist: bec-lib~=2.16
12
+ Requires-Dist: bec-ipython-client>=2.21.4,~=2.21
13
+ Requires-Dist: bec-lib>=2.21.4,~=2.21
14
14
  Requires-Dist: bec-qthemes~=0.0
15
15
  Requires-Dist: black~=24.0
16
16
  Requires-Dist: isort>=5.13.2,~=5.13
@@ -1,5 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import threading
4
+ from queue import Queue
3
5
  from typing import TYPE_CHECKING
4
6
 
5
7
  from pydantic import BaseModel
@@ -25,6 +27,17 @@ class AutoUpdates:
25
27
 
26
28
  def __init__(self, gui: BECDockArea):
27
29
  self.gui = gui
30
+ self.msg_queue = Queue()
31
+ self.auto_update_thread = None
32
+ self._shutdown_sentinel = object()
33
+ self.start()
34
+
35
+ def start(self):
36
+ """
37
+ Start the auto update thread.
38
+ """
39
+ self.auto_update_thread = threading.Thread(target=self.process_queue)
40
+ self.auto_update_thread.start()
28
41
 
29
42
  def start_default_dock(self):
30
43
  """
@@ -79,6 +92,16 @@ class AutoUpdates:
79
92
  info = self.get_scan_info(msg)
80
93
  self.handler(info)
81
94
 
95
+ def process_queue(self):
96
+ """
97
+ Process the message queue.
98
+ """
99
+ while True:
100
+ msg = self.msg_queue.get()
101
+ if msg is self._shutdown_sentinel:
102
+ break
103
+ self.run(msg)
104
+
82
105
  @staticmethod
83
106
  def get_selected_device(monitored_devices, selected_device):
84
107
  """
@@ -151,3 +174,11 @@ class AutoUpdates:
151
174
  fig.clear_all()
152
175
  plt = fig.plot(x_name=dev_x, y_name=dev_y, label=f"Scan {info.scan_number} - {dev_y}")
153
176
  plt.set(title=f"Scan {info.scan_number}", x_label=dev_x, y_label=dev_y)
177
+
178
+ def shutdown(self):
179
+ """
180
+ Shutdown the auto update thread.
181
+ """
182
+ self.msg_queue.put(self._shutdown_sentinel)
183
+ if self.auto_update_thread:
184
+ self.auto_update_thread.join()
@@ -6,17 +6,16 @@ import json
6
6
  import os
7
7
  import select
8
8
  import subprocess
9
- import sys
10
9
  import threading
11
10
  import time
12
11
  import uuid
13
12
  from functools import wraps
14
13
  from typing import TYPE_CHECKING
15
14
 
15
+ from bec_lib.client import BECClient
16
16
  from bec_lib.endpoints import MessageEndpoints
17
17
  from bec_lib.logger import bec_logger
18
18
  from bec_lib.utils.import_utils import isinstance_based_on_class_name, lazy_import, lazy_import_from
19
- from qtpy.QtCore import QEventLoop, QSocketNotifier, QTimer
20
19
 
21
20
  import bec_widgets.cli.client as client
22
21
  from bec_widgets.cli.auto_updates import AutoUpdates
@@ -24,10 +23,6 @@ from bec_widgets.cli.auto_updates import AutoUpdates
24
23
  if TYPE_CHECKING:
25
24
  from bec_lib.device import DeviceBase
26
25
 
27
- from bec_widgets.cli.client import BECDockArea, BECFigure
28
-
29
- from bec_lib.serialization import MsgpackSerialization
30
-
31
26
  messages = lazy_import("bec_lib.messages")
32
27
  # from bec_lib.connector import MessageObject
33
28
  MessageObject = lazy_import_from("bec_lib.connector", ("MessageObject",))
@@ -184,7 +179,7 @@ class BECGuiClientMixin:
184
179
  if isinstance(msg, messages.ScanStatusMessage):
185
180
  if not self.gui_is_alive():
186
181
  return
187
- self.auto_updates.run(msg)
182
+ self.auto_updates.msg_queue.put(msg)
188
183
 
189
184
  def show(self) -> None:
190
185
  """
@@ -213,6 +208,8 @@ class BECGuiClientMixin:
213
208
  self._process_output_processing_thread.join()
214
209
  self._process.wait()
215
210
  self._process = None
211
+ if self.auto_updates is not None:
212
+ self.auto_updates.shutdown()
216
213
 
217
214
 
218
215
  class RPCResponseTimeoutError(Exception):
@@ -224,54 +221,14 @@ class RPCResponseTimeoutError(Exception):
224
221
  )
225
222
 
226
223
 
227
- class QtRedisMessageWaiter:
228
- def __init__(self, redis_connector, message_to_wait):
229
- self.ev_loop = QEventLoop()
230
- self.response = None
231
- self.connector = redis_connector
232
- self.message_to_wait = message_to_wait
233
- self.pubsub = redis_connector._redis_conn.pubsub()
234
- self.pubsub.subscribe(self.message_to_wait.endpoint)
235
- fd = self.pubsub.connection._sock.fileno()
236
- self.notifier = QSocketNotifier(fd, QSocketNotifier.Read)
237
- self.notifier.activated.connect(self._pubsub_readable)
238
-
239
- def _msg_received(self, msg_obj):
240
- self.response = msg_obj.value
241
- self.ev_loop.quit()
242
-
243
- def wait(self, timeout=1):
244
- timer = QTimer()
245
- timer.singleShot(timeout * 1000, self.ev_loop.quit)
246
- self.ev_loop.exec_()
247
- timer.stop()
248
- self.notifier.setEnabled(False)
249
- self.pubsub.close()
250
- return self.response
251
-
252
- def _pubsub_readable(self, fd):
253
- while True:
254
- msg = self.pubsub.get_message()
255
- if msg:
256
- if msg["type"] == "subscribe":
257
- # get_message buffers, so we may already have the answer
258
- # let's check...
259
- continue
260
- else:
261
- break
262
- else:
263
- return
264
- channel = msg["channel"].decode()
265
- msg = MessageObject(topic=channel, value=MsgpackSerialization.loads(msg["data"]))
266
- self.connector._execute_callback(self._msg_received, msg, {})
267
-
268
-
269
224
  class RPCBase:
270
225
  def __init__(self, gui_id: str = None, config: dict = None, parent=None) -> None:
271
- self._client = BECDispatcher().client
226
+ self._client = BECClient() # BECClient is a singleton; here, we simply get the instance
272
227
  self._config = config if config is not None else {}
273
228
  self._gui_id = gui_id if gui_id is not None else str(uuid.uuid4())
274
229
  self._parent = parent
230
+ self._msg_wait_event = threading.Event()
231
+ self._rpc_response = None
275
232
  super().__init__()
276
233
  # print(f"RPCBase: {self._gui_id}")
277
234
 
@@ -315,24 +272,39 @@ class RPCBase:
315
272
  # pylint: disable=protected-access
316
273
  receiver = self._root._gui_id
317
274
  if wait_for_rpc_response:
318
- redis_msg = QtRedisMessageWaiter(
319
- self._client.connector, MessageEndpoints.gui_instruction_response(request_id)
275
+ self._rpc_response = None
276
+ self._msg_wait_event.clear()
277
+ self._client.connector.register(
278
+ MessageEndpoints.gui_instruction_response(request_id),
279
+ cb=self._on_rpc_response,
280
+ parent=self,
320
281
  )
321
282
 
322
283
  self._client.connector.set_and_publish(MessageEndpoints.gui_instructions(receiver), rpc_msg)
323
284
 
324
285
  if wait_for_rpc_response:
325
- response = redis_msg.wait(timeout)
326
-
327
- if response is None:
328
- raise RPCResponseTimeoutError(request_id, timeout)
329
-
286
+ try:
287
+ finished = self._msg_wait_event.wait(10)
288
+ if not finished:
289
+ raise RPCResponseTimeoutError(request_id, timeout)
290
+ finally:
291
+ self._msg_wait_event.clear()
292
+ self._client.connector.unregister(
293
+ MessageEndpoints.gui_instruction_response(request_id), cb=self._on_rpc_response
294
+ )
330
295
  # get class name
331
- if not response.accepted:
332
- raise ValueError(response.message["error"])
333
- msg_result = response.message.get("result")
296
+ if not self._rpc_response.accepted:
297
+ raise ValueError(self._rpc_response.message["error"])
298
+ msg_result = self._rpc_response.message.get("result")
299
+ self._rpc_response = None
334
300
  return self._create_widget_from_msg_result(msg_result)
335
301
 
302
+ @staticmethod
303
+ def _on_rpc_response(msg: MessageObject, parent: RPCBase) -> None:
304
+ msg = msg.value
305
+ parent._msg_wait_event.set()
306
+ parent._rpc_response = msg
307
+
336
308
  def _create_widget_from_msg_result(self, msg_result):
337
309
  if msg_result is None:
338
310
  return None
@@ -0,0 +1,47 @@
1
+ from bec_lib.serialization import MsgpackSerialization
2
+ from bec_lib.utils import lazy_import_from
3
+ from qtpy.QtCore import QEventLoop, QSocketNotifier, QTimer
4
+
5
+ MessageObject = lazy_import_from("bec_lib.connector", ("MessageObject",))
6
+
7
+
8
+ class QtRedisMessageWaiter:
9
+ def __init__(self, redis_connector, message_to_wait):
10
+ self.ev_loop = QEventLoop()
11
+ self.response = None
12
+ self.connector = redis_connector
13
+ self.message_to_wait = message_to_wait
14
+ self.pubsub = redis_connector._redis_conn.pubsub()
15
+ self.pubsub.subscribe(self.message_to_wait.endpoint)
16
+ fd = self.pubsub.connection._sock.fileno()
17
+ self.notifier = QSocketNotifier(fd, QSocketNotifier.Read)
18
+ self.notifier.activated.connect(self._pubsub_readable)
19
+
20
+ def _msg_received(self, msg_obj):
21
+ self.response = msg_obj.value
22
+ self.ev_loop.quit()
23
+
24
+ def wait(self, timeout=1):
25
+ timer = QTimer()
26
+ timer.singleShot(timeout * 1000, self.ev_loop.quit)
27
+ self.ev_loop.exec_()
28
+ timer.stop()
29
+ self.notifier.setEnabled(False)
30
+ self.pubsub.close()
31
+ return self.response
32
+
33
+ def _pubsub_readable(self, fd):
34
+ while True:
35
+ msg = self.pubsub.get_message()
36
+ if msg:
37
+ if msg["type"] == "subscribe":
38
+ # get_message buffers, so we may already have the answer
39
+ # let's check...
40
+ continue
41
+ else:
42
+ break
43
+ else:
44
+ return
45
+ channel = msg["channel"].decode()
46
+ msg = MessageObject(topic=channel, value=MsgpackSerialization.loads(msg["data"]))
47
+ self.connector._execute_callback(self._msg_received, msg, {})
@@ -8,7 +8,7 @@ import redis
8
8
  from bec_lib.client import BECClient
9
9
  from bec_lib.redis_connector import MessageObject, RedisConnector
10
10
  from bec_lib.service_config import ServiceConfig
11
- from qtpy.QtCore import PYQT6, PYSIDE6, QCoreApplication, QObject
11
+ from qtpy.QtCore import QObject
12
12
  from qtpy.QtCore import Signal as pyqtSignal
13
13
 
14
14
  if TYPE_CHECKING:
@@ -75,7 +75,6 @@ class BECDispatcher:
75
75
 
76
76
  _instance = None
77
77
  _initialized = False
78
- qapp = None
79
78
 
80
79
  def __new__(cls, client=None, config: str = None, *args, **kwargs):
81
80
  if cls._instance is None:
@@ -87,9 +86,6 @@ class BECDispatcher:
87
86
  if self._initialized:
88
87
  return
89
88
 
90
- if not QCoreApplication.instance():
91
- BECDispatcher.qapp = QCoreApplication([])
92
-
93
89
  self._slots = collections.defaultdict(set)
94
90
  self.client = client
95
91
 
@@ -123,16 +119,6 @@ class BECDispatcher:
123
119
  cls._instance = None
124
120
  cls._initialized = False
125
121
 
126
- if not cls.qapp:
127
- return
128
-
129
- # shutdown QCoreApp if it exists
130
- if PYQT6:
131
- cls.qapp.exit()
132
- elif PYSIDE6:
133
- cls.qapp.shutdown()
134
- cls.qapp = None
135
-
136
122
  def connect_slot(
137
123
  self,
138
124
  slot: Callable,
@@ -457,7 +457,6 @@ class BECImageWidget(BECWidget, QWidget):
457
457
 
458
458
  def cleanup(self):
459
459
  self.fig.cleanup()
460
- self.client.shutdown()
461
460
  self.toolbar.close()
462
461
  self.toolbar.deleteLater()
463
462
  return super().cleanup()
@@ -63,8 +63,6 @@ class BECJupyterConsole(RichJupyterWidget): # pragma: no cover:
63
63
 
64
64
  def closeEvent(self, event):
65
65
  self.shutdown_kernel()
66
- if self.client:
67
- self.client.shutdown()
68
66
 
69
67
 
70
68
  if __name__ == "__main__": # pragma: no cover
@@ -561,7 +561,6 @@ class BECWaveformWidget(BECWidget, QWidget):
561
561
 
562
562
  def cleanup(self):
563
563
  self.fig.cleanup()
564
- self.client.shutdown()
565
564
  return super().cleanup()
566
565
 
567
566
 
@@ -0,0 +1,50 @@
1
+ (developer)=
2
+ # Developer
3
+
4
+ Welcome to the BEC Widgets developer guide! BEC Widgets is a framework for building graphical user interfaces (GUIs) for [BEC](https://bec.readthedocs.io/en/latest/), a Python package for beamline experiment control.
5
+
6
+ This guide targets readers who want to develop new widgets or extend existing ones. If your goal is to use BEC Widgets to build GUIs for your experiments, please refer to the [user guide](#user).
7
+
8
+ ```{toctree}
9
+ ---
10
+ maxdepth: 2
11
+ hidden: true
12
+ ---
13
+
14
+ introduction/introduction.md
15
+ widget_development/widget_development.md
16
+ api_reference/api_reference.md
17
+ ```
18
+
19
+
20
+ ***
21
+
22
+ ````{grid} 2
23
+ :gutter: 5
24
+
25
+ ```{grid-item-card}
26
+ :link: developer.introduction
27
+ :link-type: ref
28
+ :img-top: /assets/rocket_launch_48dp.svg
29
+ :text-align: center
30
+
31
+ ## Introduction
32
+
33
+ An introduction into the single-resposibility principle and the modular design of BEC Widgets.
34
+ ```
35
+
36
+ ```{grid-item-card}
37
+ :link: developer.widget_development
38
+ :link-type: ref
39
+ :img-top: /assets/apps_48dp.svg
40
+ :text-align: center
41
+
42
+ ## Widget Development
43
+
44
+ Learn how to develop a new modular widget for BEC Widgets.
45
+ ```
46
+
47
+ ````{grid} 2
48
+
49
+
50
+
@@ -0,0 +1,14 @@
1
+ (developer.concepts)=
2
+ # Concepts
3
+ This section provides an overview of the core concepts of BEC Widgets, which are based on the single-responsibility principle and modular design.
4
+
5
+ ## Moduler Design
6
+ We develop widgets with the single-responsibility principle in mind, meaning each widget is designed for a specific task. Our goal is to keep widgets simple, using them primarily for visualization or to initiate actions within BEC. Following these ideas, widgets should be designed to be reusable in various applications, making them versatile building blocks for larger GUIs.
7
+
8
+ We offer up to three different options for composing larger GUIs from these modular widgets: BECDesigner, DockArea widget, or scripting from the command line interface. More information about these options can be found in the user sections on [applications](user.applications).
9
+
10
+ ## Client-Server Architecture
11
+
12
+ BEC Widgets is built on top of the [BEC](https://bec.readthedocs.io/en/latest/) package, which provides the backend for beamline experiment control. BEC Widgets is a client of BEC, meaning it can interact with the backend through a client-server architecture. To make full usage of the available features of BEC, we recommend to check the documentation about [data access](https://bec.readthedocs.io/en/latest/developer/data_access/data_access.html) in which the messaging and event system of BEC is described.
13
+ In the context of BEC Widgets, the [`BECDispatcher`](/api_reference/_autosummary/bec_widgets.utils.bec_dispatcher.BECDispatcher) connects to this messaging and event system, allowing you to link your Qt [`Slots`](https://www.pythonguis.com/tutorials/pyside6-signals-slots-events/) to messages and event received from BEC.
14
+
@@ -1,5 +1,5 @@
1
- (developer.development)=
2
- # Development
1
+ (developer.contributing)=
2
+ # Contributing
3
3
 
4
4
  If you like to contribute to the development of BEC Widgets, you can follow the steps below to set up your development environment.
5
5
  BEC Widgets works in conjunction with [BEC](https://bec.readthedocs.io/en/latest/).
@@ -10,6 +10,7 @@ If you already have a BEC environment set up, you can install BEC Widgets in edi
10
10
  **Prerequisites**
11
11
  1. **Python Version:** BEC Widgets requires Python version 3.10 or higher. Verify your Python version to ensure compatibility.
12
12
  2. **BEC Installation:** BEC Widgets works in conjunction with BEC. While BEC is a dependency and will be installed automatically, you can find more information about BEC and its installation process in the [BEC documentation](https://beamline-experiment-control.readthedocs.io/en/latest/).
13
+ 3. **Qt Distributions:** BEC Widgets supports [PySide6](https://doc.qt.io/qtforpython-6/quickstart.html) and [PyQt6](https://www.riverbankcomputing.com/static/Docs/PyQt6/introduction.html). We use [qtpy](https://pypi.org/project/QtPy/) to abstract the underlying QT distribution.
13
14
 
14
15
  **Clone the Repository**:
15
16
  ```bash
@@ -20,8 +21,8 @@ cd bec_widgets
20
21
 
21
22
  Please install the package in editable mode into your BEC Python environemnt.
22
23
  ```bash
23
- pip install -e '.[dev,pyqt6]'
24
+ pip install -e '.[dev,pyside6]'
24
25
  ```
25
- This installs the package together with [PyQT6](https://www.riverbankcomputing.com/static/Docs/PyQt6/introduction.html).
26
+ This installs the package together with [PySide6](https://doc.qt.io/qtforpython-6/quickstart.html).
26
27
 
27
28
 
@@ -0,0 +1,15 @@
1
+ (developer.introduction)=
2
+ # Introduction
3
+ BEC Widgets is a framework providing modular components that can be integrated into various larger GUI applications. Each widget serves a specific purpose adhering to the single-responsibility principle as detailed in our [concepts section](developer.concepts), and offers a straightforward, user-friendly interface.
4
+ These widgets provide data visualisation tools and experimental control interfaces by triggering actions within BEC.
5
+ If you're interested in contributing to BEC Widgets, please refer to our [contributing guide](developer.contributing), which provides instructions for setting up your development environment and creating your own widgets.
6
+
7
+ ```{toctree}
8
+ ---
9
+ maxdepth: 2
10
+ hidden: false
11
+ ---
12
+
13
+ concepts/
14
+ contributing/
15
+ ```
@@ -1,5 +1,5 @@
1
- (developer.widgets)=
2
- # Widgets
1
+ (developer.widget_development)=
2
+ # Widget development
3
3
  This section provides an introduction to the building blocks of BEC Widgets: widgets. Widgets are the basic components of the graphical user interface (GUI) and are used to create larger applications. We will cover key topics such as how to develop new widgets or how to customise existing widgets. For details on the already available widgets and their usage, please refer to user section about [widgets](#user.widgets)
4
4
 
5
5
  ```{toctree}
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "0.94.3"
7
+ version = "0.94.5"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [
@@ -13,16 +13,16 @@ classifiers = [
13
13
  "Topic :: Scientific/Engineering",
14
14
  ]
15
15
  dependencies = [
16
- "bec_ipython_client~=2.16", # needed for jupyter console
17
- "bec_lib~=2.16",
18
- "black~=24.0", # needed for bw-generate-cli
19
- "isort~=5.13, >=5.13.2", # needed for bw-generate-cli
16
+ "bec_ipython_client~=2.21, >=2.21.4", # needed for jupyter console
17
+ "bec_lib~=2.21, >=2.21.4",
18
+ "black~=24.0", # needed for bw-generate-cli
19
+ "isort~=5.13, >=5.13.2", # needed for bw-generate-cli
20
20
  "pydantic~=2.0",
21
21
  "pyqtgraph~=0.13",
22
22
  "bec_qthemes~=0.0",
23
- "qtconsole~=5.5, >=5.5.1", # needed for jupyter console
23
+ "qtconsole~=5.5, >=5.5.1", # needed for jupyter console
24
24
  "qtpy~=2.4",
25
- "pyte", # needed for vt100 console
25
+ "pyte", # needed for vt100 console
26
26
  ]
27
27
 
28
28
 
@@ -295,3 +295,4 @@ def test_auto_update(bec_client_lib, rpc_server_dock, qtbot):
295
295
  plt_data[f"Scan {status.scan.scan_number} - {dock.selected_device}"]["y"]
296
296
  == last_scan_data["samy"]["samy"].val
297
297
  )
298
+ dock.auto_updates.shutdown()
@@ -1,46 +0,0 @@
1
- (developer)=
2
- # Developer
3
-
4
- Welcome to the BEC Widgets developer guide! This section is intended for developers who want to contribute to the development of BEC Widgets.
5
-
6
- ```{toctree}
7
- ---
8
- maxdepth: 2
9
- hidden: true
10
- ---
11
-
12
- getting_started/getting_started.md
13
- widgets/widgets.md
14
- api_reference/api_reference.md
15
- ```
16
-
17
-
18
- ***
19
-
20
- ````{grid} 2
21
- :gutter: 5
22
-
23
- ```{grid-item-card}
24
- :link: developer.getting_started
25
- :link-type: ref
26
- :img-top: /assets/rocket_launch_48dp.svg
27
- :text-align: center
28
-
29
- ## Getting Started
30
-
31
- Learn how to install BEC Widgets and get started with the framework.
32
- ```
33
-
34
- ```{grid-item-card}
35
- :link: developer.widgets
36
- :link-type: ref
37
- :img-top: /assets/apps_48dp.svg
38
- :text-align: center
39
-
40
- ## Widgets
41
-
42
- Learn about the building blocks of larger applications: widgets.
43
- ```
44
- ````
45
-
46
-
@@ -1,12 +0,0 @@
1
- (developer.getting_started)=
2
- # Getting Started
3
- This section provides valuable information for developers who want to contribute to the development of BEC Widgets. The guide will help you set up the development environment, understand the modular development concept of BEC Widgets, and contribute to the project.
4
-
5
- ```{toctree}
6
- ---
7
- maxdepth: 2
8
- hidden: false
9
- ---
10
-
11
- development/
12
- ```
File without changes
File without changes
File without changes
File without changes