bec-widgets 0.94.0__tar.gz → 0.94.4__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 (381) hide show
  1. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/CHANGELOG.md +36 -30
  2. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/PKG-INFO +1 -1
  3. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +1 -0
  4. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/bec_dispatcher.py +3 -3
  5. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/image/image.py +6 -5
  6. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/waveform/waveform.py +7 -5
  7. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/image/image_widget.py +0 -1
  8. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/jupyter_console/jupyter_console.py +0 -2
  9. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.py +17 -15
  10. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/waveform_widget.py +0 -1
  11. bec_widgets-0.94.4/docs/developer/developer.md +50 -0
  12. bec_widgets-0.94.4/docs/developer/introduction/concepts.md +14 -0
  13. bec_widgets-0.94.0/docs/developer/getting_started/development.md → bec_widgets-0.94.4/docs/developer/introduction/contributing.md +5 -4
  14. bec_widgets-0.94.4/docs/developer/introduction/introduction.md +15 -0
  15. bec_widgets-0.94.0/docs/developer/widgets/widgets.md → bec_widgets-0.94.4/docs/developer/widget_development/widget_development.md +2 -2
  16. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/pyproject.toml +1 -1
  17. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_dispatcher.py +2 -0
  18. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_waveform_widget.py +199 -0
  19. bec_widgets-0.94.0/docs/developer/developer.md +0 -46
  20. bec_widgets-0.94.0/docs/developer/getting_started/getting_started.md +0 -12
  21. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/.git_hooks/pre-commit +0 -0
  22. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/.gitignore +0 -0
  23. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/.gitlab/issue_templates/bug_report_template.md +0 -0
  24. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/.gitlab/issue_templates/documentation_update_template.md +0 -0
  25. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/.gitlab/issue_templates/feature_request_template.md +0 -0
  26. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/.gitlab/merge_request_templates/default.md +0 -0
  27. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/.gitlab-ci.yml +0 -0
  28. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/.pylintrc +0 -0
  29. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/.readthedocs.yaml +0 -0
  30. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/LICENSE +0 -0
  31. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/README.md +0 -0
  32. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/__init__.py +0 -0
  33. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/app_icons/BEC-Dark.png +0 -0
  34. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
  35. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/app_icons/terminal_icon.png +0 -0
  36. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/code.png +0 -0
  37. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/color_button.png +0 -0
  38. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/colormap_selector.png +0 -0
  39. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/device_combo_box.png +0 -0
  40. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/device_line_edit.png +0 -0
  41. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/dock_area.png +0 -0
  42. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/games.png +0 -0
  43. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/image.png +0 -0
  44. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/motor_map.png +0 -0
  45. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/position_indicator.png +0 -0
  46. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/positioner_box.png +0 -0
  47. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/queue.png +0 -0
  48. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/ring_progress.png +0 -0
  49. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/scan_control.png +0 -0
  50. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/spinner.png +0 -0
  51. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/status.png +0 -0
  52. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/stop.png +0 -0
  53. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/text.png +0 -0
  54. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/toggle.png +0 -0
  55. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/waveform.png +0 -0
  56. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/web.png +0 -0
  57. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/status_icons/error.svg +0 -0
  58. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/status_icons/not_connected.svg +0 -0
  59. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/status_icons/refresh.svg +0 -0
  60. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/status_icons/running.svg +0 -0
  61. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/status_icons/warning.svg +0 -0
  62. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/add.svg +0 -0
  63. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/attach_all.svg +0 -0
  64. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/auto_range.svg +0 -0
  65. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/compare.svg +0 -0
  66. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/connection.svg +0 -0
  67. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/device_line_edit.svg +0 -0
  68. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/drag_pan_mode.svg +0 -0
  69. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/export.svg +0 -0
  70. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/fft.svg +0 -0
  71. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/fitting_parameters.svg +0 -0
  72. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/history.svg +0 -0
  73. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/image.svg +0 -0
  74. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/image_autorange.svg +0 -0
  75. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/import.svg +0 -0
  76. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/line_axis.svg +0 -0
  77. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/line_curve.svg +0 -0
  78. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/lock_aspect_ratio.svg +0 -0
  79. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/log_scale.png +0 -0
  80. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/motor_map.svg +0 -0
  81. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/photo_library.svg +0 -0
  82. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/positioner_box.svg +0 -0
  83. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/progress.svg +0 -0
  84. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/queue.svg +0 -0
  85. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/rectangle_mode.svg +0 -0
  86. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/remove.svg +0 -0
  87. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/reset_settings.svg +0 -0
  88. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/restore_state.svg +0 -0
  89. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/ring_progress.svg +0 -0
  90. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/rotate_left.svg +0 -0
  91. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/rotate_right.svg +0 -0
  92. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/save.svg +0 -0
  93. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/save_state.svg +0 -0
  94. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/scan_control.svg +0 -0
  95. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/settings.svg +0 -0
  96. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/status.svg +0 -0
  97. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/terminal.svg +0 -0
  98. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/transform.svg +0 -0
  99. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/waveform.svg +0 -0
  100. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/cli/__init__.py +0 -0
  101. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/cli/auto_updates.py +0 -0
  102. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/cli/client.py +0 -0
  103. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/cli/client_utils.py +0 -0
  104. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/cli/generate_cli.py +0 -0
  105. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/cli/rpc_register.py +0 -0
  106. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/cli/rpc_wigdet_handler.py +0 -0
  107. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/cli/server.py +0 -0
  108. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/examples/__init__.py +0 -0
  109. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/examples/general_app/__init__.py +0 -0
  110. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/examples/general_app/general_app.py +0 -0
  111. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/examples/general_app/general_app.ui +0 -0
  112. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/examples/general_app/web_links.py +0 -0
  113. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  114. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
  115. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
  116. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
  117. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
  118. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
  119. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
  120. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
  121. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/qt_utils/__init__.py +0 -0
  122. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/qt_utils/error_popups.py +0 -0
  123. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/qt_utils/settings_dialog.py +0 -0
  124. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/qt_utils/toolbar.py +0 -0
  125. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/__init__.py +0 -0
  126. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/bec_connector.py +0 -0
  127. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/bec_designer.py +0 -0
  128. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/bec_table.py +0 -0
  129. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/bec_widget.py +0 -0
  130. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/colors.py +0 -0
  131. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/container_utils.py +0 -0
  132. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/crosshair.py +0 -0
  133. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/entry_validator.py +0 -0
  134. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/generate_designer_plugin.py +0 -0
  135. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/layout_manager.py +0 -0
  136. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
  137. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/plugin_templates/register.template +0 -0
  138. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/plugin_utils.py +0 -0
  139. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/reference_utils.py +0 -0
  140. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/rpc_decorator.py +0 -0
  141. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/thread_checker.py +0 -0
  142. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/ui_loader.py +0 -0
  143. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/validator_delegate.py +0 -0
  144. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/widget_io.py +0 -0
  145. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/utils/yaml_dialog.py +0 -0
  146. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/__init__.py +0 -0
  147. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/base_classes/__init__.py +0 -0
  148. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/base_classes/device_input_base.py +0 -0
  149. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_queue/__init__.py +0 -0
  150. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_queue/bec_queue.py +0 -0
  151. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_queue/bec_queue.pyproject +0 -0
  152. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_queue/bec_queue_plugin.py +0 -0
  153. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_queue/register_bec_queue.py +0 -0
  154. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_status_box/__init__.py +0 -0
  155. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_status_box/bec_status_box.py +0 -0
  156. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_status_box/bec_status_box.pyproject +0 -0
  157. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py +0 -0
  158. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_status_box/register_bec_status_box.py +0 -0
  159. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_status_box/status_item.py +0 -0
  160. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/color_button/__init__.py +0 -0
  161. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/color_button/color_button.py +0 -0
  162. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/color_button/color_button.pyproject +0 -0
  163. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/color_button/color_button_plugin.py +0 -0
  164. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/color_button/register_color_button.py +0 -0
  165. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/colormap_selector/__init__.py +0 -0
  166. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/colormap_selector/colormap_selector.py +0 -0
  167. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/colormap_selector/colormap_selector.pyproject +0 -0
  168. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py +0 -0
  169. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/colormap_selector/register_colormap_selector.py +0 -0
  170. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/console/console.py +0 -0
  171. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/device_combobox/__init__.py +0 -0
  172. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/device_combobox/device_combo_box.pyproject +0 -0
  173. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/device_combobox/device_combo_box_plugin.py +0 -0
  174. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/device_combobox/device_combobox.py +0 -0
  175. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/device_combobox/register_device_combo_box.py +0 -0
  176. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/device_line_edit/__init__.py +0 -0
  177. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/device_line_edit/device_line_edit.py +0 -0
  178. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/device_line_edit/device_line_edit.pyproject +0 -0
  179. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py +0 -0
  180. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/device_line_edit/register_device_line_edit.py +0 -0
  181. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/dock/__init__.py +0 -0
  182. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/dock/dock.py +0 -0
  183. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/dock/dock_area.py +0 -0
  184. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/dock/dock_area.pyproject +0 -0
  185. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/dock/dock_area_plugin.py +0 -0
  186. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/dock/register_dock_area.py +0 -0
  187. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/__init__.py +0 -0
  188. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/figure.py +0 -0
  189. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/__init__.py +0 -0
  190. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/axis_settings.py +0 -0
  191. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/axis_settings.ui +0 -0
  192. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/image/__init__.py +0 -0
  193. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/image/image_item.py +0 -0
  194. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/image/image_processor.py +0 -0
  195. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/motor_map/__init__.py +0 -0
  196. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/motor_map/motor_map.py +0 -0
  197. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/plot_base.py +0 -0
  198. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/waveform/__init__.py +0 -0
  199. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +0 -0
  200. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/image/__init__.py +0 -0
  201. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/image/bec_image_widget.pyproject +0 -0
  202. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/image/bec_image_widget_plugin.py +0 -0
  203. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/image/register_bec_image_widget.py +0 -0
  204. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/jupyter_console/__init__.py +0 -0
  205. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/motor_map/__init__.py +0 -0
  206. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/motor_map/bec_motor_map_widget.pyproject +0 -0
  207. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py +0 -0
  208. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/motor_map/motor_map_dialog/__init__.py +0 -0
  209. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py +0 -0
  210. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui +0 -0
  211. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/motor_map/motor_map_widget.py +0 -0
  212. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py +0 -0
  213. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/position_indicator/__init__.py +0 -0
  214. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/position_indicator/position_indicator.py +0 -0
  215. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/position_indicator/position_indicator.pyproject +0 -0
  216. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/position_indicator/position_indicator_plugin.py +0 -0
  217. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/position_indicator/register_position_indicator.py +0 -0
  218. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/positioner_box/__init__.py +0 -0
  219. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/positioner_box/positioner_box.py +0 -0
  220. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/positioner_box/positioner_box.pyproject +0 -0
  221. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/positioner_box/positioner_box.ui +0 -0
  222. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/positioner_box/positioner_box_plugin.py +0 -0
  223. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/positioner_box/positioner_control_line.py +0 -0
  224. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/positioner_box/positioner_control_line.pyproject +0 -0
  225. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/positioner_box/positioner_control_line.ui +0 -0
  226. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py +0 -0
  227. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/positioner_box/register_positioner_box.py +0 -0
  228. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/positioner_box/register_positioner_control_line.py +0 -0
  229. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/ring_progress_bar/__init__.py +0 -0
  230. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/ring_progress_bar/register_ring_progress_bar.py +0 -0
  231. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/ring_progress_bar/ring.py +0 -0
  232. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.py +0 -0
  233. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject +0 -0
  234. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
  235. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/scan_control/__init__.py +0 -0
  236. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/scan_control/register_scan_control.py +0 -0
  237. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/scan_control/scan_control.py +0 -0
  238. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/scan_control/scan_control.pyproject +0 -0
  239. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/scan_control/scan_control_plugin.py +0 -0
  240. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/scan_control/scan_group_box.py +0 -0
  241. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/spinner/__init__.py +0 -0
  242. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/spinner/register_spinner_widget.py +0 -0
  243. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/spinner/spinner.py +0 -0
  244. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/spinner/spinner_widget.pyproject +0 -0
  245. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/spinner/spinner_widget_plugin.py +0 -0
  246. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/stop_button/__init__.py +0 -0
  247. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/stop_button/register_stop_button.py +0 -0
  248. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/stop_button/stop_button.py +0 -0
  249. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/stop_button/stop_button.pyproject +0 -0
  250. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/stop_button/stop_button_plugin.py +0 -0
  251. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/text_box/__init__.py +0 -0
  252. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/text_box/register_text_box.py +0 -0
  253. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/text_box/text_box.py +0 -0
  254. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/text_box/text_box.pyproject +0 -0
  255. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/text_box/text_box_plugin.py +0 -0
  256. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/toggle/__init__.py +0 -0
  257. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/toggle/register_toggle_switch.py +0 -0
  258. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/toggle/toggle.py +0 -0
  259. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/toggle/toggle_switch.pyproject +0 -0
  260. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/toggle/toggle_switch_plugin.py +0 -0
  261. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/vscode/__init__.py +0 -0
  262. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/vscode/register_vs_code_editor.py +0 -0
  263. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/vscode/vs_code_editor.pyproject +0 -0
  264. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/vscode/vs_code_editor_plugin.py +0 -0
  265. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/vscode/vscode.py +0 -0
  266. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/__init__.py +0 -0
  267. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/bec_waveform_widget.pyproject +0 -0
  268. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py +0 -0
  269. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/register_bec_waveform_widget.py +0 -0
  270. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/waveform_popups/__init__.py +0 -0
  271. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/__init__.py +0 -0
  272. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.ui +0 -0
  273. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/__init__.py +0 -0
  274. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary.ui +0 -0
  275. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py +0 -0
  276. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/website/__init__.py +0 -0
  277. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/website/register_website_widget.py +0 -0
  278. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/website/website.py +0 -0
  279. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/website/website_widget.pyproject +0 -0
  280. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/bec_widgets/widgets/website/website_widget_plugin.py +0 -0
  281. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/Makefile +0 -0
  282. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/_static/custom.css +0 -0
  283. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/_templates/custom-class-template.rst +0 -0
  284. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/_templates/custom-module-template.rst +0 -0
  285. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/api_reference/api_reference.md +0 -0
  286. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/assets/apps_48dp.svg +0 -0
  287. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/assets/display_settings_48dp.svg +0 -0
  288. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/assets/index_api.svg +0 -0
  289. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/assets/index_contribute.svg +0 -0
  290. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/assets/index_getting_started.svg +0 -0
  291. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/assets/index_user_guide.svg +0 -0
  292. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/assets/rocket_launch_48dp.svg +0 -0
  293. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/conf.py +0 -0
  294. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/index.md +0 -0
  295. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/introduction/introduction.md +0 -0
  296. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/make.bat +0 -0
  297. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/requirements.txt +0 -0
  298. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/api_reference/api_reference.md +0 -0
  299. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/applications/applications.md +0 -0
  300. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/customisation.md +0 -0
  301. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/getting_started/BECDockArea.png +0 -0
  302. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/getting_started/auto_updates.md +0 -0
  303. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/getting_started/getting_started.md +0 -0
  304. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/getting_started/gui_complex_gui.gif +0 -0
  305. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/getting_started/installation.md +0 -0
  306. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/getting_started/quick_start.md +0 -0
  307. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/getting_started/video_tutorials.md +0 -0
  308. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/user.md +0 -0
  309. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/widgets/BECFigure.png +0 -0
  310. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/widgets/bec_figure.md +0 -0
  311. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/widgets/bec_figure_dap.gif +0 -0
  312. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/widgets/bec_status_box.gif +0 -0
  313. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/widgets/bec_status_box.md +0 -0
  314. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/widgets/buttons.md +0 -0
  315. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/widgets/image_plot.gif +0 -0
  316. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/widgets/motor.gif +0 -0
  317. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/widgets/progress_bar.gif +0 -0
  318. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/widgets/ring_progress_bar.md +0 -0
  319. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/widgets/scan_control.gif +0 -0
  320. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/widgets/scan_control.md +0 -0
  321. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/widgets/scatter_2D.gif +0 -0
  322. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/widgets/text_box.md +0 -0
  323. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/widgets/w1D.gif +0 -0
  324. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/widgets/website.md +0 -0
  325. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/docs/user/widgets/widgets.md +0 -0
  326. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/__init__.py +0 -0
  327. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/end-2-end/__init__.py +0 -0
  328. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/end-2-end/conftest.py +0 -0
  329. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/end-2-end/test_bec_dock_rpc_e2e.py +0 -0
  330. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/end-2-end/test_bec_figure_rpc_e2e.py +0 -0
  331. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/end-2-end/test_rpc_register_e2e.py +0 -0
  332. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/end-2-end/test_scan_control_e2e.py +0 -0
  333. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/references/SpinnerWidget/SpinnerWidget_darwin.png +0 -0
  334. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/references/SpinnerWidget/SpinnerWidget_linux.png +0 -0
  335. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/references/SpinnerWidget/SpinnerWidget_started_darwin.png +0 -0
  336. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/references/SpinnerWidget/SpinnerWidget_started_linux.png +0 -0
  337. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/__init__.py +0 -0
  338. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/client_mocks.py +0 -0
  339. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/conftest.py +0 -0
  340. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_connector.py +0 -0
  341. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_dock.py +0 -0
  342. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_figure.py +0 -0
  343. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_image.py +0 -0
  344. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_image_widget.py +0 -0
  345. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_motor_map.py +0 -0
  346. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_queue.py +0 -0
  347. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_status_box.py +0 -0
  348. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_client_utils.py +0 -0
  349. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_color_map_selector.py +0 -0
  350. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_color_validation.py +0 -0
  351. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_configs/config_device.yaml +0 -0
  352. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_configs/config_device_no_entry.yaml +0 -0
  353. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_configs/config_scan.yaml +0 -0
  354. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_crosshair.py +0 -0
  355. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_device_input_base.py +0 -0
  356. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_device_input_widgets.py +0 -0
  357. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_error_utils.py +0 -0
  358. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_generate_cli_client.py +0 -0
  359. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_generate_plugin.py +0 -0
  360. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_motor_map_widget.py +0 -0
  361. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_msgs/__init__.py +0 -0
  362. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_msgs/available_scans_message.py +0 -0
  363. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_plot_base.py +0 -0
  364. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_plugin_utils.py +0 -0
  365. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_positioner_box.py +0 -0
  366. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_ring_progress_bar.py +0 -0
  367. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_rpc_register.py +0 -0
  368. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_rpc_server.py +0 -0
  369. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_rpc_widget_handler.py +0 -0
  370. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_scan_control.py +0 -0
  371. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_scan_control_group_box.py +0 -0
  372. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_setting_dialog.py +0 -0
  373. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_spinner.py +0 -0
  374. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_stop_button.py +0 -0
  375. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_text_box_widget.py +0 -0
  376. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_toggle.py +0 -0
  377. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_vscode_widget.py +0 -0
  378. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_waveform1d.py +0 -0
  379. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_website_widget.py +0 -0
  380. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_widget_io.py +0 -0
  381. {bec_widgets-0.94.0 → bec_widgets-0.94.4}/tests/unit_tests/test_yaml_dialog.py +0 -0
@@ -1,5 +1,41 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.94.4 (2024-08-14)
4
+
5
+ ### Documentation
6
+
7
+ * docs: review developer section; add introduction ([`2af5c94`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/2af5c94913a3435c1839034df4f45f885b56d08b))
8
+
9
+ ### Fix
10
+
11
+ * fix: do not shutdown client in "close"
12
+
13
+ Terminating client connections has to be done at the application level ([`198c1d1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/198c1d1064cc2dae55de4b941929341faddacb28))
14
+
15
+ ## v0.94.3 (2024-08-13)
16
+
17
+ ### Fix
18
+
19
+ * fix(curve_dialog): async curves are shown in curve dialog after addition. ([`7aeb2b5`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/7aeb2b5c26c7c2851e8d663d32521da8daec95ef))
20
+
21
+ * fix(waveform): async device entry is correctly passed, updated and with new scan the previous data are cleared ([`d56ea95`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/d56ea95ef97bfdd0bc3eeddc4505d20b38e28559))
22
+
23
+ ### Test
24
+
25
+ * test(waveform_widget): added tests for axis setting and curve dialog ([`f285b35`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f285b35b491660549e74349318119f7c2c44f619))
26
+
27
+ ## v0.94.2 (2024-08-13)
28
+
29
+ ### Fix
30
+
31
+ * fix(image): image is single image mode do not raise popup error when connected twice with the same monitor ([`98b79aa`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/98b79aac7b47b73137f4d582f7f1d552b1d95366))
32
+
33
+ ## v0.94.1 (2024-08-12)
34
+
35
+ ### Fix
36
+
37
+ * fix: issue #292, wrong key was used to clean _slots internal dictionary ([`93d3977`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/93d397759c756397604ebff5e24f3a580be8620d))
38
+
3
39
  ## v0.94.0 (2024-08-08)
4
40
 
5
41
  ### Feature
@@ -117,33 +153,3 @@ This reverts commit fd6ae91993a23a7b8dbb2cf3c4b7c3eda6d2b0f6 ([`5aad401`](https:
117
153
  * fix(widgets): fixed import for tictactoe example ([`995a795`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/995a795060bebe25c17108d80ae0fa30463f03b1))
118
154
 
119
155
  ## v0.92.1 (2024-07-28)
120
-
121
- ### Build
122
-
123
- * build(ci): install ophyd_devices in editable mode for pipelines ([`06205e0`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/06205e07903d93accf40abab153f440059f236ed))
124
-
125
- ### Fix
126
-
127
- * fix: use SafeSlot instead of Slot ([`bc1e239`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/bc1e23944cc0e5a861e3d0b4dc5b4ac6292d5269))
128
-
129
- * fix: linting ([`a3fe205`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a3fe20500ae2ac03dcde07432f7e21ce5262ce46))
130
-
131
- * fix: always add a QApplication for tests ([`61a4e32`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/61a4e32deb337ed27f2f43358b88b7266413b58e))
132
-
133
- * fix: add xvfb to draw offscreen ([`3d681f7`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/3d681f77e144e74138fc5fa65630004d7c166878))
134
-
135
- * fix: reset ErrorPopup singleton between tests ([`5a9ccfd`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/5a9ccfd1f6d2aacd5d86c1a34f74163b272d1ae4))
136
-
137
- * fix: metaclass + QObject segfaults PyQt(cpp bindings) ([`fc57b7a`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/fc57b7a1262031a2df9e6a99493db87e766b779a))
138
-
139
- ### Refactor
140
-
141
- * refactor: renamed DeviceMonitor2DMessage ([`4be6fd6`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4be6fd6b83ea1048f16310f7d2bbe777b13b245e))
142
-
143
- * refactor: rename device_monitor to device_monitor_2d ([`714e1e1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/714e1e139e0033d2725fefb636c419ca137a68c6))
144
-
145
- ## v0.92.0 (2024-07-24)
146
-
147
- ### Fix
148
-
149
- * fix(dock): custom label can be created closable ([`4457ef2`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4457ef2147e21b856c9dcaf63c81ba98002dcaf1))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.94.0
3
+ Version: 0.94.4
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
@@ -46,6 +46,7 @@ class JupyterConsoleWindow(QWidget): # pragma: no cover:
46
46
  "w7": self.w7,
