bec-widgets 1.1.0__tar.gz → 1.3.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 (291) hide show
  1. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/CHANGELOG.md +22 -26
  2. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/PKG-INFO +1 -1
  3. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/cli/client.py +21 -0
  4. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/colors.py +129 -35
  5. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/bec_status_box/status_item.py +1 -0
  6. bec_widgets-1.3.0/bec_widgets/widgets/colormap_widget/bec_color_map_widget.pyproject +1 -0
  7. bec_widgets-1.3.0/bec_widgets/widgets/colormap_widget/bec_color_map_widget_plugin.py +54 -0
  8. bec_widgets-1.3.0/bec_widgets/widgets/colormap_widget/colormap_widget.py +73 -0
  9. bec_widgets-1.3.0/bec_widgets/widgets/colormap_widget/register_bec_color_map_widget.py +17 -0
  10. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.py +3 -3
  11. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.ui +18 -4
  12. bec_widgets-1.3.0/bec_widgets/widgets/website/__init__.py +0 -0
  13. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/pyproject.toml +1 -1
  14. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/.git_hooks/pre-commit +0 -0
  15. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/.gitignore +0 -0
  16. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/.gitlab/issue_templates/bug_report_template.md +0 -0
  17. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/.gitlab/issue_templates/documentation_update_template.md +0 -0
  18. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/.gitlab/issue_templates/feature_request_template.md +0 -0
  19. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/.gitlab/merge_request_templates/default.md +0 -0
  20. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/.gitlab-ci.yml +0 -0
  21. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/.pylintrc +0 -0
  22. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/.readthedocs.yaml +0 -0
  23. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/LICENSE +0 -0
  24. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/README.md +0 -0
  25. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/__init__.py +0 -0
  26. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/applications/__init__.py +0 -0
  27. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/applications/alignment/__init__.py +0 -0
  28. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/applications/alignment/alignment_1d/__init__.py +0 -0
  29. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/applications/alignment/alignment_1d/alignment_1d.py +0 -0
  30. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/applications/alignment/alignment_1d/alignment_1d.ui +0 -0
  31. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/applications/bec_app.py +0 -0
  32. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
  33. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/assets/app_icons/alignment_1d.png +0 -0
  34. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
  35. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/cli/__init__.py +0 -0
  36. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/cli/auto_updates.py +0 -0
  37. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/cli/client_utils.py +0 -0
  38. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/cli/generate_cli.py +0 -0
  39. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/cli/rpc_register.py +0 -0
  40. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/cli/rpc_wigdet_handler.py +0 -0
  41. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/cli/server.py +0 -0
  42. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/examples/__init__.py +0 -0
  43. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/examples/general_app/__init__.py +0 -0
  44. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/examples/general_app/general_app.py +0 -0
  45. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/examples/general_app/general_app.ui +0 -0
  46. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/examples/general_app/web_links.py +0 -0
  47. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  48. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
  49. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
  50. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
  51. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
  52. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
  53. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
  54. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
  55. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
  56. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/qt_utils/__init__.py +0 -0
  57. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/qt_utils/compact_popup.py +0 -0
  58. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/qt_utils/error_popups.py +0 -0
  59. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/qt_utils/palette_viewer.py +0 -0
  60. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/qt_utils/redis_message_waiter.py +0 -0
  61. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/qt_utils/settings_dialog.py +0 -0
  62. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/qt_utils/toolbar.py +0 -0
  63. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/tests/__init__.py +0 -0
  64. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/tests/utils.py +0 -0
  65. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/__init__.py +0 -0
  66. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/bec_connector.py +0 -0
  67. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/bec_designer.py +0 -0
  68. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/bec_dispatcher.py +0 -0
  69. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/bec_signal_proxy.py +0 -0
  70. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/bec_table.py +0 -0
  71. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/bec_widget.py +0 -0
  72. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/container_utils.py +0 -0
  73. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/crosshair.py +0 -0
  74. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/entry_validator.py +0 -0
  75. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/filter_io.py +0 -0
  76. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/fps_counter.py +0 -0
  77. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/generate_designer_plugin.py +0 -0
  78. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/layout_manager.py +0 -0
  79. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/linear_region_selector.py +0 -0
  80. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/plot_indicator_items.py +0 -0
  81. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
  82. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/plugin_templates/register.template +0 -0
  83. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/plugin_utils.py +0 -0
  84. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/reference_utils.py +0 -0
  85. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/rpc_decorator.py +0 -0
  86. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/thread_checker.py +0 -0
  87. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/ui_loader.py +0 -0
  88. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/validator_delegate.py +0 -0
  89. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/widget_io.py +0 -0
  90. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/utils/yaml_dialog.py +0 -0
  91. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/__init__.py +0 -0
  92. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/base_classes/__init__.py +0 -0
  93. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/base_classes/device_input_base.py +0 -0
  94. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/base_classes/device_signal_input_base.py +0 -0
  95. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/bec_progressbar/__init__.py +0 -0
  96. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/bec_progressbar/bec_progress_bar.pyproject +0 -0
  97. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/bec_progressbar/bec_progress_bar_plugin.py +0 -0
  98. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/bec_progressbar/bec_progressbar.py +0 -0
  99. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/bec_progressbar/register_bec_progress_bar.py +0 -0
  100. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/bec_queue/__init__.py +0 -0
  101. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/bec_queue/bec_queue.py +0 -0
  102. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/bec_queue/bec_queue.pyproject +0 -0
  103. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/bec_queue/bec_queue_plugin.py +0 -0
  104. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/bec_queue/register_bec_queue.py +0 -0
  105. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/bec_status_box/__init__.py +0 -0
  106. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/bec_status_box/bec_status_box.py +0 -0
  107. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/bec_status_box/bec_status_box.pyproject +0 -0
  108. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py +0 -0
  109. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/bec_status_box/register_bec_status_box.py +0 -0
  110. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/button_abort/__init__.py +0 -0
  111. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/button_abort/abort_button.pyproject +0 -0
  112. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/button_abort/abort_button_plugin.py +0 -0
  113. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/button_abort/button_abort.py +0 -0
  114. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/button_abort/register_abort_button.py +0 -0
  115. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/button_reset/__init__.py +0 -0
  116. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/button_reset/button_reset.py +0 -0
  117. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/button_reset/register_reset_button.py +0 -0
  118. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/button_reset/reset_button.pyproject +0 -0
  119. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/button_reset/reset_button_plugin.py +0 -0
  120. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/button_resume/__init__.py +0 -0
  121. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/button_resume/button_resume.py +0 -0
  122. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/button_resume/register_resume_button.py +0 -0
  123. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/button_resume/resume_button.pyproject +0 -0
  124. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/button_resume/resume_button_plugin.py +0 -0
  125. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/color_button/__init__.py +0 -0
  126. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/color_button/color_button.py +0 -0
  127. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/color_button/color_button.pyproject +0 -0
  128. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/color_button/color_button_plugin.py +0 -0
  129. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/color_button/register_color_button.py +0 -0
  130. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/colormap_selector/__init__.py +0 -0
  131. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/colormap_selector/colormap_selector.py +0 -0
  132. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/colormap_selector/colormap_selector.pyproject +0 -0
  133. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py +0 -0
  134. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/colormap_selector/register_colormap_selector.py +0 -0
  135. {bec_widgets-1.1.0/bec_widgets/widgets/dap_combo_box → bec_widgets-1.3.0/bec_widgets/widgets/colormap_widget}/__init__.py +0 -0
  136. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/console/console.py +0 -0
  137. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/console/console.pyproject +0 -0
  138. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/console/console_plugin.py +0 -0
  139. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/console/register_console.py +0 -0
  140. {bec_widgets-1.1.0/bec_widgets/widgets/dark_mode_button → bec_widgets-1.3.0/bec_widgets/widgets/dap_combo_box}/__init__.py +0 -0
  141. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/dap_combo_box/dap_combo_box.py +0 -0
  142. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/dap_combo_box/dap_combo_box.pyproject +0 -0
  143. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/dap_combo_box/dap_combo_box_plugin.py +0 -0
  144. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/dap_combo_box/register_dap_combo_box.py +0 -0
  145. {bec_widgets-1.1.0/bec_widgets/widgets/device_browser → bec_widgets-1.3.0/bec_widgets/widgets/dark_mode_button}/__init__.py +0 -0
  146. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/dark_mode_button/dark_mode_button.py +0 -0
  147. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/dark_mode_button/dark_mode_button.pyproject +0 -0
  148. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/dark_mode_button/dark_mode_button_plugin.py +0 -0
  149. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/dark_mode_button/register_dark_mode_button.py +0 -0
  150. {bec_widgets-1.1.0/bec_widgets/widgets/device_combobox → bec_widgets-1.3.0/bec_widgets/widgets/device_browser}/__init__.py +0 -0
  151. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/device_browser/device_browser.py +0 -0
  152. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/device_browser/device_browser.pyproject +0 -0
  153. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/device_browser/device_browser.ui +0 -0
  154. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/device_browser/device_browser_plugin.py +0 -0
  155. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/device_browser/device_item/__init__.py +0 -0
  156. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/device_browser/device_item/device_item.py +0 -0
  157. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/device_browser/register_device_browser.py +0 -0
  158. {bec_widgets-1.1.0/bec_widgets/widgets/device_line_edit → bec_widgets-1.3.0/bec_widgets/widgets/device_combobox}/__init__.py +0 -0
  159. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/device_combobox/device_combo_box.pyproject +0 -0
  160. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/device_combobox/device_combo_box_plugin.py +0 -0
  161. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/device_combobox/device_combobox.py +0 -0
  162. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/device_combobox/register_device_combo_box.py +0 -0
  163. {bec_widgets-1.1.0/bec_widgets/widgets/figure/plots → bec_widgets-1.3.0/bec_widgets/widgets/device_line_edit}/__init__.py +0 -0
  164. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/device_line_edit/device_line_edit.py +0 -0
  165. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/device_line_edit/device_line_edit.pyproject +0 -0
  166. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py +0 -0
  167. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/device_line_edit/register_device_line_edit.py +0 -0
  168. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/dock/__init__.py +0 -0
  169. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/dock/dock.py +0 -0
  170. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/dock/dock_area.py +0 -0
  171. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/dock/dock_area.pyproject +0 -0
  172. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/dock/dock_area_plugin.py +0 -0
  173. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/dock/register_dock_area.py +0 -0
  174. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/figure/__init__.py +0 -0
  175. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/figure/figure.py +0 -0
  176. {bec_widgets-1.1.0/bec_widgets/widgets/figure/plots/image → bec_widgets-1.3.0/bec_widgets/widgets/figure/plots}/__init__.py +0 -0
  177. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/figure/plots/axis_settings.py +0 -0
  178. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/figure/plots/axis_settings.ui +0 -0
  179. {bec_widgets-1.1.0/bec_widgets/widgets/figure/plots/motor_map → bec_widgets-1.3.0/bec_widgets/widgets/figure/plots/image}/__init__.py +0 -0
  180. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/figure/plots/image/image.py +0 -0
  181. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/figure/plots/image/image_item.py +0 -0
  182. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/figure/plots/image/image_processor.py +0 -0
  183. {bec_widgets-1.1.0/bec_widgets/widgets/figure/plots/waveform → bec_widgets-1.3.0/bec_widgets/widgets/figure/plots/motor_map}/__init__.py +0 -0
  184. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/figure/plots/motor_map/motor_map.py +0 -0
  185. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/figure/plots/plot_base.py +0 -0
  186. {bec_widgets-1.1.0/bec_widgets/widgets/image → bec_widgets-1.3.0/bec_widgets/widgets/figure/plots/waveform}/__init__.py +0 -0
  187. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/figure/plots/waveform/waveform.py +0 -0
  188. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +0 -0
  189. {bec_widgets-1.1.0/bec_widgets/widgets/jupyter_console → bec_widgets-1.3.0/bec_widgets/widgets/image}/__init__.py +0 -0
  190. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/image/bec_image_widget.pyproject +0 -0
  191. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/image/bec_image_widget_plugin.py +0 -0
  192. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/image/image_widget.py +0 -0
  193. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/image/register_bec_image_widget.py +0 -0
  194. {bec_widgets-1.1.0/bec_widgets/widgets/lmfit_dialog → bec_widgets-1.3.0/bec_widgets/widgets/jupyter_console}/__init__.py +0 -0
  195. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/jupyter_console/jupyter_console.py +0 -0
  196. {bec_widgets-1.1.0/bec_widgets/widgets/motor_map → bec_widgets-1.3.0/bec_widgets/widgets/lmfit_dialog}/__init__.py +0 -0
  197. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
  198. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
  199. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog.py +0 -0
  200. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
  201. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
  202. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/lmfit_dialog/register_lm_fit_dialog.py +0 -0
  203. {bec_widgets-1.1.0/bec_widgets/widgets/motor_map/motor_map_dialog → bec_widgets-1.3.0/bec_widgets/widgets/motor_map}/__init__.py +0 -0
  204. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/motor_map/bec_motor_map_widget.pyproject +0 -0
  205. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py +0 -0
  206. {bec_widgets-1.1.0/bec_widgets/widgets/position_indicator → bec_widgets-1.3.0/bec_widgets/widgets/motor_map/motor_map_dialog}/__init__.py +0 -0
  207. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py +0 -0
  208. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui +0 -0
  209. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/motor_map/motor_map_widget.py +0 -0
  210. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py +0 -0
  211. {bec_widgets-1.1.0/bec_widgets/widgets/positioner_box → bec_widgets-1.3.0/bec_widgets/widgets/position_indicator}/__init__.py +0 -0
  212. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/position_indicator/position_indicator.py +0 -0
  213. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/position_indicator/position_indicator.pyproject +0 -0
  214. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/position_indicator/position_indicator_plugin.py +0 -0
  215. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/position_indicator/register_position_indicator.py +0 -0
  216. {bec_widgets-1.1.0/bec_widgets/widgets/positioner_group → bec_widgets-1.3.0/bec_widgets/widgets/positioner_box}/__init__.py +0 -0
  217. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/positioner_box/positioner_box.py +0 -0
  218. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/positioner_box/positioner_box.pyproject +0 -0
  219. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/positioner_box/positioner_box.ui +0 -0
  220. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/positioner_box/positioner_box_plugin.py +0 -0
  221. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/positioner_box/positioner_control_line.py +0 -0
  222. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/positioner_box/positioner_control_line.pyproject +0 -0
  223. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/positioner_box/positioner_control_line.ui +0 -0
  224. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py +0 -0
  225. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/positioner_box/register_positioner_box.py +0 -0
  226. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/positioner_box/register_positioner_control_line.py +0 -0
  227. {bec_widgets-1.1.0/bec_widgets/widgets/signal_combobox → bec_widgets-1.3.0/bec_widgets/widgets/positioner_group}/__init__.py +0 -0
  228. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/positioner_group/positioner_group.py +0 -0
  229. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/positioner_group/positioner_group.pyproject +0 -0
  230. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/positioner_group/positioner_group_plugin.py +0 -0
  231. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/positioner_group/register_positioner_group.py +0 -0
  232. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/ring_progress_bar/__init__.py +0 -0
  233. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/ring_progress_bar/register_ring_progress_bar.py +0 -0
  234. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/ring_progress_bar/ring.py +0 -0
  235. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.py +0 -0
  236. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject +0 -0
  237. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
  238. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/scan_control/__init__.py +0 -0
  239. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/scan_control/register_scan_control.py +0 -0
  240. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/scan_control/scan_control.py +0 -0
  241. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/scan_control/scan_control.pyproject +0 -0
  242. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/scan_control/scan_control_plugin.py +0 -0
  243. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/scan_control/scan_group_box.py +0 -0
  244. {bec_widgets-1.1.0/bec_widgets/widgets/signal_line_edit → bec_widgets-1.3.0/bec_widgets/widgets/signal_combobox}/__init__.py +0 -0
  245. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/signal_combobox/register_signal_combobox.py +0 -0
  246. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/signal_combobox/signal_combobox.py +0 -0
  247. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/signal_combobox/signal_combobox.pyproject +0 -0
  248. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/signal_combobox/signal_combobox_plugin.py +0 -0
  249. {bec_widgets-1.1.0/bec_widgets/widgets/spinner → bec_widgets-1.3.0/bec_widgets/widgets/signal_line_edit}/__init__.py +0 -0
  250. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/signal_line_edit/register_signal_line_edit.py +0 -0
  251. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/signal_line_edit/signal_line_edit.py +0 -0
  252. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/signal_line_edit/signal_line_edit.pyproject +0 -0
  253. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/signal_line_edit/signal_line_edit_plugin.py +0 -0
  254. {bec_widgets-1.1.0/bec_widgets/widgets/stop_button → bec_widgets-1.3.0/bec_widgets/widgets/spinner}/__init__.py +0 -0
  255. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/spinner/register_spinner_widget.py +0 -0
  256. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/spinner/spinner.py +0 -0
  257. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/spinner/spinner_widget.pyproject +0 -0
  258. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/spinner/spinner_widget_plugin.py +0 -0
  259. {bec_widgets-1.1.0/bec_widgets/widgets/text_box → bec_widgets-1.3.0/bec_widgets/widgets/stop_button}/__init__.py +0 -0
  260. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/stop_button/register_stop_button.py +0 -0
  261. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/stop_button/stop_button.py +0 -0
  262. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/stop_button/stop_button.pyproject +0 -0
  263. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/stop_button/stop_button_plugin.py +0 -0
  264. {bec_widgets-1.1.0/bec_widgets/widgets/toggle → bec_widgets-1.3.0/bec_widgets/widgets/text_box}/__init__.py +0 -0
  265. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/text_box/register_text_box.py +0 -0
  266. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/text_box/text_box.py +0 -0
  267. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/text_box/text_box.pyproject +0 -0
  268. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/text_box/text_box_plugin.py +0 -0
  269. {bec_widgets-1.1.0/bec_widgets/widgets/vscode → bec_widgets-1.3.0/bec_widgets/widgets/toggle}/__init__.py +0 -0
  270. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/toggle/register_toggle_switch.py +0 -0
  271. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/toggle/toggle.py +0 -0
  272. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/toggle/toggle_switch.pyproject +0 -0
  273. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/toggle/toggle_switch_plugin.py +0 -0
  274. {bec_widgets-1.1.0/bec_widgets/widgets/waveform → bec_widgets-1.3.0/bec_widgets/widgets/vscode}/__init__.py +0 -0
  275. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/vscode/register_vs_code_editor.py +0 -0
  276. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/vscode/vs_code_editor.pyproject +0 -0
  277. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/vscode/vs_code_editor_plugin.py +0 -0
  278. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/vscode/vscode.py +0 -0
  279. {bec_widgets-1.1.0/bec_widgets/widgets/waveform/waveform_popups → bec_widgets-1.3.0/bec_widgets/widgets/waveform}/__init__.py +0 -0
  280. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/waveform/bec_waveform_widget.pyproject +0 -0
  281. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py +0 -0
  282. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/waveform/register_bec_waveform_widget.py +0 -0
  283. {bec_widgets-1.1.0/bec_widgets/widgets/waveform/waveform_popups/curve_dialog → bec_widgets-1.3.0/bec_widgets/widgets/waveform/waveform_popups}/__init__.py +0 -0
  284. {bec_widgets-1.1.0/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog → bec_widgets-1.3.0/bec_widgets/widgets/waveform/waveform_popups/curve_dialog}/__init__.py +0 -0
  285. {bec_widgets-1.1.0/bec_widgets/widgets/website → bec_widgets-1.3.0/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog}/__init__.py +0 -0
  286. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py +0 -0
  287. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/waveform/waveform_widget.py +0 -0
  288. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/website/register_website_widget.py +0 -0
  289. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/website/website.py +0 -0
  290. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/website/website_widget.pyproject +0 -0
  291. {bec_widgets-1.1.0 → bec_widgets-1.3.0}/bec_widgets/widgets/website/website_widget_plugin.py +0 -0
