bec-widgets 2.10.3__tar.gz → 2.11.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (406) hide show
  1. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/CHANGELOG.md +51 -0
  2. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/PKG-INFO +1 -1
  3. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/cli/client.py +5 -5
  4. bec_widgets-2.11.0/bec_widgets/widgets/plots/image/image.py +524 -0
  5. bec_widgets-2.10.3/bec_widgets/widgets/plots/image/image.py → bec_widgets-2.11.0/bec_widgets/widgets/plots/image/image_base.py +388 -578
  6. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/image/image_item.py +7 -6
  7. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/pyproject.toml +1 -1
  8. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.git_hooks/pre-commit +0 -0
  9. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  10. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.github/ISSUE_TEMPLATE/documentation_update.md +0 -0
  11. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  12. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.github/actions/bw_install/action.yml +0 -0
  13. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.github/pull_request_template.md +0 -0
  14. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.github/scripts/pr_issue_sync/pr_issue_sync.py +0 -0
  15. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.github/scripts/pr_issue_sync/requirements.txt +0 -0
  16. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.github/workflows/check_pr.yml +0 -0
  17. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.github/workflows/ci.yml +0 -0
  18. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.github/workflows/end2end-conda.yml +0 -0
  19. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.github/workflows/formatter.yml +0 -0
  20. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.github/workflows/generate-cli-check.yml +0 -0
  21. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.github/workflows/pytest-matrix.yml +0 -0
  22. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.github/workflows/pytest.yml +0 -0
  23. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.github/workflows/semantic_release.yml +0 -0
  24. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.github/workflows/sync-issues-pr.yml +0 -0
  25. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.gitignore +0 -0
  26. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.gitlab-ci.yml +0 -0
  27. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.pylintrc +0 -0
  28. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/.readthedocs.yaml +0 -0
  29. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/LICENSE +0 -0
  30. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/README.md +0 -0
  31. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/__init__.py +0 -0
  32. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/applications/__init__.py +0 -0
  33. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/applications/bw_launch.py +0 -0
  34. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/applications/launch_window.py +0 -0
  35. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
  36. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/assets/app_icons/alignment_1d.png +0 -0
  37. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/assets/app_icons/auto_update.png +0 -0
  38. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
  39. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/assets/app_icons/ui_loader_tile.png +0 -0
  40. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/assets/app_icons/widget_launch_tile.png +0 -0
  41. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/cli/__init__.py +0 -0
  42. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/cli/client_utils.py +0 -0
  43. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/cli/generate_cli.py +0 -0
  44. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/cli/rpc/__init__.py +0 -0
  45. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/cli/rpc/rpc_base.py +0 -0
  46. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/cli/rpc/rpc_register.py +0 -0
  47. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/cli/rpc/rpc_widget_handler.py +0 -0
  48. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/cli/server.py +0 -0
  49. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/examples/__init__.py +0 -0
  50. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/examples/general_app/__init__.py +0 -0
  51. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/examples/general_app/general_app.py +0 -0
  52. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/examples/general_app/general_app.ui +0 -0
  53. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/examples/general_app/web_links.py +0 -0
  54. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  55. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
  56. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
  57. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
  58. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
  59. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
  60. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
  61. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
  62. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
  63. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/tests/__init__.py +0 -0
  64. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/tests/utils.py +0 -0
  65. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/__init__.py +0 -0
  66. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/bec_connector.py +0 -0
  67. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/bec_designer.py +0 -0
  68. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/bec_dispatcher.py +0 -0
  69. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/bec_plugin_helper.py +0 -0
  70. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/bec_signal_proxy.py +0 -0
  71. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/bec_table.py +0 -0
  72. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/bec_widget.py +0 -0
  73. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/collapsible_panel_manager.py +0 -0
  74. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/colors.py +0 -0
  75. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/compact_popup.py +0 -0
  76. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/container_utils.py +0 -0
  77. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/crosshair.py +0 -0
  78. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/entry_validator.py +0 -0
  79. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/error_popups.py +0 -0
  80. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/expandable_frame.py +0 -0
  81. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/filter_io.py +0 -0
  82. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/forms_from_types/__init__.py +0 -0
  83. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/forms_from_types/forms.py +0 -0
  84. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/forms_from_types/items.py +0 -0
  85. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/fps_counter.py +0 -0
  86. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/generate_designer_plugin.py +0 -0
  87. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/layout_manager.py +0 -0
  88. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/linear_region_selector.py +0 -0
  89. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/name_utils.py +0 -0
  90. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/ophyd_kind_util.py +0 -0
  91. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/palette_viewer.py +0 -0
  92. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/plot_indicator_items.py +0 -0
  93. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
  94. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/plugin_templates/register.template +0 -0
  95. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/plugin_utils.py +0 -0
  96. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/redis_message_waiter.py +0 -0
  97. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/reference_utils.py +0 -0
  98. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/round_frame.py +0 -0
  99. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/rpc_decorator.py +0 -0
  100. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/rpc_server.py +0 -0
  101. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/serialization.py +0 -0
  102. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/settings_dialog.py +0 -0
  103. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/side_panel.py +0 -0
  104. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/thread_checker.py +0 -0
  105. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/toolbar.py +0 -0
  106. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/ui_loader.py +0 -0
  107. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/validator_delegate.py +0 -0
  108. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/widget_io.py +0 -0
  109. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/widget_state_manager.py +0 -0
  110. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/utils/yaml_dialog.py +0 -0
  111. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/__init__.py +0 -0
  112. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/containers/__init__.py +0 -0
  113. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/containers/auto_update/__init__.py +0 -0
  114. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/containers/auto_update/auto_updates.py +0 -0
  115. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/containers/dock/__init__.py +0 -0
  116. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/containers/dock/dock.py +0 -0
  117. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/containers/dock/dock_area.py +0 -0
  118. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/containers/dock/dock_area.pyproject +0 -0
  119. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/containers/dock/dock_area_plugin.py +0 -0
  120. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/containers/dock/register_dock_area.py +0 -0
  121. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/containers/layout_manager/__init__.py +0 -0
  122. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/containers/layout_manager/layout_manager.py +0 -0
  123. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/containers/main_window/__init__.py +0 -0
  124. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/containers/main_window/addons/__init__.py +0 -0
  125. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/containers/main_window/addons/web_links.py +0 -0
  126. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/containers/main_window/main_window.py +0 -0
  127. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/__init__.py +0 -0
  128. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/__init__.py +0 -0
  129. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/button_abort/__init__.py +0 -0
  130. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/button_abort/abort_button.pyproject +0 -0
  131. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/button_abort/abort_button_plugin.py +0 -0
  132. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/button_abort/button_abort.py +0 -0
  133. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/button_abort/register_abort_button.py +0 -0
  134. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/button_reset/__init__.py +0 -0
  135. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/button_reset/button_reset.py +0 -0
  136. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/button_reset/register_reset_button.py +0 -0
  137. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/button_reset/reset_button.pyproject +0 -0
  138. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/button_reset/reset_button_plugin.py +0 -0
  139. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/button_resume/__init__.py +0 -0
  140. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/button_resume/button_resume.py +0 -0
  141. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/button_resume/register_resume_button.py +0 -0
  142. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/button_resume/resume_button.pyproject +0 -0
  143. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/button_resume/resume_button_plugin.py +0 -0
  144. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/stop_button/__init__.py +0 -0
  145. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/stop_button/register_stop_button.py +0 -0
  146. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button.py +0 -0
  147. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button.pyproject +0 -0
  148. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button_plugin.py +0 -0
  149. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/__init__.py +0 -0
  150. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/position_indicator/__init__.py +0 -0
  151. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.py +0 -0
  152. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.pyproject +0 -0
  153. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator_plugin.py +0 -0
  154. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/position_indicator/register_position_indicator.py +0 -0
  155. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/__init__.py +0 -0
  156. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/_base/__init__.py +0 -0
  157. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py +0 -0
  158. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/__init__.py +0 -0
  159. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py +0 -0
  160. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.pyproject +0 -0
  161. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.ui +0 -0
  162. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box_plugin.py +0 -0
  163. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/register_positioner_box.py +0 -0
  164. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/__init__.py +0 -0
  165. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d.pyproject +0 -0
  166. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d_plugin.py +0 -0
  167. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py +0 -0
  168. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.ui +0 -0
  169. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/register_positioner_box2_d.py +0 -0
  170. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.py +0 -0
  171. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.pyproject +0 -0
  172. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.ui +0 -0
  173. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line_plugin.py +0 -0
  174. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/register_positioner_control_line.py +0 -0
  175. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_group/__init__.py +0 -0
  176. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.py +0 -0
  177. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.pyproject +0 -0
  178. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group_plugin.py +0 -0
  179. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_control/positioner_group/register_positioner_group.py +0 -0
  180. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/__init__.py +0 -0
  181. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/base_classes/__init__.py +0 -0
  182. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py +0 -0
  183. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py +0 -0
  184. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/device_combobox/__init__.py +0 -0
  185. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box.pyproject +0 -0
  186. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box_plugin.py +0 -0
  187. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py +0 -0
  188. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/device_combobox/register_device_combo_box.py +0 -0
  189. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/device_line_edit/__init__.py +0 -0
  190. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.py +0 -0
  191. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.pyproject +0 -0
  192. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit_plugin.py +0 -0
  193. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/device_line_edit/register_device_line_edit.py +0 -0
  194. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/signal_combobox/__init__.py +0 -0
  195. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/signal_combobox/register_signal_combo_box.py +0 -0
  196. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box.pyproject +0 -0
  197. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box_plugin.py +0 -0
  198. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.py +0 -0
  199. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/signal_line_edit/__init__.py +0 -0
  200. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/signal_line_edit/register_signal_line_edit.py +0 -0
  201. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.py +0 -0
  202. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.pyproject +0 -0
  203. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit_plugin.py +0 -0
  204. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/scan_control/__init__.py +0 -0
  205. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/scan_control/register_scan_control.py +0 -0
  206. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/scan_control/scan_control.py +0 -0
  207. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/scan_control/scan_control.pyproject +0 -0
  208. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/scan_control/scan_control_plugin.py +0 -0
  209. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/control/scan_control/scan_group_box.py +0 -0
  210. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/dap/__init__.py +0 -0
  211. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/dap/dap_combo_box/__init__.py +0 -0
  212. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py +0 -0
  213. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.pyproject +0 -0
  214. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box_plugin.py +0 -0
  215. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/dap/dap_combo_box/register_dap_combo_box.py +0 -0
  216. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/dap/lmfit_dialog/__init__.py +0 -0
  217. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
  218. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
  219. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py +0 -0
  220. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
  221. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
  222. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/dap/lmfit_dialog/register_lm_fit_dialog.py +0 -0
  223. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/__init__.py +0 -0
  224. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/dict_backed_table.py +0 -0
  225. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/jupyter_console/__init__.py +0 -0
  226. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/jupyter_console/jupyter_console.py +0 -0
  227. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/scan_metadata/__init__.py +0 -0
  228. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/scan_metadata/_util.py +0 -0
  229. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/scan_metadata/register_scan_metadata.py +0 -0
  230. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py +0 -0
  231. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.pyproject +0 -0
  232. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata_plugin.py +0 -0
  233. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/text_box/__init__.py +0 -0
  234. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/text_box/register_text_box.py +0 -0
  235. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/text_box/text_box.py +0 -0
  236. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/text_box/text_box.pyproject +0 -0
  237. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/text_box/text_box_plugin.py +0 -0
  238. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/vscode/__init__.py +0 -0
  239. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/vscode/register_vs_code_editor.py +0 -0
  240. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/vscode/vs_code_editor.pyproject +0 -0
  241. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/vscode/vs_code_editor_plugin.py +0 -0
  242. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/vscode/vscode.py +0 -0
  243. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/web_console/register_web_console.py +0 -0
  244. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/web_console/web_console.py +0 -0
  245. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/web_console/web_console.pyproject +0 -0
  246. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/web_console/web_console_plugin.py +0 -0
  247. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/website/__init__.py +0 -0
  248. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/website/register_website_widget.py +0 -0
  249. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/website/website.py +0 -0
  250. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/website/website_widget.pyproject +0 -0
  251. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/editors/website/website_widget_plugin.py +0 -0
  252. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/games/__init__.py +0 -0
  253. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/games/minesweeper.py +0 -0
  254. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/games/minesweeper.pyproject +0 -0
  255. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/games/minesweeper_plugin.py +0 -0
  256. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/games/register_minesweeper.py +0 -0
  257. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/__init__.py +0 -0
  258. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/image/__init__.py +0 -0
  259. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/image/image.pyproject +0 -0
  260. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/image/image_plugin.py +0 -0
  261. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/image/image_processor.py +0 -0
  262. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/image/image_roi_plot.py +0 -0
  263. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/image/register_image.py +0 -0
  264. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/image/setting_widgets/__init__.py +0 -0
  265. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/image/setting_widgets/image_roi_tree.py +0 -0
  266. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/image/toolbar_bundles/__init__.py +0 -0
  267. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/image/toolbar_bundles/image_selection.py +0 -0
  268. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/image/toolbar_bundles/processing.py +0 -0
  269. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/motor_map/__init__.py +0 -0
  270. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/motor_map/motor_map.py +0 -0
  271. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/motor_map/motor_map.pyproject +0 -0
  272. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/motor_map/motor_map_plugin.py +0 -0
  273. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/motor_map/register_motor_map.py +0 -0
  274. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/motor_map/settings/__init__.py +0 -0
  275. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.py +0 -0
  276. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.ui +0 -0
  277. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/motor_map/toolbar_bundles/__init__.py +0 -0
  278. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/motor_map/toolbar_bundles/motor_selection.py +0 -0
  279. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/multi_waveform/__init__.py +0 -0
  280. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.py +0 -0
  281. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.pyproject +0 -0
  282. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform_plugin.py +0 -0
  283. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/multi_waveform/register_multi_waveform.py +0 -0
  284. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/multi_waveform/settings/__init__.py +0 -0
  285. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/multi_waveform/settings/control_panel.py +0 -0
  286. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/multi_waveform/settings/multi_waveform_controls.ui +0 -0
  287. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles/__init__.py +0 -0
  288. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles/monitor_selection.py +0 -0
  289. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/plot_base.py +0 -0
  290. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/roi/__init__.py +0 -0
  291. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/roi/image_roi.py +0 -0
  292. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/scatter_waveform/__init__.py +0 -0
  293. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/scatter_waveform/register_scatter_waveform.py +0 -0
  294. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_curve.py +0 -0
  295. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.py +0 -0
  296. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.pyproject +0 -0
  297. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform_plugin.py +0 -0
  298. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/scatter_waveform/settings/__init__.py +0 -0
  299. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_setting.py +0 -0
  300. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_horizontal.ui +0 -0
  301. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_vertical.ui +0 -0
  302. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/setting_menus/__init__.py +0 -0
  303. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/setting_menus/axis_settings.py +0 -0
  304. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/setting_menus/axis_settings_horizontal.ui +0 -0
  305. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/setting_menus/axis_settings_vertical.ui +0 -0
  306. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/toolbar_bundles/__init__.py +0 -0
  307. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/toolbar_bundles/mouse_interactions.py +0 -0
  308. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/toolbar_bundles/plot_export.py +0 -0
  309. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/toolbar_bundles/roi_bundle.py +0 -0
  310. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/toolbar_bundles/save_state.py +0 -0
  311. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/waveform/__init__.py +0 -0
  312. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/waveform/curve.py +0 -0
  313. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/waveform/register_waveform.py +0 -0
  314. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/waveform/settings/__init__.py +0 -0
  315. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/waveform/settings/curve_settings/__init__.py +0 -0
  316. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_setting.py +0 -0
  317. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_tree.py +0 -0
  318. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/waveform/utils/__init__.py +0 -0
  319. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/waveform/utils/roi_manager.py +0 -0
  320. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/waveform/waveform.py +0 -0
  321. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/waveform/waveform.pyproject +0 -0
  322. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/plots/waveform/waveform_plugin.py +0 -0
  323. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/progress/__init__.py +0 -0
  324. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/progress/bec_progressbar/__init__.py +0 -0
  325. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar.pyproject +0 -0
  326. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar_plugin.py +0 -0
  327. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progressbar.py +0 -0
  328. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/progress/bec_progressbar/register_bec_progress_bar.py +0 -0
  329. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/progress/ring_progress_bar/__init__.py +0 -0
  330. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/progress/ring_progress_bar/register_ring_progress_bar.py +0 -0
  331. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/progress/ring_progress_bar/ring.py +0 -0
  332. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py +0 -0
  333. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.pyproject +0 -0
  334. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
  335. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/__init__.py +0 -0
  336. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/bec_queue/__init__.py +0 -0
  337. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/bec_queue/bec_queue.py +0 -0
  338. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/bec_queue/bec_queue.pyproject +0 -0
  339. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/bec_queue/bec_queue_plugin.py +0 -0
  340. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/bec_queue/register_bec_queue.py +0 -0
  341. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/bec_status_box/__init__.py +0 -0
  342. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box.py +0 -0
  343. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box.pyproject +0 -0
  344. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box_plugin.py +0 -0
  345. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/bec_status_box/register_bec_status_box.py +0 -0
  346. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/bec_status_box/status_item.py +0 -0
  347. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/device_browser/__init__.py +0 -0
  348. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/device_browser/device_browser.py +0 -0
  349. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/device_browser/device_browser.pyproject +0 -0
  350. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/device_browser/device_browser.ui +0 -0
  351. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/device_browser/device_browser_plugin.py +0 -0
  352. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/device_browser/device_item/__init__.py +0 -0
  353. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/device_browser/device_item/device_item.py +0 -0
  354. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/services/device_browser/register_device_browser.py +0 -0
  355. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/__init__.py +0 -0
  356. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/logpanel/__init__.py +0 -0
  357. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/logpanel/_util.py +0 -0
  358. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/logpanel/log_panel.pyproject +0 -0
  359. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/logpanel/log_panel_plugin.py +0 -0
  360. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/logpanel/logpanel.py +0 -0
  361. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/logpanel/register_log_panel.py +0 -0
  362. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/signal_label/register_signal_label.py +0 -0
  363. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/signal_label/signal_label.py +0 -0
  364. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/signal_label/signal_label.pyproject +0 -0
  365. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/signal_label/signal_label_plugin.py +0 -0
  366. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/spinbox/__init__.py +0 -0
  367. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/spinbox/bec_spin_box.pyproject +0 -0
  368. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/spinbox/bec_spin_box_plugin.py +0 -0
  369. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/spinbox/decimal_spinbox.py +0 -0
  370. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/spinbox/register_bec_spin_box.py +0 -0
  371. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/spinner/__init__.py +0 -0
  372. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/spinner/register_spinner_widget.py +0 -0
  373. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/spinner/spinner.py +0 -0
  374. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/spinner/spinner_widget.pyproject +0 -0
  375. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/spinner/spinner_widget_plugin.py +0 -0
  376. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/toggle/__init__.py +0 -0
  377. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/toggle/register_toggle_switch.py +0 -0
  378. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/toggle/toggle.py +0 -0
  379. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/toggle/toggle_switch.pyproject +0 -0
  380. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/toggle/toggle_switch_plugin.py +0 -0
  381. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/__init__.py +0 -0
  382. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/color_button/__init__.py +0 -0
  383. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/color_button/color_button.py +0 -0
  384. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/color_button/color_button.pyproject +0 -0
  385. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/color_button/color_button_plugin.py +0 -0
  386. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/color_button/register_color_button.py +0 -0
  387. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/color_button_native/__init__.py +0 -0
  388. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.py +0 -0
  389. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.pyproject +0 -0
  390. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native_plugin.py +0 -0
  391. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/color_button_native/register_color_button_native.py +0 -0
  392. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/colormap_selector/__init__.py +0 -0
  393. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.py +0 -0
  394. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.pyproject +0 -0
  395. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector_plugin.py +0 -0
  396. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/colormap_selector/register_colormap_selector.py +0 -0
  397. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/colormap_widget/__init__.py +0 -0
  398. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget.pyproject +0 -0
  399. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget_plugin.py +0 -0
  400. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py +0 -0
  401. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/colormap_widget/register_bec_color_map_widget.py +0 -0
  402. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/dark_mode_button/__init__.py +0 -0
  403. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py +0 -0
  404. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.pyproject +0 -0
  405. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button_plugin.py +0 -0
  406. {bec_widgets-2.10.3 → bec_widgets-2.11.0}/bec_widgets/widgets/utility/visual/dark_mode_button/register_dark_mode_button.py +0 -0
