bec-widgets 0.110.0__tar.gz → 0.111.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 (259) hide show
  1. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/CHANGELOG.md +20 -22
  2. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/PKG-INFO +1 -1
  3. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/cli/client.py +42 -0
  4. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/cli/generate_cli.py +1 -0
  5. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/qt_utils/palette_viewer.py +1 -1
  6. bec_widgets-0.111.0/bec_widgets/widgets/position_indicator/position_indicator.py +291 -0
  7. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/positioner_box/positioner_box.py +6 -2
  8. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/positioner_box/positioner_box.ui +14 -1
  9. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/positioner_box/positioner_control_line.py +0 -2
  10. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/positioner_box/positioner_control_line.ui +41 -23
  11. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/pyproject.toml +1 -1
  12. bec_widgets-0.110.0/bec_widgets/widgets/position_indicator/position_indicator.py +0 -73
  13. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/.git_hooks/pre-commit +0 -0
  14. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/.gitignore +0 -0
  15. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/.gitlab/issue_templates/bug_report_template.md +0 -0
  16. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/.gitlab/issue_templates/documentation_update_template.md +0 -0
  17. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/.gitlab/issue_templates/feature_request_template.md +0 -0
  18. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/.gitlab/merge_request_templates/default.md +0 -0
  19. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/.gitlab-ci.yml +0 -0
  20. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/.pylintrc +0 -0
  21. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/.readthedocs.yaml +0 -0
  22. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/LICENSE +0 -0
  23. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/README.md +0 -0
  24. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/__init__.py +0 -0
  25. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
  26. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
  27. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/assets/status_icons/error.svg +0 -0
  28. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/assets/status_icons/not_connected.svg +0 -0
  29. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/assets/status_icons/refresh.svg +0 -0
  30. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/assets/status_icons/running.svg +0 -0
  31. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/assets/status_icons/warning.svg +0 -0
  32. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/cli/__init__.py +0 -0
  33. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/cli/auto_updates.py +0 -0
  34. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/cli/client_utils.py +0 -0
  35. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/cli/rpc_register.py +0 -0
  36. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/cli/rpc_wigdet_handler.py +0 -0
  37. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/cli/server.py +0 -0
  38. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/examples/__init__.py +0 -0
  39. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/examples/general_app/__init__.py +0 -0
  40. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/examples/general_app/general_app.py +0 -0
  41. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/examples/general_app/general_app.ui +0 -0
  42. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/examples/general_app/web_links.py +0 -0
  43. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  44. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
  45. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
  46. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
  47. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
  48. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
  49. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
  50. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
  51. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
  52. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/qt_utils/__init__.py +0 -0
  53. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/qt_utils/error_popups.py +0 -0
  54. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/qt_utils/redis_message_waiter.py +0 -0
  55. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/qt_utils/settings_dialog.py +0 -0
  56. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/qt_utils/toolbar.py +0 -0
  57. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/__init__.py +0 -0
  58. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/bec_connector.py +0 -0
  59. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/bec_designer.py +0 -0
  60. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/bec_dispatcher.py +0 -0
  61. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/bec_table.py +0 -0
  62. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/bec_widget.py +0 -0
  63. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/colors.py +0 -0
  64. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/container_utils.py +0 -0
  65. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/crosshair.py +0 -0
  66. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/entry_validator.py +0 -0
  67. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/generate_designer_plugin.py +0 -0
  68. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/layout_manager.py +0 -0
  69. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/linear_region_selector.py +0 -0
  70. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
  71. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/plugin_templates/register.template +0 -0
  72. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/plugin_utils.py +0 -0
  73. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/reference_utils.py +0 -0
  74. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/rpc_decorator.py +0 -0
  75. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/thread_checker.py +0 -0
  76. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/ui_loader.py +0 -0
  77. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/validator_delegate.py +0 -0
  78. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/widget_io.py +0 -0
  79. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/utils/yaml_dialog.py +0 -0
  80. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/__init__.py +0 -0
  81. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/base_classes/__init__.py +0 -0
  82. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/base_classes/device_input_base.py +0 -0
  83. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/bec_progressbar/__init__.py +0 -0
  84. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/bec_progressbar/bec_progress_bar.pyproject +0 -0
  85. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/bec_progressbar/bec_progress_bar_plugin.py +0 -0
  86. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/bec_progressbar/bec_progressbar.py +0 -0
  87. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/bec_progressbar/register_bec_progress_bar.py +0 -0
  88. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/bec_queue/__init__.py +0 -0
  89. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/bec_queue/bec_queue.py +0 -0
  90. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/bec_queue/bec_queue.pyproject +0 -0
  91. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/bec_queue/bec_queue_plugin.py +0 -0
  92. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/bec_queue/register_bec_queue.py +0 -0
  93. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/bec_status_box/__init__.py +0 -0
  94. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/bec_status_box/bec_status_box.py +0 -0
  95. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/bec_status_box/bec_status_box.pyproject +0 -0
  96. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py +0 -0
  97. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/bec_status_box/register_bec_status_box.py +0 -0
  98. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/bec_status_box/status_item.py +0 -0
  99. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/button_abort/__init__.py +0 -0
  100. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/button_abort/abort_button.pyproject +0 -0
  101. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/button_abort/abort_button_plugin.py +0 -0
  102. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/button_abort/button_abort.py +0 -0
  103. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/button_abort/register_abort_button.py +0 -0
  104. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/button_reset/__init__.py +0 -0
  105. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/button_reset/button_reset.py +0 -0
  106. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/button_reset/register_reset_button.py +0 -0
  107. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/button_reset/reset_button.pyproject +0 -0
  108. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/button_reset/reset_button_plugin.py +0 -0
  109. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/button_resume/__init__.py +0 -0
  110. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/button_resume/button_resume.py +0 -0
  111. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/button_resume/register_resume_button.py +0 -0
  112. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/button_resume/resume_button.pyproject +0 -0
  113. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/button_resume/resume_button_plugin.py +0 -0
  114. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/color_button/__init__.py +0 -0
  115. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/color_button/color_button.py +0 -0
  116. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/color_button/color_button.pyproject +0 -0
  117. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/color_button/color_button_plugin.py +0 -0
  118. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/color_button/register_color_button.py +0 -0
  119. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/colormap_selector/__init__.py +0 -0
  120. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/colormap_selector/colormap_selector.py +0 -0
  121. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/colormap_selector/colormap_selector.pyproject +0 -0
  122. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py +0 -0
  123. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/colormap_selector/register_colormap_selector.py +0 -0
  124. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/console/console.py +0 -0
  125. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/dap_combo_box/__init__.py +0 -0
  126. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/dap_combo_box/dap_combo_box.py +0 -0
  127. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/dap_combo_box/dap_combo_box.pyproject +0 -0
  128. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/dap_combo_box/dap_combo_box_plugin.py +0 -0
  129. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/dap_combo_box/register_dap_combo_box.py +0 -0
  130. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/dark_mode_button/__init__.py +0 -0
  131. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/dark_mode_button/dark_mode_button.py +0 -0
  132. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/dark_mode_button/dark_mode_button.pyproject +0 -0
  133. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/dark_mode_button/dark_mode_button_plugin.py +0 -0
  134. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/dark_mode_button/register_dark_mode_button.py +0 -0
  135. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_browser/__init__.py +0 -0
  136. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_browser/device_browser.py +0 -0
  137. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_browser/device_browser.pyproject +0 -0
  138. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_browser/device_browser.ui +0 -0
  139. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_browser/device_browser_plugin.py +0 -0
  140. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_browser/device_item/__init__.py +0 -0
  141. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_browser/device_item/device_item.py +0 -0
  142. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_browser/register_device_browser.py +0 -0
  143. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_combobox/__init__.py +0 -0
  144. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_combobox/device_combo_box.pyproject +0 -0
  145. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_combobox/device_combo_box_plugin.py +0 -0
  146. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_combobox/device_combobox.py +0 -0
  147. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_combobox/register_device_combo_box.py +0 -0
  148. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_line_edit/__init__.py +0 -0
  149. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_line_edit/device_line_edit.py +0 -0
  150. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_line_edit/device_line_edit.pyproject +0 -0
  151. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py +0 -0
  152. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/device_line_edit/register_device_line_edit.py +0 -0
  153. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/dock/__init__.py +0 -0
  154. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/dock/dock.py +0 -0
  155. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/dock/dock_area.py +0 -0
  156. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/dock/dock_area.pyproject +0 -0
  157. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/dock/dock_area_plugin.py +0 -0
  158. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/dock/register_dock_area.py +0 -0
  159. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/figure/__init__.py +0 -0
  160. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/figure/figure.py +0 -0
  161. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/figure/plots/__init__.py +0 -0
  162. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/figure/plots/axis_settings.py +0 -0
  163. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/figure/plots/axis_settings.ui +0 -0
  164. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/figure/plots/image/__init__.py +0 -0
  165. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/figure/plots/image/image.py +0 -0
  166. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/figure/plots/image/image_item.py +0 -0
  167. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/figure/plots/image/image_processor.py +0 -0
  168. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/figure/plots/motor_map/__init__.py +0 -0
  169. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/figure/plots/motor_map/motor_map.py +0 -0
  170. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/figure/plots/plot_base.py +0 -0
  171. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/figure/plots/waveform/__init__.py +0 -0
  172. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/figure/plots/waveform/waveform.py +0 -0
  173. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +0 -0
  174. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/image/__init__.py +0 -0
  175. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/image/bec_image_widget.pyproject +0 -0
  176. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/image/bec_image_widget_plugin.py +0 -0
  177. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/image/image_widget.py +0 -0
  178. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/image/register_bec_image_widget.py +0 -0
  179. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/jupyter_console/__init__.py +0 -0
  180. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/jupyter_console/jupyter_console.py +0 -0
  181. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/lmfit_dialog/__init__.py +0 -0
  182. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
  183. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
  184. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog.py +0 -0
  185. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
  186. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
  187. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/lmfit_dialog/register_lm_fit_dialog.py +0 -0
  188. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/motor_map/__init__.py +0 -0
  189. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/motor_map/bec_motor_map_widget.pyproject +0 -0
  190. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py +0 -0
  191. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/motor_map/motor_map_dialog/__init__.py +0 -0
  192. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py +0 -0
  193. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui +0 -0
  194. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/motor_map/motor_map_widget.py +0 -0
  195. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py +0 -0
  196. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/position_indicator/__init__.py +0 -0
  197. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/position_indicator/position_indicator.pyproject +0 -0
  198. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/position_indicator/position_indicator_plugin.py +0 -0
  199. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/position_indicator/register_position_indicator.py +0 -0
  200. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/positioner_box/__init__.py +0 -0
  201. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/positioner_box/positioner_box.pyproject +0 -0
  202. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/positioner_box/positioner_box_plugin.py +0 -0
  203. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/positioner_box/positioner_control_line.pyproject +0 -0
  204. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py +0 -0
  205. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/positioner_box/register_positioner_box.py +0 -0
  206. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/positioner_box/register_positioner_control_line.py +0 -0
  207. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/ring_progress_bar/__init__.py +0 -0
  208. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/ring_progress_bar/register_ring_progress_bar.py +0 -0
  209. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/ring_progress_bar/ring.py +0 -0
  210. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.py +0 -0
  211. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject +0 -0
  212. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
  213. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/scan_control/__init__.py +0 -0
  214. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/scan_control/register_scan_control.py +0 -0
  215. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/scan_control/scan_control.py +0 -0
  216. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/scan_control/scan_control.pyproject +0 -0
  217. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/scan_control/scan_control_plugin.py +0 -0
  218. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/scan_control/scan_group_box.py +0 -0
  219. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/spinner/__init__.py +0 -0
  220. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/spinner/register_spinner_widget.py +0 -0
  221. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/spinner/spinner.py +0 -0
  222. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/spinner/spinner_widget.pyproject +0 -0
  223. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/spinner/spinner_widget_plugin.py +0 -0
  224. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/stop_button/__init__.py +0 -0
  225. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/stop_button/register_stop_button.py +0 -0
  226. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/stop_button/stop_button.py +0 -0
  227. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/stop_button/stop_button.pyproject +0 -0
  228. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/stop_button/stop_button_plugin.py +0 -0
  229. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/text_box/__init__.py +0 -0
  230. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/text_box/register_text_box.py +0 -0
  231. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/text_box/text_box.py +0 -0
  232. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/text_box/text_box.pyproject +0 -0
  233. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/text_box/text_box_plugin.py +0 -0
  234. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/toggle/__init__.py +0 -0
  235. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/toggle/register_toggle_switch.py +0 -0
  236. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/toggle/toggle.py +0 -0
  237. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/toggle/toggle_switch.pyproject +0 -0
  238. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/toggle/toggle_switch_plugin.py +0 -0
  239. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/vscode/__init__.py +0 -0
  240. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/vscode/register_vs_code_editor.py +0 -0
  241. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/vscode/vs_code_editor.pyproject +0 -0
  242. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/vscode/vs_code_editor_plugin.py +0 -0
  243. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/vscode/vscode.py +0 -0
  244. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/waveform/__init__.py +0 -0
  245. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/waveform/bec_waveform_widget.pyproject +0 -0
  246. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py +0 -0
  247. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/waveform/register_bec_waveform_widget.py +0 -0
  248. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/waveform/waveform_popups/__init__.py +0 -0
  249. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/__init__.py +0 -0
  250. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.py +0 -0
  251. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.ui +0 -0
  252. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/__init__.py +0 -0
  253. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py +0 -0
  254. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/waveform/waveform_widget.py +0 -0
  255. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/website/__init__.py +0 -0
  256. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/website/register_website_widget.py +0 -0
  257. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/website/website.py +0 -0
  258. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/website/website_widget.pyproject +0 -0
  259. {bec_widgets-0.110.0 → bec_widgets-0.111.0}/bec_widgets/widgets/website/website_widget_plugin.py +0 -0