@@ -1,6 +1,28 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v1.3.0 (2024-10-30)
5
+
6
+ ### Bug Fixes
7
+
8
+ * fix(colors): extend color map validation for matplotlib and colorcet maps (if available) ([`14dd8c5`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/14dd8c5b2947c92f6643b888d71975e4e8d4ee88))
9
+
10
+ ### Features
11
+
12
+ * feat(colormap_button): colormap button with menu to select colormap filtered by the colormap type ([`b039933`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b039933405e2fbe92bd81bd0748e79e8d443a741))
13
+
14
+
15
+ ## v1.2.0 (2024-10-25)
16
+
17
+ ### Features
18
+
19
+ * feat(colors): evenly spaced color generation + new golden ratio calculation ([`40c9fea`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/40c9fea35f869ef52e05948dd1989bcd99f602e0))
20
+
21
+ ### Refactoring
22
+
23
+ * refactor: add bec_lib version to statusbox ([`5d4b86e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/5d4b86e1c6e1800051afce4f991153e370767fa6))
24
+
25
+
4
26
  ## v1.1.0 (2024-10-25)
5
27
 
6
28
  ### Features
@@ -147,29 +169,3 @@ complete UI ([`49268e3`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/49268e38
147
169
  ### Features
148
170
 
149
171
  * feat: add bec-app script to launch applications ([`8bf4842`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/8bf48427884338672a8e3de3deb20439b0bfdf99))
150
-
151
-
152
- ## v0.114.0 (2024-10-02)
153
-
154
- ### Bug Fixes
155
-
156
- * fix: prevent exception when empty string updates are coming from widget ([`04cfb1e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/04cfb1edf19437d54f07b868bcf3cfc2a35fd3bc))
157
-
158
- * fix: use new 'scan_axis' signal, to set_x and select x axis on waveform
159
-
160
- Fixes #361, do not try to change x axis when not permitted ([`efa2763`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/efa276358b0f5a45cce9fa84fa5f9aafaf4284f7))
161
-
162
- ### Features
163
-
164
- * feat: new 'scan_axis' signal
165
-
166
- Signal is emitted before "scan_started", to inform about scan positioner
167
- and (start, stop) positions. In case of multiple bundles, the signal
168
- is emitted multiple times. ([`f084e25`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f084e2514bc9459cccaa951b79044bc25884e738))
169
-
170
-
171
- ## v0.113.0 (2024-10-02)
172
-
173
- ### Testing
174
-
175
- * test: add tests for scan_status_callback ([`dc0c825`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/dc0c825fd594c093a24543ff803d6c6564010e92))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 1.1.0
3
+ Version: 1.3.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
@@ -16,6 +16,7 @@ class Widgets(str, enum.Enum):
16
16
  """
17
17
 
18
18
  AbortButton = "AbortButton"
19
+ BECColorMapWidget = "BECColorMapWidget"
19
20
  BECDock = "BECDock"
20
21
  BECDockArea = "BECDockArea"
21
22
  BECFigure = "BECFigure"
@@ -34,6 +35,7 @@ class Widgets(str, enum.Enum):
34
35
  PositionIndicator = "PositionIndicator"
35
36
  PositionerBox = "PositionerBox"
36
37
  PositionerControlLine = "PositionerControlLine"
38
+ PositionerGroup = "PositionerGroup"
37
39
  ResetButton = "ResetButton"
38
40
  ResumeButton = "ResumeButton"
39
41
  RingProgressBar = "RingProgressBar"
@@ -64,6 +66,15 @@ class AbortButton(RPCBase):
64
66
  """
