bec-widgets 2.8.3__tar.gz → 2.8.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 (406) hide show
  1. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/CHANGELOG.md +9 -0
  2. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/PKG-INFO +1 -1
  3. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/cli/client.py +56 -0
  4. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/crosshair.py +72 -9
  5. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/image/image.py +2 -0
  6. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.py +2 -0
  7. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/plot_base.py +27 -1
  8. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.py +2 -0
  9. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/setting_menus/axis_settings.py +3 -0
  10. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/setting_menus/axis_settings_horizontal.ui +111 -88
  11. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/setting_menus/axis_settings_vertical.ui +74 -43
  12. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/waveform/waveform.py +2 -0
  13. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/pyproject.toml +1 -1
  14. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.git_hooks/pre-commit +0 -0
  15. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  16. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.github/ISSUE_TEMPLATE/documentation_update.md +0 -0
  17. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  18. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.github/actions/bw_install/action.yml +0 -0
  19. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.github/pull_request_template.md +0 -0
  20. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.github/scripts/pr_issue_sync/pr_issue_sync.py +0 -0
  21. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.github/scripts/pr_issue_sync/requirements.txt +0 -0
  22. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.github/workflows/check_pr.yml +0 -0
  23. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.github/workflows/ci.yml +0 -0
  24. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.github/workflows/end2end-conda.yml +0 -0
  25. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.github/workflows/formatter.yml +0 -0
  26. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.github/workflows/generate-cli-check.yml +0 -0
  27. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.github/workflows/pytest-matrix.yml +0 -0
  28. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.github/workflows/pytest.yml +0 -0
  29. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.github/workflows/semantic_release.yml +0 -0
  30. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.github/workflows/sync-issues-pr.yml +0 -0
  31. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.gitignore +0 -0
  32. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.gitlab-ci.yml +0 -0
  33. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.pylintrc +0 -0
  34. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/.readthedocs.yaml +0 -0
  35. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/LICENSE +0 -0
  36. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/README.md +0 -0
  37. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/__init__.py +0 -0
  38. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/applications/__init__.py +0 -0
  39. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/applications/bw_launch.py +0 -0
  40. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/applications/launch_window.py +0 -0
  41. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
  42. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/assets/app_icons/alignment_1d.png +0 -0
  43. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/assets/app_icons/auto_update.png +0 -0
  44. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
  45. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/assets/app_icons/ui_loader_tile.png +0 -0
  46. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/assets/app_icons/widget_launch_tile.png +0 -0
  47. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/cli/__init__.py +0 -0
  48. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/cli/client_utils.py +0 -0
  49. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/cli/generate_cli.py +0 -0
  50. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/cli/rpc/__init__.py +0 -0
  51. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/cli/rpc/rpc_base.py +0 -0
  52. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/cli/rpc/rpc_register.py +0 -0
  53. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/cli/rpc/rpc_widget_handler.py +0 -0
  54. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/cli/server.py +0 -0
  55. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/examples/__init__.py +0 -0
  56. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/examples/general_app/__init__.py +0 -0
  57. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/examples/general_app/general_app.py +0 -0
  58. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/examples/general_app/general_app.ui +0 -0
  59. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/examples/general_app/web_links.py +0 -0
  60. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  61. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
  62. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
  63. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
  64. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
  65. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
  66. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
  67. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
  68. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
  69. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/tests/__init__.py +0 -0
  70. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/tests/utils.py +0 -0
  71. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/__init__.py +0 -0
  72. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/bec_connector.py +0 -0
  73. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/bec_designer.py +0 -0
  74. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/bec_dispatcher.py +0 -0
  75. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/bec_plugin_helper.py +0 -0
  76. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/bec_signal_proxy.py +0 -0
  77. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/bec_table.py +0 -0
  78. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/bec_widget.py +0 -0
  79. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/collapsible_panel_manager.py +0 -0
  80. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/colors.py +0 -0
  81. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/compact_popup.py +0 -0
  82. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/container_utils.py +0 -0
  83. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/entry_validator.py +0 -0
  84. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/error_popups.py +0 -0
  85. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/expandable_frame.py +0 -0
  86. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/filter_io.py +0 -0
  87. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/forms_from_types/__init__.py +0 -0
  88. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/forms_from_types/forms.py +0 -0
  89. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/forms_from_types/items.py +0 -0
  90. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/fps_counter.py +0 -0
  91. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/generate_designer_plugin.py +0 -0
  92. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/layout_manager.py +0 -0
  93. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/linear_region_selector.py +0 -0
  94. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/name_utils.py +0 -0
  95. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/ophyd_kind_util.py +0 -0
  96. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/palette_viewer.py +0 -0
  97. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/plot_indicator_items.py +0 -0
  98. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
  99. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/plugin_templates/register.template +0 -0
  100. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/plugin_utils.py +0 -0
  101. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/redis_message_waiter.py +0 -0
  102. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/reference_utils.py +0 -0
  103. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/round_frame.py +0 -0
  104. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/rpc_decorator.py +0 -0
  105. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/rpc_server.py +0 -0
  106. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/serialization.py +0 -0
  107. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/settings_dialog.py +0 -0
  108. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/side_panel.py +0 -0
  109. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/thread_checker.py +0 -0
  110. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/toolbar.py +0 -0
  111. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/ui_loader.py +0 -0
  112. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/validator_delegate.py +0 -0
  113. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/widget_io.py +0 -0
  114. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/widget_state_manager.py +0 -0
  115. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/utils/yaml_dialog.py +0 -0
  116. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/__init__.py +0 -0
  117. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/containers/__init__.py +0 -0
  118. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/containers/auto_update/__init__.py +0 -0
  119. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/containers/auto_update/auto_updates.py +0 -0
  120. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/containers/dock/__init__.py +0 -0
  121. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/containers/dock/dock.py +0 -0
  122. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/containers/dock/dock_area.py +0 -0
  123. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/containers/dock/dock_area.pyproject +0 -0
  124. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/containers/dock/dock_area_plugin.py +0 -0
  125. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/containers/dock/register_dock_area.py +0 -0
  126. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/containers/layout_manager/__init__.py +0 -0
  127. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/containers/layout_manager/layout_manager.py +0 -0
  128. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/containers/main_window/__init__.py +0 -0
  129. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/containers/main_window/addons/__init__.py +0 -0
  130. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/containers/main_window/addons/web_links.py +0 -0
  131. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/containers/main_window/main_window.py +0 -0
  132. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/__init__.py +0 -0
  133. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/__init__.py +0 -0
  134. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/button_abort/__init__.py +0 -0
  135. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/button_abort/abort_button.pyproject +0 -0
  136. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/button_abort/abort_button_plugin.py +0 -0
  137. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/button_abort/button_abort.py +0 -0
  138. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/button_abort/register_abort_button.py +0 -0
  139. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/button_reset/__init__.py +0 -0
  140. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/button_reset/button_reset.py +0 -0
  141. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/button_reset/register_reset_button.py +0 -0
  142. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/button_reset/reset_button.pyproject +0 -0
  143. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/button_reset/reset_button_plugin.py +0 -0
  144. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/button_resume/__init__.py +0 -0
  145. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/button_resume/button_resume.py +0 -0
  146. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/button_resume/register_resume_button.py +0 -0
  147. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/button_resume/resume_button.pyproject +0 -0
  148. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/button_resume/resume_button_plugin.py +0 -0
  149. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/stop_button/__init__.py +0 -0
  150. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/stop_button/register_stop_button.py +0 -0
  151. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/stop_button/stop_button.py +0 -0
  152. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/stop_button/stop_button.pyproject +0 -0
  153. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/buttons/stop_button/stop_button_plugin.py +0 -0
  154. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/__init__.py +0 -0
  155. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/position_indicator/__init__.py +0 -0
  156. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.py +0 -0
  157. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.pyproject +0 -0
  158. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator_plugin.py +0 -0
  159. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/position_indicator/register_position_indicator.py +0 -0
  160. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/__init__.py +0 -0
  161. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/_base/__init__.py +0 -0
  162. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py +0 -0
  163. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/__init__.py +0 -0
  164. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py +0 -0
  165. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.pyproject +0 -0
  166. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.ui +0 -0
  167. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box_plugin.py +0 -0
  168. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/register_positioner_box.py +0 -0
  169. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/__init__.py +0 -0
  170. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d.pyproject +0 -0
  171. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d_plugin.py +0 -0
  172. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py +0 -0
  173. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.ui +0 -0
  174. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/register_positioner_box2_d.py +0 -0
  175. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.py +0 -0
  176. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.pyproject +0 -0
  177. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.ui +0 -0
  178. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line_plugin.py +0 -0
  179. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/register_positioner_control_line.py +0 -0
  180. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_group/__init__.py +0 -0
  181. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.py +0 -0
  182. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.pyproject +0 -0
  183. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group_plugin.py +0 -0
  184. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_control/positioner_group/register_positioner_group.py +0 -0
  185. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/__init__.py +0 -0
  186. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/base_classes/__init__.py +0 -0
  187. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py +0 -0
  188. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py +0 -0
  189. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/device_combobox/__init__.py +0 -0
  190. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box.pyproject +0 -0
  191. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box_plugin.py +0 -0
  192. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py +0 -0
  193. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/device_combobox/register_device_combo_box.py +0 -0
  194. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/device_line_edit/__init__.py +0 -0
  195. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.py +0 -0
  196. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.pyproject +0 -0
  197. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit_plugin.py +0 -0
  198. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/device_line_edit/register_device_line_edit.py +0 -0
  199. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/signal_combobox/__init__.py +0 -0
  200. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/signal_combobox/register_signal_combo_box.py +0 -0
  201. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box.pyproject +0 -0
  202. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box_plugin.py +0 -0
  203. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.py +0 -0
  204. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/signal_line_edit/__init__.py +0 -0
  205. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/signal_line_edit/register_signal_line_edit.py +0 -0
  206. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.py +0 -0
  207. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.pyproject +0 -0
  208. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit_plugin.py +0 -0
  209. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/scan_control/__init__.py +0 -0
  210. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/scan_control/register_scan_control.py +0 -0
  211. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/scan_control/scan_control.py +0 -0
  212. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/scan_control/scan_control.pyproject +0 -0
  213. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/scan_control/scan_control_plugin.py +0 -0
  214. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/control/scan_control/scan_group_box.py +0 -0
  215. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/dap/__init__.py +0 -0
  216. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/dap/dap_combo_box/__init__.py +0 -0
  217. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py +0 -0
  218. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.pyproject +0 -0
  219. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box_plugin.py +0 -0
  220. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/dap/dap_combo_box/register_dap_combo_box.py +0 -0
  221. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/dap/lmfit_dialog/__init__.py +0 -0
  222. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
  223. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
  224. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py +0 -0
  225. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
  226. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
  227. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/dap/lmfit_dialog/register_lm_fit_dialog.py +0 -0
  228. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/__init__.py +0 -0
  229. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/console/__init__.py +0 -0
  230. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/console/console.py +0 -0
  231. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/console/console.pyproject +0 -0
  232. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/console/console_plugin.py +0 -0
  233. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/console/register_console.py +0 -0
  234. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/dict_backed_table.py +0 -0
  235. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/jupyter_console/__init__.py +0 -0
  236. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/jupyter_console/jupyter_console.py +0 -0
  237. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/scan_metadata/__init__.py +0 -0
  238. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/scan_metadata/_util.py +0 -0
  239. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/scan_metadata/register_scan_metadata.py +0 -0
  240. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py +0 -0
  241. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.pyproject +0 -0
  242. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/scan_metadata/scan_metadata_plugin.py +0 -0
  243. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/text_box/__init__.py +0 -0
  244. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/text_box/register_text_box.py +0 -0
  245. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/text_box/text_box.py +0 -0
  246. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/text_box/text_box.pyproject +0 -0
  247. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/text_box/text_box_plugin.py +0 -0
  248. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/vscode/__init__.py +0 -0
  249. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/vscode/register_vs_code_editor.py +0 -0
  250. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/vscode/vs_code_editor.pyproject +0 -0
  251. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/vscode/vs_code_editor_plugin.py +0 -0
  252. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/vscode/vscode.py +0 -0
  253. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/web_console/register_web_console.py +0 -0
  254. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/web_console/web_console.py +0 -0
  255. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/web_console/web_console.pyproject +0 -0
  256. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/web_console/web_console_plugin.py +0 -0
  257. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/website/__init__.py +0 -0
  258. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/website/register_website_widget.py +0 -0
  259. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/website/website.py +0 -0
  260. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/website/website_widget.pyproject +0 -0
  261. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/editors/website/website_widget_plugin.py +0 -0
  262. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/games/__init__.py +0 -0
  263. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/games/minesweeper.py +0 -0
  264. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/games/minesweeper.pyproject +0 -0
  265. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/games/minesweeper_plugin.py +0 -0
  266. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/games/register_minesweeper.py +0 -0
  267. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/__init__.py +0 -0
  268. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/image/__init__.py +0 -0
  269. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/image/image.pyproject +0 -0
  270. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/image/image_item.py +0 -0
  271. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/image/image_plugin.py +0 -0
  272. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/image/image_processor.py +0 -0
  273. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/image/image_roi_plot.py +0 -0
  274. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/image/register_image.py +0 -0
  275. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/image/setting_widgets/__init__.py +0 -0
  276. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/image/setting_widgets/image_roi_tree.py +0 -0
  277. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/image/toolbar_bundles/__init__.py +0 -0
  278. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/image/toolbar_bundles/image_selection.py +0 -0
  279. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/image/toolbar_bundles/processing.py +0 -0
  280. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/motor_map/__init__.py +0 -0
  281. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/motor_map/motor_map.py +0 -0
  282. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/motor_map/motor_map.pyproject +0 -0
  283. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/motor_map/motor_map_plugin.py +0 -0
  284. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/motor_map/register_motor_map.py +0 -0
  285. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/motor_map/settings/__init__.py +0 -0
  286. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.py +0 -0
  287. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.ui +0 -0
  288. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/motor_map/toolbar_bundles/__init__.py +0 -0
  289. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/motor_map/toolbar_bundles/motor_selection.py +0 -0
  290. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/multi_waveform/__init__.py +0 -0
  291. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.pyproject +0 -0
  292. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/multi_waveform/multi_waveform_plugin.py +0 -0
  293. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/multi_waveform/register_multi_waveform.py +0 -0
  294. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/multi_waveform/settings/__init__.py +0 -0
  295. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/multi_waveform/settings/control_panel.py +0 -0
  296. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/multi_waveform/settings/multi_waveform_controls.ui +0 -0
  297. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles/__init__.py +0 -0
  298. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles/monitor_selection.py +0 -0
  299. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/roi/__init__.py +0 -0
  300. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/roi/image_roi.py +0 -0
  301. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/scatter_waveform/__init__.py +0 -0
  302. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/scatter_waveform/register_scatter_waveform.py +0 -0
  303. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/scatter_waveform/scatter_curve.py +0 -0
  304. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.pyproject +0 -0
  305. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform_plugin.py +0 -0
  306. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/scatter_waveform/settings/__init__.py +0 -0
  307. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_setting.py +0 -0
  308. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_horizontal.ui +0 -0
  309. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_vertical.ui +0 -0
  310. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/setting_menus/__init__.py +0 -0
  311. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/toolbar_bundles/__init__.py +0 -0
  312. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/toolbar_bundles/mouse_interactions.py +0 -0
  313. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/toolbar_bundles/plot_export.py +0 -0
  314. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/toolbar_bundles/roi_bundle.py +0 -0
  315. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/toolbar_bundles/save_state.py +0 -0
  316. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/waveform/__init__.py +0 -0
  317. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/waveform/curve.py +0 -0
  318. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/waveform/register_waveform.py +0 -0
  319. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/waveform/settings/__init__.py +0 -0
  320. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/waveform/settings/curve_settings/__init__.py +0 -0
  321. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_setting.py +0 -0
  322. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_tree.py +0 -0
  323. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/waveform/utils/__init__.py +0 -0
  324. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/waveform/utils/roi_manager.py +0 -0
  325. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/waveform/waveform.pyproject +0 -0
  326. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/plots/waveform/waveform_plugin.py +0 -0
  327. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/progress/__init__.py +0 -0
  328. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/progress/bec_progressbar/__init__.py +0 -0
  329. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar.pyproject +0 -0
  330. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar_plugin.py +0 -0
  331. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/progress/bec_progressbar/bec_progressbar.py +0 -0
  332. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/progress/bec_progressbar/register_bec_progress_bar.py +0 -0
  333. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/progress/ring_progress_bar/__init__.py +0 -0
  334. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/progress/ring_progress_bar/register_ring_progress_bar.py +0 -0
  335. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/progress/ring_progress_bar/ring.py +0 -0
  336. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py +0 -0
  337. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.pyproject +0 -0
  338. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
  339. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/__init__.py +0 -0
  340. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/bec_queue/__init__.py +0 -0
  341. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/bec_queue/bec_queue.py +0 -0
  342. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/bec_queue/bec_queue.pyproject +0 -0
  343. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/bec_queue/bec_queue_plugin.py +0 -0
  344. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/bec_queue/register_bec_queue.py +0 -0
  345. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/bec_status_box/__init__.py +0 -0
  346. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/bec_status_box/bec_status_box.py +0 -0
  347. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/bec_status_box/bec_status_box.pyproject +0 -0
  348. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/bec_status_box/bec_status_box_plugin.py +0 -0
  349. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/bec_status_box/register_bec_status_box.py +0 -0
  350. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/bec_status_box/status_item.py +0 -0
  351. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/device_browser/__init__.py +0 -0
  352. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/device_browser/device_browser.py +0 -0
  353. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/device_browser/device_browser.pyproject +0 -0
  354. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/device_browser/device_browser.ui +0 -0
  355. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/device_browser/device_browser_plugin.py +0 -0
  356. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/device_browser/device_item/__init__.py +0 -0
  357. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/device_browser/device_item/device_item.py +0 -0
  358. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/services/device_browser/register_device_browser.py +0 -0
  359. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/__init__.py +0 -0
  360. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/logpanel/__init__.py +0 -0
  361. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/logpanel/_util.py +0 -0
  362. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/logpanel/log_panel.pyproject +0 -0
  363. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/logpanel/log_panel_plugin.py +0 -0
  364. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/logpanel/logpanel.py +0 -0
  365. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/logpanel/register_log_panel.py +0 -0
  366. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/spinbox/__init__.py +0 -0
  367. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/spinbox/bec_spin_box.pyproject +0 -0
  368. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/spinbox/bec_spin_box_plugin.py +0 -0
  369. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/spinbox/decimal_spinbox.py +0 -0
  370. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/spinbox/register_bec_spin_box.py +0 -0
  371. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/spinner/__init__.py +0 -0
  372. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/spinner/register_spinner_widget.py +0 -0
  373. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/spinner/spinner.py +0 -0
  374. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/spinner/spinner_widget.pyproject +0 -0
  375. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/spinner/spinner_widget_plugin.py +0 -0
  376. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/toggle/__init__.py +0 -0
  377. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/toggle/register_toggle_switch.py +0 -0
  378. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/toggle/toggle.py +0 -0
  379. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/toggle/toggle_switch.pyproject +0 -0
  380. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/toggle/toggle_switch_plugin.py +0 -0
  381. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/__init__.py +0 -0
  382. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/color_button/__init__.py +0 -0
  383. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/color_button/color_button.py +0 -0
  384. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/color_button/color_button.pyproject +0 -0
  385. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/color_button/color_button_plugin.py +0 -0
  386. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/color_button/register_color_button.py +0 -0
  387. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/color_button_native/__init__.py +0 -0
  388. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.py +0 -0
  389. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.pyproject +0 -0
  390. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native_plugin.py +0 -0
  391. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/color_button_native/register_color_button_native.py +0 -0
  392. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/colormap_selector/__init__.py +0 -0
  393. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.py +0 -0
  394. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.pyproject +0 -0
  395. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector_plugin.py +0 -0
  396. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/colormap_selector/register_colormap_selector.py +0 -0
  397. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/colormap_widget/__init__.py +0 -0
  398. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget.pyproject +0 -0
  399. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget_plugin.py +0 -0
  400. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py +0 -0
  401. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/colormap_widget/register_bec_color_map_widget.py +0 -0
  402. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/dark_mode_button/__init__.py +0 -0
  403. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py +0 -0
  404. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.pyproject +0 -0
  405. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button_plugin.py +0 -0
  406. {bec_widgets-2.8.3 → bec_widgets-2.8.4}/bec_widgets/widgets/utility/visual/dark_mode_button/register_dark_mode_button.py +0 -0
@@ -1,6 +1,15 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v2.8.4 (2025-05-30)
5
+
6
+ ### Bug Fixes
7
+
8
+ - **crosshair**: Label decimal precision is dynamically scaled with the plot zoom; API of all
9
+ affected widgets adjusted; option added to PlotBase; closes #637
10
+ ([`c8128fa`](https://github.com/bec-project/bec_widgets/commit/c8128faf79c43487921aada9dbf1869ef5bda93c))
11
+
12
+
4
13
  ## v2.8.3 (2025-05-30)
5
14
 
6
15
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bec_widgets
3
- Version: 2.8.3
3
+ Version: 2.8.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
@@ -1221,6 +1221,20 @@ class Image(RPCBase):
1221
1221
  Set auto range for the y-axis.
1222
1222
  """
1223
1223
 
1224
+ @property
1225
+ @rpc_call
1226
+ def minimal_crosshair_precision(self) -> "int":
1227
+ """
1228
+ Minimum decimal places for crosshair when dynamic precision is enabled.
1229
+ """
1230
+
1231
+ @minimal_crosshair_precision.setter
1232
+ @rpc_call
1233
+ def minimal_crosshair_precision(self) -> "int":
1234
+ """
1235
+ Minimum decimal places for crosshair when dynamic precision is enabled.
1236
+ """
1237
+
1224
1238
  @property
1225
1239
  @rpc_call
1226
1240
  def color_map(self) -> "str":
@@ -2350,6 +2364,20 @@ class MultiWaveform(RPCBase):
2350
2364
  The font size of the legend font.
2351
2365
  """
2352
2366
 
2367
+ @property
2368
+ @rpc_call
2369
+ def minimal_crosshair_precision(self) -> "int":
2370
+ """
2371
+ Minimum decimal places for crosshair when dynamic precision is enabled.
2372
+ """
2373
+
2374
+ @minimal_crosshair_precision.setter
2375
+ @rpc_call
2376
+ def minimal_crosshair_precision(self) -> "int":
2377
+ """
2378
+ Minimum decimal places for crosshair when dynamic precision is enabled.
2379
+ """
2380
+
2353
2381
  @property
2354
2382
  @rpc_call
2355
2383
  def highlighted_index(self):
@@ -3315,6 +3343,20 @@ class ScatterWaveform(RPCBase):
3315
3343
  The font size of the legend font.
3316
3344
  """
3317
3345
 
3346
+ @property
3347
+ @rpc_call
3348
+ def minimal_crosshair_precision(self) -> "int":
3349
+ """
3350
+ Minimum decimal places for crosshair when dynamic precision is enabled.
3351
+ """
3352
+
3353
+ @minimal_crosshair_precision.setter
3354
+ @rpc_call
3355
+ def minimal_crosshair_precision(self) -> "int":
3356
+ """
3357
+ Minimum decimal places for crosshair when dynamic precision is enabled.
3358
+ """
3359
+
3318
3360
  @property
3319
3361
  @rpc_call
3320
3362
  def main_curve(self) -> "ScatterCurve":
@@ -3789,6 +3831,20 @@ class Waveform(RPCBase):
3789
3831
  The font size of the legend font.
3790
3832
  """
3791
3833
 
3834
+ @property
3835
+ @rpc_call
3836
+ def minimal_crosshair_precision(self) -> "int":
3837
+ """
3838
+ Minimum decimal places for crosshair when dynamic precision is enabled.
3839
+ """
3840
+
3841
+ @minimal_crosshair_precision.setter
3842
+ @rpc_call
3843
+ def minimal_crosshair_precision(self) -> "int":
3844
+ """
3845
+ Minimum decimal places for crosshair when dynamic precision is enabled.
3846
+ """
3847
+
3792
3848
  @property
3793
3849
  @rpc_call
3794
3850
  def curves(self) -> "list[Curve]":
@@ -34,13 +34,21 @@ class Crosshair(QObject):
34
34
  coordinatesChanged2D = Signal(tuple)
35
35
  coordinatesClicked2D = Signal(tuple)
36
36
 
37
- def __init__(self, plot_item: pg.PlotItem, precision: int = 3, parent=None):
37
+ def __init__(
38
+ self,
39
+ plot_item: pg.PlotItem,
40
+ precision: int | None = None,
41
+ *,
42
+ min_precision: int = 2,
43
+ parent=None,
44
+ ):
38
45
  """
39
46
  Crosshair for 1D and 2D plots.
40
47
 
41
48
  Args:
42
49
  plot_item (pyqtgraph.PlotItem): The plot item to which the crosshair will be attached.
43
- precision (int, optional): Number of decimal places to round the coordinates to. Defaults to None.
50
+ precision (int | None, optional): Fixed number of decimal places to display. If *None*, precision is chosen dynamically from the current view range.
51
+ min_precision (int, optional): The lower bound (in decimal places) used when dynamic precision is enabled. Defaults to 2.
44
52
  parent (QObject, optional): Parent object for the QObject. Defaults to None.
45
53
  """
46
54
  super().__init__(parent)
@@ -48,7 +56,9 @@ class Crosshair(QObject):
48
56
  self.is_log_x = None
49
57
  self.is_derivative = None
50
58
  self.plot_item = plot_item
51
- self.precision = precision
59
+ self._precision = precision
60
+ self._min_precision = max(0, int(min_precision)) # ensure non‑negative
61
+
52
62
  self.v_line = pg.InfiniteLine(angle=90, movable=False)
53
63
  self.v_line.skip_auto_range = True
54
64
  self.h_line = pg.InfiniteLine(angle=0, movable=False)
@@ -93,6 +103,56 @@ class Crosshair(QObject):
93
103
 
94
104
  self._connect_to_theme_change()
95
105
 
106
+ @property
107
+ def precision(self) -> int | None:
108
+ """Fixed number of decimals; ``None`` enables dynamic mode."""
109
+ return self._precision
110
+
111
+ @precision.setter
112
+ def precision(self, value: int | None):
113
+ """
114
+ Set the fixed number of decimals to display.
115
+
116
+ Args:
117
+ value(int | None): The number of decimals to display. If `None`, dynamic precision is used based on the view range.
118
+ """
119
+ self._precision = value
120
+
121
+ @property
122
+ def min_precision(self) -> int:
123
+ """Lower bound on decimals when dynamic precision is used."""
124
+ return self._min_precision
125
+
126
+ @min_precision.setter
127
+ def min_precision(self, value: int):
128
+ """
129
+ Set the lower bound on decimals when dynamic precision is used.
130
+
131
+ Args:
132
+ value(int): The minimum number of decimals to display. Must be non-negative.
133
+ """
134
+ self._min_precision = max(0, int(value))
135
+
136
+ def _current_precision(self) -> int:
137
+ """
138
+ Get the current precision based on the view range or fixed precision.
139
+ """
140
+ if self._precision is not None:
141
+ return self._precision
142
+
143
+ # Dynamically choose precision from the smaller visible span
144
+ view_range = self.plot_item.vb.viewRange()
145
+ x_span = abs(view_range[0][1] - view_range[0][0])
146
+ y_span = abs(view_range[1][1] - view_range[1][0])
147
+
148
+ # Ignore zero spans that can appear during initialisation
149
+ spans = [s for s in (x_span, y_span) if s > 0]
150
+ span = min(spans) if spans else 1.0
151
+
152
+ exponent = np.floor(np.log10(span)) # order of magnitude
153
+ decimals = max(0, int(-exponent) + 1)
154
+ return max(self._min_precision, decimals)
155
+
96
156
  def _connect_to_theme_change(self):
97
157
  """Connect to the theme change signal."""
98
158
  qapp = QApplication.instance()
@@ -324,6 +384,7 @@ class Crosshair(QObject):
324
384
  # not sure how we got here, but just to be safe...
325
385
  return
326
386
 
387
+ precision = self._current_precision()
327
388
  for item in self.items:
328
389
  if isinstance(item, pg.PlotDataItem):
329
390
  name = item.name() or str(id(item))
@@ -334,8 +395,8 @@ class Crosshair(QObject):
334
395
  x_snapped_scaled, y_snapped_scaled = self.scale_emitted_coordinates(x, y)
335
396
  coordinate_to_emit = (
336
397
  name,
337
- round(x_snapped_scaled, self.precision),
338
- round(y_snapped_scaled, self.precision),
398
+ round(x_snapped_scaled, precision),
399
+ round(y_snapped_scaled, precision),
339
400
  )
340
401
  self.coordinatesChanged1D.emit(coordinate_to_emit)
341
402
  elif isinstance(item, pg.ImageItem):
@@ -380,6 +441,7 @@ class Crosshair(QObject):
380
441
  # not sure how we got here, but just to be safe...
381
442
  return
382
443
 
444
+ precision = self._current_precision()
383
445
  for item in self.items:
384
446
  if isinstance(item, pg.PlotDataItem):
385
447
  name = item.name() or str(id(item))
@@ -391,8 +453,8 @@ class Crosshair(QObject):
391
453
  x_snapped_scaled, y_snapped_scaled = self.scale_emitted_coordinates(x, y)
392
454
  coordinate_to_emit = (
393
455
  name,
394
- round(x_snapped_scaled, self.precision),
395
- round(y_snapped_scaled, self.precision),
456
+ round(x_snapped_scaled, precision),
457
+ round(y_snapped_scaled, precision),
396
458
  )
397
459
  self.coordinatesClicked1D.emit(coordinate_to_emit)
398
460
  elif isinstance(item, pg.ImageItem):
@@ -443,7 +505,8 @@ class Crosshair(QObject):
443
505
  """
444
506
  x, y = pos
445
507
  x_scaled, y_scaled = self.scale_emitted_coordinates(x, y)
446
- text = f"({x_scaled:.{self.precision}g}, {y_scaled:.{self.precision}g})"
508
+ precision = self._current_precision()
509
+ text = f"({x_scaled:.{precision}f}, {y_scaled:.{precision}f})"
447
510
  for item in self.items:
448
511
  if isinstance(item, pg.ImageItem):
449
512
  image = item.image
@@ -452,7 +515,7 @@ class Crosshair(QObject):
452
515
  ix = int(np.clip(x, 0, image.shape[0] - 1))
453
516
  iy = int(np.clip(y, 0, image.shape[1] - 1))
454
517
  intensity = image[ix, iy]
455
- text += f"\nIntensity: {intensity:.{self.precision}g}"
518
+ text += f"\nIntensity: {intensity:.{precision}f}"
456
519
  break
457
520
  # Update coordinate label
458
521
  self.coord_label.setText(text)
@@ -88,6 +88,8 @@ class Image(PlotBase):
88
88
  "auto_range_x.setter",
89
89
  "auto_range_y",
90
90
  "auto_range_y.setter",
91
+ "minimal_crosshair_precision",
92
+ "minimal_crosshair_precision.setter",
91
93
  # ImageView Specific Settings
92
94
  "color_map",
93
95
  "color_map.setter",
@@ -91,6 +91,8 @@ class MultiWaveform(PlotBase):
91
91
  "y_log.setter",
92
92
  "legend_label_size",
93
93
  "legend_label_size.setter",
94
+ "minimal_crosshair_precision",
95
+ "minimal_crosshair_precision.setter",
94
96
  # MultiWaveform Specific RPC Access
95
97
  "highlighted_index",
96
98
  "highlighted_index.setter",
@@ -116,6 +116,7 @@ class PlotBase(BECWidget, QWidget):
116
116
  self._user_y_label = ""
117
117
  self._y_label_suffix = ""
118
118
  self._y_axis_units = ""
119
+ self._minimal_crosshair_precision = 3
119
120
 
120
121
  # Plot Indicator Items
121
122
  self.tick_item = BECTickItem(parent=self, plot_item=self.plot_item)
@@ -978,7 +979,9 @@ class PlotBase(BECWidget, QWidget):
978
979
  def hook_crosshair(self) -> None:
979
980
  """Hook the crosshair to all plots."""
980
981
  if self.crosshair is None:
981
- self.crosshair = Crosshair(self.plot_item, precision=3)
982
+ self.crosshair = Crosshair(
983
+ self.plot_item, min_precision=self._minimal_crosshair_precision
984
+ )
982
985
  self.crosshair.crosshairChanged.connect(self.crosshair_position_changed)
983
986
  self.crosshair.crosshairClicked.connect(self.crosshair_position_clicked)
984
987
  self.crosshair.coordinatesChanged1D.connect(self.crosshair_coordinates_changed)
@@ -1006,6 +1009,29 @@ class PlotBase(BECWidget, QWidget):
1006
1009
 
1007
1010
  self.unhook_crosshair()
1008
1011
 
1012
+ @SafeProperty(
1013
+ int, doc="Minimum decimal places for crosshair when dynamic precision is enabled."
1014
+ )
1015
+ def minimal_crosshair_precision(self) -> int:
1016
+ """
1017
+ Minimum decimal places for crosshair when dynamic precision is enabled.
1018
+ """
1019
+ return self._minimal_crosshair_precision
1020
+
1021
+ @minimal_crosshair_precision.setter
1022
+ def minimal_crosshair_precision(self, value: int):
1023
+ """
1024
+ Set the minimum decimal places for crosshair when dynamic precision is enabled.
1025
+
1026
+ Args:
1027
+ value(int): The minimum decimal places to set.
1028
+ """
1029
+ value_int = max(0, int(value))
1030
+ self._minimal_crosshair_precision = value_int
1031
+ if self.crosshair is not None:
1032
+ self.crosshair.min_precision = value_int
1033
+ self.property_changed.emit("minimal_crosshair_precision", value_int)
1034
+
1009
1035
  @SafeSlot()
1010
1036
  def reset(self) -> None:
1011
1037
  """Reset the plot widget."""
@@ -82,6 +82,8 @@ class ScatterWaveform(PlotBase):
82
82
  "y_log.setter",
83
83
  "legend_label_size",
84
84
  "legend_label_size.setter",
85
+ "minimal_crosshair_precision",
86
+ "minimal_crosshair_precision.setter",
85
87
  # Scatter Waveform Specific RPC Access
86
88
  "main_curve",
87
89
  "color_map",
@@ -60,6 +60,7 @@ class AxisSettings(SettingWidget):
60
60
  self.ui.y_grid,
61
61
  self.ui.inner_axes,
62
62
  self.ui.outer_axes,
63
+ self.ui.minimal_crosshair_precision,
63
64
  ]:
64
65
  WidgetIO.connect_widget_change_signal(widget, self.set_property)
65
66
 
@@ -121,6 +122,7 @@ class AxisSettings(SettingWidget):
121
122
  self.ui.y_max,
122
123
  self.ui.y_log,
123
124
  self.ui.y_grid,
125
+ self.ui.minimal_crosshair_precision,
124
126
  ]:
125
127
  property_name = widget.objectName()
126
128
  value = getattr(self.target_widget, property_name)
@@ -144,6 +146,7 @@ class AxisSettings(SettingWidget):
144
146
  self.ui.y_grid,
145
147
  self.ui.outer_axes,
146
148
  self.ui.inner_axes,
149
+ self.ui.minimal_crosshair_precision,
147
150
  ]:
148
151
  property_name = widget.objectName()
149
152
  value = WidgetIO.get_value(widget)
@@ -14,21 +14,78 @@
14
14
  <string>Form</string>
15
15
  </property>
16
16
  <layout class="QGridLayout" name="gridLayout">
17
- <item row="1" column="0">
18
- <widget class="QLabel" name="label">
19
- <property name="text">
20
- <string>Inner Axes</string>
21
- </property>
22
- </widget>
23
- </item>
24
- <item row="1" column="1">
25
- <widget class="ToggleSwitch" name="inner_axes"/>
26
- </item>
27
- <item row="1" column="2">
28
- <widget class="QLabel" name="label_outer_axes">
29
- <property name="text">
30
- <string>Outer Axes</string>
17
+ <item row="2" column="2" colspan="2">
18
+ <widget class="QGroupBox" name="y_axis_box">
19
+ <property name="title">
20
+ <string>Y Axis</string>
31
21
  </property>
22
+ <layout class="QGridLayout" name="gridLayout_5">
23
+ <item row="1" column="0" colspan="2">
24
+ <widget class="QLabel" name="y_min_label">
25
+ <property name="text">
26
+ <string>Min</string>
27
+ </property>
28
+ </widget>
29
+ </item>
30
+ <item row="0" column="2">
31
+ <widget class="QLineEdit" name="y_label"/>
32
+ </item>
33
+ <item row="3" column="0">
34
+ <widget class="QLabel" name="y_scale_label">
35
+ <property name="text">
36
+ <string>Log</string>
37
+ </property>
38
+ </widget>
39
+ </item>
40
+ <item row="0" column="0">
41
+ <widget class="QLabel" name="y_label_label">
42
+ <property name="text">
43
+ <string>Label</string>
44
+ </property>
45
+ </widget>
46
+ </item>
47
+ <item row="2" column="0">
48
+ <widget class="QLabel" name="y_max_label">
49
+ <property name="text">
50
+ <string>Max</string>
51
+ </property>
52
+ </widget>
53
+ </item>
54
+ <item row="4" column="0">
55
+ <widget class="QLabel" name="y_grid_label">
56
+ <property name="text">
57
+ <string>Grid</string>
58
+ </property>
59
+ </widget>
60
+ </item>
61
+ <item row="3" column="2">
62
+ <widget class="ToggleSwitch" name="y_log">
63
+ <property name="checked" stdset="0">
64
+ <bool>false</bool>
65
+ </property>
66
+ </widget>
67
+ </item>
68
+ <item row="4" column="2">
69
+ <widget class="ToggleSwitch" name="y_grid">
70
+ <property name="checked" stdset="0">
71
+ <bool>false</bool>
72
+ </property>
73
+ </widget>
74
+ </item>
75
+ <item row="1" column="2">
76
+ <widget class="BECSpinBox" name="y_min">
77
+ <property name="alignment">
78
+ <set>Qt::AlignmentFlag::AlignCenter</set>
79
+ </property>
80
+ <property name="buttonSymbols">
81
+ <enum>QAbstractSpinBox::ButtonSymbols::UpDownArrows</enum>
82
+ </property>
83
+ </widget>
84
+ </item>
85
+ <item row="2" column="2">
86
+ <widget class="BECSpinBox" name="y_max"/>
87
+ </item>
88
+ </layout>
32
89
  </widget>
33
90
  </item>
34
91
  <item row="1" column="3">
@@ -38,6 +95,13 @@
38
95
  </property>
39
96
  </widget>
40
97
  </item>
98
+ <item row="1" column="0">
99
+ <widget class="QLabel" name="label">
100
+ <property name="text">
101
+ <string>Inner Axes</string>
102
+ </property>
103
+ </widget>
104
+ </item>
41
105
  <item row="2" column="0" colspan="2">
42
106
  <widget class="QGroupBox" name="x_axis_box">
43
107
  <property name="title">
@@ -105,80 +169,6 @@
105
169
  </layout>
106
170
  </widget>
107
171
  </item>
108
- <item row="2" column="2" colspan="2">
109
- <widget class="QGroupBox" name="y_axis_box">
110
- <property name="title">
111
- <string>Y Axis</string>
112
- </property>
113
- <layout class="QGridLayout" name="gridLayout_5">
114
- <item row="1" column="0" colspan="2">
115
- <widget class="QLabel" name="y_min_label">
116
- <property name="text">
117
- <string>Min</string>
118
- </property>
119
- </widget>
120
- </item>
121
- <item row="0" column="2">
122
- <widget class="QLineEdit" name="y_label"/>
123
- </item>
124
- <item row="3" column="0">
125
- <widget class="QLabel" name="y_scale_label">
126
- <property name="text">
127
- <string>Log</string>
128
- </property>
129
- </widget>
130
- </item>
131
- <item row="0" column="0">
132
- <widget class="QLabel" name="y_label_label">
133
- <property name="text">
134
- <string>Label</string>
135
- </property>
136
- </widget>
137
- </item>
138
- <item row="2" column="0">
139
- <widget class="QLabel" name="y_max_label">
140
- <property name="text">
141
- <string>Max</string>
142
- </property>
143
- </widget>
144
- </item>
145
- <item row="4" column="0">
146
- <widget class="QLabel" name="y_grid_label">
147
- <property name="text">
148
- <string>Grid</string>
149
- </property>
150
- </widget>
151
- </item>
152
- <item row="3" column="2">
153
- <widget class="ToggleSwitch" name="y_log">
154
- <property name="checked" stdset="0">
155
- <bool>false</bool>
156
- </property>
157
- </widget>
158
- </item>
159
- <item row="4" column="2">
160
- <widget class="ToggleSwitch" name="y_grid">
161
- <property name="checked" stdset="0">
162
- <bool>false</bool>
163
- </property>
164
- </widget>
165
- </item>
166
- <item row="1" column="2">
167
- <widget class="BECSpinBox" name="y_min">
168
- <property name="alignment">
169
- <set>Qt::AlignmentFlag::AlignCenter</set>
170
- </property>
171
- <property name="buttonSymbols">
172
- <enum>QAbstractSpinBox::ButtonSymbols::UpDownArrows</enum>
173
- </property>
174
- </widget>
175
- </item>
176
- <item row="2" column="2">
177
- <widget class="BECSpinBox" name="y_max"/>
178
- </item>
179
- </layout>
180
- </widget>
181
- </item>
182
172
  <item row="0" column="0" colspan="4">
183
173
  <layout class="QHBoxLayout" name="horizontalLayout">
184
174
  <item>
@@ -191,8 +181,41 @@
191
181
  <item>
192
182
  <widget class="QLineEdit" name="title"/>
193
183
  </item>
184
+ <item>
185
+ <widget class="QLabel" name="label_2">
186
+ <property name="text">
187
+ <string>Precision</string>
188
+ </property>
189
+ </widget>
190
+ </item>
191
+ <item>
192
+ <widget class="QSpinBox" name="minimal_crosshair_precision">
193
+ <property name="toolTip">
194
+ <string>Minimal Crosshair Precision</string>
195
+ </property>
196
+ <property name="alignment">
197
+ <set>Qt::AlignmentFlag::AlignCenter</set>
198
+ </property>
199
+ <property name="maximum">
200
+ <number>20</number>
201
+ </property>
202
+ <property name="value">
203
+ <number>3</number>
204
+ </property>
205
+ </widget>
206
+ </item>
194
207
  </layout>
195
208
  </item>
209
+ <item row="1" column="2">
210
+ <widget class="QLabel" name="label_outer_axes">
211
+ <property name="text">
212
+ <string>Outer Axes</string>
213
+ </property>
214
+ </widget>
215
+ </item>
216
+ <item row="1" column="1">
217
+ <widget class="ToggleSwitch" name="inner_axes"/>
218
+ </item>
196
219
  </layout>
197
220
  </widget>
198
221
  <customwidgets>