@@ -1,5 +1,25 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.111.0 (2024-09-17)
4
+
5
+ ### Documentation
6
+
7
+ * docs(position_indicator): updated position indicator documentation and added designer properties ([`60f7d54`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/60f7d54e2b4c3129de6c95729b8b4aea1757174f))
8
+
9
+ ### Feature
10
+
11
+ * feat(position_indicator): improved design and added more customization options ([`d15b222`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/d15b22250fbceb708d89872c0380693e04acb107))
12
+
13
+ ### Fix
14
+
15
+ * fix(position_indicator): fixed user access ([`dd932dd`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/dd932dd8f3910ab67ec8403124f4e176d048e542))
16
+
17
+ * fix(generate_cli): fixed type annotations ([`d3c1a1b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/d3c1a1b2edcba7afea9d369820fa7974ac29c333))
18
+
19
+ * fix(positioner_box): visual improvements to the positioner_box and positioner_control_line ([`7ea4a48`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/7ea4a482e7cd9499a7268ac887b345cab01632aa))
20
+
21
+ * fix(palette viewer): fixed background for tool tip ([`9045323`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/9045323049d2a39c36fc8845f3b2883d6933436b))
22
+
3
23
  ## v0.110.0 (2024-09-12)
4
24
 
5
25
  ### Feature
@@ -136,28 +156,6 @@
136
156
 
137
157
  * docs(buttons): buttons section of docs split to appearance and queue buttons ([`047aa26`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/047aa26a60220c826cc1375cf81daf11d1f3ab5c))
138
158
 
139
- * docs(tests): added tests tutorial for widget ([`18d8561`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/18d8561c965d149a7662085f7dbe2a39a8c4a475))
140
-
141
- ### Feature
142
-
143
- * feat(queue): BECQueue controls extended with Resume, Stop, Abort, Reset buttons ([`0d7c10e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/0d7c10e670e4937787e1afaa19ca8259ac752486))
144
-
145
159
  ### Fix