65
67
 
66
68
 
69
+ class BECColorMapWidget(RPCBase):
70
+ @property
71
+ @rpc_call
72
+ def colormap(self):
73
+ """
74
+ Get the current colormap name.
75
+ """
76
+
77
+
67
78
  class BECCurve(RPCBase):
68
79
  @rpc_call
69
80
  def remove(self):
@@ -2690,6 +2701,16 @@ class PositionerControlLine(RPCBase):
2690
2701
  """
2691
2702
 
2692
2703
 
2704
+ class PositionerGroup(RPCBase):
2705
+ @rpc_call
2706
+ def set_positioners(self, device_names: "str"):
2707
+ """
2708
+ Redraw grid with positioners from device_names string
2709
+
2710
+ Device names must be separated by space
2711
+ """
2712
+
2713
+
2693
2714
  class ResetButton(RPCBase):
2694
2715
  @property
2695
2716
  @rpc_call
@@ -107,9 +107,98 @@ class Colors:
107
107
  angles.append(angle)
108
108
  return angles
109
109
 
110
+ @staticmethod
111
+ def set_theme_offset(theme: Literal["light", "dark"] | None = None, offset=0.2) -> tuple:
112
+ """
113
+ Set the theme offset to avoid colors too close to white or black with light or dark theme respectively for pyqtgraph plot background.
114
+
115
+ Args:
116
+ theme(str): The theme to be applied.
117
+ offset(float): Offset to avoid colors too close to white or black with light or dark theme respectively for pyqtgraph plot background.
118
+
119
+ Returns:
120
+ tuple: Tuple of min_pos and max_pos.
121
+
122
+ Raises:
123
+ ValueError: If theme_offset is not between 0 and 1.
124
+ """
125
+
126
+ if offset < 0 or offset > 1:
127
+ raise ValueError("theme_offset must be between 0 and 1")
128
+
129
+ if theme is None:
130
+ app = QApplication.instance()
131
+ if hasattr(app, "theme"):
132
+ theme = app.theme.theme
133
+
134
+ if theme == "light":
135
+ min_pos = 0.0
136
+ max_pos = 1 - offset
137
+ else:
138
+ min_pos = 0.0 + offset
139
+ max_pos = 1.0
140
+
141
+ return min_pos, max_pos
142
+
143
+ @staticmethod
144
+ def evenly_spaced_colors(
145
+ colormap: str,
146
+ num: int,
147
+ format: Literal["QColor", "HEX", "RGB"] = "QColor",
148
+ theme_offset=0.2,
149
+ theme: Literal["light", "dark"] | None = None,
150
+ ) -> list:
151
+ """
152
+ Extract `num` colors from the specified colormap, evenly spaced along its range,
153
+ and return them in the specified format.
154
+
155
+ Args:
156
+ colormap (str): Name of the colormap.
157
+ num (int): Number of requested colors.
158
+ format (Literal["QColor","HEX","RGB"]): The format of the returned colors ('RGB', 'HEX', 'QColor').
159
+ theme_offset (float): Has to be between 0-1. Offset to avoid colors too close to white or black with light or dark theme respectively for pyqtgraph plot background.
160
+ theme (Literal['light', 'dark'] | None): The theme to be applied. Overrides the QApplication theme if specified.
161
+
162
+ Returns:
163
+ list: List of colors in the specified format.
164
+
165
+ Raises:
166
+ ValueError: If theme_offset is not between 0 and 1.
167
+ """
168
+ if theme_offset < 0 or theme_offset > 1:
169
+ raise ValueError("theme_offset must be between 0 and 1")
170
+
171
+ cmap = pg.colormap.get(colormap)
172
+ min_pos, max_pos = Colors.set_theme_offset(theme, theme_offset)
173
+
174
+ # Generate positions that are evenly spaced within the acceptable range
175
+ if num == 1:
176
+ positions = np.array([(min_pos + max_pos) / 2])
177
+ else:
178
+ positions = np.linspace(min_pos, max_pos, num)
179
+
180
+ # Sample colors from the colormap at the calculated positions
181
+ colors = cmap.map(positions, mode="float")
182
+ color_list = []
183
+
184
+ for color in colors:
185
+ if format.upper() == "HEX":
186
+ color_list.append(QColor.fromRgbF(*color).name())
187
+ elif format.upper() == "RGB":
188
+ color_list.append(tuple((np.array(color) * 255).astype(int)))
189
+ elif format.upper() == "QCOLOR":
190
+ color_list.append(QColor.fromRgbF(*color))
191
+ else:
192
+ raise ValueError("Unsupported format. Please choose 'RGB', 'HEX', or 'QColor'.")
193
+ return color_list
194
+
110
195
  @staticmethod
111
196
  def golden_angle_color(
112
- colormap: str, num: int, format: Literal["QColor", "HEX", "RGB"] = "QColor"
197
+ colormap: str,
198
+ num: int,
199
+ format: Literal["QColor", "HEX", "RGB"] = "QColor",
200
+ theme_offset=0.2,
201
+ theme: Literal["dark", "light"] | None = None,
113
202
  ) -> list:
114
203
  """