@@ -1,6 +1,57 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v2.11.0 (2025-06-04)
5
+
6
+ ### Bug Fixes
7
+
8
+ - **image item**: Propagate remove call to parent class
9
+ ([`e211e4d`](https://github.com/bec-project/bec_widgets/commit/e211e4d7161cc4fc4b2f7cd18f058e070f5b4b7a))
10
+
11
+ - **image layer**: Add layer main if it does not exist
12
+ ([`7eb2f54`](https://github.com/bec-project/bec_widgets/commit/7eb2f54e0ed556e0c30a4e14ded75e32dcf3d531))
13
+
14
+ - **image_item**: Do not disconnect the monitor from within the image item
15
+ ([`4c0bd97`](https://github.com/bec-project/bec_widgets/commit/4c0bd977fc2b82680bbace763f5ffb19ed664f72))
16
+
17
+ ### Features
18
+
19
+ - **image_layer**: Add default name for image layers
20
+ ([`4a343b2`](https://github.com/bec-project/bec_widgets/commit/4a343b204112c53e593e9bb43642d21f268dfa85))
21
+
22
+ ### Refactoring
23
+
24
+ - **image**: Disconnect when layer is removed
25
+ ([`8a299a8`](https://github.com/bec-project/bec_widgets/commit/8a299a8268f3c21bbdc6629ad1f1f50a0aa0948b))
26
+
27
+ - **image**: Introduce image base and image layer; rename vrange to v_range
28
+ ([`10f292d`](https://github.com/bec-project/bec_widgets/commit/10f292def9d1551bca0d8f63c0a94799c08ff507))
29
+
30
+ - **image**: Move image item creation to layer manager
31
+ ([`c2b0c8c`](https://github.com/bec-project/bec_widgets/commit/c2b0c8c4336302ec4a7807c31b3f3b78a413c1aa))
32
+
33
+ - **image**: Removed access to image item config
34
+ ([`99ecf6a`](https://github.com/bec-project/bec_widgets/commit/99ecf6a18f2e87d68f3de3abf56d97f7e6467912))
35
+
36
+ - **image_base**: Move default color map to image layer
37
+ ([`92b89e7`](https://github.com/bec-project/bec_widgets/commit/92b89e72750fc0ab72ea51f865032133c49a7f18))
38
+
39
+ - **image_base**: Renamed layers to layer_manager and added public methods for accessing the layer
40
+ manager
41
+ ([`92dade0`](https://github.com/bec-project/bec_widgets/commit/92dade09508ff3940e0b5dc99917302d61b03bc8))
42
+
43
+ - **image_item**: Emit object name with removed signal
44
+ ([`a4f3117`](https://github.com/bec-project/bec_widgets/commit/a4f311794132c6c24370cb2f5b5e0725b12587fd))
45
+
46
+ - **image_item**: Removed outdated image item config
47
+ ([`3e789ca`](https://github.com/bec-project/bec_widgets/commit/3e789ca35b6d0cf2d8ae9677bc65b7f0ca4eabc7))
48
+
49
+ ### Testing
50
+
51
+ - Improve error message for widgets that are not properly cleaned up
52
+ ([`7c47505`](https://github.com/bec-project/bec_widgets/commit/7c47505c5a147885ca2e854e13c1eb3fddaf5489))
53
+
54
+
4
55
  ## v2.10.3 (2025-06-04)
5
56
 
6
57
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bec_widgets
3
- Version: 2.10.3
3
+ Version: 2.11.0
4
4
  Summary: BEC Widgets
5
5
  Project-URL: Bug Tracker, https://gitlab.psi.ch/bec/bec_widgets/issues
6
6
  Project-URL: Homepage, https://gitlab.psi.ch/bec/bec_widgets
@@ -1252,16 +1252,16 @@ class Image(RPCBase):
1252
1252
 
1253
1253
  @property
1254
1254
  @rpc_call
1255
- def vrange(self) -> "tuple":
1255
+ def v_range(self) -> "QPointF":
1256
1256
  """
1257
- Get the vrange of the image.
1257
+ Set the v_range of the main image.
1258
1258
  """
1259
1259
 
1260
- @vrange.setter
1260
+ @v_range.setter
1261
1261
  @rpc_call
1262
- def vrange(self) -> "tuple":
1262
+ def v_range(self) -> "QPointF":
1263
1263
  """
1264
- Get the vrange of the image.
1264
+ Set the v_range of the main image.
1265
1265
  """
1266
1266
 
1267
1267
  @property
@@ -0,0 +1,524 @@
1
+ from __future__ import annotations
2
+
3
+ from collections import defaultdict
4
+ from typing import Literal
5
+
6
+ import numpy as np
7
+ from bec_lib import bec_logger
8
+ from bec_lib.endpoints import MessageEndpoints
9
+ from pydantic import BaseModel, Field, field_validator
10
+ from qtpy.QtWidgets import QWidget
11
+
12
+ from bec_widgets.utils import ConnectionConfig
13
+ from bec_widgets.utils.colors import Colors
14
+ from bec_widgets.utils.error_popups import SafeProperty, SafeSlot
15
+ from bec_widgets.widgets.plots.image.image_base import ImageBase
16
+ from bec_widgets.widgets.plots.image.image_item import ImageItem
17
+
18
+ logger = bec_logger.logger
19
+
20
+
21
+ # noinspection PyDataclass
22
+ class ImageConfig(ConnectionConfig):
23
+ color_map: str = Field(
24
+ "plasma", description="The colormap of the figure widget.", validate_default=True
25
+ )
26
+ color_bar: Literal["full", "simple"] | None = Field(
27
+ None, description="The type of the color bar."
28
+ )
29
+ lock_aspect_ratio: bool = Field(
30
+ False, description="Whether to lock the aspect ratio of the image."
31
+ )
32
+
33
+ model_config: dict = {"validate_assignment": True}
34
+ _validate_color_map = field_validator("color_map")(Colors.validate_color_map)
35
+
36
+
37
+ class ImageLayerConfig(BaseModel):
38
+ monitor: str | None = Field(None, description="The name of the monitor.")
39
+ monitor_type: Literal["1d", "2d", "auto"] = Field("auto", description="The type of monitor.")
40
+ source: Literal["device_monitor_1d", "device_monitor_2d", "auto"] = Field(
41
+ "auto", description="The source of the image data."
42
+ )
43
+
44
+
45
+ class Image(ImageBase):
46
+ """
47
+ Image widget for displaying 2D data.
48
+ """
49
+
50
+ PLUGIN = True
51
+ RPC = True
52
+ ICON_NAME = "image"
53
+ USER_ACCESS = [
54
+ # General PlotBase Settings
55
+ "enable_toolbar",
56
+ "enable_toolbar.setter",
57
+ "enable_side_panel",
58
+ "enable_side_panel.setter",
59
+ "enable_fps_monitor",
60
+ "enable_fps_monitor.setter",
61
+ "set",
62
+ "title",
63
+ "title.setter",
64
+ "x_label",
65
+ "x_label.setter",
66
+ "y_label",
67
+ "y_label.setter",
68
+ "x_limits",
69
+ "x_limits.setter",
70
+ "y_limits",
71
+ "y_limits.setter",
72
+ "x_grid",
73
+ "x_grid.setter",
74
+ "y_grid",
75
+ "y_grid.setter",
76
+ "inner_axes",
77
+ "inner_axes.setter",
78
+ "outer_axes",
79
+ "outer_axes.setter",
80
+ "auto_range_x",
81
+ "auto_range_x.setter",
82
+ "auto_range_y",
83
+ "auto_range_y.setter",
84
+ "minimal_crosshair_precision",
85
+ "minimal_crosshair_precision.setter",
86
+ # ImageView Specific Settings
87
+ "color_map",
88
+ "color_map.setter",
89
+ "v_range",
90
+ "v_range.setter",
91
+ "v_min",
92
+ "v_min.setter",
93
+ "v_max",
94
+ "v_max.setter",
95
+ "lock_aspect_ratio",
96
+ "lock_aspect_ratio.setter",
97
+ "autorange",
98
+ "autorange.setter",
99
+ "autorange_mode",
100
+ "autorange_mode.setter",
101
+ "monitor",
102
+ "monitor.setter",
103
+ "enable_colorbar",
104
+ "enable_simple_colorbar",
105
+ "enable_simple_colorbar.setter",
106
+ "enable_full_colorbar",
107
+ "enable_full_colorbar.setter",
108
+ "fft",
109
+ "fft.setter",
110
+ "log",
111
+ "log.setter",
112
+ "num_rotation_90",
113
+ "num_rotation_90.setter",
114
+ "transpose",
115
+ "transpose.setter",
116
+ "image",
117
+ "main_image",
118
+ "add_roi",
119
+ "remove_roi",
120
+ "rois",
121
+ ]
122
+
123
+ def __init__(
124
+ self,
125
+ parent: QWidget | None = None,
126
+ config: ImageConfig | None = None,
127
+ client=None,
128
+ gui_id: str | None = None,
129
+ popups: bool = True,
130
+ **kwargs,
131
+ ):
132
+ if config is None:
133
+ config = ImageConfig(widget_class=self.__class__.__name__)
134
+ self.gui_id = config.gui_id
135
+ self._color_bar = None
136
+ self.subscriptions: defaultdict[str, ImageLayerConfig] = defaultdict(
137
+ lambda: ImageLayerConfig(monitor=None, monitor_type="auto", source="auto")
138
+ )
139
+ super().__init__(
140
+ parent=parent, config=config, client=client, gui_id=gui_id, popups=popups, **kwargs
141
+ )
142
+ self.layer_removed.connect(self._on_layer_removed)
143
+ self.scan_id = None
144
+
145
+ ################################################################################
146
+ # Data Acquisition
147
+
148
+ @SafeProperty(str)
149
+ def monitor(self) -> str:
150
+ """
151
+ The name of the monitor to use for the image.
152
+ """
153
+ return self.subscriptions["main"].monitor or ""
154
+
155
+ @monitor.setter
156
+ def monitor(self, value: str):
157
+ """
158
+ Set the monitor for the image.
159
+
160
+ Args:
161
+ value(str): The name of the monitor to set.
162
+ """
163
+ if self.subscriptions["main"].monitor == value:
164
+ return
165
+ try:
166
+ self.entry_validator.validate_monitor(value)
167
+ except ValueError:
168
+ return
169
+ self.image(monitor=value)
170
+
171
+ @property
172
+ def main_image(self) -> ImageItem:
173
+ """Access the main image item."""
174
+ return self.layer_manager["main"].image
175
+
176
+ ################################################################################
177
+ # High Level methods for API
178
+ ################################################################################
179
+ @SafeSlot(popup_error=True)
180
+ def image(
181
+ self,
182
+ monitor: str | None = None,
183
+ monitor_type: Literal["auto", "1d", "2d"] = "auto",
184
+ color_map: str | None = None,
185
+ color_bar: Literal["simple", "full"] | None = None,
186
+ vrange: tuple[int, int] | None = None,
187
+ ) -> ImageItem:
188
+ """
189
+ Set the image source and update the image.
190
+
191
+ Args:
192
+ monitor(str): The name of the monitor to use for the image.
193
+ monitor_type(str): The type of monitor to use. Options are "1d", "2d", or "auto".
194
+ color_map(str): The color map to use for the image.
195
+ color_bar(str): The type of color bar to use. Options are "simple" or "full".
196
+ vrange(tuple): The range of values to use for the color map.
197
+
198
+ Returns:
199
+ ImageItem: The image object.
200
+ """
201
+
202
+ if self.subscriptions["main"].monitor:
203
+ self.disconnect_monitor(self.subscriptions["main"].monitor)
204
+ self.entry_validator.validate_monitor(monitor)
205
+ self.subscriptions["main"].monitor = monitor
206
+
207
+ if monitor_type == "1d":
208
+ self.subscriptions["main"].source = "device_monitor_1d"
209
+ self.subscriptions["main"].monitor_type = "1d"
210
+ elif monitor_type == "2d":
211
+ self.subscriptions["main"].source = "device_monitor_2d"
212
+ self.subscriptions["main"].monitor_type = "2d"
213
+ elif monitor_type == "auto":
214
+ self.subscriptions["main"].source = "auto"
215
+ logger.warning(
216
+ f"Updates for '{monitor}' will be fetch from both 1D and 2D monitor endpoints."
217
+ )
218
+ self.subscriptions["main"].monitor_type = "auto"
219
+
220
+ self.set_image_update(monitor=monitor, type=monitor_type)
221
+ if color_map is not None:
222
+ self.main_image.color_map = color_map
223
+ if color_bar is not None:
224
+ self.enable_colorbar(True, color_bar)
225
+ if vrange is not None:
226
+ self.vrange = vrange
227
+
228
+ self._sync_device_selection()
229
+
230
+ return self.main_image
231
+
232
+ def _sync_device_selection(self):
233
+ """
234
+ Synchronize the device selection with the current monitor.
235
+ """
236
+ config = self.subscriptions["main"]
237
+ if config.monitor is not None:
238
+ for combo in (
239
+ self.selection_bundle.device_combo_box,
240
+ self.selection_bundle.dim_combo_box,
241
+ ):
242
+ combo.blockSignals(True)
243
+ self.selection_bundle.device_combo_box.set_device(config.monitor)
244
+ self.selection_bundle.dim_combo_box.setCurrentText(config.monitor_type)
245
+ for combo in (
246
+ self.selection_bundle.device_combo_box,
247
+ self.selection_bundle.dim_combo_box,
248
+ ):
249
+ combo.blockSignals(False)
250
+ else:
251
+ for combo in (
252
+ self.selection_bundle.device_combo_box,
253
+ self.selection_bundle.dim_combo_box,
254
+ ):
255
+ combo.blockSignals(True)
256
+ self.selection_bundle.device_combo_box.setCurrentText("")
257
+ self.selection_bundle.dim_combo_box.setCurrentText("auto")
258
+ for combo in (
259
+ self.selection_bundle.device_combo_box,
260
+ self.selection_bundle.dim_combo_box,
261
+ ):
262
+ combo.blockSignals(False)
263
+
264
+ ################################################################################
265
+ # Post Processing
266
+ ################################################################################
267
+
268
+ @SafeProperty(bool)
269
+ def fft(self) -> bool:
270
+ """
271
+ Whether FFT postprocessing is enabled.
272
+ """
273
+ return self.main_image.fft
274
+
275
+ @fft.setter
276
+ def fft(self, enable: bool):
277
+ """
278
+ Set FFT postprocessing.
279
+
280
+ Args:
281
+ enable(bool): Whether to enable FFT postprocessing.
282
+ """
283
+ self.main_image.fft = enable
284
+
285
+ @SafeProperty(bool)
286
+ def log(self) -> bool:
287
+ """
288
+ Whether logarithmic scaling is applied.
289
+ """
290
+ return self.main_image.log
291
+
292
+ @log.setter
293
+ def log(self, enable: bool):
294
+ """
295
+ Set logarithmic scaling.
296
+
297
+ Args:
298
+ enable(bool): Whether to enable logarithmic scaling.
299
+ """
300
+ self.main_image.log = enable
301
+
302
+ @SafeProperty(int)
303
+ def num_rotation_90(self) -> int:
304
+ """
305
+ The number of 90° rotations to apply counterclockwise.
306
+ """
307
+ return self.main_image.num_rotation_90
308
+
309
+ @num_rotation_90.setter
310
+ def num_rotation_90(self, value: int):
311
+ """
312
+ Set the number of 90° rotations to apply counterclockwise.
313
+
314
+ Args:
315
+ value(int): The number of 90° rotations to apply.
316
+ """
317
+ self.main_image.num_rotation_90 = value
318
+
319
+ @SafeProperty(bool)
320
+ def transpose(self) -> bool:
321
+ """
322
+ Whether the image is transposed.
323
+ """
324
+ return self.main_image.transpose
325
+
326
+ @transpose.setter
327
+ def transpose(self, enable: bool):
328
+ """
329
+ Set the image to be transposed.
330
+
331
+ Args:
332
+ enable(bool): Whether to enable transposing the image.
333
+ """
334
+ self.main_image.transpose = enable
335
+
336
+ ################################################################################
337
+ # Image Update Methods
338
+ ################################################################################
339
+
340
+ ########################################
341
+ # Connections
342
+
343
+ def set_image_update(self, monitor: str, type: Literal["1d", "2d", "auto"]):
344
+ """
345
+ Set the image update method for the given monitor.
346
+
347
+ Args:
348
+ monitor(str): The name of the monitor to use for the image.
349
+ type(str): The type of monitor to use. Options are "1d", "2d", or "auto".
350
+ """
351
+
352
+ # TODO consider moving connecting and disconnecting logic to Image itself if multiple images
353
+ if type == "1d":
354
+ self.bec_dispatcher.connect_slot(
355
+ self.on_image_update_1d, MessageEndpoints.device_monitor_1d(monitor)
356
+ )
357
+ elif type == "2d":
358
+ self.bec_dispatcher.connect_slot(
359
+ self.on_image_update_2d, MessageEndpoints.device_monitor_2d(monitor)
360
+ )
361
+ elif type == "auto":
362
+ self.bec_dispatcher.connect_slot(
363
+ self.on_image_update_1d, MessageEndpoints.device_monitor_1d(monitor)
364
+ )
365
+ self.bec_dispatcher.connect_slot(
366
+ self.on_image_update_2d, MessageEndpoints.device_monitor_2d(monitor)
367
+ )
368
+ logger.info(f"Connected to {monitor} with type {type}")
369
+ self.subscriptions["main"].monitor = monitor
370
+
371
+ def disconnect_monitor(self, monitor: str):
372
+ """
373
+ Disconnect the monitor from the image update signals, both 1D and 2D.
374
+
375
+ Args:
376
+ monitor(str): The name of the monitor to disconnect.
377
+ """
378
+ self.bec_dispatcher.disconnect_slot(
379
+ self.on_image_update_1d, MessageEndpoints.device_monitor_1d(monitor)
380
+ )
381
+ self.bec_dispatcher.disconnect_slot(
382
+ self.on_image_update_2d, MessageEndpoints.device_monitor_2d(monitor)
383
+ )
384
+ self.subscriptions["main"].monitor = None
385
+ self._sync_device_selection()
386
+
387
+ ########################################
388
+ # 1D updates
389
+
390
+ @SafeSlot(dict, dict)
391
+ def on_image_update_1d(self, msg: dict, metadata: dict):
392
+ """
393
+ Update the image with 1D data.
394
+
395
+ Args:
396
+ msg(dict): The message containing the data.
397
+ metadata(dict): The metadata associated with the message.
398
+ """
399
+ data = msg["data"]
400
+ current_scan_id = metadata.get("scan_id", None)
401
+
402
+ if current_scan_id is None:
403
+ return
404
+ if current_scan_id != self.scan_id:
405
+ self.scan_id = current_scan_id
406
+ self.main_image.clear()
407
+ self.main_image.buffer = []
408
+ self.main_image.max_len = 0
409
+ image_buffer = self.adjust_image_buffer(self.main_image, data)
410
+ if self._color_bar is not None:
411
+ self._color_bar.blockSignals(True)
412
+ self.main_image.set_data(image_buffer)
413
+ if self._color_bar is not None:
414
+ self._color_bar.blockSignals(False)
415
+ self.image_updated.emit()
416
+
417
+ def adjust_image_buffer(self, image: ImageItem, new_data: np.ndarray) -> np.ndarray:
418
+ """
419
+ Adjusts the image buffer to accommodate the new data, ensuring that all rows have the same length.
420
+
421
+ Args:
422
+ image: The image object (used to store a buffer list and max_len).
423
+ new_data (np.ndarray): The new incoming 1D waveform data.
424
+
425
+ Returns:
426
+ np.ndarray: The updated image buffer with adjusted shapes.
427
+ """
428
+ new_len = new_data.shape[0]
429
+ if not hasattr(image, "buffer"):
430
+ image.buffer = []
431
+ image.max_len = 0
432
+
433
+ if new_len > image.max_len:
434
+ image.max_len = new_len
435
+ for i in range(len(image.buffer)):
436
+ wf = image.buffer[i]
437
+ pad_width = image.max_len - wf.shape[0]
438
+ if pad_width > 0:
439
+ image.buffer[i] = np.pad(wf, (0, pad_width), mode="constant", constant_values=0)
440
+ image.buffer.append(new_data)
441
+ else:
442
+ pad_width = image.max_len - new_len
443
+ if pad_width > 0:
444
+ new_data = np.pad(new_data, (0, pad_width), mode="constant", constant_values=0)
445
+ image.buffer.append(new_data)
446
+
447
+ image_buffer = np.array(image.buffer)
448
+ return image_buffer
449
+
450
+ ########################################
451
+ # 2D updates
452
+
453
+ def on_image_update_2d(self, msg: dict, metadata: dict):
454
+ """
455
+ Update the image with 2D data.
456
+
457
+ Args:
458
+ msg(dict): The message containing the data.
459
+ metadata(dict): The metadata associated with the message.
460
+ """
461
+ data = msg["data"]
462
+ if self._color_bar is not None:
463
+ self._color_bar.blockSignals(True)
464
+ self.main_image.set_data(data)
465
+ if self._color_bar is not None:
466
+ self._color_bar.blockSignals(False)
467
+ self.image_updated.emit()
468
+
469
+ ################################################################################
470
+ # Clean up
471
+ ################################################################################
472
+
473
+ @SafeSlot(str)
474
+ def _on_layer_removed(self, layer_name: str):
475
+ """
476
+ Handle the removal of a layer by disconnecting the monitor.
477
+
478
+ Args:
479
+ layer_name(str): The name of the layer that was removed.
480
+ """
481
+ if layer_name not in self.subscriptions:
482
+ return
483
+ config = self.subscriptions[layer_name]
484
+ if config.monitor is not None:
485
+ self.disconnect_monitor(config.monitor)
486
+ config.monitor = None
487
+
488
+ def cleanup(self):
489
+ """
490
+ Disconnect the image update signals and clean up the image.
491
+ """
492
+ self.layer_removed.disconnect(self._on_layer_removed)
493
+ for layer_name in list(self.subscriptions.keys()):
494
+ config = self.subscriptions[layer_name]
495
+ if config.monitor is not None:
496
+ self.disconnect_monitor(config.monitor)
497
+ del self.subscriptions[layer_name]
498
+ self.subscriptions.clear()
499
+
500
+ # Toolbar cleanup
501
+ self.toolbar.widgets["monitor"].widget.close()
502
+ self.toolbar.widgets["monitor"].widget.deleteLater()
503
+ super().cleanup()
504
+
505
+
506
+ if __name__ == "__main__": # pragma: no cover
507
+ import sys
508
+
509
+ from qtpy.QtWidgets import QApplication, QHBoxLayout
510
+
511
+ app = QApplication(sys.argv)
512
+ win = QWidget()
513
+ win.setWindowTitle("Image Demo")
514
+ ml = QHBoxLayout(win)
515
+
516
+ image_popup = Image(popups=True)
517
+ image_side_panel = Image(popups=False)
518
+
519
+ ml.addWidget(image_popup)
520
+ ml.addWidget(image_side_panel)
521
+
522
+ win.resize(1500, 800)
523
+ win.show()
524
+ sys.exit(app.exec_())