146
160
 
147
161
  * fix(queue_reset_button): queue reset has to be confirmed with msgBox ([`9dd43aa`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/9dd43aa1fd3991368002605df4389a7a7271011b))
148
-
149
- ### Refactor
150
-
151
- * refactor(tests): positioner box test changed to use create_widget fixture ([`df5eff3`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/df5eff3147c79ff0278e6a5a09c8f73d5236aed3))
152
-
153
- ## v0.101.0 (2024-09-02)
154
-
155
- ### Feature
156
-
157
- * feat: add Dap dialog widget ([`9781b77`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/9781b77de27b2810fbb1047a61b1832dd186db01))
158
-
159
- ### Refactor
160
-
161
- * refactor: add docs, cleanup ([`61ecf49`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/61ecf491e52bfbfa0d5a84764a9095310659043d))
162
-
163
- ## v0.100.0 (2024-09-01)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.110.0
3
+ Version: 0.111.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
@@ -1,5 +1,7 @@
1
1
  # This file was automatically generated by generate_cli.py
2
2
 
3
+ from __future__ import annotations
4
+
3
5
  import enum
4
6
  from typing import Literal, Optional, overload
5
7
 
@@ -29,6 +31,7 @@ class Widgets(str, enum.Enum):
29
31
  DeviceComboBox = "DeviceComboBox"
30
32
  DeviceLineEdit = "DeviceLineEdit"
31
33
  LMFitDialog = "LMFitDialog"
34
+ PositionIndicator = "PositionIndicator"
32
35
  PositionerBox = "PositionerBox"
33
36
  PositionerControlLine = "PositionerControlLine"
34
37
  ResetButton = "ResetButton"
@@ -2539,6 +2542,45 @@ class LMFitDialog(RPCBase):
2539
2542
  """
2540
2543
 
2541
2544
 
2545
+ class PositionIndicator(RPCBase):
2546
+ @rpc_call
2547
+ def set_value(self, position: float):
2548
+ """
2549
+ None
2550
+ """
2551
+
2552
+ @rpc_call
2553
+ def set_range(self, min_value: float, max_value: float):
2554
+ """
2555
+ Set the range of the position indicator
2556
+
2557
+ Args:
2558
+ min_value(float): Minimum value of the range
2559
+ max_value(float): Maximum value of the range
2560
+ """
2561
+
2562
+ @property
2563
+ @rpc_call
2564
+ def vertical(self):
2565
+ """
2566
+ Property to determine the orientation of the position indicator
2567
+ """
2568
+
2569
+ @property
2570
+ @rpc_call
2571
+ def indicator_width(self):
2572
+ """
2573
+ Property to get the width of the indicator
2574
+ """
2575
+
2576
+ @property
2577
+ @rpc_call
2578
+ def rounded_corners(self):
2579
+ """
2580
+ Property to get the rounded corners of the position indicator
2581
+ """
2582
+
2583
+
2542
2584
  class PositionerBox(RPCBase):
2543
2585
  @rpc_call
2544
2586
  def set_positioner(self, positioner: "str | Positioner"):
@@ -31,6 +31,7 @@ else:
31
31
  class ClientGenerator:
32
32
  def __init__(self):
33
33
  self.header = """# This file was automatically generated by generate_cli.py\n
34
+ from __future__ import annotations
34
35
  import enum
35
36
  from typing import Literal, Optional, overload
36
37
 
@@ -167,7 +167,7 @@ class PaletteViewer(BECWidget, QWidget):
167
167
  QLabel: The label with the background color.
168
168
  """
169
169
  button = QLabel()
170
- button.setStyleSheet(f"background-color: {color.name()};")
170
+ button.setStyleSheet(f"QLabel {{ background-color: {color.name()}; }}")
171
171
  button.setToolTip("Click to copy color to clipboard")
172
172
  button.setCursor(Qt.PointingHandCursor)
173
173
  button.mousePressEvent = lambda event: QApplication.clipboard().setText(color.name())
@@ -0,0 +1,291 @@
1
+ import numpy as np
2
+ from qtpy.QtCore import Property, QSize, Qt, Slot
3
+ from qtpy.QtGui import QBrush, QColor, QPainter, QPainterPath, QPen
4
+ from qtpy.QtWidgets import QWidget
5
+
6
+ from bec_widgets.utils.bec_widget import BECWidget
7
+ from bec_widgets.utils.colors import get_accent_colors, get_theme_palette
8
+
9
+
10
+ class PositionIndicator(BECWidget, QWidget):
11
+ USER_ACCESS = ["set_value", "set_range", "vertical", "indicator_width", "rounded_corners"]
12
+
13
+ ICON_NAME = "horizontal_distribute"
14
+
15
+ def __init__(self, parent=None, client=None, config=None, gui_id=None):
16
+ super().__init__(client=client, config=config, gui_id=gui_id)
17
+ QWidget.__init__(self, parent=parent)
18
+ self.position = 50
19
+ self.min_value = 0
20
+ self.max_value = 100
21
+ self.scaling_factor = 0.5
22
+ self.is_vertical = False
23
+ self._current_indicator_position = 0
24
+ self._draw_position = 0
25
+ self._rounded_corners = 10
26
+ self._indicator_width = 2
27
+ self._indicator_color = get_accent_colors().success
28
+ self._background_color = get_theme_palette().mid().color()
29
+ self._use_color_palette = True
30
+
31
+ def set_range(self, min_value: float, max_value: float):
32
+ """
33
+ Set the range of the position indicator
34
+
35
+ Args:
36
+ min_value(float): Minimum value of the range
37
+ max_value(float): Maximum value of the range
38
+ """
39
+ self.minimum = min_value
40
+ self.maximum = max_value
41
+
42
+ @Property(float)
43
+ def minimum(self):
44
+ """
45
+ Property to get the minimum value of the position indicator
46
+ """
47
+ return self.min_value
48
+
49
+ @minimum.setter
50
+ def minimum(self, min_value: float):
51
+ """
52
+ Setter for the minimum property
53
+
54
+ Args:
55
+ min_value: The minimum value of the position indicator
56
+ """
57
+ self.min_value = min_value
58
+ self.update()
59
+
60
+ @Property(float)
61
+ def maximum(self):
62
+ """
63
+ Property to get the maximum value of the position indicator
64
+ """
65
+ return self.max_value
66
+
67
+ @maximum.setter
68
+ def maximum(self, max_value: float):
69
+ """
70
+ Setter for the maximum property
71
+
72
+ Args:
73
+ max_value: The maximum value of the position indicator
74
+ """
75
+ self.max_value = max_value
76
+ self.update()
77
+
78
+ @Property(bool)
79
+ def vertical(self):
80
+ """
81
+ Property to determine the orientation of the position indicator
82
+ """
83
+ return self.is_vertical
84
+
85
+ @vertical.setter
86
+ def vertical(self, is_vertical: bool):
87
+ """
88
+ Setter for the vertical property
89
+
90
+ Args:
91
+ is_vertical: True if the indicator should be vertical, False if horizontal
92
+ """
93
+
94
+ self.is_vertical = is_vertical
95
+ self.update()
96
+
97
+ @Property(float)
98
+ def value(self):
99
+ """
100
+ Property to get the current value of the position indicator
101
+ """
102
+ return self.position
103
+
104
+ @value.setter
105
+ def value(self, position: float):
106
+ """
107
+ Setter for the value property
108
+
109
+ Args:
110
+ position: The new position of the indicator
111
+ """
112
+ self.set_value(position)
113
+
114
+ @Property(int)
115
+ def indicator_width(self):
116
+ """
117
+ Property to get the width of the indicator
118
+ """
119
+ return self._indicator_width
120
+
121
+ @indicator_width.setter
122
+ def indicator_width(self, width: int):
123
+ """
124
+ Setter for the indicator width property
125
+
126
+ Args:
127
+ width: The new width of the indicator
128
+ """
129
+ self._indicator_width = width
130
+ self.update()
131
+
132
+ @Property(int)
133
+ def rounded_corners(self):
134
+ """
135
+ Property to get the rounded corners of the position indicator
136
+ """
137
+ return self._rounded_corners
138
+
139
+ @rounded_corners.setter
140
+ def rounded_corners(self, value: int):
141
+ """
142
+ Setter for the rounded corners property
143
+
144
+ Args:
145
+ value: The new value for the rounded corners
146
+ """
147
+ self._rounded_corners = value
148
+ self.update()
149
+
150
+ @Property(QColor)
151
+ def indicator_color(self):
152
+ """
153
+ Property to get the color of the indicator
154
+ """
155
+ return self._indicator_color
156
+
157
+ @indicator_color.setter
158
+ def indicator_color(self, color: QColor):
159
+ """
160
+ Setter for the indicator color property
161
+
162
+ Args:
163
+ color: The new color for the indicator
164
+ """
165
+ self._indicator_color = color
166
+ self.update()
167
+
168
+ @Property(QColor)
169
+ def background_color(self):
170
+ """
171
+ Property to get the background color of the position indicator
172
+ """
173
+ return self._background_color
174
+
175
+ @background_color.setter
176
+ def background_color(self, color: QColor):
177
+ """
178
+ Setter for the background color property
179
+
180
+ Args:
181
+ color: The new background color
182
+ """
183
+ self._background_color = color
184
+ self.update()
185
+
186
+ @Property(bool)
187
+ def use_color_palette(self):
188
+ """
189
+ Property to determine if the indicator should use the color palette or the custom color.
190
+ """
191
+ return self._use_color_palette
192
+
193
+ @use_color_palette.setter
194
+ def use_color_palette(self, use_palette: bool):
195
+ """
196
+ Setter for the use color palette property
197
+
198
+ Args:
199
+ use_palette: True if the indicator should use the color palette, False if custom color
200
+ """
201
+ self._use_color_palette = use_palette
202
+ self.update()
203
+
204
+ # @Property(float)
205
+ @Slot(int)
206
+ @Slot(float)
207
+ def set_value(self, position: float):
208
+ self.position = position
209
+ self.update()
210
+
211
+ def _get_indicator_color(self):
212
+ if self._use_color_palette:
213
+ return get_accent_colors().success
214
+ return self._indicator_color
215
+
216
+ def _get_background_brush(self):
217
+ if self._use_color_palette:
218
+ return get_theme_palette().mid()
219
+ return QBrush(self._background_color)
220
+
221
+ def paintEvent(self, event):
222
+ painter = QPainter(self)
223
+ width = self.width()
224
+ height = self.height()
225
+
226
+ # Set up the brush for the background
227
+ painter.setBrush(self._get_background_brush())
228
+
229
+ # Create a QPainterPath with a rounded rectangle for clipping
230
+ path = QPainterPath()
231
+ path.addRoundedRect(0, 0, width, height, self._rounded_corners, self._rounded_corners)
232
+
233
+ # Set clipping to the rounded rectangle
234
+ painter.setClipPath(path)
235
+
236
+ # Draw the rounded rectangle background first
237
+ painter.setPen(Qt.NoPen)
238
+ painter.drawRoundedRect(0, 0, width, height, self._rounded_corners, self._rounded_corners)
239
+
240
+ # get the position scaled to the defined min and max values
241
+ self._current_indicator_position = position = np.interp(
242
+ self.position, [self.min_value, self.max_value], [0, 100]
243
+ )
244
+
245
+ if self.is_vertical:
246
+ # If vertical, rotate the coordinate system by -90 degrees
247
+ painter.translate(width // 2, height // 2) # Move origin to center
248
+ painter.rotate(-90) # Rotate by -90 degrees for vertical drawing
249
+ painter.translate(-height // 2, -width // 2) # Restore the origin for drawing
250
+
251
+ # Switch width and height for the vertical orientation
252
+ width, height = height, width
253
+
254
+ # Draw the moving vertical indicator, respecting the clip path
255
+ self._draw_position = x_pos = round(
256
+ position * width / 100
257
+ ) # Position for the vertical line
258
+
259
+ indicator_pen = QPen(self._get_indicator_color(), self._indicator_width)
260
+ painter.setPen(indicator_pen)
261
+ painter.drawLine(x_pos, 0, x_pos, height)
262
+
263
+ painter.end()
264
+
265
+ def minimumSizeHint(self):
266
+ # Set the smallest possible size
267
+ return QSize(10, 10)
268
+
269
+
270
+ if __name__ == "__main__": # pragma: no cover
271
+ from bec_qthemes import setup_theme
272
+ from qtpy.QtWidgets import QApplication, QSlider, QVBoxLayout
273
+
274
+ app = QApplication([])
275
+ setup_theme("dark")
276
+ # Create position indicator and slider
277
+ position_indicator = PositionIndicator()
278
+ # position_indicator.set_range(0, 1)
279
+ slider = QSlider(Qt.Horizontal)
280
+ slider.valueChanged.connect(lambda value: position_indicator.set_value(value))
281
+ position_indicator.is_vertical = False
282
+ # position_indicator.set_value(100)
283
+ layout = QVBoxLayout()
284
+ layout.addWidget(position_indicator)
285
+ layout.addWidget(slider)
286
+
287
+ widget = QWidget()
288
+ widget.setLayout(layout)
289
+ widget.show()
290
+
291
+ app.exec_()
@@ -16,7 +16,7 @@ from qtpy.QtWidgets import QDialog, QDoubleSpinBox, QPushButton, QVBoxLayout, QW
16
16
 
17
17
  from bec_widgets.utils import UILoader
18
18
  from bec_widgets.utils.bec_widget import BECWidget
19
- from bec_widgets.utils.colors import set_theme
19
+ from bec_widgets.utils.colors import get_accent_colors, set_theme
20
20
  from bec_widgets.widgets.device_line_edit.device_line_edit import DeviceLineEdit
21
21
 
22
22
  logger = bec_logger.logger
@@ -73,6 +73,10 @@ class PositionerBox(BECWidget, QWidget):
73
73
 
74
74
  self.ui.step_size.setStepType(QDoubleSpinBox.AdaptiveDecimalStepType)
75
75
  self.ui.stop.clicked.connect(self.on_stop)
76
+ self.ui.stop.setToolTip("Stop")
77
+ self.ui.stop.setStyleSheet(
78
+ f"QPushButton {{background-color: {get_accent_colors().emergency.name()}; color: white;}}"
79
+ )
76
80
  self.ui.tweak_right.clicked.connect(self.on_tweak_right)
77
81
  self.ui.tweak_right.setToolTip("Tweak right")
78
82
  self.ui.tweak_left.clicked.connect(self.on_tweak_left)
@@ -249,7 +253,7 @@ class PositionerBox(BECWidget, QWidget):
249
253
  self.update_limits(limits)
250
254
  if limits is not None and readback_val is not None and limits[0] != limits[1]:
251
255
  pos = (readback_val - limits[0]) / (limits[1] - limits[0])
252
- self.ui.position_indicator.on_position_update(pos)
256
+ self.ui.position_indicator.set_value(pos)
253
257
 
254
258
  def update_limits(self, limits: tuple):
255
259
  """Update limits