115
204
  Extract num colors from the specified colormap following golden angle distribution and return them in the specified format.
@@ -118,45 +207,39 @@ class Colors:
118
207
  colormap (str): Name of the colormap.
119
208
  num (int): Number of requested colors.
120
209
  format (Literal["QColor","HEX","RGB"]): The format of the returned colors ('RGB', 'HEX', 'QColor').
210
+ theme_offset (float): Has to be between 0-1. Offset to avoid colors too close to white or black with light or dark theme respectively for pyqtgraph plot background.
121
211
 
122
212
  Returns:
123
213
  list: List of colors in the specified format.
124
214
 
125
215
  Raises:
126
- ValueError: If the number of requested colors is greater than the number of colors in the colormap.
216
+ ValueError: If theme_offset is not between 0 and 1.
127
217
  """
218
+
128
219
  cmap = pg.colormap.get(colormap)
129
- cmap_colors = cmap.getColors(mode="float")
130
- if num > len(cmap_colors):
131
- raise ValueError(
132
- f"Number of colors requested ({num}) is greater than the number of colors in the colormap ({len(cmap_colors)})"
133
- )
134
- angles = Colors.golden_ratio(len(cmap_colors))
135
- color_selection = np.round(np.interp(angles, (-np.pi, np.pi), (0, len(cmap_colors))))
136
- colors = []
137
- ii = 0
138
- while len(colors) < num:
139
- color_index = int(color_selection[ii])
140
- color = cmap_colors[color_index]
141
- app = QApplication.instance()
142
- if hasattr(app, "theme") and app.theme.theme == "light":
143
- background = 255
144
- else:
145
- background = 0
146
- if np.abs(np.mean(color[:3] * 255) - background) < 50:
147
- ii += 1
148
- continue
220
+ phi = (1 + np.sqrt(5)) / 2 # Golden ratio
221
+ golden_angle_conjugate = 1 - (1 / phi) # Approximately 0.38196601125
222
+
223
+ min_pos, max_pos = Colors.set_theme_offset(theme, theme_offset)
224
+
225
+ # Generate positions within the acceptable range
226
+ positions = np.mod(np.arange(num) * golden_angle_conjugate, 1)
227
+ positions = min_pos + positions * (max_pos - min_pos)
228
+
229
+ # Sample colors from the colormap at the calculated positions
230
+ colors = cmap.map(positions, mode="float")
231
+ color_list = []
149
232
 
233
+ for color in colors:
150
234
  if format.upper() == "HEX":
151
- colors.append(QColor.fromRgbF(*color).name())
235
+ color_list.append(QColor.fromRgbF(*color).name())
152
236
  elif format.upper() == "RGB":
153
- colors.append(tuple((np.array(color) * 255).astype(int)))
237
+ color_list.append(tuple((np.array(color) * 255).astype(int)))
154
238
  elif format.upper() == "QCOLOR":
155
- colors.append(QColor.fromRgbF(*color))
239
+ color_list.append(QColor.fromRgbF(*color))
156
240
  else:
157
241
  raise ValueError("Unsupported format. Please choose 'RGB', 'HEX', or 'QColor'.")
158
- ii += 1
159
- return colors
242
+ return color_list
160
243
 
161
244
  @staticmethod
162
245
  def hex_to_rgba(hex_color: str, alpha=255) -> tuple:
@@ -385,7 +468,7 @@ class Colors:
385
468
  return color
386
469
 
387
470
  @staticmethod
388
- def validate_color_map(color_map: str) -> str:
471
+ def validate_color_map(color_map: str, return_error: bool = True) -> str | bool:
389
472
  """