47
47
  "w8": self.w8,
48
48
  "w9": self.w9,
49
+ "w10": self.w10,
49
50
  "d0": self.d0,
50
51
  "d1": self.d1,
51
52
  "d2": self.d2,
@@ -162,9 +162,9 @@ class BECDispatcher:
162
162
  return
163
163
  self.client.connector.unregister(topics, cb=connected_slot)
164
164
  topics_str, _ = self.client.connector._convert_endpointinfo(topics)
165
- self._slots[slot].difference_update(set(topics_str))
166
- if not self._slots[slot]:
167
- del self._slots[slot]
165
+ self._slots[connected_slot].difference_update(set(topics_str))
166
+ if not self._slots[connected_slot]:
167
+ del self._slots[connected_slot]
168
168
 
169
169
  def disconnect_topics(self, topics: Union[str, list]):
170
170
  self.client.connector.unregister(topics)
@@ -251,9 +251,10 @@ class BECImageShow(BECPlotBase):
251
251
 
252
252
  image_exits = self._check_image_id(monitor, self._images)
253
253
  if image_exits:
254
- raise ValueError(
255
- f"Monitor with ID '{monitor}' already exists in widget '{self.gui_id}'."
256
- )
254
+ # raise ValueError(
255
+ # f"Monitor with ID '{monitor}' already exists in widget '{self.gui_id}'."
256
+ # )
257
+ return
257
258
 