@@ -170,7 +170,20 @@
170
170
  </layout>
171
171
  </item>
172
172
  <item>
173
- <widget class="PositionIndicator" name="position_indicator"/>
173
+ <widget class="PositionIndicator" name="position_indicator">
174
+ <property name="maximum" stdset="0">
175
+ <double>1.000000000000000</double>
176
+ </property>
177
+ <property name="value" stdset="0">
178
+ <double>0.500000000000000</double>
179
+ </property>
180
+ <property name="indicator_width" stdset="0">
181
+ <number>4</number>
182
+ </property>
183
+ <property name="rounded_corners" stdset="0">
184
+ <number>4</number>
185
+ </property>
186
+ </widget>
174
187
  </item>
175
188
  <item>
176
189
  <widget class="QLabel" name="readback">
@@ -24,11 +24,9 @@ class PositionerControlLine(PositionerBox):
24
24
  if __name__ == "__main__": # pragma: no cover
25
25
  import sys
26
26
 
27
- import qdarktheme
28
27
  from qtpy.QtWidgets import QApplication
29
28
 
30
29
  app = QApplication(sys.argv)
31
- qdarktheme.setup_theme("dark")
32
30
  widget = PositionerControlLine(device="samy")
33
31
 
34
32
  widget.show()
@@ -6,7 +6,7 @@
6
6
  <rect>
7
7
  <x>0</x>
8
8
  <y>0</y>
9
- <width>785</width>
9
+ <width>612</width>
10
10
  <height>91</height>
11
11
  </rect>
12
12
  </property>
@@ -59,16 +59,6 @@
59
59
  </item>
60
60
  <item>
61
61
  <layout class="QHBoxLayout" name="horizontalLayout_2">
62
- <item>
63
- <widget class="PositionIndicator" name="position_indicator">
64
- <property name="minimumSize">
65
- <size>
66
- <width>80</width>
67
- <height>10</height>
68
- </size>
69
- </property>
70
- </widget>
71
- </item>
72
62
  <item>
73
63
  <widget class="SpinnerWidget" name="spinner_widget">
74
64
  <property name="minimumSize">
@@ -139,14 +129,14 @@
139
129
  <widget class="QToolButton" name="tweak_left">
140
130
  <property name="minimumSize">
141
131
  <size>
142
- <width>30</width>
143
- <height>30</height>
132
+ <width>25</width>
133
+ <height>25</height>
144
134
  </size>
145
135
  </property>
146
136
  <property name="maximumSize">
147
137
  <size>
148
- <width>30</width>
149
- <height>30</height>
138
+ <width>25</width>
139
+ <height>25</height>
150
140
  </size>