390
473
  Validate the colormap input if it is supported by pyqtgraph. Can be used in any pydantic model as a field validator. If validation fails it prints all available colormaps from pyqtgraph instance.
391
474
 
@@ -393,13 +476,24 @@ class Colors:
393
476
  color_map(str): The colormap to be validated.
394
477
 
395
478
  Returns:
396
- str: The validated colormap.
479
+ str: The validated colormap, if colormap is valid.
480
+ bool: False, if colormap is invalid.
481
+
482
+ Raises:
483
+ PydanticCustomError: If colormap is invalid.
397
484
  """
398
- available_colormaps = pg.colormap.listMaps()
485
+ available_pg_maps = pg.colormap.listMaps()
486
+ available_mpl_maps = pg.colormap.listMaps("matplotlib")
487
+ available_mpl_colorcet = pg.colormap.listMaps("colorcet")
488
+
489
+ available_colormaps = available_pg_maps + available_mpl_maps + available_mpl_colorcet
399
490
  if color_map not in available_colormaps:
400
- raise PydanticCustomError(
401
- "unsupported colormap",
402
- f"Colormap '{color_map}' not found in the current installation of pyqtgraph. Choose on the following: {available_colormaps}.",
403
- {"wrong_value": color_map},
404
- )
491
+ if return_error:
492
+ raise PydanticCustomError(
493
+ "unsupported colormap",
494
+ f"Colormap '{color_map}' not found in the current installation of pyqtgraph. Choose on the following: {available_colormaps}.",
495
+ {"wrong_value": color_map},
496
+ )
497
+ else:
498
+ return False
405
499
  return color_map
@@ -141,6 +141,7 @@ class StatusItem(QWidget):
141
141
  metrics_text = (
142
142
  f"<b>SERVICE:</b> {self.config.service_name}<br><b>STATUS:</b> {self.config.status}<br>"
143
143
  )
144
+ metrics_text += f"<b>BEC_LIB VERSION:</b> {self.config.info['version']}<br>"
144
145
  if self.config.metrics:
145
146
  for key, value in self.config.metrics.items():
146
147
  if key == "create_time":
@@ -0,0 +1 @@
1
+ {'files': ['colormap_widget.py']}
@@ -0,0 +1,54 @@
1
+ # Copyright (C) 2022 The Qt Company Ltd.
2
+ # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
+
4
+ from qtpy.QtDesigner import QDesignerCustomWidgetInterface
5
+
6
+ from bec_widgets.utils.bec_designer import designer_material_icon
7
+ from bec_widgets.widgets.colormap_widget.colormap_widget import BECColorMapWidget
8
+
9
+ DOM_XML = """
10
+ <ui language='c++'>
11
+ <widget class='BECColorMapWidget' name='bec_color_map_widget'>
12
+ </widget>
13
+ </ui>
14
+ """
15
+
16
+
17
+ class BECColorMapWidgetPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
18
+ def __init__(self):
19
+ super().__init__()
20
+ self._form_editor = None
21
+
22
+ def createWidget(self, parent):
23
+ t = BECColorMapWidget(parent)
24
+ return t
25
+
26
+ def domXml(self):
27
+ return DOM_XML
28
+
29
+ def group(self):
30
+ return "BEC Buttons"
31
+
32
+ def icon(self):
33
+ return designer_material_icon(BECColorMapWidget.ICON_NAME)
34
+
35
+ def includeFile(self):
36
+ return "bec_color_map_widget"
37
+
38
+ def initialize(self, form_editor):
39
+ self._form_editor = form_editor
40
+
41
+ def isContainer(self):
42
+ return False
43
+
44
+ def isInitialized(self):
45
+ return self._form_editor is not None
46
+
47
+ def name(self):
48
+ return "BECColorMapWidget"
49
+
50
+ def toolTip(self):
51
+ return "BECColorMapWidget"
52
+
53
+ def whatsThis(self):
54
+ return self.toolTip()
@@ -0,0 +1,73 @@
1
+ from pyqtgraph.widgets.ColorMapButton import ColorMapButton
2
+ from qtpy.QtCore import Property, Signal, Slot
3
+ from qtpy.QtWidgets import QSizePolicy, QVBoxLayout, QWidget
4
+
5
+ from bec_widgets.utils import Colors
6
+ from bec_widgets.utils.bec_widget import BECWidget
7
+
8
+
9
+ class BECColorMapWidget(BECWidget, QWidget):
10
+ colormap_changed_signal = Signal(str)
11
+ ICON_NAME = "palette"
12
+ USER_ACCESS = ["colormap"]
13
+
14
+ def __init__(self, parent=None, cmap: str = "magma"):
15
+ super().__init__()
16
+ QWidget.__init__(self, parent=parent)
17
+
18
+ # Create the ColorMapButton
19
+ self.button = ColorMapButton()
20
+
21
+ # Set the size policy and minimum width
22
+ size_policy = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed)
23
+ self.button.setSizePolicy(size_policy)
24
+ self.button.setMinimumWidth(100)
25
+ self.button.setMinimumHeight(30)
26
+
27
+ # Create the layout
28
+ self.layout = QVBoxLayout(self)
29
+ self.layout.addWidget(self.button)
30
+ self.layout.setSpacing(0)
31
+ self.layout.setContentsMargins(0, 0, 0, 0)
32
+
33
+ # Set the initial colormap
34
+ self.button.setColorMap(cmap)
35
+ self._cmap = cmap
36
+
37
+ # Connect the signal
38
+ self.button.sigColorMapChanged.connect(self.colormap_changed)
39
+
40
+ @Property(str)
41
+ def colormap(self):
42
+ """Get the current colormap name."""
43
+ return self._cmap
44
+
45
+ @colormap.setter
46
+ def colormap(self, name):
47
+ """Set the colormap by name."""
48
+ if self._cmap != name:
49
+ if Colors.validate_color_map(name, return_error=False) is False:
50
+ return
51
+ self.button.setColorMap(name)
52
+ self._cmap = name
53
+ self.colormap_changed_signal.emit(name)
54
+
55
+ @Slot()
56
+ def colormap_changed(self):
57
+ """
58
+ Emit the colormap changed signal with the current colormap selected in the button.
59
+ """
60
+ cmap = self.button.colorMap().name
61
+ self._cmap = cmap
62
+ self.colormap_changed_signal.emit(cmap)
63
+
64
+
65
+ if __name__ == "__main__": # pragma: no cover
66
+ import sys
67
+
68
+ from qtpy.QtWidgets import QApplication
69
+
70
+ app = QApplication(sys.argv)
71
+ window = BECColorMapWidget()
72
+ window.show()
73
+ sys.exit(app.exec())
@@ -0,0 +1,17 @@
1
+ def main(): # pragma: no cover
2
+ from qtpy import PYSIDE6
3
+
4
+ if not PYSIDE6:
5
+ print("PYSIDE6 is not available in the environment. Cannot patch designer.")
6
+ return
7
+ from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
8
+
9
+ from bec_widgets.widgets.colormap_widget.bec_color_map_widget_plugin import (
10
+ BECColorMapWidgetPlugin,
11
+ )
12
+
13
+ QPyDesignerCustomWidgetCollection.addCustomWidget(BECColorMapWidgetPlugin())
14
+
15
+
16
+ if __name__ == "__main__": # pragma: no cover
17
+ main()
@@ -53,7 +53,7 @@ class CurveSettings(SettingWidget):
53
53
  x_entry = self.target_widget.waveform._x_axis_mode["entry"]
54
54
  self._enable_ui_elements(x_name, x_entry)
55
55
  cm = self.target_widget.config.color_palette
56
- self.ui.color_map_selector_scan.combo.setCurrentText(cm)
56
+ self.ui.color_map_selector_scan.colormap = cm
57
57
 
58
58
  # Scan Curve Table
59
59
  for source in ["scan_segment", "async"]:
@@ -115,10 +115,10 @@ class CurveSettings(SettingWidget):
115
115
  @Slot()
116
116
  def change_colormap(self, target: Literal["scan", "dap"]):
117
117
  if target == "scan":
118
- cm = self.ui.color_map_selector_scan.combo.currentText()
118
+ cm = self.ui.color_map_selector_scan.colormap
119
119
  table = self.ui.scan_table
120
120
  if target == "dap":
121
- cm = self.ui.color_map_selector_dap.combo.currentText()
121
+ cm = self.ui.color_map_selector_dap.colormap
122
122
  table = self.ui.dap_table
123
123
  rows = table.rowCount()
124
124
  colors = Colors.golden_angle_color(colormap=cm, num=max(10, rows + 1), format="HEX")
@@ -231,7 +231,14 @@
231
231
  </widget>
232
232
  </item>
233
233
  <item row="0" column="3">
234
- <widget class="ColormapSelector" name="color_map_selector_scan"/>
234
+ <widget class="BECColorMapWidget" name="color_map_selector_scan">
235
+ <property name="sizePolicy">
236
+ <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
237
+ <horstretch>0</horstretch>
238
+ <verstretch>0</verstretch>
239
+ </sizepolicy>
240
+ </property>
241
+ </widget>
235
242
  </item>
236
243
  </layout>
237
244
  </widget>
@@ -330,7 +337,14 @@
330
337
  </widget>
331
338
  </item>
332
339
  <item row="0" column="3">
333
- <widget class="ColormapSelector" name="color_map_selector_dap"/>
340
+ <widget class="BECColorMapWidget" name="color_map_selector_dap">
341
+ <property name="sizePolicy">
342
+ <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
343
+ <horstretch>0</horstretch>
344
+ <verstretch>0</verstretch>
345
+ </sizepolicy>
346
+ </property>
347
+ </widget>
334
348
  </item>
335
349
  </layout>
336
350
  </widget>
@@ -348,9 +362,9 @@
348
362
  <header>device_line_edit</header>
349
363
  </customwidget>
350
364
  <customwidget>
351
- <class>ColormapSelector</class>
365
+ <class>BECColorMapWidget</class>
352
366
  <extends>QWidget</extends>
353
- <header>colormap_selector</header>
367
+ <header>bec_color_map_widget</header>
354
368
  </customwidget>
355
369
  </customwidgets>
356
370
  <resources/>
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "1.1.0"
7
+ version = "1.3.0"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [
File without changes
File without changes
File without changes
File without changes
File without changes