258
259
  # monitor = self.entry_validator.validate_monitor(monitor)
259
260
 
@@ -577,10 +578,10 @@ class BECImageShow(BECPlotBase):
577
578
  self, source: str, name: str, config: ImageItemConfig, data=None
578
579
  ) -> BECImageItem: # TODO fix types
579
580
  config.parent_id = self.gui_id
580
- image = BECImageItem(config=config, parent_image=self)
581
- self.plot_item.addItem(image)
582
581
  if self.single_image is True and len(self.images) > 0:
583
582
  self.remove_image(0)
583
+ image = BECImageItem(config=config, parent_image=self)
584
+ self.plot_item.addItem(image)
584
585
  self._images[source][name] = image
585
586
  if source == "device_monitor_2d":
586
587
  self._connect_device_monitor_2d(config.monitor)
@@ -943,7 +943,9 @@ class BECWaveform(BECPlotBase):
943
943
  self.setup_dap(self.old_scan_id, self.scan_id)
944
944
  if self._curves_data["async"]:
945
945
  for curve_id, curve in self._curves_data["async"].items():
946
- self.setup_async(curve.config.signals.y.name)
946
+ self.setup_async(
947
+ name=curve.config.signals.y.name, entry=curve.config.signals.y.entry
948
+ )
947
949
 
948
950
  @Slot(dict, dict)
949
951
  def on_scan_segment(self, msg: dict, metadata: dict):
@@ -1005,18 +1007,18 @@ class BECWaveform(BECPlotBase):
1005
1007
  )
1006
1008
 
1007
1009
  @Slot(str)
1008
- def setup_async(self, device: str):
1010
+ def setup_async(self, name: str, entry: str):
1009
1011
  self.bec_dispatcher.disconnect_slot(
1010
- self.on_async_readback, MessageEndpoints.device_async_readback(self.old_scan_id, device)
1012
+ self.on_async_readback, MessageEndpoints.device_async_readback(self.old_scan_id, name)
1011
1013
  )
1012
1014
  try:
1013
- self._curves_data["async"][f"{device}-{device}"].clear_data()
1015
+ self._curves_data["async"][f"{name}-{entry}"].clear_data()
1014
1016
  except KeyError:
1015
1017
  pass
1016
1018
  if len(self._curves_data["async"]) > 0:
1017
1019
  self.bec_dispatcher.connect_slot(
1018
1020
  self.on_async_readback,
1019
- MessageEndpoints.device_async_readback(self.scan_id, device),
1021
+ MessageEndpoints.device_async_readback(self.scan_id, name),
1020
1022
  from_start=True,
1021
1023
  )
1022
1024
 
@@ -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
@@ -58,16 +58,17 @@ class CurveSettings(SettingWidget):
58
58
  self.ui.color_map_selector_scan.combo.setCurrentText(cm)
59
59
 
60
60
  # Scan Curve Table
61
- for label, curve in config["scan_segment"].items():
62
- row_count = self.ui.scan_table.rowCount()
63
- self.ui.scan_table.insertRow(row_count)
64
- DialogRow(
65
- parent=self,
66
- table_widget=self.ui.scan_table,
67
- client=self.target_widget.client,
68
- row=row_count,
69
- config=curve.config,
70
- ).add_scan_row()
61
+ for source in ["scan_segment", "async"]:
62
+ for label, curve in config[source].items():
63
+ row_count = self.ui.scan_table.rowCount()
64
+ self.ui.scan_table.insertRow(row_count)
65
+ DialogRow(
66
+ parent=self,
67
+ table_widget=self.ui.scan_table,
68
+ client=self.target_widget.client,
69
+ row=row_count,
70
+ config=curve.config,
71
+ ).add_scan_row()
71
72
 
72
73
  # Add DAP Curves
73
74
  for label, curve in config["DAP"].items():
@@ -132,11 +133,12 @@ class CurveSettings(SettingWidget):
132
133
  self.accept_curve_changes()
133
134
 
134
135
  def accept_curve_changes(self):
135
- old_curves_scans = list(self.target_widget.waveform._curves_data["scan_segment"].values())
136
- old_curves_dap = list(self.target_widget.waveform._curves_data["DAP"].values())
137
- for curve in old_curves_scans:
138
- curve.remove()
139
- for curve in old_curves_dap:
136
+ sources = ["scan_segment", "async", "DAP"]
137
+ old_curves = []
138
+
139
+ for source in sources:
140
+ old_curves += list(self.target_widget.waveform._curves_data[source].values())
141
+ for curve in old_curves:
140
142
  curve.remove()
141
143
  self.get_curve_params()
142
144
 
@@ -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.0"
7
+ version = "0.94.4"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [
@@ -92,7 +92,9 @@ def test_dispatcher_2_cb_same_topic(bec_dispatcher_w_connector, qtbot, send_msg_
92
92
  bec_dispatcher.connect_slot(cb1, "topic1")
93
93
  bec_dispatcher.connect_slot(cb2, "topic1")
94
94
  assert len(bec_dispatcher.client.connector._topics_cb) == 1
95
+ assert len(bec_dispatcher._slots) == 2
95
96
  bec_dispatcher.disconnect_slot(cb1, "topic1")
97
+ assert len(bec_dispatcher._slots) == 1
96
98
 
97
99
  send_msg_event.set()
98
100
  qtbot.wait(10)
@@ -3,6 +3,9 @@ from unittest.mock import MagicMock, patch
3
3
  import pyqtgraph as pg
4
4
  import pytest
5
5
 
6
+ from bec_widgets.qt_utils.settings_dialog import SettingsDialog
7
+ from bec_widgets.widgets.figure.plots.axis_settings import AxisSettings
8
+ from bec_widgets.widgets.waveform.waveform_popups.curve_dialog.curve_dialog import CurveSettings
6
9
  from bec_widgets.widgets.waveform.waveform_widget import BECWaveformWidget
7
10
 
8
11
  from .client_mocks import mocked_client
@@ -261,3 +264,199 @@ def test_enable_mouse_pan_mode(qtbot, waveform_widget):
261
264
  assert action_drag.isChecked() == True
262
265
  assert action_rectangle.isChecked() == False
263
266
  mock_view_box.setMouseMode.assert_called_once_with(pg.ViewBox.PanMode)
267
+
268
+
269
+ ###################################
270
+ # Curve Dialog Tests
271
+ ###################################
272
+ def show_curve_dialog(qtbot, waveform_widget):
273
+ curve_dialog = SettingsDialog(
274
+ waveform_widget,
275
+ settings_widget=CurveSettings(),
276
+ window_title="Curve Settings",
277
+ config=waveform_widget.waveform._curves_data,
278
+ )
279
+ qtbot.addWidget(curve_dialog)
280
+ qtbot.waitExposed(curve_dialog)
281
+ return curve_dialog
282
+
283
+
284
+ def test_curve_dialog_scan_curves_interactions(qtbot, waveform_widget):
285
+ waveform_widget.plot(y_name="bpm4i")
286
+ waveform_widget.plot(y_name="bpm3a")
287
+
288
+ curve_dialog = show_curve_dialog(qtbot, waveform_widget)
289
+
290
+ # Check default display of config from waveform widget
291
+ assert curve_dialog is not None
292
+ assert curve_dialog.widget.ui.scan_table.rowCount() == 2
293
+ assert curve_dialog.widget.ui.scan_table.cellWidget(0, 0).text() == "bpm4i"
294
+ assert curve_dialog.widget.ui.scan_table.cellWidget(0, 1).text() == "bpm4i"
295
+ assert curve_dialog.widget.ui.scan_table.cellWidget(1, 0).text() == "bpm3a"
296
+ assert curve_dialog.widget.ui.scan_table.cellWidget(1, 1).text() == "bpm3a"
297
+ assert curve_dialog.widget.ui.x_mode.currentText() == "best_effort"
298
+ assert curve_dialog.widget.ui.x_name.isEnabled() == False
299
+ assert curve_dialog.widget.ui.x_entry.isEnabled() == False
300
+
301
+ # Add a new curve
302
+ curve_dialog.widget.ui.add_curve.click()
303
+ qtbot.wait(200)
304
+ assert curve_dialog.widget.ui.scan_table.rowCount() == 3
305
+
306
+ # Set device to new curve
307
+ curve_dialog.widget.ui.scan_table.cellWidget(2, 0).setText("bpm3i")
308
+
309
+ # Change the x mode to device
310
+ curve_dialog.widget.ui.x_mode.setCurrentText("device")
311
+ qtbot.wait(200)
312
+ assert curve_dialog.widget.ui.x_name.isEnabled() == True
313
+ assert curve_dialog.widget.ui.x_entry.isEnabled() == True
314
+
315
+ # Set the x device
316
+ curve_dialog.widget.ui.x_name.setText("samx")
317
+
318
+ # Delete first curve ('bpm4i')
319
+ curve_dialog.widget.ui.scan_table.cellWidget(0, 6).click()
320
+ qtbot.wait(200)
321
+ assert curve_dialog.widget.ui.scan_table.rowCount() == 2
322
+ assert curve_dialog.widget.ui.scan_table.cellWidget(0, 0).text() == "bpm3a"
323
+ assert curve_dialog.widget.ui.scan_table.cellWidget(0, 1).text() == "bpm3a"
324
+ assert curve_dialog.widget.ui.scan_table.cellWidget(1, 0).text() == "bpm3i"
325
+
326
+ # Close the dialog
327
+ curve_dialog.accept()
328
+ qtbot.wait(200)
329
+
330
+ # Check the curve data in the target widget
331
+ assert list(waveform_widget.waveform._curves_data["scan_segment"].keys()) == [
332
+ "bpm3a-bpm3a",
333
+ "bpm3i-bpm3i",
334
+ ]
335
+ assert len(waveform_widget.curves) == 2
336
+
337
+
338
+ def test_curve_dialog_async(qtbot, waveform_widget):
339
+ waveform_widget.plot(y_name="bpm4i")
340
+ waveform_widget.plot(y_name="async_device")
341
+
342
+ curve_dialog = show_curve_dialog(qtbot, waveform_widget)
343
+
344
+ assert curve_dialog is not None
345
+ assert curve_dialog.widget.ui.scan_table.rowCount() == 2
346
+ assert curve_dialog.widget.ui.scan_table.cellWidget(0, 0).text() == "bpm4i"
347
+ assert curve_dialog.widget.ui.scan_table.cellWidget(0, 1).text() == "bpm4i"
348
+ assert curve_dialog.widget.ui.scan_table.cellWidget(1, 0).text() == "async_device"
349
+ assert curve_dialog.widget.ui.scan_table.cellWidget(1, 1).text() == "async_device"
350
+
351
+
352
+ def test_curve_dialog_dap(qtbot, waveform_widget):
353
+ waveform_widget.plot(x_name="samx", y_name="bpm4i", dap="GaussianModel")
354
+
355
+ curve_dialog = show_curve_dialog(qtbot, waveform_widget)
356
+
357
+ assert curve_dialog is not None
358
+ assert curve_dialog.widget.ui.scan_table.rowCount() == 1
359
+ assert curve_dialog.widget.ui.scan_table.cellWidget(0, 0).text() == "bpm4i"
360
+ assert curve_dialog.widget.ui.scan_table.cellWidget(0, 1).text() == "bpm4i"
361
+ assert curve_dialog.widget.ui.dap_table.isEnabled() == True
362
+ assert curve_dialog.widget.ui.dap_table.rowCount() == 1
363
+ assert curve_dialog.widget.ui.dap_table.cellWidget(0, 0).text() == "bpm4i"
364
+ assert curve_dialog.widget.ui.dap_table.cellWidget(0, 1).text() == "bpm4i"
365
+ assert curve_dialog.widget.ui.x_mode.currentText() == "device"
366
+ assert curve_dialog.widget.ui.x_name.isEnabled() == True
367
+ assert curve_dialog.widget.ui.x_entry.isEnabled() == True
368
+ assert curve_dialog.widget.ui.x_name.text() == "samx"
369
+ assert curve_dialog.widget.ui.x_entry.text() == "samx"
370
+
371
+ curve_dialog.accept()
372
+ qtbot.wait(200)
373
+
374
+ assert list(waveform_widget.waveform._curves_data["scan_segment"].keys()) == ["bpm4i-bpm4i"]
375
+ assert len(waveform_widget.curves) == 2
376
+
377
+
378
+ ###################################
379
+ # Axis Dialog Tests
380
+ ###################################
381
+
382
+
383
+ def show_axis_dialog(qtbot, waveform_widget):
384
+ axis_dialog = SettingsDialog(
385
+ waveform_widget,
386
+ settings_widget=AxisSettings(),
387
+ window_title="Axis Settings",
388
+ config=waveform_widget._config_dict["axis"],
389
+ )
390
+ qtbot.addWidget(axis_dialog)
391
+ qtbot.waitExposed(axis_dialog)
392
+ return axis_dialog
393
+
394
+
395
+ def test_axis_dialog_with_axis_limits(qtbot, waveform_widget):
396
+ waveform_widget.set(
397
+ title="Test Title",
398
+ x_label="X Label",
399
+ y_label="Y Label",
400
+ x_scale="linear",
401
+ y_scale="log",
402
+ x_lim=(0, 10),
403
+ y_lim=(0, 10),
404
+ )
405
+
406
+ axis_dialog = show_axis_dialog(qtbot, waveform_widget)
407
+
408
+ assert axis_dialog is not None
409
+ assert axis_dialog.widget.ui.plot_title.text() == "Test Title"
410
+ assert axis_dialog.widget.ui.x_label.text() == "X Label"
411
+ assert axis_dialog.widget.ui.y_label.text() == "Y Label"
412
+ assert axis_dialog.widget.ui.x_scale.currentText() == "linear"
413
+ assert axis_dialog.widget.ui.y_scale.currentText() == "log"
414
+ assert axis_dialog.widget.ui.x_min.value() == 0
415
+ assert axis_dialog.widget.ui.x_max.value() == 10
416
+ assert axis_dialog.widget.ui.y_min.value() == 0
417
+ assert axis_dialog.widget.ui.y_max.value() == 10
418
+
419
+
420
+ def test_axis_dialog_without_axis_limits(qtbot, waveform_widget):
421
+ waveform_widget.set(
422
+ title="Test Title", x_label="X Label", y_label="Y Label", x_scale="linear", y_scale="log"
423
+ )
424
+ x_range = waveform_widget.fig.widget_list[0].plot_item.viewRange()[0]
425
+ y_range = waveform_widget.fig.widget_list[0].plot_item.viewRange()[1]
426
+
427
+ axis_dialog = show_axis_dialog(qtbot, waveform_widget)
428
+
429
+ assert axis_dialog is not None
430
+ assert axis_dialog.widget.ui.plot_title.text() == "Test Title"
431
+ assert axis_dialog.widget.ui.x_label.text() == "X Label"
432
+ assert axis_dialog.widget.ui.y_label.text() == "Y Label"
433
+ assert axis_dialog.widget.ui.x_scale.currentText() == "linear"
434
+ assert axis_dialog.widget.ui.y_scale.currentText() == "log"
435
+ assert axis_dialog.widget.ui.x_min.value() == x_range[0]
436
+ assert axis_dialog.widget.ui.x_max.value() == x_range[1]
437
+ assert axis_dialog.widget.ui.y_min.value() == y_range[0]
438
+ assert axis_dialog.widget.ui.y_max.value() == y_range[1]
439
+
440
+
441
+ def test_axis_dialog_set_properties(qtbot, waveform_widget):
442
+ axis_dialog = show_axis_dialog(qtbot, waveform_widget)
443
+
444
+ axis_dialog.widget.ui.plot_title.setText("New Title")
445
+ axis_dialog.widget.ui.x_label.setText("New X Label")
446
+ axis_dialog.widget.ui.y_label.setText("New Y Label")
447
+ axis_dialog.widget.ui.x_scale.setCurrentText("log")
448
+ axis_dialog.widget.ui.y_scale.setCurrentText("linear")
449
+ axis_dialog.widget.ui.x_min.setValue(5)
450
+ axis_dialog.widget.ui.x_max.setValue(15)
451
+ axis_dialog.widget.ui.y_min.setValue(5)
452
+ axis_dialog.widget.ui.y_max.setValue(15)
453
+
454
+ axis_dialog.accept()
455
+
456
+ assert waveform_widget._config_dict["axis"]["title"] == "New Title"
457
+ assert waveform_widget._config_dict["axis"]["x_label"] == "New X Label"
458
+ assert waveform_widget._config_dict["axis"]["y_label"] == "New Y Label"
459
+ assert waveform_widget._config_dict["axis"]["x_scale"] == "log"
460
+ assert waveform_widget._config_dict["axis"]["y_scale"] == "linear"
461
+ assert waveform_widget._config_dict["axis"]["x_lim"] == (5, 15)
462
+ assert waveform_widget._config_dict["axis"]["y_lim"] == (5, 15)
@@ -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