bec-widgets 1.3.3__tar.gz → 1.4.1__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 (293) hide show
  1. bec_widgets-1.4.1/CHANGELOG.md +209 -0
  2. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/PKG-INFO +1 -2
  3. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/crosshair.py +134 -33
  4. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/figure/plots/plot_base.py +4 -4
  5. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/positioner_box/positioner_box.py +14 -5
  6. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/pyproject.toml +1 -1
  7. bec_widgets-1.3.3/CHANGELOG.md +0 -170
  8. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/.git_hooks/pre-commit +0 -0
  9. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/.gitignore +0 -0
  10. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/.gitlab/issue_templates/bug_report_template.md +0 -0
  11. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/.gitlab/issue_templates/documentation_update_template.md +0 -0
  12. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/.gitlab/issue_templates/feature_request_template.md +0 -0
  13. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/.gitlab/merge_request_templates/default.md +0 -0
  14. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/.gitlab-ci.yml +0 -0
  15. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/.pylintrc +0 -0
  16. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/.readthedocs.yaml +0 -0
  17. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/LICENSE +0 -0
  18. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/README.md +0 -0
  19. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/__init__.py +0 -0
  20. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/applications/__init__.py +0 -0
  21. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/applications/alignment/__init__.py +0 -0
  22. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/applications/alignment/alignment_1d/__init__.py +0 -0
  23. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/applications/alignment/alignment_1d/alignment_1d.py +0 -0
  24. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/applications/alignment/alignment_1d/alignment_1d.ui +0 -0
  25. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/applications/bec_app.py +0 -0
  26. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
  27. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/assets/app_icons/alignment_1d.png +0 -0
  28. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
  29. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/cli/__init__.py +0 -0
  30. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/cli/auto_updates.py +0 -0
  31. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/cli/client.py +0 -0
  32. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/cli/client_utils.py +0 -0
  33. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/cli/generate_cli.py +0 -0
  34. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/cli/rpc_register.py +0 -0
  35. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/cli/rpc_wigdet_handler.py +0 -0
  36. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/cli/server.py +0 -0
  37. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/examples/__init__.py +0 -0
  38. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/examples/general_app/__init__.py +0 -0
  39. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/examples/general_app/general_app.py +0 -0
  40. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/examples/general_app/general_app.ui +0 -0
  41. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/examples/general_app/web_links.py +0 -0
  42. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  43. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
  44. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
  45. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
  46. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
  47. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
  48. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
  49. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
  50. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
  51. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/qt_utils/__init__.py +0 -0
  52. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/qt_utils/compact_popup.py +0 -0
  53. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/qt_utils/error_popups.py +0 -0
  54. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/qt_utils/palette_viewer.py +0 -0
  55. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/qt_utils/redis_message_waiter.py +0 -0
  56. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/qt_utils/settings_dialog.py +0 -0
  57. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/qt_utils/toolbar.py +0 -0
  58. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/tests/__init__.py +0 -0
  59. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/tests/utils.py +0 -0
  60. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/__init__.py +0 -0
  61. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/bec_connector.py +0 -0
  62. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/bec_designer.py +0 -0
  63. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/bec_dispatcher.py +0 -0
  64. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/bec_signal_proxy.py +0 -0
  65. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/bec_table.py +0 -0
  66. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/bec_widget.py +0 -0
  67. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/colors.py +0 -0
  68. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/container_utils.py +0 -0
  69. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/entry_validator.py +0 -0
  70. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/filter_io.py +0 -0
  71. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/fps_counter.py +0 -0
  72. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/generate_designer_plugin.py +0 -0
  73. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/layout_manager.py +0 -0
  74. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/linear_region_selector.py +0 -0
  75. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/ophyd_kind_util.py +0 -0
  76. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/plot_indicator_items.py +0 -0
  77. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
  78. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/plugin_templates/register.template +0 -0
  79. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/plugin_utils.py +0 -0
  80. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/reference_utils.py +0 -0
  81. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/rpc_decorator.py +0 -0
  82. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/thread_checker.py +0 -0
  83. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/ui_loader.py +0 -0
  84. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/validator_delegate.py +0 -0
  85. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/widget_io.py +0 -0
  86. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/utils/yaml_dialog.py +0 -0
  87. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/__init__.py +0 -0
  88. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/base_classes/__init__.py +0 -0
  89. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/base_classes/device_input_base.py +0 -0
  90. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/base_classes/device_signal_input_base.py +0 -0
  91. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/bec_progressbar/__init__.py +0 -0
  92. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/bec_progressbar/bec_progress_bar.pyproject +0 -0
  93. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/bec_progressbar/bec_progress_bar_plugin.py +0 -0
  94. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/bec_progressbar/bec_progressbar.py +0 -0
  95. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/bec_progressbar/register_bec_progress_bar.py +0 -0
  96. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/bec_queue/__init__.py +0 -0
  97. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/bec_queue/bec_queue.py +0 -0
  98. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/bec_queue/bec_queue.pyproject +0 -0
  99. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/bec_queue/bec_queue_plugin.py +0 -0
  100. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/bec_queue/register_bec_queue.py +0 -0
  101. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/bec_status_box/__init__.py +0 -0
  102. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/bec_status_box/bec_status_box.py +0 -0
  103. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/bec_status_box/bec_status_box.pyproject +0 -0
  104. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py +0 -0
  105. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/bec_status_box/register_bec_status_box.py +0 -0
  106. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/bec_status_box/status_item.py +0 -0
  107. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/button_abort/__init__.py +0 -0
  108. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/button_abort/abort_button.pyproject +0 -0
  109. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/button_abort/abort_button_plugin.py +0 -0
  110. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/button_abort/button_abort.py +0 -0
  111. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/button_abort/register_abort_button.py +0 -0
  112. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/button_reset/__init__.py +0 -0
  113. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/button_reset/button_reset.py +0 -0
  114. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/button_reset/register_reset_button.py +0 -0
  115. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/button_reset/reset_button.pyproject +0 -0
  116. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/button_reset/reset_button_plugin.py +0 -0
  117. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/button_resume/__init__.py +0 -0
  118. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/button_resume/button_resume.py +0 -0
  119. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/button_resume/register_resume_button.py +0 -0
  120. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/button_resume/resume_button.pyproject +0 -0
  121. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/button_resume/resume_button_plugin.py +0 -0
  122. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/color_button/__init__.py +0 -0
  123. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/color_button/color_button.py +0 -0
  124. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/color_button/color_button.pyproject +0 -0
  125. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/color_button/color_button_plugin.py +0 -0
  126. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/color_button/register_color_button.py +0 -0
  127. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/colormap_selector/__init__.py +0 -0
  128. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/colormap_selector/colormap_selector.py +0 -0
  129. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/colormap_selector/colormap_selector.pyproject +0 -0
  130. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py +0 -0
  131. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/colormap_selector/register_colormap_selector.py +0 -0
  132. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/colormap_widget/__init__.py +0 -0
  133. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/colormap_widget/bec_color_map_widget.pyproject +0 -0
  134. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/colormap_widget/bec_color_map_widget_plugin.py +0 -0
  135. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/colormap_widget/colormap_widget.py +0 -0
  136. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/colormap_widget/register_bec_color_map_widget.py +0 -0
  137. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/console/console.py +0 -0
  138. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/console/console.pyproject +0 -0
  139. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/console/console_plugin.py +0 -0
  140. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/console/register_console.py +0 -0
  141. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/dap_combo_box/__init__.py +0 -0
  142. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/dap_combo_box/dap_combo_box.py +0 -0
  143. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/dap_combo_box/dap_combo_box.pyproject +0 -0
  144. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/dap_combo_box/dap_combo_box_plugin.py +0 -0
  145. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/dap_combo_box/register_dap_combo_box.py +0 -0
  146. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/dark_mode_button/__init__.py +0 -0
  147. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/dark_mode_button/dark_mode_button.py +0 -0
  148. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/dark_mode_button/dark_mode_button.pyproject +0 -0
  149. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/dark_mode_button/dark_mode_button_plugin.py +0 -0
  150. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/dark_mode_button/register_dark_mode_button.py +0 -0
  151. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_browser/__init__.py +0 -0
  152. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_browser/device_browser.py +0 -0
  153. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_browser/device_browser.pyproject +0 -0
  154. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_browser/device_browser.ui +0 -0
  155. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_browser/device_browser_plugin.py +0 -0
  156. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_browser/device_item/__init__.py +0 -0
  157. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_browser/device_item/device_item.py +0 -0
  158. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_browser/register_device_browser.py +0 -0
  159. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_combobox/__init__.py +0 -0
  160. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_combobox/device_combo_box.pyproject +0 -0
  161. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_combobox/device_combo_box_plugin.py +0 -0
  162. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_combobox/device_combobox.py +0 -0
  163. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_combobox/register_device_combo_box.py +0 -0
  164. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_line_edit/__init__.py +0 -0
  165. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_line_edit/device_line_edit.py +0 -0
  166. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_line_edit/device_line_edit.pyproject +0 -0
  167. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py +0 -0
  168. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/device_line_edit/register_device_line_edit.py +0 -0
  169. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/dock/__init__.py +0 -0
  170. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/dock/dock.py +0 -0
  171. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/dock/dock_area.py +0 -0
  172. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/dock/dock_area.pyproject +0 -0
  173. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/dock/dock_area_plugin.py +0 -0
  174. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/dock/register_dock_area.py +0 -0
  175. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/figure/__init__.py +0 -0
  176. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/figure/figure.py +0 -0
  177. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/figure/plots/__init__.py +0 -0
  178. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/figure/plots/axis_settings.py +0 -0
  179. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/figure/plots/axis_settings.ui +0 -0
  180. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/figure/plots/image/__init__.py +0 -0
  181. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/figure/plots/image/image.py +0 -0
  182. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/figure/plots/image/image_item.py +0 -0
  183. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/figure/plots/image/image_processor.py +0 -0
  184. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/figure/plots/motor_map/__init__.py +0 -0
  185. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/figure/plots/motor_map/motor_map.py +0 -0
  186. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/figure/plots/waveform/__init__.py +0 -0
  187. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/figure/plots/waveform/waveform.py +0 -0
  188. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +0 -0
  189. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/image/__init__.py +0 -0
  190. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/image/bec_image_widget.pyproject +0 -0
  191. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/image/bec_image_widget_plugin.py +0 -0
  192. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/image/image_widget.py +0 -0
  193. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/image/register_bec_image_widget.py +0 -0
  194. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/jupyter_console/__init__.py +0 -0
  195. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/jupyter_console/jupyter_console.py +0 -0
  196. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/lmfit_dialog/__init__.py +0 -0
  197. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
  198. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
  199. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog.py +0 -0
  200. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
  201. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
  202. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/lmfit_dialog/register_lm_fit_dialog.py +0 -0
  203. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/motor_map/__init__.py +0 -0
  204. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/motor_map/bec_motor_map_widget.pyproject +0 -0
  205. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py +0 -0
  206. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/motor_map/motor_map_dialog/__init__.py +0 -0
  207. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py +0 -0
  208. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui +0 -0
  209. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/motor_map/motor_map_widget.py +0 -0
  210. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py +0 -0
  211. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/position_indicator/__init__.py +0 -0
  212. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/position_indicator/position_indicator.py +0 -0
  213. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/position_indicator/position_indicator.pyproject +0 -0
  214. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/position_indicator/position_indicator_plugin.py +0 -0
  215. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/position_indicator/register_position_indicator.py +0 -0
  216. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/positioner_box/__init__.py +0 -0
  217. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/positioner_box/positioner_box.pyproject +0 -0
  218. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/positioner_box/positioner_box.ui +0 -0
  219. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/positioner_box/positioner_box_plugin.py +0 -0
  220. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/positioner_box/positioner_control_line.py +0 -0
  221. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/positioner_box/positioner_control_line.pyproject +0 -0
  222. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/positioner_box/positioner_control_line.ui +0 -0
  223. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py +0 -0
  224. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/positioner_box/register_positioner_box.py +0 -0
  225. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/positioner_box/register_positioner_control_line.py +0 -0
  226. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/positioner_group/__init__.py +0 -0
  227. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/positioner_group/positioner_group.py +0 -0
  228. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/positioner_group/positioner_group.pyproject +0 -0
  229. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/positioner_group/positioner_group_plugin.py +0 -0
  230. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/positioner_group/register_positioner_group.py +0 -0
  231. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/ring_progress_bar/__init__.py +0 -0
  232. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/ring_progress_bar/register_ring_progress_bar.py +0 -0
  233. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/ring_progress_bar/ring.py +0 -0
  234. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.py +0 -0
  235. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject +0 -0
  236. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
  237. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/scan_control/__init__.py +0 -0
  238. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/scan_control/register_scan_control.py +0 -0
  239. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/scan_control/scan_control.py +0 -0
  240. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/scan_control/scan_control.pyproject +0 -0
  241. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/scan_control/scan_control_plugin.py +0 -0
  242. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/scan_control/scan_group_box.py +0 -0
  243. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/signal_combobox/__init__.py +0 -0
  244. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/signal_combobox/register_signal_combobox.py +0 -0
  245. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/signal_combobox/signal_combobox.py +0 -0
  246. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/signal_combobox/signal_combobox.pyproject +0 -0
  247. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/signal_combobox/signal_combobox_plugin.py +0 -0
  248. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/signal_line_edit/__init__.py +0 -0
  249. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/signal_line_edit/register_signal_line_edit.py +0 -0
  250. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/signal_line_edit/signal_line_edit.py +0 -0
  251. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/signal_line_edit/signal_line_edit.pyproject +0 -0
  252. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/signal_line_edit/signal_line_edit_plugin.py +0 -0
  253. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/spinner/__init__.py +0 -0
  254. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/spinner/register_spinner_widget.py +0 -0
  255. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/spinner/spinner.py +0 -0
  256. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/spinner/spinner_widget.pyproject +0 -0
  257. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/spinner/spinner_widget_plugin.py +0 -0
  258. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/stop_button/__init__.py +0 -0
  259. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/stop_button/register_stop_button.py +0 -0
  260. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/stop_button/stop_button.py +0 -0
  261. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/stop_button/stop_button.pyproject +0 -0
  262. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/stop_button/stop_button_plugin.py +0 -0
  263. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/text_box/__init__.py +0 -0
  264. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/text_box/register_text_box.py +0 -0
  265. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/text_box/text_box.py +0 -0
  266. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/text_box/text_box.pyproject +0 -0
  267. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/text_box/text_box_plugin.py +0 -0
  268. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/toggle/__init__.py +0 -0
  269. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/toggle/register_toggle_switch.py +0 -0
  270. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/toggle/toggle.py +0 -0
  271. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/toggle/toggle_switch.pyproject +0 -0
  272. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/toggle/toggle_switch_plugin.py +0 -0
  273. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/vscode/__init__.py +0 -0
  274. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/vscode/register_vs_code_editor.py +0 -0
  275. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/vscode/vs_code_editor.pyproject +0 -0
  276. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/vscode/vs_code_editor_plugin.py +0 -0
  277. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/vscode/vscode.py +0 -0
  278. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/waveform/__init__.py +0 -0
  279. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/waveform/bec_waveform_widget.pyproject +0 -0
  280. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py +0 -0
  281. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/waveform/register_bec_waveform_widget.py +0 -0
  282. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/waveform/waveform_popups/__init__.py +0 -0
  283. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/__init__.py +0 -0
  284. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.py +0 -0
  285. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.ui +0 -0
  286. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/__init__.py +0 -0
  287. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py +0 -0
  288. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/waveform/waveform_widget.py +0 -0
  289. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/website/__init__.py +0 -0
  290. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/website/register_website_widget.py +0 -0
  291. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/website/website.py +0 -0
  292. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/website/website_widget.pyproject +0 -0
  293. {bec_widgets-1.3.3 → bec_widgets-1.4.1}/bec_widgets/widgets/website/website_widget_plugin.py +0 -0
@@ -0,0 +1,209 @@
1
+ # CHANGELOG
2
+
3
+
4
+ ## v1.4.1 (2024-11-12)
5
+
6
+ ### Bug Fixes
7
+
8
+ - **positioner_box**: Adjusted default signals
9
+ ([`8e5c0ad`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/8e5c0ad8c8eff5a9308169bc663d2b7230f0ebb1))
10
+
11
+
12
+ ## v1.4.0 (2024-11-11)
13
+
14
+ ### Bug Fixes
15
+
16
+ - **crosshair**: Label of coordinates of TextItem displays numbers in general format
17
+ ([`11e5937`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/11e5937ae0f3c1413acd4e66878a692ebe4ef7d0))
18
+
19
+ - **crosshair**: Label of coordinates of TextItem is updated according to the current theme of qapp
20
+ ([`4f31ea6`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4f31ea655cf6190e141e6a2720a2d6da517a2b5b))
21
+
22
+ - **crosshair**: Log is separately scaled for backend logic and for signal emit
23
+ ([`b2eb71a`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b2eb71aae0b6a7c82158f2d150ae1e31411cfdeb))
24
+
25
+ ### Features
26
+
27
+ - **crosshair**: Textitem to display crosshair coordinates
28
+ ([`035136d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/035136d5171ec5f4311d15a9aa5bad2bdbc1f6cb))
29
+
30
+ ### Testing
31
+
32
+ - **crosshair**: Tests extended
33
+ ([`64df805`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/64df805a9ed92bb97e580ac3bc0a1bbd2b1cb81e))
34
+
35
+
36
+ ## v1.3.3 (2024-11-07)
37
+
38
+ ### Bug Fixes
39
+
40
+ - **scan_control**: Devicelineedit kwargs readings changed to get name of the positioner
41
+ ([`5fabd4b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/5fabd4bea95bafd2352102686357cc1db80813fd))
42
+
43
+ ### Documentation
44
+
45
+ - Update outdated text in docs
46
+ ([`4f0693c`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4f0693cae34b391d75884837e1ae6353a0501868))
47
+
48
+
49
+ ## v1.3.2 (2024-11-05)
50
+
51
+ ### Bug Fixes
52
+
53
+ - **plot_base**: Legend text color is changed when changing dark-light theme
54
+ ([`2304c9f`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/2304c9f8497c1ab1492f3e6690bb79b0464c0df8))
55
+
56
+ ### Build System
57
+
58
+ - Pyside6 version fixed 6.7.2
59
+ ([`c6e48ec`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/c6e48ec1fe5aaee6a7c7a6f930f1520cd439cdb2))
60
+
61
+
62
+ ## v1.3.1 (2024-10-31)
63
+
64
+ ### Bug Fixes
65
+
66
+ - **ophyd_kind_util**: Kind enums are imported from the bec widget util class
67
+ ([`940ee65`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/940ee6552c1ee8d9b4e4a74c62351f2e133ab678))
68
+
69
+
70
+ ## v1.3.0 (2024-10-30)
71
+
72
+ ### Bug Fixes
73
+
74
+ - **colors**: Extend color map validation for matplotlib and colorcet maps (if available)
75
+ ([`14dd8c5`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/14dd8c5b2947c92f6643b888d71975e4e8d4ee88))
76
+
77
+ ### Features
78
+
79
+ - **colormap_button**: Colormap button with menu to select colormap filtered by the colormap type
80
+ ([`b039933`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b039933405e2fbe92bd81bd0748e79e8d443a741))
81
+
82
+
83
+ ## v1.2.0 (2024-10-25)
84
+
85
+ ### Features
86
+
87
+ - **colors**: Evenly spaced color generation + new golden ratio calculation
88
+ ([`40c9fea`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/40c9fea35f869ef52e05948dd1989bcd99f602e0))
89
+
90
+ ### Refactoring
91
+
92
+ - Add bec_lib version to statusbox
93
+ ([`5d4b86e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/5d4b86e1c6e1800051afce4f991153e370767fa6))
94
+
95
+
96
+ ## v1.1.0 (2024-10-25)
97
+
98
+ ### Features
99
+
100
+ - Add filter i/o utility class
101
+ ([`0350833`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/0350833f36e0a7cadce4173f9b1d1fbfdf985375))
102
+
103
+ ### Refactoring
104
+
105
+ - Do not flush selection upon receiving config update; allow widgetIO to receive kwargs to be able
106
+ to use get_value to receive string instead of int for QComboBox
107
+ ([`91959e8`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/91959e82de8586934af3ebb5aaa0923930effc51))
108
+
109
+ - Allow to set selection in DeviceInput; automatic update of selection on device config update;
110
+ cleanup
111
+ ([`5eb15b7`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/5eb15b785f12e30eb8ccbc56d4ad9e759a4cf5eb))
112
+
113
+ - Cleanup, added device_signal for signal inputs
114
+ ([`6fb2055`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/6fb20552ff57978f4aeb79fd7f062f8d6b5581e7))
115
+
116
+ ### Testing
117
+
118
+ - **scan_control**: Tests added for grid_scan to ensure scan_args signal validity
119
+ ([`acb7902`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/acb79020d4be546efc001ff47b6f5cdba2ee9375))
120
+
121
+
122
+ ## v1.0.2 (2024-10-22)
123
+
124
+ ### Bug Fixes
125
+
126
+ - **scan_control**: Scan args signal fixed to emit list instead of hardcoded structure
127
+ ([`4f5448c`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4f5448cf51a204e077af162c7f0aed1f1a60e57a))
128
+
129
+
130
+ ## v1.0.1 (2024-10-22)
131
+
132
+ ### Bug Fixes
133
+
134
+ - **waveform**: Added support for live_data and data access
135
+ ([`7469c89`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/7469c892c8076fc09e61f173df6920c551241cec))
136
+
137
+
138
+ ## v1.0.0 (2024-10-18)
139
+
140
+ ### Bug Fixes
141
+
142
+ - **crosshair**: Downsample clear markers
143
+ ([`f9a889f`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f9a889fc6d380b9e587edcb465203122ea0bffc1))
144
+
145
+ ### Features
146
+
147
+ - Ability to disable scatter from waveform & compatible crosshair with down sampling
148
+ ([`2ab12ed`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/2ab12ed60abb995abc381d9330fdcf399796d9e5))
149
+
150
+
151
+ ## v0.119.0 (2024-10-17)
152
+
153
+ ### Bug Fixes
154
+
155
+ - Fix syntax due to change of api for simulated devices
156
+ ([`19f4e40`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/19f4e407e00ee242973ca4c3f90e4e41a4d3e315))
157
+
158
+ - Remove wrongly scoped test
159
+ ([`a23841b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a23841b2553dc7162da943715d58275c7dc39ed9))
160
+
161
+ - Rename 'compact' property -> 'compact_view'
162
+ ([`6982711`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/6982711fea5fb8a73845ed7c0692e3ec53ef7871))
163
+
164
+ - Alignment 1D update, make app window a main window (in .ui file)
165
+ ([`0015f0e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/0015f0e2d62adc02d3ef334e1f6dbb2d0288fec6))
166
+
167
+ - Set (Minimum, Fixed) size policy on Stop button
168
+ ([`523cc43`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/523cc435725b10b7d59a4477a1aaa24a1f3e37a2))
169
+
170
+ ### Features
171
+
172
+ - New PositionerGroup widget
173
+ ([`af9655d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/af9655de0c541092437accfbaa779628a2f48ccb))
174
+
175
+ - Add 'expand_popup' property to CompactPopupWidget
176
+ ([`e4121a0`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/e4121a01cb6b8d496e630cd43bc642b994b8f310))
177
+
178
+ This property tells if expand should show a popup (by default), or if the widget should expand
179
+ in-place
180
+
181
+ - Positionerbox with a popup view
182
+ ([`2615787`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/261578796f1de8ca9cab9b91659bc1484f7aa89d))
183
+
184
+ - Emit 'device_selected' and 'scan_axis' from scan control widget
185
+ ([`0b9b1a3`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/0b9b1a3c89a98505079f7d4078915b7bbfaa1e23))
186
+
187
+ - New 'device_selected' signals to ScanControl, ScanGroupBox, DeviceLineEdit
188
+ ([`9801d27`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/9801d2769eb0ee95c94ec0c011e1dac1407142ae))
189
+
190
+ ### Refactoring
191
+
192
+ - Redesign of scan selection and scan control boxes
193
+ ([`a69d287`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a69d2870e2b3539739781d741b27b8599c0f4abd))
194
+
195
+ - Move add/remove bundle to scan group box
196
+ ([`e3d0a7b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/e3d0a7bbf9918dc16eb7227a178c310256ce570d))
197
+
198
+
199
+ ## v0.118.0 (2024-10-13)
200
+
201
+ ### Documentation
202
+
203
+ - **sphinx-build**: Adjusted pyside verion
204
+ ([`b236951`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b23695167ab969f754a058ffdccca2b40f00a008))
205
+
206
+ ### Features
207
+
208
+ - **image**: Image widget can take data from monitor_1d endpoint
209
+ ([`9ef1d1c`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/9ef1d1c9ac2178d9fa2e655942208f8abbdf5c1b))
@@ -1,10 +1,9 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 1.3.3
3
+ Version: 1.4.1
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
7
- License-File: LICENSE
8
7
  Classifier: Development Status :: 3 - Alpha
9
8
  Classifier: Programming Language :: Python :: 3
10
9
  Classifier: Topic :: Scientific/Engineering
@@ -2,10 +2,8 @@ from collections import defaultdict
2
2
 
3
3
  import numpy as np
4
4
  import pyqtgraph as pg
5
-
6
- # from qtpy.QtCore import QObject, pyqtSignal
7
- from qtpy.QtCore import QObject, Qt
8
- from qtpy.QtCore import Signal as pyqtSignal
5
+ from qtpy.QtCore import QObject, Qt, Signal, Slot
6
+ from qtpy.QtWidgets import QApplication
9
7
 
10
8
 
11
9
  class NonDownsamplingScatterPlotItem(pg.ScatterPlotItem):
@@ -17,14 +15,18 @@ class NonDownsamplingScatterPlotItem(pg.ScatterPlotItem):
17
15
 
18
16
 
19
17
  class Crosshair(QObject):
20
- positionChanged = pyqtSignal(tuple)
21
- positionClicked = pyqtSignal(tuple)
18
+ # QT Position of mouse cursor
19
+ positionChanged = Signal(tuple)
20
+ positionClicked = Signal(tuple)
21
+ # Plain crosshair position signals mapped to real coordinates
22
+ crosshairChanged = Signal(tuple)
23
+ crosshairClicked = Signal(tuple)
22
24
  # Signal for 1D plot
23
- coordinatesChanged1D = pyqtSignal(tuple)
24
- coordinatesClicked1D = pyqtSignal(tuple)
25
+ coordinatesChanged1D = Signal(tuple)
26
+ coordinatesClicked1D = Signal(tuple)
25
27
  # Signal for 2D plot
26
- coordinatesChanged2D = pyqtSignal(tuple)
27
- coordinatesClicked2D = pyqtSignal(tuple)
28
+ coordinatesChanged2D = Signal(tuple)
29
+ coordinatesClicked2D = Signal(tuple)
28
30
 
29
31
  def __init__(self, plot_item: pg.PlotItem, precision: int = 3, parent=None):
30
32
  """
@@ -47,11 +49,21 @@ class Crosshair(QObject):
47
49
  self.h_line.skip_auto_range = True
48
50
  self.plot_item.addItem(self.v_line, ignoreBounds=True)
49
51
  self.plot_item.addItem(self.h_line, ignoreBounds=True)
52
+
53
+ # Add TextItem to display coordinates
54
+ self.coord_label = pg.TextItem("", anchor=(1, 1), fill=(0, 0, 0, 100))
55
+ self.coord_label.setVisible(False) # Hide initially
56
+ self.coord_label.skip_auto_range = True
57
+ self.plot_item.addItem(self.coord_label)
58
+
59
+ # Signals to connect
50
60
  self.proxy = pg.SignalProxy(
51
61
  self.plot_item.scene().sigMouseMoved, rateLimit=60, slot=self.mouse_moved
52
62
  )
63
+ self.positionChanged.connect(self.update_coord_label)
53
64
  self.plot_item.scene().sigMouseClicked.connect(self.mouse_clicked)
54
65
 
66
+ # Connect signals from pyqtgraph right click menu
55
67
  self.plot_item.ctrl.derivativeCheck.checkStateChanged.connect(self.check_derivatives)
56
68
  self.plot_item.ctrl.logXCheck.checkStateChanged.connect(self.check_log)
57
69
  self.plot_item.ctrl.logYCheck.checkStateChanged.connect(self.check_log)
@@ -62,6 +74,44 @@ class Crosshair(QObject):
62
74
  self.marker_clicked_1d = {}
63
75
  self.marker_2d = None
64
76
  self.update_markers()
77
+ self.check_log()
78
+ self.check_derivatives()
79
+
80
+ self._connect_to_theme_change()
81
+
82
+ def _connect_to_theme_change(self):
83
+ """Connect to the theme change signal."""
84
+ qapp = QApplication.instance()
85
+ if hasattr(qapp, "theme_signal"):
86
+ qapp.theme_signal.theme_updated.connect(self._update_theme)
87
+ self._update_theme()
88
+
89
+ @Slot(str)
90
+ def _update_theme(self, theme: str | None = None):
91
+ """Update the theme."""
92
+ if theme is None:
93
+ qapp = QApplication.instance()
94
+ if hasattr(qapp, "theme"):
95
+ theme = qapp.theme.theme
96
+ else:
97
+ theme = "dark"
98
+ self.apply_theme(theme)
99
+
100
+ def apply_theme(self, theme: str):
101
+ """Apply the theme to the plot."""
102
+ if theme == "dark":
103
+ text_color = "w"
104
+ label_bg_color = (50, 50, 50, 150)
105
+ elif theme == "light":
106
+ text_color = "k"
107
+ label_bg_color = (240, 240, 240, 150)
108
+ else:
109
+ text_color = "w"
110
+ label_bg_color = (50, 50, 50, 150)
111
+
112
+ self.coord_label.setColor(text_color)
113
+ self.coord_label.fill = pg.mkBrush(label_bg_color)
114
+ self.coord_label.border = pg.mkPen(None)
65
115
 
66
116
  def update_markers(self):
67
117
  """Update the markers for the crosshair, creating new ones if necessary."""
@@ -151,21 +201,34 @@ class Crosshair(QObject):
151
201
 
152
202
  return None, None
153
203
 
154
- def closest_x_y_value(self, input_value: float, list_x: list, list_y: list) -> tuple:
204
+ def closest_x_y_value(self, input_x: float, list_x: list, list_y: list) -> tuple:
155
205
  """
156
206
  Find the closest x and y value to the input value.
157
207
 
158
208
  Args:
159
- input_value (float): Input value
209
+ input_x (float): Input value
160
210
  list_x (list): List of x values
161
211
  list_y (list): List of y values
162
212
 
163
213
  Returns:
164
214
  tuple: Closest x and y value
165
215
  """
166
- arr = np.asarray(list_x)
167
- i = (np.abs(arr - input_value)).argmin()
168
- return list_x[i], list_y[i]
216
+ # Convert lists to NumPy arrays
217
+ arr_x = np.asarray(list_x)
218
+
219
+ # Get the indices where x is not NaN
220
+ valid_indices = ~np.isnan(arr_x)
221
+
222
+ # Filter x array to exclude NaN values
223
+ filtered_x = arr_x[valid_indices]
224
+
225
+ # Find the index of the closest value in the filtered x array
226
+ closest_index = np.abs(filtered_x - input_x).argmin()
227
+
228
+ # Map back to the original index in the list_x and list_y arrays
229
+ original_index = np.where(valid_indices)[0][closest_index]
230
+
231
+ return list_x[original_index], list_y[original_index]
169
232
 
170
233
  def mouse_moved(self, event):
171
234
  """Handles the mouse moved event, updating the crosshair position and emitting signals.
@@ -175,17 +238,15 @@ class Crosshair(QObject):
175
238
  """
176
239
  pos = event[0]
177
240
  self.update_markers()
178
- self.positionChanged.emit((pos.x(), pos.y()))
179
241
  if self.plot_item.vb.sceneBoundingRect().contains(pos):
180
242
  mouse_point = self.plot_item.vb.mapSceneToView(pos)
181
- self.v_line.setPos(mouse_point.x())
182
- self.h_line.setPos(mouse_point.y())
183
-
184
243
  x, y = mouse_point.x(), mouse_point.y()
185
- if self.is_log_x:
186
- x = 10**x
187
- if self.is_log_y:
188
- y = 10**y
244
+ self.v_line.setPos(x)
245
+ self.h_line.setPos(y)
246
+ scaled_x, scaled_y = self.scale_emitted_coordinates(mouse_point.x(), mouse_point.y())
247
+ self.crosshairChanged.emit((scaled_x, scaled_y))
248
+ self.positionChanged.emit((x, y))
249
+
189
250
  x_snap_values, y_snap_values = self.snap_to_data(x, y)
190
251
  if x_snap_values is None or y_snap_values is None:
191
252
  return
@@ -202,7 +263,12 @@ class Crosshair(QObject):
202
263
  if x is None or y is None:
203
264
  continue
204
265
  self.marker_moved_1d[name].setData([x], [y])
205
- coordinate_to_emit = (name, round(x, self.precision), round(y, self.precision))
266
+ x_snapped_scaled, y_snapped_scaled = self.scale_emitted_coordinates(x, y)
267
+ coordinate_to_emit = (
268
+ name,
269
+ round(x_snapped_scaled, self.precision),
270
+ round(y_snapped_scaled, self.precision),
271
+ )
206
272
  self.coordinatesChanged1D.emit(coordinate_to_emit)
207
273
  elif isinstance(item, pg.ImageItem):
208
274
  name = item.config.monitor
@@ -229,12 +295,10 @@ class Crosshair(QObject):
229
295
  if self.plot_item.vb.sceneBoundingRect().contains(event._scenePos):
230
296
  mouse_point = self.plot_item.vb.mapSceneToView(event._scenePos)
231
297
  x, y = mouse_point.x(), mouse_point.y()
298
+ scaled_x, scaled_y = self.scale_emitted_coordinates(mouse_point.x(), mouse_point.y())
299
+ self.crosshairClicked.emit((scaled_x, scaled_y))
232
300
  self.positionClicked.emit((x, y))
233
301
 
234
- if self.is_log_x:
235
- x = 10**x
236
- if self.is_log_y:
237
- y = 10**y
238
302
  x_snap_values, y_snap_values = self.snap_to_data(x, y)
239
303
 
240
304
  if x_snap_values is None or y_snap_values is None:
@@ -252,7 +316,12 @@ class Crosshair(QObject):
252
316
  if x is None or y is None:
253
317
  continue
254
318
  self.marker_clicked_1d[name].setData([x], [y])
255
- coordinate_to_emit = (name, round(x, self.precision), round(y, self.precision))
319
+ x_snapped_scaled, y_snapped_scaled = self.scale_emitted_coordinates(x, y)
320
+ coordinate_to_emit = (
321
+ name,
322
+ round(x_snapped_scaled, self.precision),
323
+ round(y_snapped_scaled, self.precision),
324
+ )
256
325
  self.coordinatesClicked1D.emit(coordinate_to_emit)
257
326
  elif isinstance(item, pg.ImageItem):
258
327
  name = item.config.monitor
@@ -272,10 +341,40 @@ class Crosshair(QObject):
272
341
  for marker in self.marker_clicked_1d.values():
273
342
  marker.clear()
274
343
 
344
+ def scale_emitted_coordinates(self, x, y):
345
+ """Scales the emitted coordinates if the axes are in log scale.
346
+
347
+ Args:
348
+ x (float): The x-coordinate
349
+ y (float): The y-coordinate
350
+
351
+ Returns:
352
+ tuple: The scaled x and y coordinates
353
+ """
354
+ if self.is_log_x:
355
+ x = 10**x
356
+ if self.is_log_y:
357
+ y = 10**y
358
+ return x, y
359
+
360
+ def update_coord_label(self, pos: tuple):
361
+ """Updates the coordinate label based on the crosshair position and axis scales.
362
+
363
+ Args:
364
+ pos (tuple): The (x, y) position of the crosshair.
365
+ """
366
+ x, y = pos
367
+ x_scaled, y_scaled = self.scale_emitted_coordinates(x, y)
368
+
369
+ # # Update coordinate label
370
+ self.coord_label.setText(f"({x_scaled:.{self.precision}g}, {y_scaled:.{self.precision}g})")
371
+ self.coord_label.setPos(x, y)
372
+ self.coord_label.setVisible(True)
373
+
275
374
  def check_log(self):
276
375
  """Checks if the x or y axis is in log scale and updates the internal state accordingly."""
277
- self.is_log_x = self.plot_item.ctrl.logXCheck.isChecked()
278
- self.is_log_y = self.plot_item.ctrl.logYCheck.isChecked()
376
+ self.is_log_x = self.plot_item.axes["bottom"]["item"].logMode
377
+ self.is_log_y = self.plot_item.axes["left"]["item"].logMode
279
378
  self.clear_markers()
280
379
 
281
380
  def check_derivatives(self):
@@ -284,6 +383,8 @@ class Crosshair(QObject):
284
383
  self.clear_markers()
285
384
 
286
385
  def cleanup(self):
287
- self.v_line.deleteLater()
288
- self.h_line.deleteLater()
386
+ self.plot_item.removeItem(self.v_line)
387
+ self.plot_item.removeItem(self.h_line)
388
+ self.plot_item.removeItem(self.coord_label)
389
+
289
390
  self.clear_markers()
@@ -397,8 +397,8 @@ class BECPlotBase(BECConnector, pg.GraphicsLayout):
397
397
  """Hook the crosshair to all plots."""
398
398
  if self.crosshair is None:
399
399
  self.crosshair = Crosshair(self.plot_item, precision=3)
400
- self.crosshair.positionChanged.connect(self.crosshair_position_changed)
401
- self.crosshair.positionClicked.connect(self.crosshair_position_clicked)
400
+ self.crosshair.crosshairChanged.connect(self.crosshair_position_changed)
401
+ self.crosshair.crosshairClicked.connect(self.crosshair_position_clicked)
402
402
  self.crosshair.coordinatesChanged1D.connect(self.crosshair_coordinates_changed)
403
403
  self.crosshair.coordinatesClicked1D.connect(self.crosshair_coordinates_clicked)
404
404
  self.crosshair.coordinatesChanged2D.connect(self.crosshair_coordinates_changed)
@@ -407,8 +407,8 @@ class BECPlotBase(BECConnector, pg.GraphicsLayout):
407
407
  def unhook_crosshair(self) -> None:
408
408
  """Unhook the crosshair from all plots."""
409
409
  if self.crosshair is not None:
410
- self.crosshair.positionChanged.disconnect(self.crosshair_position_changed)
411
- self.crosshair.positionClicked.disconnect(self.crosshair_position_clicked)
410
+ self.crosshair.crosshairChanged.disconnect(self.crosshair_position_changed)
411
+ self.crosshair.crosshairClicked.disconnect(self.crosshair_position_clicked)
412
412
  self.crosshair.coordinatesChanged1D.disconnect(self.crosshair_coordinates_changed)
413
413
  self.crosshair.coordinatesClicked1D.disconnect(self.crosshair_coordinates_clicked)
414
414
  self.crosshair.coordinatesChanged2D.disconnect(self.crosshair_coordinates_changed)
@@ -240,11 +240,18 @@ class PositionerBox(BECWidget, CompactPopupWidget):
240
240
  signal = hinted_signals[0]
241
241
  readback_val = signals.get(signal, {}).get("value")
242
242
 
243
- if f"{self.device}_setpoint" in signals:
244
- setpoint_val = signals.get(f"{self.device}_setpoint", {}).get("value")
245
-
246
- if f"{self.device}_motor_is_moving" in signals:
247
- is_moving = signals.get(f"{self.device}_motor_is_moving", {}).get("value")
243
+ for setpoint_signal in ["setpoint", "user_setpoint"]:
244
+ setpoint_val = signals.get(f"{self.device}_{setpoint_signal}", {}).get("value")
245
+ if setpoint_val is not None:
246
+ break
247
+
248
+ for moving_signal in ["motor_done_move", "motor_is_moving"]:
249
+ is_moving = signals.get(f"{self.device}_{moving_signal}", {}).get("value")
250
+ if is_moving is not None:
251
+ break
252
+
253
+ if is_moving is not None:
254
+ self.ui.spinner_widget.setVisible(True)
248
255
  if is_moving:
249
256
  self.ui.spinner_widget.start()
250
257
  self.ui.spinner_widget.setToolTip("Device is moving")
@@ -253,6 +260,8 @@ class PositionerBox(BECWidget, CompactPopupWidget):
253
260
  self.ui.spinner_widget.stop()
254
261
  self.ui.spinner_widget.setToolTip("Device is idle")
255
262
  self.set_global_state("success")
263
+ else:
264
+ self.ui.spinner_widget.setVisible(False)
256
265
 
257
266
  if readback_val is not None:
258
267
  self.ui.readback.setText(f"{readback_val:.{precision}f}")
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "1.3.3"
7
+ version = "1.4.1"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [