bec-widgets 2.7.0__tar.gz → 2.8.0__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 (406) hide show
  1. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/CHANGELOG.md +43 -0
  2. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/PKG-INFO +1 -1
  3. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/cli/client.py +116 -4
  4. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/cli/server.py +0 -1
  5. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/tests/utils.py +7 -1
  6. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/toolbar.py +7 -0
  7. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py +6 -3
  8. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py +4 -0
  9. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.py +20 -2
  10. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.py +3 -0
  11. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.py +30 -4
  12. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/image/toolbar_bundles/processing.py +19 -6
  13. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/plot_base.py +44 -4
  14. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/waveform/waveform.py +5 -5
  15. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/pyproject.toml +1 -1
  16. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.git_hooks/pre-commit +0 -0
  17. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  18. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.github/ISSUE_TEMPLATE/documentation_update.md +0 -0
  19. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  20. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.github/actions/bw_install/action.yml +0 -0
  21. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.github/pull_request_template.md +0 -0
  22. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.github/scripts/pr_issue_sync/pr_issue_sync.py +0 -0
  23. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.github/scripts/pr_issue_sync/requirements.txt +0 -0
  24. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.github/workflows/check_pr.yml +0 -0
  25. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.github/workflows/ci.yml +0 -0
  26. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.github/workflows/end2end-conda.yml +0 -0
  27. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.github/workflows/formatter.yml +0 -0
  28. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.github/workflows/generate-cli-check.yml +0 -0
  29. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.github/workflows/pytest-matrix.yml +0 -0
  30. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.github/workflows/pytest.yml +0 -0
  31. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.github/workflows/semantic_release.yml +0 -0
  32. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.github/workflows/sync-issues-pr.yml +0 -0
  33. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.gitignore +0 -0
  34. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.gitlab-ci.yml +0 -0
  35. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.pylintrc +0 -0
  36. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/.readthedocs.yaml +0 -0
  37. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/LICENSE +0 -0
  38. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/README.md +0 -0
  39. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/__init__.py +0 -0
  40. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/applications/__init__.py +0 -0
  41. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/applications/bw_launch.py +0 -0
  42. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/applications/launch_window.py +0 -0
  43. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
  44. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/assets/app_icons/alignment_1d.png +0 -0
  45. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/assets/app_icons/auto_update.png +0 -0
  46. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
  47. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/assets/app_icons/ui_loader_tile.png +0 -0
  48. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/assets/app_icons/widget_launch_tile.png +0 -0
  49. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/cli/__init__.py +0 -0
  50. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/cli/client_utils.py +0 -0
  51. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/cli/generate_cli.py +0 -0
  52. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/cli/rpc/__init__.py +0 -0
  53. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/cli/rpc/rpc_base.py +0 -0
  54. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/cli/rpc/rpc_register.py +0 -0
  55. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/cli/rpc/rpc_widget_handler.py +0 -0
  56. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/examples/__init__.py +0 -0
  57. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/examples/general_app/__init__.py +0 -0
  58. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/examples/general_app/general_app.py +0 -0
  59. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/examples/general_app/general_app.ui +0 -0
  60. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/examples/general_app/web_links.py +0 -0
  61. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  62. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
  63. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
  64. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
  65. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
  66. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
  67. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
  68. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
  69. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
  70. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/tests/__init__.py +0 -0
  71. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/__init__.py +0 -0
  72. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/bec_connector.py +0 -0
  73. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/bec_designer.py +0 -0
  74. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/bec_dispatcher.py +0 -0
  75. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/bec_plugin_helper.py +0 -0
  76. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/bec_signal_proxy.py +0 -0
  77. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/bec_table.py +0 -0
  78. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/bec_widget.py +0 -0
  79. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/collapsible_panel_manager.py +0 -0
  80. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/colors.py +0 -0
  81. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/compact_popup.py +0 -0
  82. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/container_utils.py +0 -0
  83. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/crosshair.py +0 -0
  84. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/entry_validator.py +0 -0
  85. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/error_popups.py +0 -0
  86. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/expandable_frame.py +0 -0
  87. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/filter_io.py +0 -0
  88. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/forms_from_types/__init__.py +0 -0
  89. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/forms_from_types/forms.py +0 -0
  90. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/forms_from_types/items.py +0 -0
  91. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/fps_counter.py +0 -0
  92. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/generate_designer_plugin.py +0 -0
  93. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/layout_manager.py +0 -0
  94. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/linear_region_selector.py +0 -0
  95. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/name_utils.py +0 -0
  96. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/ophyd_kind_util.py +0 -0
  97. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/palette_viewer.py +0 -0
  98. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/plot_indicator_items.py +0 -0
  99. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
  100. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/plugin_templates/register.template +0 -0
  101. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/plugin_utils.py +0 -0
  102. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/redis_message_waiter.py +0 -0
  103. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/reference_utils.py +0 -0
  104. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/round_frame.py +0 -0
  105. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/rpc_decorator.py +0 -0
  106. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/rpc_server.py +0 -0
  107. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/serialization.py +0 -0
  108. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/settings_dialog.py +0 -0
  109. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/side_panel.py +0 -0
  110. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/thread_checker.py +0 -0
  111. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/ui_loader.py +0 -0
  112. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/validator_delegate.py +0 -0
  113. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/widget_io.py +0 -0
  114. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/widget_state_manager.py +0 -0
  115. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/utils/yaml_dialog.py +0 -0
  116. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/__init__.py +0 -0
  117. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/containers/__init__.py +0 -0
  118. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/containers/auto_update/__init__.py +0 -0
  119. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/containers/auto_update/auto_updates.py +0 -0
  120. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/containers/dock/__init__.py +0 -0
  121. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/containers/dock/dock.py +0 -0
  122. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/containers/dock/dock_area.py +0 -0
  123. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/containers/dock/dock_area.pyproject +0 -0
  124. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/containers/dock/dock_area_plugin.py +0 -0
  125. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/containers/dock/register_dock_area.py +0 -0
  126. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/containers/layout_manager/__init__.py +0 -0
  127. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/containers/layout_manager/layout_manager.py +0 -0
  128. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/containers/main_window/__init__.py +0 -0
  129. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/containers/main_window/addons/__init__.py +0 -0
  130. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/containers/main_window/addons/web_links.py +0 -0
  131. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/containers/main_window/main_window.py +0 -0
  132. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/__init__.py +0 -0
  133. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/__init__.py +0 -0
  134. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/button_abort/__init__.py +0 -0
  135. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/button_abort/abort_button.pyproject +0 -0
  136. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/button_abort/abort_button_plugin.py +0 -0
  137. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/button_abort/button_abort.py +0 -0
  138. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/button_abort/register_abort_button.py +0 -0
  139. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/button_reset/__init__.py +0 -0
  140. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/button_reset/button_reset.py +0 -0
  141. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/button_reset/register_reset_button.py +0 -0
  142. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/button_reset/reset_button.pyproject +0 -0
  143. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/button_reset/reset_button_plugin.py +0 -0
  144. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/button_resume/__init__.py +0 -0
  145. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/button_resume/button_resume.py +0 -0
  146. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/button_resume/register_resume_button.py +0 -0
  147. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/button_resume/resume_button.pyproject +0 -0
  148. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/button_resume/resume_button_plugin.py +0 -0
  149. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/stop_button/__init__.py +0 -0
  150. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/stop_button/register_stop_button.py +0 -0
  151. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button.py +0 -0
  152. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button.pyproject +0 -0
  153. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button_plugin.py +0 -0
  154. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/__init__.py +0 -0
  155. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/position_indicator/__init__.py +0 -0
  156. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.py +0 -0
  157. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.pyproject +0 -0
  158. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator_plugin.py +0 -0
  159. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/position_indicator/register_position_indicator.py +0 -0
  160. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/__init__.py +0 -0
  161. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/_base/__init__.py +0 -0
  162. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py +0 -0
  163. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/__init__.py +0 -0
  164. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py +0 -0
  165. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.pyproject +0 -0
  166. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.ui +0 -0
  167. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box_plugin.py +0 -0
  168. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/register_positioner_box.py +0 -0
  169. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/__init__.py +0 -0
  170. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d.pyproject +0 -0
  171. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d_plugin.py +0 -0
  172. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py +0 -0
  173. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.ui +0 -0
  174. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/register_positioner_box2_d.py +0 -0
  175. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.py +0 -0
  176. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.pyproject +0 -0
  177. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.ui +0 -0
  178. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line_plugin.py +0 -0
  179. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/register_positioner_control_line.py +0 -0
  180. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_group/__init__.py +0 -0
  181. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.py +0 -0
  182. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.pyproject +0 -0
  183. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group_plugin.py +0 -0
  184. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_control/positioner_group/register_positioner_group.py +0 -0
  185. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/__init__.py +0 -0
  186. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/base_classes/__init__.py +0 -0
  187. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py +0 -0
  188. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/device_combobox/__init__.py +0 -0
  189. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box.pyproject +0 -0
  190. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box_plugin.py +0 -0
  191. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/device_combobox/register_device_combo_box.py +0 -0
  192. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/device_line_edit/__init__.py +0 -0
  193. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.pyproject +0 -0
  194. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit_plugin.py +0 -0
  195. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/device_line_edit/register_device_line_edit.py +0 -0
  196. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/signal_combobox/__init__.py +0 -0
  197. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/signal_combobox/register_signal_combo_box.py +0 -0
  198. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box.pyproject +0 -0
  199. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box_plugin.py +0 -0
  200. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/signal_line_edit/__init__.py +0 -0
  201. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/signal_line_edit/register_signal_line_edit.py +0 -0
  202. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.pyproject +0 -0
  203. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit_plugin.py +0 -0
  204. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/scan_control/__init__.py +0 -0
  205. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/scan_control/register_scan_control.py +0 -0
  206. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/scan_control/scan_control.py +0 -0
  207. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/scan_control/scan_control.pyproject +0 -0
  208. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/scan_control/scan_control_plugin.py +0 -0
  209. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/control/scan_control/scan_group_box.py +0 -0
  210. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/dap/__init__.py +0 -0
  211. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/dap/dap_combo_box/__init__.py +0 -0
  212. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py +0 -0
  213. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.pyproject +0 -0
  214. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box_plugin.py +0 -0
  215. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/dap/dap_combo_box/register_dap_combo_box.py +0 -0
  216. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/dap/lmfit_dialog/__init__.py +0 -0
  217. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
  218. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
  219. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py +0 -0
  220. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
  221. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
  222. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/dap/lmfit_dialog/register_lm_fit_dialog.py +0 -0
  223. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/__init__.py +0 -0
  224. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/console/__init__.py +0 -0
  225. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/console/console.py +0 -0
  226. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/console/console.pyproject +0 -0
  227. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/console/console_plugin.py +0 -0
  228. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/console/register_console.py +0 -0
  229. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/dict_backed_table.py +0 -0
  230. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/jupyter_console/__init__.py +0 -0
  231. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/jupyter_console/jupyter_console.py +0 -0
  232. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/scan_metadata/__init__.py +0 -0
  233. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/scan_metadata/_util.py +0 -0
  234. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/scan_metadata/register_scan_metadata.py +0 -0
  235. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py +0 -0
  236. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.pyproject +0 -0
  237. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata_plugin.py +0 -0
  238. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/text_box/__init__.py +0 -0
  239. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/text_box/register_text_box.py +0 -0
  240. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/text_box/text_box.py +0 -0
  241. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/text_box/text_box.pyproject +0 -0
  242. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/text_box/text_box_plugin.py +0 -0
  243. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/vscode/__init__.py +0 -0
  244. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/vscode/register_vs_code_editor.py +0 -0
  245. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/vscode/vs_code_editor.pyproject +0 -0
  246. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/vscode/vs_code_editor_plugin.py +0 -0
  247. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/vscode/vscode.py +0 -0
  248. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/web_console/register_web_console.py +0 -0
  249. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/web_console/web_console.py +0 -0
  250. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/web_console/web_console.pyproject +0 -0
  251. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/web_console/web_console_plugin.py +0 -0
  252. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/website/__init__.py +0 -0
  253. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/website/register_website_widget.py +0 -0
  254. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/website/website.py +0 -0
  255. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/website/website_widget.pyproject +0 -0
  256. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/editors/website/website_widget_plugin.py +0 -0
  257. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/games/__init__.py +0 -0
  258. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/games/minesweeper.py +0 -0
  259. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/games/minesweeper.pyproject +0 -0
  260. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/games/minesweeper_plugin.py +0 -0
  261. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/games/register_minesweeper.py +0 -0
  262. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/__init__.py +0 -0
  263. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/image/__init__.py +0 -0
  264. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/image/image.py +0 -0
  265. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/image/image.pyproject +0 -0
  266. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/image/image_item.py +0 -0
  267. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/image/image_plugin.py +0 -0
  268. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/image/image_processor.py +0 -0
  269. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/image/image_roi_plot.py +0 -0
  270. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/image/register_image.py +0 -0
  271. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/image/setting_widgets/__init__.py +0 -0
  272. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/image/setting_widgets/image_roi_tree.py +0 -0
  273. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/image/toolbar_bundles/__init__.py +0 -0
  274. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/image/toolbar_bundles/image_selection.py +0 -0
  275. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/motor_map/__init__.py +0 -0
  276. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/motor_map/motor_map.py +0 -0
  277. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/motor_map/motor_map.pyproject +0 -0
  278. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/motor_map/motor_map_plugin.py +0 -0
  279. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/motor_map/register_motor_map.py +0 -0
  280. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/motor_map/settings/__init__.py +0 -0
  281. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.py +0 -0
  282. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.ui +0 -0
  283. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/motor_map/toolbar_bundles/__init__.py +0 -0
  284. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/motor_map/toolbar_bundles/motor_selection.py +0 -0
  285. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/multi_waveform/__init__.py +0 -0
  286. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.py +0 -0
  287. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.pyproject +0 -0
  288. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform_plugin.py +0 -0
  289. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/multi_waveform/register_multi_waveform.py +0 -0
  290. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/multi_waveform/settings/__init__.py +0 -0
  291. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/multi_waveform/settings/control_panel.py +0 -0
  292. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/multi_waveform/settings/multi_waveform_controls.ui +0 -0
  293. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles/__init__.py +0 -0
  294. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles/monitor_selection.py +0 -0
  295. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/roi/__init__.py +0 -0
  296. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/roi/image_roi.py +0 -0
  297. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/scatter_waveform/__init__.py +0 -0
  298. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/scatter_waveform/register_scatter_waveform.py +0 -0
  299. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_curve.py +0 -0
  300. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.py +0 -0
  301. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.pyproject +0 -0
  302. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform_plugin.py +0 -0
  303. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/scatter_waveform/settings/__init__.py +0 -0
  304. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_setting.py +0 -0
  305. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_horizontal.ui +0 -0
  306. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_vertical.ui +0 -0
  307. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/setting_menus/__init__.py +0 -0
  308. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/setting_menus/axis_settings.py +0 -0
  309. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/setting_menus/axis_settings_horizontal.ui +0 -0
  310. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/setting_menus/axis_settings_vertical.ui +0 -0
  311. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/toolbar_bundles/__init__.py +0 -0
  312. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/toolbar_bundles/mouse_interactions.py +0 -0
  313. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/toolbar_bundles/plot_export.py +0 -0
  314. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/toolbar_bundles/roi_bundle.py +0 -0
  315. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/toolbar_bundles/save_state.py +0 -0
  316. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/waveform/__init__.py +0 -0
  317. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/waveform/curve.py +0 -0
  318. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/waveform/register_waveform.py +0 -0
  319. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/waveform/settings/__init__.py +0 -0
  320. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/waveform/settings/curve_settings/__init__.py +0 -0
  321. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_setting.py +0 -0
  322. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_tree.py +0 -0
  323. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/waveform/utils/__init__.py +0 -0
  324. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/waveform/utils/roi_manager.py +0 -0
  325. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/waveform/waveform.pyproject +0 -0
  326. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/plots/waveform/waveform_plugin.py +0 -0
  327. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/progress/__init__.py +0 -0
  328. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/progress/bec_progressbar/__init__.py +0 -0
  329. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar.pyproject +0 -0
  330. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar_plugin.py +0 -0
  331. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progressbar.py +0 -0
  332. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/progress/bec_progressbar/register_bec_progress_bar.py +0 -0
  333. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/progress/ring_progress_bar/__init__.py +0 -0
  334. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/progress/ring_progress_bar/register_ring_progress_bar.py +0 -0
  335. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/progress/ring_progress_bar/ring.py +0 -0
  336. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py +0 -0
  337. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.pyproject +0 -0
  338. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
  339. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/__init__.py +0 -0
  340. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/bec_queue/__init__.py +0 -0
  341. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/bec_queue/bec_queue.py +0 -0
  342. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/bec_queue/bec_queue.pyproject +0 -0
  343. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/bec_queue/bec_queue_plugin.py +0 -0
  344. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/bec_queue/register_bec_queue.py +0 -0
  345. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/bec_status_box/__init__.py +0 -0
  346. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box.py +0 -0
  347. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box.pyproject +0 -0
  348. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box_plugin.py +0 -0
  349. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/bec_status_box/register_bec_status_box.py +0 -0
  350. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/bec_status_box/status_item.py +0 -0
  351. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/device_browser/__init__.py +0 -0
  352. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/device_browser/device_browser.py +0 -0
  353. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/device_browser/device_browser.pyproject +0 -0
  354. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/device_browser/device_browser.ui +0 -0
  355. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/device_browser/device_browser_plugin.py +0 -0
  356. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/device_browser/device_item/__init__.py +0 -0
  357. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/device_browser/device_item/device_item.py +0 -0
  358. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/services/device_browser/register_device_browser.py +0 -0
  359. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/__init__.py +0 -0
  360. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/logpanel/__init__.py +0 -0
  361. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/logpanel/_util.py +0 -0
  362. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/logpanel/log_panel.pyproject +0 -0
  363. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/logpanel/log_panel_plugin.py +0 -0
  364. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/logpanel/logpanel.py +0 -0
  365. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/logpanel/register_log_panel.py +0 -0
  366. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/spinbox/__init__.py +0 -0
  367. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/spinbox/bec_spin_box.pyproject +0 -0
  368. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/spinbox/bec_spin_box_plugin.py +0 -0
  369. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/spinbox/decimal_spinbox.py +0 -0
  370. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/spinbox/register_bec_spin_box.py +0 -0
  371. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/spinner/__init__.py +0 -0
  372. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/spinner/register_spinner_widget.py +0 -0
  373. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/spinner/spinner.py +0 -0
  374. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/spinner/spinner_widget.pyproject +0 -0
  375. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/spinner/spinner_widget_plugin.py +0 -0
  376. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/toggle/__init__.py +0 -0
  377. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/toggle/register_toggle_switch.py +0 -0
  378. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/toggle/toggle.py +0 -0
  379. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/toggle/toggle_switch.pyproject +0 -0
  380. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/toggle/toggle_switch_plugin.py +0 -0
  381. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/__init__.py +0 -0
  382. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/color_button/__init__.py +0 -0
  383. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/color_button/color_button.py +0 -0
  384. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/color_button/color_button.pyproject +0 -0
  385. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/color_button/color_button_plugin.py +0 -0
  386. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/color_button/register_color_button.py +0 -0
  387. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/color_button_native/__init__.py +0 -0
  388. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.py +0 -0
  389. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.pyproject +0 -0
  390. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native_plugin.py +0 -0
  391. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/color_button_native/register_color_button_native.py +0 -0
  392. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/colormap_selector/__init__.py +0 -0
  393. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.py +0 -0
  394. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.pyproject +0 -0
  395. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector_plugin.py +0 -0
  396. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/colormap_selector/register_colormap_selector.py +0 -0
  397. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/colormap_widget/__init__.py +0 -0
  398. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget.pyproject +0 -0
  399. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget_plugin.py +0 -0
  400. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py +0 -0
  401. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/colormap_widget/register_bec_color_map_widget.py +0 -0
  402. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/dark_mode_button/__init__.py +0 -0
  403. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py +0 -0
  404. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.pyproject +0 -0
  405. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button_plugin.py +0 -0
  406. {bec_widgets-2.7.0 → bec_widgets-2.8.0}/bec_widgets/widgets/utility/visual/dark_mode_button/register_dark_mode_button.py +0 -0
@@ -1,6 +1,49 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v2.8.0 (2025-05-26)
5
+
6
+ ### Bug Fixes
7
+
8
+ - **ImageProcessing**: Use target widget as parent
9
+ ([`d8547c7`](https://github.com/bec-project/bec_widgets/commit/d8547c7a56cea72dd41a2020c47adfd93969139f))
10
+
11
+ ### Features
12
+
13
+ - **plot_base**: Add option to specify units
14
+ ([`3484507`](https://github.com/bec-project/bec_widgets/commit/3484507c75500dc1b1a53853ff01937ad9ad8913))
15
+
16
+ ### Refactoring
17
+
18
+ - **server**: Minor cleanup of imports
19
+ ([`8abebb7`](https://github.com/bec-project/bec_widgets/commit/8abebb72862c44d32a24f5e692319dec7a0891bf))
20
+
21
+ - **toolbar**: Add warning if no parent is provided as it may lead to segfaults
22
+ ([`4f69f5d`](https://github.com/bec-project/bec_widgets/commit/4f69f5da45420d92fd985801a8920ecf10166554))
23
+
24
+
25
+ ## v2.7.1 (2025-05-26)
26
+
27
+ ### Bug Fixes
28
+
29
+ - **signal-combobox**: Bug fix in signal combobox that crashed upon switching from device to signal
30
+ input
31
+ ([`1a4eb1d`](https://github.com/bec-project/bec_widgets/commit/1a4eb1db67ff6cfc45ce91cd264ae2818a57230a))
32
+
33
+ - **signal-line-edit**: Fix signal_line_edit validity check; closes #610
34
+ ([`ec740d3`](https://github.com/bec-project/bec_widgets/commit/ec740d31fdea561f1ed9274ea79b7be3b6ecba11))
35
+
36
+ ### Refactoring
37
+
38
+ - Add rpc interface to signal_line_edit/combobox; add user access methods
39
+ ([`a8811c9`](https://github.com/bec-project/bec_widgets/commit/a8811c9d914feacf08f2f1f1aaf16302cd320ba3))
40
+
41
+ ### Testing
42
+
43
+ - **input-widgets**: Add e2e tests to test widget inputs with demo config of bec.
44
+ ([`f57950c`](https://github.com/bec-project/bec_widgets/commit/f57950c4e3b0b5eab7bc303eaead89f7e50e2804))
45
+
46
+
4
47
  ## v2.7.0 (2025-05-26)
5
48
 
6
49
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bec_widgets
3
- Version: 2.7.0
3
+ Version: 2.8.0
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
@@ -51,6 +51,8 @@ _Widgets = {
51
51
  "RingProgressBar": "RingProgressBar",
52
52
  "ScanControl": "ScanControl",
53
53
  "ScatterWaveform": "ScatterWaveform",
54
+ "SignalComboBox": "SignalComboBox",
55
+ "SignalLineEdit": "SignalLineEdit",
54
56
  "StopButton": "StopButton",
55
57
  "TextBox": "TextBox",
56
58
  "VSCodeEditor": "VSCodeEditor",
@@ -939,9 +941,22 @@ class DeviceComboBox(RPCBase):
939
941
  """Combobox widget for device input with autocomplete for device names."""
940
942
 
941
943
  @rpc_call
942
- def remove(self):
944
+ def set_device(self, device: "str"):
943
945
  """
944
- Cleanup the BECConnector
946
+ Set the device.
947
+
948
+ Args:
949
+ device (str): Default name.
950
+ """
951
+
952
+ @property
953
+ @rpc_call
954
+ def devices(self) -> "list[str]":
955
+ """
956
+ Get the list of devices for the applied filters.
957
+
958
+ Returns:
959
+ list[str]: List of devices.
945
960
  """
946
961
 
947
962
 
@@ -959,9 +974,32 @@ class DeviceLineEdit(RPCBase):
959
974
  """Line edit widget for device input with autocomplete for device names."""
960
975
 
961
976
  @rpc_call
962
- def remove(self):
977
+ def set_device(self, device: "str"):
963
978
  """
964
- Cleanup the BECConnector
979
+ Set the device.
980
+
981
+ Args:
982
+ device (str): Default name.
983
+ """
984
+
985
+ @property
986
+ @rpc_call
987
+ def devices(self) -> "list[str]":
988
+ """
989
+ Get the list of devices for the applied filters.
990
+
991
+ Returns:
992
+ list[str]: List of devices.
993
+ """
994
+
995
+ @property
996
+ @rpc_call
997
+ def _is_valid_input(self) -> bool:
998
+ """
999
+ Check if the current value is a valid device name.
1000
+
1001
+ Returns:
1002
+ bool: True if the current value is a valid device name, False otherwise.
965
1003
  """
966
1004
 
967
1005
 
@@ -3347,6 +3385,80 @@ class ScatterWaveform(RPCBase):
3347
3385
  """
3348
3386
 
3349
3387
 
3388
+ class SignalComboBox(RPCBase):
3389
+ """Line edit widget for device input with autocomplete for device names."""
3390
+
3391
+ @rpc_call
3392
+ def set_signal(self, signal: str):
3393
+ """
3394
+ Set the signal.
3395
+
3396
+ Args:
3397
+ signal (str): signal name.
3398
+ """
3399
+
3400
+ @rpc_call
3401
+ def set_device(self, device: str | None):
3402
+ """
3403
+ Set the device. If device is not valid, device will be set to None which happens
3404
+
3405
+ Args:
3406
+ device(str): device name.
3407
+ """
3408
+
3409
+ @property
3410
+ @rpc_call
3411
+ def signals(self) -> list[str]:
3412
+ """
3413
+ Get the list of device signals for the applied filters.
3414
+
3415
+ Returns:
3416
+ list[str]: List of device signals.
3417
+ """
3418
+
3419
+
3420
+ class SignalLineEdit(RPCBase):
3421
+ """Line edit widget for device input with autocomplete for device names."""
3422
+
3423
+ @property
3424
+ @rpc_call
3425
+ def _is_valid_input(self) -> bool:
3426
+ """
3427
+ Check if the current value is a valid device name.
3428
+
3429
+ Returns:
3430
+ bool: True if the current value is a valid device name, False otherwise.
3431
+ """
3432
+
3433
+ @rpc_call
3434
+ def set_signal(self, signal: str):
3435
+ """
3436
+ Set the signal.
3437
+
3438
+ Args:
3439
+ signal (str): signal name.
3440
+ """
3441
+
3442
+ @rpc_call
3443
+ def set_device(self, device: str | None):
3444
+ """
3445
+ Set the device. If device is not valid, device will be set to None which happens
3446
+
3447
+ Args:
3448
+ device(str): device name.
3449
+ """
3450
+
3451
+ @property
3452
+ @rpc_call
3453
+ def signals(self) -> list[str]:
3454
+ """
3455
+ Get the list of device signals for the applied filters.
3456
+
3457
+ Returns:
3458
+ list[str]: List of device signals.
3459
+ """
3460
+
3461
+
3350
3462
  class StopButton(RPCBase):
3351
3463
  """A button that stops the current scan."""
3352
3464
 
@@ -6,7 +6,6 @@ import os
6
6
  import signal
7
7
  import sys
8
8
  from contextlib import redirect_stderr, redirect_stdout
9
- from typing import cast
10
9
 
11
10
  from bec_lib.logger import bec_logger
12
11
  from bec_lib.service_config import ServiceConfig
@@ -200,7 +200,13 @@ class DMMock:
200
200
  self.devices = DeviceContainer()
201
201
  self.enabled_devices = [device for device in self.devices if device.enabled]
202
202
 
203
- def add_devives(self, devices: list):
203
+ def add_devices(self, devices: list):
204
+ """
205
+ Add devices to the DeviceContainer.
206
+
207
+ Args:
208
+ devices (list): List of device instances to add.
209
+ """
204
210
  for device in devices:
205
211
  self.devices[device.name] = device
206
212
 
@@ -7,6 +7,7 @@ from abc import ABC, abstractmethod
7
7
  from collections import defaultdict
8
8
  from typing import Dict, List, Literal, Tuple
9
9
 
10
+ from bec_lib.logger import bec_logger
10
11
  from bec_qthemes._icon.material_icons import material_icon
11
12
  from qtpy.QtCore import QSize, Qt, QTimer
12
13
  from qtpy.QtGui import QAction, QColor, QIcon
@@ -31,6 +32,8 @@ from bec_widgets.widgets.utility.visual.dark_mode_button.dark_mode_button import
31
32
 
32
33
  MODULE_PATH = os.path.dirname(bec_widgets.__file__)
33
34
 
35
+ logger = bec_logger.logger
36
+
34
37
  # Ensure that icons are shown in menus (especially on macOS)
35
38
  QApplication.setAttribute(Qt.AA_DontShowIconsInMenus, False)
36
39
 
@@ -173,6 +176,10 @@ class MaterialIconAction(ToolBarAction):
173
176
  filled=self.filled,
174
177
  color=self.color,
175
178
  )
179
+ if parent is None:
180
+ logger.warning(
181
+ "MaterialIconAction was created without a parent. Please consider adding one. Using None as parent may cause issues."
182
+ )
176
183
  self.action = QAction(icon=self.icon, text=self.tooltip, parent=parent)
177
184
  self.action.setCheckable(self.checkable)
178
185
 
@@ -79,7 +79,7 @@ class DeviceSignalInputBase(BECWidget):
79
79
  @Slot(str)
80
80
  def set_device(self, device: str | None):
81
81
  """
82
- Set the device. If device is not valid, device will be set to None which happpens
82
+ Set the device. If device is not valid, device will be set to None which happens
83
83
 
84
84
  Args:
85
85
  device(str): device name.
@@ -112,9 +112,12 @@ class DeviceSignalInputBase(BECWidget):
112
112
  # See above convention for Signals and ComputedSignals
113
113
  if isinstance(device, Signal):
114
114
  self._signals = [self._device]
115
- FilterIO.set_selection(widget=self, selection=[self._device])
115
+ self._hinted_signals = [self._device]
116
+ self._normal_signals = []
117
+ self._config_signals = []
118
+ FilterIO.set_selection(widget=self, selection=self._signals)
116
119
  return
117
- device_info = device._info["signals"]
120
+ device_info = device._info.get("signals", {})
118
121
 
119
122
  def _update(kind: Kind):
120
123
  return [
@@ -22,10 +22,14 @@ class DeviceComboBox(DeviceInputBase, QComboBox):
22
22
  config: Device input configuration.
23
23
  gui_id: GUI ID.
24
24
  device_filter: Device filter, name of the device class from BECDeviceFilter and BECReadoutPriority. Check DeviceInputBase for more details.
25
+ readout_priority_filter: Readout priority filter, name of the readout priority class from BECDeviceFilter and BECReadoutPriority. Check DeviceInputBase for more details.
26
+ available_devices: List of available devices, if passed, it sets apply filters to false and device/readout priority filters will not be applied.
25
27
  default: Default device name.
26
28
  arg_name: Argument name, can be used for the other widgets which has to call some other function in bec using correct argument names.
27
29
  """
28
30
 
31
+ USER_ACCESS = ["set_device", "devices"]
32
+
29
33
  ICON_NAME = "list_alt"
30
34
  PLUGIN = True
31
35
 
@@ -24,11 +24,15 @@ class DeviceLineEdit(DeviceInputBase, QLineEdit):
24
24
  client: BEC client object.
25
25
  config: Device input configuration.
26
26
  gui_id: GUI ID.
27
- device_filter: Device filter, name of the device class from BECDeviceFilter and ReadoutPriority. Check DeviceInputBase for more details.
27
+ device_filter: Device filter, name of the device class from BECDeviceFilter and BECReadoutPriority. Check DeviceInputBase for more details.
28
+ readout_priority_filter: Readout priority filter, name of the readout priority class from BECDeviceFilter and BECReadoutPriority. Check DeviceInputBase for more details.
29
+ available_devices: List of available devices, if passed, it sets apply filters to false and device/readout priority filters will not be applied.
28
30
  default: Default device name.
29
31
  arg_name: Argument name, can be used for the other widgets which has to call some other function in bec using correct argument names.
30
32
  """
31
33
 
34
+ USER_ACCESS = ["set_device", "devices", "_is_valid_input"]
35
+
32
36
  device_selected = Signal(str)
33
37
  device_config_update = Signal()
34
38
 
@@ -51,7 +55,7 @@ class DeviceLineEdit(DeviceInputBase, QLineEdit):
51
55
  **kwargs,
52
56
  ):
53
57
  self._callback_id = None
54
- self._is_valid_input = False
58
+ self.__is_valid_input = False
55
59
  self._accent_colors = get_accent_colors()
56
60
  super().__init__(parent=parent, client=client, gui_id=gui_id, config=config, **kwargs)
57
61
  self.completer = QCompleter(self)
@@ -95,6 +99,20 @@ class DeviceLineEdit(DeviceInputBase, QLineEdit):
95
99
  self.textChanged.connect(self.check_validity)
96
100
  self.check_validity(self.text())
97
101
 
102
+ @property
103
+ def _is_valid_input(self) -> bool:
104
+ """
105
+ Check if the current value is a valid device name.
106
+
107
+ Returns:
108
+ bool: True if the current value is a valid device name, False otherwise.
109
+ """
110
+ return self.__is_valid_input
111
+
112
+ @_is_valid_input.setter
113
+ def _is_valid_input(self, value: bool) -> None:
114
+ self.__is_valid_input = value
115
+
98
116
  def on_device_update(self, action: str, content: dict) -> None:
99
117
  """
100
118
  Callback for device update events. Triggers the device_update signal.
@@ -23,8 +23,11 @@ class SignalComboBox(DeviceSignalInputBase, QComboBox):
23
23
  arg_name: Argument name, can be used for the other widgets which has to call some other function in bec using correct argument names.
24
24
  """
25
25
 
26
+ USER_ACCESS = ["set_signal", "set_device", "signals"]
27
+
26
28
  ICON_NAME = "list_alt"
27
29
  PLUGIN = True
30
+ RPC = True
28
31
 
29
32
  device_signal_changed = Signal(str)
30
33
 
@@ -24,9 +24,12 @@ class SignalLineEdit(DeviceSignalInputBase, QLineEdit):
24
24
  arg_name: Argument name, can be used for the other widgets which has to call some other function in bec using correct argument names.
25
25
  """
26
26
 
27
+ USER_ACCESS = ["_is_valid_input", "set_signal", "set_device", "signals"]
28
+
27
29
  device_signal_changed = Signal(str)
28
30
 
29
31
  PLUGIN = True
32
+ RPC = True
30
33
  ICON_NAME = "vital_signs"
31
34
 
32
35
  def __init__(
@@ -41,7 +44,7 @@ class SignalLineEdit(DeviceSignalInputBase, QLineEdit):
41
44
  arg_name: str | None = None,
42
45
  **kwargs,
43
46
  ):
44
- self._is_valid_input = False
47
+ self.__is_valid_input = False
45
48
  super().__init__(parent=parent, client=client, gui_id=gui_id, config=config, **kwargs)
46
49
  self._accent_colors = get_accent_colors()
47
50
  self.completer = QCompleter(self)
@@ -65,8 +68,22 @@ class SignalLineEdit(DeviceSignalInputBase, QLineEdit):
65
68
  self.set_device(device)
66
69
  if default is not None:
67
70
  self.set_signal(default)
68
- self.textChanged.connect(self.validate_device)
69
- self.validate_device(self.text())
71
+ self.textChanged.connect(self.check_validity)
72
+ self.check_validity(self.text())
73
+
74
+ @property
75
+ def _is_valid_input(self) -> bool:
76
+ """
77
+ Check if the current value is a valid device name.
78
+
79
+ Returns:
80
+ bool: True if the current value is a valid device name, False otherwise.
81
+ """
82
+ return self.__is_valid_input
83
+
84
+ @_is_valid_input.setter
85
+ def _is_valid_input(self, value: bool) -> None:
86
+ self.__is_valid_input = value
70
87
 
71
88
  def get_current_device(self) -> object:
72
89
  """
@@ -131,6 +148,9 @@ if __name__ == "__main__": # pragma: no cover
131
148
  from qtpy.QtWidgets import QApplication, QVBoxLayout, QWidget
132
149
 
133
150
  from bec_widgets.utils.colors import set_theme
151
+ from bec_widgets.widgets.control.device_input.device_combobox.device_combobox import (
152
+ DeviceComboBox,
153
+ )
134
154
 
135
155
  app = QApplication([])
136
156
  set_theme("dark")
@@ -138,6 +158,12 @@ if __name__ == "__main__": # pragma: no cover
138
158
  widget.setFixedSize(200, 200)
139
159
  layout = QVBoxLayout()
140
160
  widget.setLayout(layout)
141
- layout.addWidget(SignalLineEdit(device="samx"))
161
+ device_line_edit = DeviceComboBox()
162
+ device_line_edit.filter_to_positioner = True
163
+ signal_line_edit = SignalLineEdit()
164
+ device_line_edit.device_selected.connect(signal_line_edit.set_device)
165
+
166
+ layout.addWidget(device_line_edit)
167
+ layout.addWidget(signal_line_edit)
142
168
  widget.show()
143
169
  app.exec_()
@@ -11,18 +11,31 @@ class ImageProcessingToolbarBundle(ToolbarBundle):
11
11
  super().__init__(bundle_id=bundle_id, actions=[], **kwargs)
12
12
  self.target_widget = target_widget
13
13
 
14
- self.fft = MaterialIconAction(icon_name="fft", tooltip="Toggle FFT", checkable=True)
15
- self.log = MaterialIconAction(icon_name="log_scale", tooltip="Toggle Log", checkable=True)
14
+ self.fft = MaterialIconAction(
15
+ icon_name="fft", tooltip="Toggle FFT", checkable=True, parent=self.target_widget
16
+ )
17
+ self.log = MaterialIconAction(
18
+ icon_name="log_scale", tooltip="Toggle Log", checkable=True, parent=self.target_widget
19
+ )
16
20
  self.transpose = MaterialIconAction(
17
- icon_name="transform", tooltip="Transpose Image", checkable=True
21
+ icon_name="transform",
22
+ tooltip="Transpose Image",
23
+ checkable=True,
24
+ parent=self.target_widget,
18
25
  )
19
26
  self.right = MaterialIconAction(
20
- icon_name="rotate_right", tooltip="Rotate image clockwise by 90 deg"
27
+ icon_name="rotate_right",
28
+ tooltip="Rotate image clockwise by 90 deg",
29
+ parent=self.target_widget,
21
30
  )
22
31
  self.left = MaterialIconAction(
23
- icon_name="rotate_left", tooltip="Rotate image counterclockwise by 90 deg"
32
+ icon_name="rotate_left",
33
+ tooltip="Rotate image counterclockwise by 90 deg",
34
+ parent=self.target_widget,
35
+ )
36
+ self.reset = MaterialIconAction(
37
+ icon_name="reset_settings", tooltip="Reset Image Settings", parent=self.target_widget
24
38
  )
25
- self.reset = MaterialIconAction(icon_name="reset_settings", tooltip="Reset Image Settings")
26
39
 
27
40
  self.add_action("fft", self.fft)
28
41
  self.add_action("log", self.log)
@@ -112,8 +112,10 @@ class PlotBase(BECWidget, QWidget):
112
112
  self.fps_label = QLabel(alignment=Qt.AlignmentFlag.AlignRight)
113
113
  self._user_x_label = ""
114
114
  self._x_label_suffix = ""
115
+ self._x_axis_units = ""
115
116
  self._user_y_label = ""
116
117
  self._y_label_suffix = ""
118
+ self._y_axis_units = ""
117
119
 
118
120
  # Plot Indicator Items
119
121
  self.tick_item = BECTickItem(parent=self, plot_item=self.plot_item)
@@ -473,12 +475,31 @@ class PlotBase(BECWidget, QWidget):
473
475
  self._x_label_suffix = suffix
474
476
  self._apply_x_label()
475
477
 
478
+ @property
479
+ def x_label_units(self) -> str:
480
+ """
481
+ The units of the x-axis.
482
+ """
483
+ return self._x_axis_units
484
+
485
+ @x_label_units.setter
486
+ def x_label_units(self, units: str):
487
+ """
488
+ The units of the x-axis.
489
+
490
+ Args:
491
+ units(str): The units to set.
492
+ """
493
+ self._x_axis_units = units
494
+ self._apply_x_label()
495
+
476
496
  @property
477
497
  def x_label_combined(self) -> str:
478
498
  """
479
- The final label shown on the axis = user portion + suffix.
499
+ The final label shown on the axis = user portion + suffix + [units].
480
500
  """
481
- return self._user_x_label + self._x_label_suffix
501
+ units = f" [{self._x_axis_units}]" if self._x_axis_units else ""
502
+ return self._user_x_label + self._x_label_suffix + units
482
503
 
483
504
  def _apply_x_label(self):
484
505
  """
@@ -521,12 +542,31 @@ class PlotBase(BECWidget, QWidget):
521
542
  self._y_label_suffix = suffix
522
543
  self._apply_y_label()
523
544
 
545
+ @property
546
+ def y_label_units(self) -> str:
547
+ """
548
+ The units of the y-axis.
549
+ """
550
+ return self._y_axis_units
551
+
552
+ @y_label_units.setter
553
+ def y_label_units(self, units: str):
554
+ """
555
+ The units of the y-axis.
556
+
557
+ Args:
558
+ units(str): The units to set.
559
+ """
560
+ self._y_axis_units = units
561
+ self._apply_y_label()
562
+
524
563
  @property
525
564
  def y_label_combined(self) -> str:
526
565
  """
527
- The final y label shown on the axis = user portion + suffix.
566
+ The final y label shown on the axis = user portion + suffix + [units].
528
567
  """
529
- return self._user_y_label + self._y_label_suffix
568
+ units = f" [{self._y_axis_units}]" if self._y_axis_units else ""
569
+ return self._user_y_label + self._y_label_suffix + units
530
570
 
531
571
  def _apply_y_label(self):
532
572
  """
@@ -1468,7 +1468,7 @@ class Waveform(PlotBase):
1468
1468
  x_data = data.get(x_name, {}).get(x_entry, {}).get(access_key, [0])
1469
1469
  else: # history data
1470
1470
  x_data = data.get(x_name, {}).get(x_entry, {}).read().get("value", [0])
1471
- new_suffix = f" [custom: {x_name}-{x_entry}]"
1471
+ new_suffix = f" (custom: {x_name}-{x_entry})"
1472
1472
 
1473
1473
  # 2 User wants timestamp
1474
1474
  if self.x_axis_mode["name"] == "timestamp":
@@ -1477,19 +1477,19 @@ class Waveform(PlotBase):
1477
1477
  else: # history data
1478
1478
  timestamps = data[device_name][device_entry].read().get("timestamp", [0])
1479
1479
  x_data = timestamps
1480
- new_suffix = " [timestamp]"
1480
+ new_suffix = " (timestamp)"
1481
1481
 
1482
1482
  # 3 User wants index
1483
1483
  if self.x_axis_mode["name"] == "index":
1484
1484
  x_data = None
1485
- new_suffix = " [index]"
1485
+ new_suffix = " (index)"
1486
1486
 
1487
1487
  # 4 Best effort automatic mode
1488
1488
  if self.x_axis_mode["name"] is None or self.x_axis_mode["name"] == "auto":
1489
1489
  # 4.1 If there are async curves, use index
1490
1490
  if len(self._async_curves) > 0:
1491
1491
  x_data = None
1492
- new_suffix = " [auto: index]"
1492
+ new_suffix = " (auto: index)"
1493
1493
  # 4.2 If there are sync curves, use the first device from the scan report
1494
1494
  else:
1495
1495
  try:
@@ -1503,7 +1503,7 @@ class Waveform(PlotBase):
1503
1503
  x_data = data.get(x_name, {}).get(x_entry, {}).get(access_key, None)
1504
1504
  else:
1505
1505
  x_data = data.get(x_name, {}).get(x_entry, {}).read().get("value", None)
1506
- new_suffix = f" [auto: {x_name}-{x_entry}]"
1506
+ new_suffix = f" (auto: {x_name}-{x_entry})"
1507
1507
  self._update_x_label_suffix(new_suffix)
1508
1508
  return x_data
1509
1509
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "2.7.0"
7
+ version = "2.8.0"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [
File without changes
File without changes
File without changes
File without changes
File without changes