151
141
  </property>
152
142
  <property name="text">
@@ -154,8 +144,8 @@
154
144
  </property>
155
145
  <property name="iconSize">
156
146
  <size>
157
- <width>30</width>
158
- <height>30</height>
147
+ <width>25</width>
148
+ <height>25</height>
159
149
  </size>
160
150
  </property>
161
151
  <property name="arrowType">
@@ -170,14 +160,14 @@
170
160
  <widget class="QToolButton" name="tweak_right">
171
161
  <property name="minimumSize">
172
162
  <size>
173
- <width>30</width>
174
- <height>30</height>
163
+ <width>25</width>
164
+ <height>25</height>
175
165
  </size>
176
166
  </property>
177
167
  <property name="maximumSize">
178
168
  <size>
179
- <width>30</width>
180
- <height>30</height>
169
+ <width>25</width>
170
+ <height>25</height>
181
171
  </size>
182
172
  </property>
183
173
  <property name="text">
@@ -185,8 +175,8 @@
185
175
  </property>
186
176
  <property name="iconSize">
187
177
  <size>
188
- <width>30</width>
189
- <height>30</height>
178
+ <width>25</width>
179
+ <height>25</height>
190
180
  </size>
191
181
  </property>
192
182
  <property name="arrowType">
@@ -194,6 +184,34 @@
194
184
  </property>
195
185
  </widget>
196
186
  </item>
187
+ <item>
188
+ <widget class="PositionIndicator" name="position_indicator">
189
+ <property name="minimumSize">
190
+ <size>
191
+ <width>15</width>
192
+ <height>10</height>
193
+ </size>
194
+ </property>
195
+ <property name="maximumSize">
196
+ <size>
197
+ <width>15</width>
198
+ <height>16777215</height>
199
+ </size>
200
+ </property>
201
+ <property name="maximum" stdset="0">
202
+ <double>1.000000000000000</double>
203
+ </property>
204
+ <property name="vertical" stdset="0">
205
+ <bool>true</bool>
206
+ </property>
207
+ <property name="value" stdset="0">
208
+ <double>0.500000000000000</double>
209
+ </property>
210
+ <property name="rounded_corners" stdset="0">
211
+ <number>2</number>
212
+ </property>
213
+ </widget>
214
+ </item>
197
215
  </layout>
198
216
  </widget>
199
217
  </item>
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "0.110.0"
7
+ version = "0.111.0"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [