bec-widgets 1.21.3__tar.gz → 1.21.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 (358) hide show
  1. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/CHANGELOG.md +16 -0
  2. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/PKG-INFO +1 -1
  3. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/qt_utils/round_frame.py +18 -41
  4. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/bec_widget.py +1 -1
  5. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/colors.py +58 -10
  6. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots_next_gen/plot_base.py +52 -17
  7. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots_next_gen/toolbar_bundles/mouse_interactions.py +21 -0
  8. bec_widgets-1.21.4/bec_widgets/widgets/plots_next_gen/toolbar_bundles/roi_bundle.py +26 -0
  9. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/pyproject.toml +1 -1
  10. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/.git_hooks/pre-commit +0 -0
  11. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/.gitignore +0 -0
  12. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/.gitlab/issue_templates/bug_report_template.md +0 -0
  13. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/.gitlab/issue_templates/documentation_update_template.md +0 -0
  14. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/.gitlab/issue_templates/feature_request_template.md +0 -0
  15. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/.gitlab/merge_request_templates/default.md +0 -0
  16. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/.gitlab-ci.yml +0 -0
  17. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/.pylintrc +0 -0
  18. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/.readthedocs.yaml +0 -0
  19. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/LICENSE +0 -0
  20. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/README.md +0 -0
  21. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/__init__.py +0 -0
  22. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/applications/__init__.py +0 -0
  23. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/applications/alignment/__init__.py +0 -0
  24. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/applications/alignment/alignment_1d/__init__.py +0 -0
  25. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/applications/alignment/alignment_1d/alignment_1d.py +0 -0
  26. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/applications/alignment/alignment_1d/alignment_1d.ui +0 -0
  27. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/applications/bec_app.py +0 -0
  28. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
  29. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/assets/app_icons/alignment_1d.png +0 -0
  30. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
  31. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/cli/__init__.py +0 -0
  32. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/cli/auto_updates.py +0 -0
  33. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/cli/client.py +0 -0
  34. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/cli/client_utils.py +0 -0
  35. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/cli/generate_cli.py +0 -0
  36. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/cli/rpc/__init__.py +0 -0
  37. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/cli/rpc/rpc_base.py +0 -0
  38. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/cli/rpc/rpc_register.py +0 -0
  39. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/cli/rpc/rpc_widget_handler.py +0 -0
  40. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/cli/server.py +0 -0
  41. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/examples/__init__.py +0 -0
  42. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/examples/general_app/__init__.py +0 -0
  43. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/examples/general_app/general_app.py +0 -0
  44. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/examples/general_app/general_app.ui +0 -0
  45. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/examples/general_app/web_links.py +0 -0
  46. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  47. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
  48. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
  49. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
  50. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
  51. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
  52. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
  53. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
  54. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
  55. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/qt_utils/__init__.py +0 -0
  56. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/qt_utils/collapsible_panel_manager.py +0 -0
  57. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/qt_utils/compact_popup.py +0 -0
  58. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/qt_utils/error_popups.py +0 -0
  59. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/qt_utils/palette_viewer.py +0 -0
  60. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/qt_utils/redis_message_waiter.py +0 -0
  61. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/qt_utils/settings_dialog.py +0 -0
  62. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/qt_utils/side_panel.py +0 -0
  63. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/qt_utils/toolbar.py +0 -0
  64. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/tests/__init__.py +0 -0
  65. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/tests/utils.py +0 -0
  66. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/__init__.py +0 -0
  67. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/bec_connector.py +0 -0
  68. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/bec_designer.py +0 -0
  69. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/bec_dispatcher.py +0 -0
  70. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/bec_signal_proxy.py +0 -0
  71. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/bec_table.py +0 -0
  72. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/container_utils.py +0 -0
  73. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/crosshair.py +0 -0
  74. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/entry_validator.py +0 -0
  75. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/filter_io.py +0 -0
  76. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/fps_counter.py +0 -0
  77. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/generate_designer_plugin.py +0 -0
  78. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/layout_manager.py +0 -0
  79. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/linear_region_selector.py +0 -0
  80. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/ophyd_kind_util.py +0 -0
  81. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/plot_indicator_items.py +0 -0
  82. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
  83. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/plugin_templates/register.template +0 -0
  84. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/plugin_utils.py +0 -0
  85. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/reference_utils.py +0 -0
  86. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/rpc_decorator.py +0 -0
  87. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/thread_checker.py +0 -0
  88. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/ui_loader.py +0 -0
  89. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/validator_delegate.py +0 -0
  90. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/widget_io.py +0 -0
  91. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/widget_state_manager.py +0 -0
  92. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/utils/yaml_dialog.py +0 -0
  93. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/__init__.py +0 -0
  94. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/__init__.py +0 -0
  95. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/dock/__init__.py +0 -0
  96. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/dock/dock.py +0 -0
  97. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/dock/dock_area.py +0 -0
  98. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/dock/dock_area.pyproject +0 -0
  99. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/dock/dock_area_plugin.py +0 -0
  100. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/dock/register_dock_area.py +0 -0
  101. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/figure/__init__.py +0 -0
  102. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/figure/figure.py +0 -0
  103. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/figure/plots/__init__.py +0 -0
  104. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/figure/plots/axis_settings.py +0 -0
  105. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/figure/plots/axis_settings.ui +0 -0
  106. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/figure/plots/image/__init__.py +0 -0
  107. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/figure/plots/image/image.py +0 -0
  108. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/figure/plots/image/image_item.py +0 -0
  109. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/figure/plots/image/image_processor.py +0 -0
  110. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/figure/plots/motor_map/__init__.py +0 -0
  111. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/figure/plots/motor_map/motor_map.py +0 -0
  112. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/figure/plots/multi_waveform/__init__.py +0 -0
  113. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/figure/plots/multi_waveform/multi_waveform.py +0 -0
  114. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/figure/plots/plot_base.py +0 -0
  115. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/figure/plots/waveform/__init__.py +0 -0
  116. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/figure/plots/waveform/waveform.py +0 -0
  117. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/figure/plots/waveform/waveform_curve.py +0 -0
  118. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/layout_manager/__init__.py +0 -0
  119. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/layout_manager/layout_manager.py +0 -0
  120. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/main_window/__init__.py +0 -0
  121. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/containers/main_window/main_window.py +0 -0
  122. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/__init__.py +0 -0
  123. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/__init__.py +0 -0
  124. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/button_abort/__init__.py +0 -0
  125. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/button_abort/abort_button.pyproject +0 -0
  126. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/button_abort/abort_button_plugin.py +0 -0
  127. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/button_abort/button_abort.py +0 -0
  128. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/button_abort/register_abort_button.py +0 -0
  129. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/button_reset/__init__.py +0 -0
  130. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/button_reset/button_reset.py +0 -0
  131. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/button_reset/register_reset_button.py +0 -0
  132. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/button_reset/reset_button.pyproject +0 -0
  133. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/button_reset/reset_button_plugin.py +0 -0
  134. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/button_resume/__init__.py +0 -0
  135. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/button_resume/button_resume.py +0 -0
  136. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/button_resume/register_resume_button.py +0 -0
  137. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/button_resume/resume_button.pyproject +0 -0
  138. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/button_resume/resume_button_plugin.py +0 -0
  139. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/stop_button/__init__.py +0 -0
  140. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/stop_button/register_stop_button.py +0 -0
  141. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/stop_button/stop_button.py +0 -0
  142. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/stop_button/stop_button.pyproject +0 -0
  143. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/buttons/stop_button/stop_button_plugin.py +0 -0
  144. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/__init__.py +0 -0
  145. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/position_indicator/__init__.py +0 -0
  146. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.py +0 -0
  147. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.pyproject +0 -0
  148. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator_plugin.py +0 -0
  149. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/position_indicator/register_position_indicator.py +0 -0
  150. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/__init__.py +0 -0
  151. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/_base/__init__.py +0 -0
  152. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py +0 -0
  153. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/__init__.py +0 -0
  154. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py +0 -0
  155. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.pyproject +0 -0
  156. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.ui +0 -0
  157. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box_plugin.py +0 -0
  158. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/register_positioner_box.py +0 -0
  159. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/__init__.py +0 -0
  160. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d.pyproject +0 -0
  161. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d_plugin.py +0 -0
  162. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py +0 -0
  163. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.ui +0 -0
  164. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/register_positioner_box2_d.py +0 -0
  165. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.py +0 -0
  166. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.pyproject +0 -0
  167. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.ui +0 -0
  168. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line_plugin.py +0 -0
  169. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/register_positioner_control_line.py +0 -0
  170. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_group/__init__.py +0 -0
  171. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.py +0 -0
  172. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.pyproject +0 -0
  173. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group_plugin.py +0 -0
  174. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_control/positioner_group/register_positioner_group.py +0 -0
  175. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/__init__.py +0 -0
  176. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/base_classes/__init__.py +0 -0
  177. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py +0 -0
  178. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py +0 -0
  179. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/device_combobox/__init__.py +0 -0
  180. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box.pyproject +0 -0
  181. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box_plugin.py +0 -0
  182. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py +0 -0
  183. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/device_combobox/register_device_combo_box.py +0 -0
  184. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/device_line_edit/__init__.py +0 -0
  185. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.py +0 -0
  186. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.pyproject +0 -0
  187. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit_plugin.py +0 -0
  188. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/device_line_edit/register_device_line_edit.py +0 -0
  189. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/signal_combobox/__init__.py +0 -0
  190. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/signal_combobox/register_signal_combo_box.py +0 -0
  191. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box.pyproject +0 -0
  192. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box_plugin.py +0 -0
  193. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.py +0 -0
  194. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/signal_line_edit/__init__.py +0 -0
  195. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/signal_line_edit/register_signal_line_edit.py +0 -0
  196. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.py +0 -0
  197. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.pyproject +0 -0
  198. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit_plugin.py +0 -0
  199. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/scan_control/__init__.py +0 -0
  200. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/scan_control/register_scan_control.py +0 -0
  201. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/scan_control/scan_control.py +0 -0
  202. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/scan_control/scan_control.pyproject +0 -0
  203. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/scan_control/scan_control_plugin.py +0 -0
  204. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/control/scan_control/scan_group_box.py +0 -0
  205. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/dap/__init__.py +0 -0
  206. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/dap/dap_combo_box/__init__.py +0 -0
  207. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py +0 -0
  208. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.pyproject +0 -0
  209. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box_plugin.py +0 -0
  210. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/dap/dap_combo_box/register_dap_combo_box.py +0 -0
  211. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/dap/lmfit_dialog/__init__.py +0 -0
  212. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
  213. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
  214. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py +0 -0
  215. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
  216. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
  217. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/dap/lmfit_dialog/register_lm_fit_dialog.py +0 -0
  218. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/__init__.py +0 -0
  219. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/console/__init__.py +0 -0
  220. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/console/console.py +0 -0
  221. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/console/console.pyproject +0 -0
  222. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/console/console_plugin.py +0 -0
  223. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/console/register_console.py +0 -0
  224. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/jupyter_console/__init__.py +0 -0
  225. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/jupyter_console/jupyter_console.py +0 -0
  226. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/scan_metadata/__init__.py +0 -0
  227. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/scan_metadata/_metadata_widgets.py +0 -0
  228. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/scan_metadata/_util.py +0 -0
  229. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/scan_metadata/additional_metadata_table.py +0 -0
  230. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py +0 -0
  231. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/text_box/__init__.py +0 -0
  232. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/text_box/register_text_box.py +0 -0
  233. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/text_box/text_box.py +0 -0
  234. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/text_box/text_box.pyproject +0 -0
  235. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/text_box/text_box_plugin.py +0 -0
  236. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/vscode/__init__.py +0 -0
  237. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/vscode/register_vs_code_editor.py +0 -0
  238. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/vscode/vs_code_editor.pyproject +0 -0
  239. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/vscode/vs_code_editor_plugin.py +0 -0
  240. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/vscode/vscode.py +0 -0
  241. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/website/__init__.py +0 -0
  242. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/website/register_website_widget.py +0 -0
  243. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/website/website.py +0 -0
  244. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/website/website_widget.pyproject +0 -0
  245. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/editors/website/website_widget_plugin.py +0 -0
  246. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/games/__init__.py +0 -0
  247. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/games/minesweeper.py +0 -0
  248. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/games/minesweeper.pyproject +0 -0
  249. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/games/minesweeper_plugin.py +0 -0
  250. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/games/register_minesweeper.py +0 -0
  251. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/__init__.py +0 -0
  252. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/image/__init__.py +0 -0
  253. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/image/bec_image_widget.pyproject +0 -0
  254. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/image/bec_image_widget_plugin.py +0 -0
  255. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/image/image_widget.py +0 -0
  256. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/image/register_bec_image_widget.py +0 -0
  257. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/motor_map/__init__.py +0 -0
  258. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/motor_map/bec_motor_map_widget.pyproject +0 -0
  259. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/motor_map/bec_motor_map_widget_plugin.py +0 -0
  260. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/motor_map/motor_map_dialog/__init__.py +0 -0
  261. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/motor_map/motor_map_dialog/motor_map_settings.py +0 -0
  262. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/motor_map/motor_map_dialog/motor_map_settings.ui +0 -0
  263. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/motor_map/motor_map_widget.py +0 -0
  264. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/motor_map/register_bec_motor_map_widget.py +0 -0
  265. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/multi_waveform/__init__.py +0 -0
  266. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/multi_waveform/bec_multi_waveform_widget.pyproject +0 -0
  267. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/multi_waveform/bec_multi_waveform_widget_plugin.py +0 -0
  268. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/multi_waveform/multi_waveform_controls.ui +0 -0
  269. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/multi_waveform/multi_waveform_widget.py +0 -0
  270. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/multi_waveform/register_bec_multi_waveform_widget.py +0 -0
  271. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/waveform/__init__.py +0 -0
  272. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/waveform/bec_waveform_widget.pyproject +0 -0
  273. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/waveform/bec_waveform_widget_plugin.py +0 -0
  274. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/waveform/register_bec_waveform_widget.py +0 -0
  275. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/waveform/waveform_popups/__init__.py +0 -0
  276. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/waveform/waveform_popups/curve_dialog/__init__.py +0 -0
  277. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/waveform/waveform_popups/curve_dialog/curve_dialog.py +0 -0
  278. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/waveform/waveform_popups/curve_dialog/curve_dialog.ui +0 -0
  279. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/waveform/waveform_popups/dap_summary_dialog/__init__.py +0 -0
  280. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py +0 -0
  281. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots/waveform/waveform_widget.py +0 -0
  282. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots_next_gen/setting_menus/__init__.py +0 -0
  283. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots_next_gen/setting_menus/axis_settings.py +0 -0
  284. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots_next_gen/setting_menus/axis_settings_horizontal.ui +0 -0
  285. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots_next_gen/setting_menus/axis_settings_vertical.ui +0 -0
  286. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots_next_gen/toolbar_bundles/__init__.py +0 -0
  287. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots_next_gen/toolbar_bundles/plot_export.py +0 -0
  288. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/plots_next_gen/toolbar_bundles/save_state.py +0 -0
  289. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/progress/__init__.py +0 -0
  290. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/progress/bec_progressbar/__init__.py +0 -0
  291. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar.pyproject +0 -0
  292. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar_plugin.py +0 -0
  293. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/progress/bec_progressbar/bec_progressbar.py +0 -0
  294. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/progress/bec_progressbar/register_bec_progress_bar.py +0 -0
  295. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/progress/ring_progress_bar/__init__.py +0 -0
  296. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/progress/ring_progress_bar/register_ring_progress_bar.py +0 -0
  297. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/progress/ring_progress_bar/ring.py +0 -0
  298. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py +0 -0
  299. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.pyproject +0 -0
  300. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
  301. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/__init__.py +0 -0
  302. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/bec_queue/__init__.py +0 -0
  303. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/bec_queue/bec_queue.py +0 -0
  304. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/bec_queue/bec_queue.pyproject +0 -0
  305. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/bec_queue/bec_queue_plugin.py +0 -0
  306. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/bec_queue/register_bec_queue.py +0 -0
  307. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/bec_status_box/__init__.py +0 -0
  308. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/bec_status_box/bec_status_box.py +0 -0
  309. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/bec_status_box/bec_status_box.pyproject +0 -0
  310. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/bec_status_box/bec_status_box_plugin.py +0 -0
  311. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/bec_status_box/register_bec_status_box.py +0 -0
  312. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/bec_status_box/status_item.py +0 -0
  313. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/device_browser/__init__.py +0 -0
  314. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/device_browser/device_browser.py +0 -0
  315. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/device_browser/device_browser.pyproject +0 -0
  316. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/device_browser/device_browser.ui +0 -0
  317. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/device_browser/device_browser_plugin.py +0 -0
  318. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/device_browser/device_item/__init__.py +0 -0
  319. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/device_browser/device_item/device_item.py +0 -0
  320. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/services/device_browser/register_device_browser.py +0 -0
  321. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/__init__.py +0 -0
  322. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/logpanel/__init__.py +0 -0
  323. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/logpanel/_util.py +0 -0
  324. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/logpanel/log_panel.pyproject +0 -0
  325. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/logpanel/log_panel_plugin.py +0 -0
  326. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/logpanel/logpanel.py +0 -0
  327. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/logpanel/register_log_panel.py +0 -0
  328. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/spinner/__init__.py +0 -0
  329. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/spinner/register_spinner_widget.py +0 -0
  330. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/spinner/spinner.py +0 -0
  331. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/spinner/spinner_widget.pyproject +0 -0
  332. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/spinner/spinner_widget_plugin.py +0 -0
  333. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/toggle/__init__.py +0 -0
  334. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/toggle/register_toggle_switch.py +0 -0
  335. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/toggle/toggle.py +0 -0
  336. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/toggle/toggle_switch.pyproject +0 -0
  337. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/toggle/toggle_switch_plugin.py +0 -0
  338. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/__init__.py +0 -0
  339. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/color_button/__init__.py +0 -0
  340. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/color_button/color_button.py +0 -0
  341. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/color_button/color_button.pyproject +0 -0
  342. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/color_button/color_button_plugin.py +0 -0
  343. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/color_button/register_color_button.py +0 -0
  344. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/colormap_selector/__init__.py +0 -0
  345. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.py +0 -0
  346. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.pyproject +0 -0
  347. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector_plugin.py +0 -0
  348. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/colormap_selector/register_colormap_selector.py +0 -0
  349. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/colormap_widget/__init__.py +0 -0
  350. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget.pyproject +0 -0
  351. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget_plugin.py +0 -0
  352. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py +0 -0
  353. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/colormap_widget/register_bec_color_map_widget.py +0 -0
  354. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/dark_mode_button/__init__.py +0 -0
  355. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py +0 -0
  356. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.pyproject +0 -0
  357. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button_plugin.py +0 -0
  358. {bec_widgets-1.21.3 → bec_widgets-1.21.4}/bec_widgets/widgets/utility/visual/dark_mode_button/register_dark_mode_button.py +0 -0
@@ -1,6 +1,22 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v1.21.4 (2025-02-19)
5
+
6
+ ### Bug Fixes
7
+
8
+ - **colors**: Pyqtgraph styling updated on the app level
9
+ ([`ae18279`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ae182796855719437bdf911c2e969e3f438d6982))
10
+
11
+ - **plot_base**: Mouse interactions default state fetch to toolbar
12
+ ([`97c0ed5`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/97c0ed53df21053fef9811c3dea3b79020137030))
13
+
14
+ ### Refactoring
15
+
16
+ - **plot_base**: Change the PlotWidget to GraphicalLayoutWidget
17
+ ([`ff8e282`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ff8e282034f0970b69cf0447fc5f88b4f30bf470))
18
+
19
+
4
20
  ## v1.21.3 (2025-02-19)
5
21
 
6
22
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bec_widgets
3
- Version: 1.21.3
3
+ Version: 1.21.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
@@ -1,6 +1,6 @@
1
1
  import pyqtgraph as pg
2
2
  from qtpy.QtCore import Property
3
- from qtpy.QtWidgets import QApplication, QFrame, QVBoxLayout, QWidget
3
+ from qtpy.QtWidgets import QApplication, QFrame, QHBoxLayout, QVBoxLayout, QWidget
4
4
 
5
5
  from bec_widgets.utils.bec_widget import BECWidget
6
6
  from bec_widgets.widgets.utility.visual.dark_mode_button.dark_mode_button import DarkModeButton
@@ -31,22 +31,20 @@ class RoundedFrame(BECWidget, QFrame):
31
31
  # Apply rounded frame styling
32
32
  self.setProperty("skip_settings", True)
33
33
  self.setObjectName("roundedFrame")
34
- self.update_style()
35
34
 
36
35
  # Create a layout for the frame
37
- layout = QVBoxLayout(self)
38
- layout.setContentsMargins(5, 5, 5, 5) # Set 5px margin
36
+ self.layout = QHBoxLayout(self)
37
+ self.layout.setContentsMargins(5, 5, 5, 5) # Set 5px margin
39
38
 
40
39
  # Add the content widget to the layout
41
40
  if content_widget:
42
- layout.addWidget(content_widget)
41
+ self.layout.addWidget(content_widget)
43
42
 
44
43
  # Store reference to the content widget
45
44
  self.content_widget = content_widget
46
45
 
47
- # Automatically apply initial styles to the PlotWidget if applicable
48
- if isinstance(content_widget, pg.PlotWidget):
49
- self.apply_plot_widget_style()
46
+ # Automatically apply initial styles to the GraphicalLayoutWidget if applicable
47
+ self.apply_plot_widget_style()
50
48
 
51
49
  self._connect_to_theme_change()
52
50
 
@@ -65,10 +63,6 @@ class RoundedFrame(BECWidget, QFrame):
65
63
 
66
64
  self.update_style()
67
65
 
68
- # Update PlotWidget's background color and axis styles if applicable
69
- if isinstance(self.content_widget, pg.PlotWidget):
70
- self.apply_plot_widget_style()
71
-
72
66
  @Property(int)
73
67
  def radius(self):
74
68
  """Radius of the rounded corners."""
@@ -92,6 +86,7 @@ class RoundedFrame(BECWidget, QFrame):
92
86
  }}
93
87
  """
94
88
  )
89
+ self.apply_plot_widget_style()
95
90
 
96
91
  def apply_plot_widget_style(self, border: str = "none"):
97
92
  """
@@ -100,35 +95,16 @@ class RoundedFrame(BECWidget, QFrame):
100
95
  Args:
101
96
  border (str): Border style (e.g., 'none', '1px solid red').
102
97
  """
103
- if isinstance(self.content_widget, pg.PlotWidget):
104
- # Sync PlotWidget's background color with the RoundedFrame's background color
105
- self.content_widget.setBackground(self.background_color)
106
-
107
- # Calculate contrast-optimized axis and label colors
108
- if self.background_color == "#e9ecef": # Light mode
109
- label_color = "#000000"
110
- axis_color = "#666666"
111
- else: # Dark mode
112
- label_color = "#FFFFFF"
113
- axis_color = "#CCCCCC"
114
-
115
- # Apply axis label and tick colors
116
- plot_item = self.content_widget.getPlotItem()
117
- for axis in ["left", "right", "top", "bottom"]:
118
- plot_item.getAxis(axis).setPen(pg.mkPen(color=axis_color))
119
- plot_item.getAxis(axis).setTextPen(pg.mkPen(color=label_color))
120
-
121
- # Change title color
122
- plot_item.titleLabel.setText(plot_item.titleLabel.text, color=label_color)
123
-
98
+ if isinstance(self.content_widget, pg.GraphicsLayoutWidget):
124
99
  # Apply border style via stylesheet
125
100
  self.content_widget.setStyleSheet(
126
101
  f"""
127
- PlotWidget {{
102
+ GraphicsLayoutWidget {{
128
103
  border: {border}; /* Explicitly set the border */
129
104
  }}
130
105
  """
131
106
  )
107
+ self.content_widget.setBackground(self.background_color)
132
108
 
133
109
 
134
110
  class ExampleApp(QWidget): # pragma: no cover
@@ -142,26 +118,27 @@ class ExampleApp(QWidget): # pragma: no cover
142
118
  dark_button = DarkModeButton()
143
119
 
144
120
  # Create PlotWidgets
145
- plot1 = pg.PlotWidget()
146
- plot1.plot([1, 3, 2, 4, 6, 5], pen="r")
121
+ plot1 = pg.GraphicsLayoutWidget()
122
+ plot_item_1 = pg.PlotItem()
123
+ plot_item_1.plot([1, 3, 2, 4, 6, 5], pen="r")
124
+ plot1.plot_item = plot_item_1
147
125
 
148
- plot2 = pg.PlotWidget()
149
- plot2.plot([1, 2, 4, 8, 16, 32], pen="r")
126
+ plot2 = pg.GraphicsLayoutWidget()
127
+ plot_item_2 = pg.PlotItem()
128
+ plot_item_2.plot([1, 2, 4, 8, 16, 32], pen="r")
129
+ plot2.plot_item = plot_item_2
150
130
 
151
131
  # Wrap PlotWidgets in RoundedFrame
152
132
  rounded_plot1 = RoundedFrame(content_widget=plot1, theme_update=True)
153
133
  rounded_plot2 = RoundedFrame(content_widget=plot2, theme_update=True)
154
- round = RoundedFrame()
155
134
 
156
135
  # Add to layout
157
136
  layout.addWidget(dark_button)
158
137
  layout.addWidget(rounded_plot1)
159
138
  layout.addWidget(rounded_plot2)
160
- layout.addWidget(round)
161
139
 
162
140
  self.setLayout(layout)
163
141
 
164
- # Simulate theme change after 2 seconds
165
142
  from qtpy.QtCore import QTimer
166
143
 
167
144
  def change_theme():
@@ -66,7 +66,7 @@ class BECWidget(BECConnector):
66
66
  if hasattr(qapp, "theme_signal"):
67
67
  qapp.theme_signal.theme_updated.connect(self._update_theme)
68
68
 
69
- def _update_theme(self, theme: str):
69
+ def _update_theme(self, theme: str | None = None):
70
70
  """Update the theme."""
71
71
  if theme is None:
72
72
  qapp = QApplication.instance()
@@ -1,6 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- import itertools
4
3
  import re
5
4
  from typing import TYPE_CHECKING, Literal
6
5
 
@@ -71,15 +70,64 @@ def apply_theme(theme: Literal["dark", "light"]):
71
70
  Apply the theme to all pyqtgraph widgets. Do not use this function directly. Use set_theme instead.
72
71
  """
73
72
  app = QApplication.instance()
74
- # go through all pyqtgraph widgets and set background
75
- children = itertools.chain.from_iterable(
76
- top.findChildren(pg.GraphicsLayoutWidget) for top in app.topLevelWidgets()
77
- )
78
- pg.setConfigOptions(
79
- foreground="d" if theme == "dark" else "k", background="k" if theme == "dark" else "w"
80
- )
81
- for pg_widget in children:
82
- pg_widget.setBackground("k" if theme == "dark" else "w")
73
+ graphic_layouts = [
74
+ child
75
+ for top in app.topLevelWidgets()
76
+ for child in top.findChildren(pg.GraphicsLayoutWidget)
77
+ ]
78
+
79
+ plot_items = [
80
+ item
81
+ for gl in graphic_layouts
82
+ for item in gl.ci.items.keys() # ci is internal pg.GraphicsLayout that hosts all items
83
+ if isinstance(item, pg.PlotItem)
84
+ ]
85
+
86
+ histograms = [
87
+ item
88
+ for gl in graphic_layouts
89
+ for item in gl.ci.items.keys() # ci is internal pg.GraphicsLayout that hosts all items
90
+ if isinstance(item, pg.HistogramLUTItem)
91
+ ]
92
+
93
+ # Update background color based on the theme
94
+ if theme == "light":
95
+ background_color = "#e9ecef" # Subtle contrast for light mode
96
+ foreground_color = "#141414"
97
+ label_color = "#000000"
98
+ axis_color = "#666666"
99
+ else:
100
+ background_color = "#141414" # Dark mode
101
+ foreground_color = "#e9ecef"
102
+ label_color = "#FFFFFF"
103
+ axis_color = "#CCCCCC"
104
+
105
+ # update GraphicsLayoutWidget
106
+ pg.setConfigOptions(foreground=foreground_color, background=background_color)
107
+ for pg_widget in graphic_layouts:
108
+ pg_widget.setBackground(background_color)
109
+
110
+ # update PlotItems
111
+ for plot_item in plot_items:
112
+ for axis in ["left", "right", "top", "bottom"]:
113
+ plot_item.getAxis(axis).setPen(pg.mkPen(color=axis_color))
114
+ plot_item.getAxis(axis).setTextPen(pg.mkPen(color=label_color))
115
+
116
+ # Change title color
117
+ plot_item.titleLabel.setText(plot_item.titleLabel.text, color=label_color)
118
+
119
+ # Change legend color
120
+ if hasattr(plot_item, "legend") and plot_item.legend is not None:
121
+ plot_item.legend.setLabelTextColor(label_color)
122
+ # if legend is in plot item and theme is changed, has to be like that because of pg opt logic
123
+ for sample, label in plot_item.legend.items:
124
+ label_text = label.text
125
+ label.setText(label_text, color=label_color)
126
+
127
+ # update HistogramLUTItem
128
+ for histogram in histograms:
129
+ histogram.axis.setPen(pg.mkPen(color=axis_color))
130
+ histogram.axis.setTextPen(pg.mkPen(color=label_color))
83
131
 
84
132
  # now define stylesheet according to theme and apply it
85
133
  style = bec_qthemes.load_stylesheet(theme)
@@ -11,7 +11,6 @@ from bec_widgets.qt_utils.side_panel import SidePanel
11
11
  from bec_widgets.qt_utils.toolbar import MaterialIconAction, ModularToolBar, SeparatorAction
12
12
  from bec_widgets.utils import ConnectionConfig, Crosshair, EntryValidator
13
13
  from bec_widgets.utils.bec_widget import BECWidget
14
- from bec_widgets.utils.colors import set_theme
15
14
  from bec_widgets.utils.fps_counter import FPSCounter
16
15
  from bec_widgets.utils.widget_state_manager import WidgetStateManager
17
16
  from bec_widgets.widgets.containers.layout_manager.layout_manager import LayoutManagerWidget
@@ -20,7 +19,7 @@ from bec_widgets.widgets.plots_next_gen.toolbar_bundles.mouse_interactions impor
20
19
  MouseInteractionToolbarBundle,
21
20
  )
22
21
  from bec_widgets.widgets.plots_next_gen.toolbar_bundles.plot_export import PlotExportBundle
23
- from bec_widgets.widgets.plots_next_gen.toolbar_bundles.save_state import SaveStateBundle
22
+ from bec_widgets.widgets.plots_next_gen.toolbar_bundles.roi_bundle import ROIBundle
24
23
  from bec_widgets.widgets.utility.visual.dark_mode_button.dark_mode_button import DarkModeButton
25
24
 
26
25
  logger = bec_logger.logger
@@ -83,8 +82,9 @@ class PlotBase(BECWidget, QWidget):
83
82
  self.entry_validator = EntryValidator(self.dev)
84
83
 
85
84
  # Base widgets elements
85
+ self.plot_widget = pg.GraphicsLayoutWidget(parent=self)
86
86
  self.plot_item = pg.PlotItem(viewBox=BECViewBox(enableMenu=True))
87
- self.plot_widget = pg.PlotWidget(plotItem=self.plot_item)
87
+ self.plot_widget.addItem(self.plot_item)
88
88
  self.side_panel = SidePanel(self, orientation="left", panel_max_width=280)
89
89
  self.toolbar = ModularToolBar(target_widget=self, orientation="horizontal")
90
90
  self.init_toolbar()
@@ -94,13 +94,20 @@ class PlotBase(BECWidget, QWidget):
94
94
  self.crosshair = None
95
95
  self.fps_monitor = None
96
96
  self.fps_label = QLabel(alignment=Qt.AlignmentFlag.AlignRight)
97
+ self._user_x_label = ""
98
+ self._x_label_suffix = ""
97
99
 
98
100
  self._init_ui()
99
101
 
102
+ self._connect_to_theme_change()
103
+ self._update_theme()
104
+
105
+ def apply_theme(self, theme: str):
106
+ self.round_plot_widget.apply_theme(theme)
107
+
100
108
  def _init_ui(self):
101
109
  self.layout.addWidget(self.layout_manager)
102
110
  self.round_plot_widget = RoundedFrame(content_widget=self.plot_widget, theme_update=True)
103
- self.round_plot_widget.apply_theme("dark")
104
111
 
105
112
  self.layout_manager.add_widget(self.round_plot_widget)
106
113
  self.layout_manager.add_widget_relative(self.fps_label, self.round_plot_widget, "top")
@@ -117,19 +124,15 @@ class PlotBase(BECWidget, QWidget):
117
124
 
118
125
  self.plot_export_bundle = PlotExportBundle("plot_export", target_widget=self)
119
126
  self.mouse_bundle = MouseInteractionToolbarBundle("mouse_interaction", target_widget=self)
120
- self.state_export_bundle = SaveStateBundle("state_export", target_widget=self)
127
+ # self.state_export_bundle = SaveStateBundle("state_export", target_widget=self) #TODO ATM disabled, cannot be used in DockArea, which is exposed to the user
128
+ self.roi_bundle = ROIBundle("roi", target_widget=self)
121
129
 
122
130
  # Add elements to toolbar
123
131
  self.toolbar.add_bundle(self.plot_export_bundle, target_widget=self)
124
- self.toolbar.add_bundle(self.state_export_bundle, target_widget=self)
132
+ # self.toolbar.add_bundle(self.state_export_bundle, target_widget=self) #TODO ATM disabled, cannot be used in DockArea, which is exposed to the user
125
133
  self.toolbar.add_bundle(self.mouse_bundle, target_widget=self)
134
+ self.toolbar.add_bundle(self.roi_bundle, target_widget=self)
126
135
 
127
- self.toolbar.add_action("separator_0", SeparatorAction(), target_widget=self)
128
- self.toolbar.add_action(
129
- "crosshair",
130
- MaterialIconAction(icon_name="point_scan", tooltip="Show Crosshair", checkable=True),
131
- target_widget=self,
132
- )
133
136
  self.toolbar.add_action("separator_1", SeparatorAction(), target_widget=self)
134
137
  self.toolbar.add_action(
135
138
  "fps_monitor",
@@ -141,7 +144,6 @@ class PlotBase(BECWidget, QWidget):
141
144
  self.toolbar.widgets["fps_monitor"].action.toggled.connect(
142
145
  lambda checked: setattr(self, "enable_fps_monitor", checked)
143
146
  )
144
- self.toolbar.widgets["crosshair"].action.toggled.connect(self.toggle_crosshair)
145
147
 
146
148
  def add_side_menus(self):
147
149
  """Adds multiple menus to the side panel."""
@@ -256,12 +258,45 @@ class PlotBase(BECWidget, QWidget):
256
258
 
257
259
  @SafeProperty(str, doc="The text of the x label")
258
260
  def x_label(self) -> str:
259
- return self.plot_item.getAxis("bottom").labelText
261
+ return self._user_x_label
260
262
 
261
263
  @x_label.setter
262
264
  def x_label(self, value: str):
263
- self.plot_item.setLabel("bottom", text=value)
264
- self.property_changed.emit("x_label", value)
265
+ self._user_x_label = value
266
+ self._apply_x_label()
267
+ self.property_changed.emit("x_label", self._user_x_label)
268
+
269
+ @property
270
+ def x_label_suffix(self) -> str:
271
+ """
272
+ A read-only (or internal) suffix automatically appended to the user label.
273
+ Not settable by the user directly from the UI.
274
+ """
275
+ return self._x_label_suffix
276
+
277
+ def set_x_label_suffix(self, suffix: str):
278
+ """
279
+ Public or protected method to update the suffix.
280
+ The user code or subclass (Waveform) can call this
281
+ when x_mode changes, but the AxisSettings won't show it.
282
+ """
283
+ self._x_label_suffix = suffix
284
+ self._apply_x_label()
285
+
286
+ @property
287
+ def x_label_combined(self) -> str:
288
+ """
289
+ The final label shown on the axis = user portion + suffix.
290
+ """
291
+ return self._user_x_label + self._x_label_suffix
292
+
293
+ def _apply_x_label(self):
294
+ """
295
+ Actually updates the pyqtgraph axis label text to
296
+ the combined label. Called whenever user label or suffix changes.
297
+ """
298
+ final_label = self.x_label_combined
299
+ self.plot_item.setLabel("bottom", text=final_label)
265
300
 
266
301
  @SafeProperty(str, doc="The text of the y label")
267
302
  def y_label(self) -> str:
@@ -545,6 +580,7 @@ class PlotBase(BECWidget, QWidget):
545
580
  self.unhook_crosshair()
546
581
  self.unhook_fps_monitor(delete_label=True)
547
582
  self.cleanup_pyqtgraph()
583
+ self.rpc_register.remove_rpc(self)
548
584
 
549
585
  def cleanup_pyqtgraph(self):
550
586
  """Cleanup pyqtgraph items."""
@@ -561,7 +597,6 @@ if __name__ == "__main__": # pragma: no cover:
561
597
  from qtpy.QtWidgets import QApplication
562
598
 
563
599
  app = QApplication(sys.argv)
564
- set_theme("dark")
565
600
  widget = PlotBase()
566
601
  widget.show()
567
602
  # Just some example data and parameters to test
@@ -55,6 +55,27 @@ class MouseInteractionToolbarBundle(ToolbarBundle):
55
55
  auto.action.triggered.connect(self.autorange_plot)
56
56
  aspect_ratio.action.toggled.connect(self.lock_aspect_ratio)
57
57
 
58
+ mode = self.get_viewbox_mode()
59
+ if mode == "PanMode":
60
+ drag.action.setChecked(True)
61
+ elif mode == "RectMode":
62
+ rect.action.setChecked(True)
63
+
64
+ def get_viewbox_mode(self) -> str:
65
+ """
66
+ Returns the current interaction mode of a PyQtGraph ViewBox.
67
+
68
+ Returns:
69
+ str: "PanMode" if pan is enabled, "RectMode" if zoom is enabled, "Unknown" otherwise.
70
+ """
71
+ if self.target_widget:
72
+ viewbox = self.target_widget.plot_item.getViewBox()
73
+ if viewbox.getState()["mouseMode"] == 3:
74
+ return "PanMode"
75
+ elif viewbox.getState()["mouseMode"] == 1:
76
+ return "RectMode"
77
+ return "Unknown"
78
+
58
79
  @SafeSlot(bool)
59
80
  def enable_mouse_rectangle_mode(self, checked: bool):
60
81
  """
@@ -0,0 +1,26 @@
1
+ from bec_widgets.qt_utils.toolbar import MaterialIconAction, ToolbarBundle
2
+
3
+
4
+ class ROIBundle(ToolbarBundle):
5
+ """
6
+ A bundle of actions that are hooked in this constructor itself,
7
+ so that you can immediately connect the signals and toggle states.
8
+
9
+ This bundle is for a toolbar that controls crosshair and ROI interaction.
10
+ """
11
+
12
+ def __init__(self, bundle_id="roi", target_widget=None, **kwargs):
13
+ super().__init__(bundle_id=bundle_id, actions=[], **kwargs)
14
+ self.target_widget = target_widget
15
+
16
+ # Create each MaterialIconAction with a parent
17
+ # so the signals can fire even if the toolbar isn't added yet.
18
+ crosshair = MaterialIconAction(
19
+ icon_name="point_scan", tooltip="Show Crosshair", checkable=True
20
+ )
21
+
22
+ # Add them to the bundle
23
+ self.add_action("crosshair", crosshair)
24
+
25
+ # Immediately connect signals
26
+ crosshair.action.toggled.connect(self.target_widget.toggle_crosshair)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "1.21.3"
7
+ version = "1.21.4"
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