bec-widgets 0.97.0__tar.gz → 0.99.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 (410) hide show
  1. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/CHANGELOG.md +48 -34
  2. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/PKG-INFO +1 -1
  3. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/cli/client.py +10 -0
  4. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/qt_utils/toolbar.py +24 -23
  5. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/colors.py +30 -6
  6. bec_widgets-0.99.0/bec_widgets/widgets/dark_mode_button/dark_mode_button.py +71 -0
  7. bec_widgets-0.99.0/bec_widgets/widgets/dark_mode_button/dark_mode_button.pyproject +1 -0
  8. bec_widgets-0.99.0/bec_widgets/widgets/dark_mode_button/dark_mode_button_plugin.py +54 -0
  9. bec_widgets-0.99.0/bec_widgets/widgets/dark_mode_button/register_dark_mode_button.py +15 -0
  10. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/dock/dock_area.py +46 -21
  11. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/figure/figure.py +0 -1
  12. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/image/image_widget.py +28 -28
  13. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/motor_map/motor_map_widget.py +6 -4
  14. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/positioner_box/positioner_box.py +6 -9
  15. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/scan_control/scan_control.py +3 -1
  16. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/toggle/toggle.py +5 -4
  17. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.py +4 -6
  18. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/waveform/waveform_widget.py +18 -19
  19. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/buttons/buttons.md +13 -0
  20. bec_widgets-0.99.0/docs/user/widgets/buttons/dark_mode_disabled.png +0 -0
  21. bec_widgets-0.99.0/docs/user/widgets/buttons/dark_mode_enabled.png +0 -0
  22. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/pyproject.toml +1 -1
  23. bec_widgets-0.99.0/tests/unit_tests/test_dark_mode_button.py +70 -0
  24. bec_widgets-0.99.0/tests/unit_tests/test_msgs/__init__.py +0 -0
  25. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/.git_hooks/pre-commit +0 -0
  26. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/.gitignore +0 -0
  27. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/.gitlab/issue_templates/bug_report_template.md +0 -0
  28. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/.gitlab/issue_templates/documentation_update_template.md +0 -0
  29. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/.gitlab/issue_templates/feature_request_template.md +0 -0
  30. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/.gitlab/merge_request_templates/default.md +0 -0
  31. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/.gitlab-ci.yml +0 -0
  32. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/.pylintrc +0 -0
  33. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/.readthedocs.yaml +0 -0
  34. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/LICENSE +0 -0
  35. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/README.md +0 -0
  36. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/__init__.py +0 -0
  37. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/app_icons/BEC-Dark.png +0 -0
  38. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
  39. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/app_icons/terminal_icon.png +0 -0
  40. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/status_icons/error.svg +0 -0
  41. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/status_icons/not_connected.svg +0 -0
  42. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/status_icons/refresh.svg +0 -0
  43. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/status_icons/running.svg +0 -0
  44. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/status_icons/warning.svg +0 -0
  45. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/add.svg +0 -0
  46. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/attach_all.svg +0 -0
  47. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/auto_range.svg +0 -0
  48. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/compare.svg +0 -0
  49. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/connection.svg +0 -0
  50. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/device_line_edit.svg +0 -0
  51. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/drag_pan_mode.svg +0 -0
  52. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/export.svg +0 -0
  53. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/fft.svg +0 -0
  54. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/fitting_parameters.svg +0 -0
  55. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/history.svg +0 -0
  56. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/image.svg +0 -0
  57. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/image_autorange.svg +0 -0
  58. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/import.svg +0 -0
  59. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/line_axis.svg +0 -0
  60. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/line_curve.svg +0 -0
  61. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/lock_aspect_ratio.svg +0 -0
  62. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/log_scale.png +0 -0
  63. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/motor_map.svg +0 -0
  64. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/photo_library.svg +0 -0
  65. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/positioner_box.svg +0 -0
  66. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/progress.svg +0 -0
  67. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/queue.svg +0 -0
  68. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/rectangle_mode.svg +0 -0
  69. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/remove.svg +0 -0
  70. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/reset_settings.svg +0 -0
  71. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/restore_state.svg +0 -0
  72. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/ring_progress.svg +0 -0
  73. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/rotate_left.svg +0 -0
  74. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/rotate_right.svg +0 -0
  75. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/save.svg +0 -0
  76. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/save_state.svg +0 -0
  77. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/scan_control.svg +0 -0
  78. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/settings.svg +0 -0
  79. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/status.svg +0 -0
  80. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/terminal.svg +0 -0
  81. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/transform.svg +0 -0
  82. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/assets/toolbar_icons/waveform.svg +0 -0
  83. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/cli/__init__.py +0 -0
  84. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/cli/auto_updates.py +0 -0
  85. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/cli/client_utils.py +0 -0
  86. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/cli/generate_cli.py +0 -0
  87. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/cli/rpc_register.py +0 -0
  88. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/cli/rpc_wigdet_handler.py +0 -0
  89. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/cli/server.py +0 -0
  90. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/examples/__init__.py +0 -0
  91. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/examples/general_app/__init__.py +0 -0
  92. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/examples/general_app/general_app.py +0 -0
  93. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/examples/general_app/general_app.ui +0 -0
  94. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/examples/general_app/web_links.py +0 -0
  95. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  96. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
  97. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
  98. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
  99. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
  100. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
  101. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
  102. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
  103. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
  104. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/qt_utils/__init__.py +0 -0
  105. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/qt_utils/error_popups.py +0 -0
  106. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/qt_utils/redis_message_waiter.py +0 -0
  107. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/qt_utils/settings_dialog.py +0 -0
  108. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/__init__.py +0 -0
  109. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/bec_connector.py +0 -0
  110. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/bec_designer.py +0 -0
  111. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/bec_dispatcher.py +0 -0
  112. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/bec_table.py +0 -0
  113. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/bec_widget.py +0 -0
  114. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/container_utils.py +0 -0
  115. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/crosshair.py +0 -0
  116. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/entry_validator.py +0 -0
  117. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/generate_designer_plugin.py +0 -0
  118. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/layout_manager.py +0 -0
  119. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
  120. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/plugin_templates/register.template +0 -0
  121. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/plugin_utils.py +0 -0
  122. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/reference_utils.py +0 -0
  123. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/rpc_decorator.py +0 -0
  124. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/thread_checker.py +0 -0
  125. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/ui_loader.py +0 -0
  126. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/validator_delegate.py +0 -0
  127. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/widget_io.py +0 -0
  128. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/utils/yaml_dialog.py +0 -0
  129. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/__init__.py +0 -0
  130. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/base_classes/__init__.py +0 -0
  131. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/base_classes/device_input_base.py +0 -0
  132. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/bec_queue/__init__.py +0 -0
  133. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/bec_queue/bec_queue.py +0 -0
  134. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/bec_queue/bec_queue.pyproject +0 -0
  135. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/bec_queue/bec_queue_plugin.py +0 -0
  136. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/bec_queue/register_bec_queue.py +0 -0
  137. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/bec_status_box/__init__.py +0 -0
  138. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/bec_status_box/bec_status_box.py +0 -0
  139. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/bec_status_box/bec_status_box.pyproject +0 -0
  140. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py +0 -0
  141. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/bec_status_box/register_bec_status_box.py +0 -0
  142. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/bec_status_box/status_item.py +0 -0
  143. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/color_button/__init__.py +0 -0
  144. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/color_button/color_button.py +0 -0
  145. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/color_button/color_button.pyproject +0 -0
  146. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/color_button/color_button_plugin.py +0 -0
  147. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/color_button/register_color_button.py +0 -0
  148. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/colormap_selector/__init__.py +0 -0
  149. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/colormap_selector/colormap_selector.py +0 -0
  150. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/colormap_selector/colormap_selector.pyproject +0 -0
  151. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py +0 -0
  152. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/colormap_selector/register_colormap_selector.py +0 -0
  153. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/console/console.py +0 -0
  154. {bec_widgets-0.97.0/bec_widgets/widgets/device_browser → bec_widgets-0.99.0/bec_widgets/widgets/dark_mode_button}/__init__.py +0 -0
  155. {bec_widgets-0.97.0/bec_widgets/widgets/device_combobox → bec_widgets-0.99.0/bec_widgets/widgets/device_browser}/__init__.py +0 -0
  156. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/device_browser/device_browser.py +0 -0
  157. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/device_browser/device_browser.pyproject +0 -0
  158. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/device_browser/device_browser.ui +0 -0
  159. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/device_browser/device_browser_plugin.py +0 -0
  160. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/device_browser/device_item/__init__.py +0 -0
  161. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/device_browser/device_item/device_item.py +0 -0
  162. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/device_browser/register_device_browser.py +0 -0
  163. {bec_widgets-0.97.0/bec_widgets/widgets/device_line_edit → bec_widgets-0.99.0/bec_widgets/widgets/device_combobox}/__init__.py +0 -0
  164. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/device_combobox/device_combo_box.pyproject +0 -0
  165. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/device_combobox/device_combo_box_plugin.py +0 -0
  166. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/device_combobox/device_combobox.py +0 -0
  167. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/device_combobox/register_device_combo_box.py +0 -0
  168. {bec_widgets-0.97.0/bec_widgets/widgets/figure/plots → bec_widgets-0.99.0/bec_widgets/widgets/device_line_edit}/__init__.py +0 -0
  169. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/device_line_edit/device_line_edit.py +0 -0
  170. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/device_line_edit/device_line_edit.pyproject +0 -0
  171. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py +0 -0
  172. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/device_line_edit/register_device_line_edit.py +0 -0
  173. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/dock/__init__.py +0 -0
  174. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/dock/dock.py +0 -0
  175. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/dock/dock_area.pyproject +0 -0
  176. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/dock/dock_area_plugin.py +0 -0
  177. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/dock/register_dock_area.py +0 -0
  178. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/figure/__init__.py +0 -0
  179. {bec_widgets-0.97.0/bec_widgets/widgets/figure/plots/image → bec_widgets-0.99.0/bec_widgets/widgets/figure/plots}/__init__.py +0 -0
  180. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/figure/plots/axis_settings.py +0 -0
  181. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/figure/plots/axis_settings.ui +0 -0
  182. {bec_widgets-0.97.0/bec_widgets/widgets/figure/plots/motor_map → bec_widgets-0.99.0/bec_widgets/widgets/figure/plots/image}/__init__.py +0 -0
  183. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/figure/plots/image/image.py +0 -0
  184. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/figure/plots/image/image_item.py +0 -0
  185. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/figure/plots/image/image_processor.py +0 -0
  186. {bec_widgets-0.97.0/bec_widgets/widgets/figure/plots/waveform → bec_widgets-0.99.0/bec_widgets/widgets/figure/plots/motor_map}/__init__.py +0 -0
  187. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/figure/plots/motor_map/motor_map.py +0 -0
  188. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/figure/plots/plot_base.py +0 -0
  189. {bec_widgets-0.97.0/bec_widgets/widgets/image → bec_widgets-0.99.0/bec_widgets/widgets/figure/plots/waveform}/__init__.py +0 -0
  190. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/figure/plots/waveform/waveform.py +0 -0
  191. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +0 -0
  192. {bec_widgets-0.97.0/bec_widgets/widgets/jupyter_console → bec_widgets-0.99.0/bec_widgets/widgets/image}/__init__.py +0 -0
  193. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/image/bec_image_widget.pyproject +0 -0
  194. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/image/bec_image_widget_plugin.py +0 -0
  195. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/image/register_bec_image_widget.py +0 -0
  196. {bec_widgets-0.97.0/bec_widgets/widgets/motor_map → bec_widgets-0.99.0/bec_widgets/widgets/jupyter_console}/__init__.py +0 -0
  197. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/jupyter_console/jupyter_console.py +0 -0
  198. {bec_widgets-0.97.0/bec_widgets/widgets/motor_map/motor_map_dialog → bec_widgets-0.99.0/bec_widgets/widgets/motor_map}/__init__.py +0 -0
  199. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/motor_map/bec_motor_map_widget.pyproject +0 -0
  200. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py +0 -0
  201. {bec_widgets-0.97.0/bec_widgets/widgets/position_indicator → bec_widgets-0.99.0/bec_widgets/widgets/motor_map/motor_map_dialog}/__init__.py +0 -0
  202. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py +0 -0
  203. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui +0 -0
  204. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py +0 -0
  205. {bec_widgets-0.97.0/bec_widgets/widgets/positioner_box → bec_widgets-0.99.0/bec_widgets/widgets/position_indicator}/__init__.py +0 -0
  206. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/position_indicator/position_indicator.py +0 -0
  207. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/position_indicator/position_indicator.pyproject +0 -0
  208. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/position_indicator/position_indicator_plugin.py +0 -0
  209. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/position_indicator/register_position_indicator.py +0 -0
  210. {bec_widgets-0.97.0/bec_widgets/widgets/spinner → bec_widgets-0.99.0/bec_widgets/widgets/positioner_box}/__init__.py +0 -0
  211. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/positioner_box/positioner_box.pyproject +0 -0
  212. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/positioner_box/positioner_box.ui +0 -0
  213. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/positioner_box/positioner_box_plugin.py +0 -0
  214. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/positioner_box/positioner_control_line.py +0 -0
  215. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/positioner_box/positioner_control_line.pyproject +0 -0
  216. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/positioner_box/positioner_control_line.ui +0 -0
  217. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py +0 -0
  218. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/positioner_box/register_positioner_box.py +0 -0
  219. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/positioner_box/register_positioner_control_line.py +0 -0
  220. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/ring_progress_bar/__init__.py +0 -0
  221. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/ring_progress_bar/register_ring_progress_bar.py +0 -0
  222. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/ring_progress_bar/ring.py +0 -0
  223. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.py +0 -0
  224. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject +0 -0
  225. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
  226. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/scan_control/__init__.py +0 -0
  227. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/scan_control/register_scan_control.py +0 -0
  228. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/scan_control/scan_control.pyproject +0 -0
  229. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/scan_control/scan_control_plugin.py +0 -0
  230. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/scan_control/scan_group_box.py +0 -0
  231. {bec_widgets-0.97.0/bec_widgets/widgets/stop_button → bec_widgets-0.99.0/bec_widgets/widgets/spinner}/__init__.py +0 -0
  232. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/spinner/register_spinner_widget.py +0 -0
  233. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/spinner/spinner.py +0 -0
  234. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/spinner/spinner_widget.pyproject +0 -0
  235. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/spinner/spinner_widget_plugin.py +0 -0
  236. {bec_widgets-0.97.0/bec_widgets/widgets/text_box → bec_widgets-0.99.0/bec_widgets/widgets/stop_button}/__init__.py +0 -0
  237. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/stop_button/register_stop_button.py +0 -0
  238. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/stop_button/stop_button.py +0 -0
  239. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/stop_button/stop_button.pyproject +0 -0
  240. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/stop_button/stop_button_plugin.py +0 -0
  241. {bec_widgets-0.97.0/bec_widgets/widgets/toggle → bec_widgets-0.99.0/bec_widgets/widgets/text_box}/__init__.py +0 -0
  242. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/text_box/register_text_box.py +0 -0
  243. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/text_box/text_box.py +0 -0
  244. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/text_box/text_box.pyproject +0 -0
  245. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/text_box/text_box_plugin.py +0 -0
  246. {bec_widgets-0.97.0/bec_widgets/widgets/vscode → bec_widgets-0.99.0/bec_widgets/widgets/toggle}/__init__.py +0 -0
  247. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/toggle/register_toggle_switch.py +0 -0
  248. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/toggle/toggle_switch.pyproject +0 -0
  249. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/toggle/toggle_switch_plugin.py +0 -0
  250. {bec_widgets-0.97.0/bec_widgets/widgets/waveform → bec_widgets-0.99.0/bec_widgets/widgets/vscode}/__init__.py +0 -0
  251. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/vscode/register_vs_code_editor.py +0 -0
  252. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/vscode/vs_code_editor.pyproject +0 -0
  253. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/vscode/vs_code_editor_plugin.py +0 -0
  254. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/vscode/vscode.py +0 -0
  255. {bec_widgets-0.97.0/bec_widgets/widgets/waveform/waveform_popups → bec_widgets-0.99.0/bec_widgets/widgets/waveform}/__init__.py +0 -0
  256. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/waveform/bec_waveform_widget.pyproject +0 -0
  257. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py +0 -0
  258. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/waveform/register_bec_waveform_widget.py +0 -0
  259. {bec_widgets-0.97.0/bec_widgets/widgets/waveform/waveform_popups/curve_dialog → bec_widgets-0.99.0/bec_widgets/widgets/waveform/waveform_popups}/__init__.py +0 -0
  260. {bec_widgets-0.97.0/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog → bec_widgets-0.99.0/bec_widgets/widgets/waveform/waveform_popups/curve_dialog}/__init__.py +0 -0
  261. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.ui +0 -0
  262. {bec_widgets-0.97.0/bec_widgets/widgets/website → bec_widgets-0.99.0/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog}/__init__.py +0 -0
  263. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary.ui +0 -0
  264. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py +0 -0
  265. {bec_widgets-0.97.0/tests → bec_widgets-0.99.0/bec_widgets/widgets/website}/__init__.py +0 -0
  266. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/website/register_website_widget.py +0 -0
  267. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/website/website.py +0 -0
  268. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/website/website_widget.pyproject +0 -0
  269. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/bec_widgets/widgets/website/website_widget_plugin.py +0 -0
  270. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/Makefile +0 -0
  271. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/_static/custom.css +0 -0
  272. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/_templates/custom-class-template.rst +0 -0
  273. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/_templates/custom-module-template.rst +0 -0
  274. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/api_reference/api_reference.md +0 -0
  275. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/apps_48dp.svg +0 -0
  276. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/display_settings_48dp.svg +0 -0
  277. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/index_api.svg +0 -0
  278. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/index_contribute.svg +0 -0
  279. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/index_getting_started.svg +0 -0
  280. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/index_user_guide.svg +0 -0
  281. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/rocket_launch_48dp.svg +0 -0
  282. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/buttons.png +0 -0
  283. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/device_box.png +0 -0
  284. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/device_browser.png +0 -0
  285. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/device_inputs.png +0 -0
  286. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/dock_area.png +0 -0
  287. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/figure.png +0 -0
  288. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/image_widget.png +0 -0
  289. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/motor_map_widget.png +0 -0
  290. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/position_indicator.png +0 -0
  291. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/queue.png +0 -0
  292. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/ring_progress_bar.png +0 -0
  293. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/scan_controller.png +0 -0
  294. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/spinner.gif +0 -0
  295. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/status_box.png +0 -0
  296. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/text_box.png +0 -0
  297. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/toggle.png +0 -0
  298. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/waveform_widget.png +0 -0
  299. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/assets/widget_screenshots/website.png +0 -0
  300. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/conf.py +0 -0
  301. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/developer/developer.md +0 -0
  302. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/developer/introduction/concepts.md +0 -0
  303. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/developer/introduction/contributing.md +0 -0
  304. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/developer/introduction/introduction.md +0 -0
  305. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/developer/introduction/useful_links.md +0 -0
  306. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/developer/widget_development/bec_dispatcher.md +0 -0
  307. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/developer/widget_development/widget_development.md +0 -0
  308. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/index.md +0 -0
  309. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/introduction/introduction.md +0 -0
  310. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/make.bat +0 -0
  311. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/requirements.txt +0 -0
  312. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/api_reference/api_reference.md +0 -0
  313. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/applications/applications.md +0 -0
  314. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/customisation.md +0 -0
  315. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/getting_started/BECDockArea.png +0 -0
  316. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/getting_started/auto_updates.md +0 -0
  317. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/getting_started/getting_started.md +0 -0
  318. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/getting_started/gui_complex_gui.gif +0 -0
  319. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/getting_started/installation.md +0 -0
  320. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/getting_started/quick_start.md +0 -0
  321. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/getting_started/video_tutorials.md +0 -0
  322. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/user.md +0 -0
  323. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/bec_figure/BECFigure.png +0 -0
  324. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/bec_figure/bec_figure.md +0 -0
  325. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/bec_status_box/bec_status_box.gif +0 -0
  326. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/bec_status_box/bec_status_box.md +0 -0
  327. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/device_browser/device_browser.md +0 -0
  328. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/device_browser/device_browser.png +0 -0
  329. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/device_input/device_input.md +0 -0
  330. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/dock_area/BECDockArea.png +0 -0
  331. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/dock_area/bec_dock_area.md +0 -0
  332. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/image/image_plot.gif +0 -0
  333. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/image/image_widget.md +0 -0
  334. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/motor_map/motor.gif +0 -0
  335. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/motor_map/motor_map.md +0 -0
  336. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/position_indicator/position_indicator.md +0 -0
  337. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/positioner_box/positioner_box.md +0 -0
  338. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/progress_bar/progress_bar.gif +0 -0
  339. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/progress_bar/ring_progress_bar.md +0 -0
  340. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/queue/queue.md +0 -0
  341. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/scan_control/hide_scan_control.png +0 -0
  342. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/scan_control/scan_control.gif +0 -0
  343. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/scan_control/scan_control.md +0 -0
  344. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/spinner/spinner.md +0 -0
  345. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/text_box/text_box.md +0 -0
  346. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/toggle/toggle.md +0 -0
  347. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/waveform/bec_figure_dap.gif +0 -0
  348. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/waveform/scatter_2D.gif +0 -0
  349. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/waveform/w1D.gif +0 -0
  350. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/waveform/waveform_widget.md +0 -0
  351. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/website/website.md +0 -0
  352. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/docs/user/widgets/widgets.md +0 -0
  353. {bec_widgets-0.97.0/tests/end-2-end → bec_widgets-0.99.0/tests}/__init__.py +0 -0
  354. {bec_widgets-0.97.0/tests/unit_tests → bec_widgets-0.99.0/tests/end-2-end}/__init__.py +0 -0
  355. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/end-2-end/conftest.py +0 -0
  356. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/end-2-end/test_bec_dock_rpc_e2e.py +0 -0
  357. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/end-2-end/test_bec_figure_rpc_e2e.py +0 -0
  358. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/end-2-end/test_rpc_register_e2e.py +0 -0
  359. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/end-2-end/test_scan_control_e2e.py +0 -0
  360. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/references/SpinnerWidget/SpinnerWidget_darwin.png +0 -0
  361. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/references/SpinnerWidget/SpinnerWidget_linux.png +0 -0
  362. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/references/SpinnerWidget/SpinnerWidget_started_darwin.png +0 -0
  363. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/references/SpinnerWidget/SpinnerWidget_started_linux.png +0 -0
  364. {bec_widgets-0.97.0/tests/unit_tests/test_msgs → bec_widgets-0.99.0/tests/unit_tests}/__init__.py +0 -0
  365. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/client_mocks.py +0 -0
  366. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/conftest.py +0 -0
  367. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_bec_connector.py +0 -0
  368. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_bec_dispatcher.py +0 -0
  369. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_bec_dock.py +0 -0
  370. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_bec_figure.py +0 -0
  371. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_bec_image.py +0 -0
  372. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_bec_image_widget.py +0 -0
  373. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_bec_motor_map.py +0 -0
  374. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_bec_queue.py +0 -0
  375. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_bec_status_box.py +0 -0
  376. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_client_utils.py +0 -0
  377. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_color_map_selector.py +0 -0
  378. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_color_validation.py +0 -0
  379. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_configs/config_device.yaml +0 -0
  380. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_configs/config_device_no_entry.yaml +0 -0
  381. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_configs/config_scan.yaml +0 -0
  382. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_crosshair.py +0 -0
  383. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_device_browser.py +0 -0
  384. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_device_input_base.py +0 -0
  385. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_device_input_widgets.py +0 -0
  386. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_error_utils.py +0 -0
  387. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_generate_cli_client.py +0 -0
  388. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_generate_plugin.py +0 -0
  389. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_motor_map_widget.py +0 -0
  390. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_msgs/available_scans_message.py +0 -0
  391. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_plot_base.py +0 -0
  392. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_plugin_utils.py +0 -0
  393. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_positioner_box.py +0 -0
  394. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_ring_progress_bar.py +0 -0
  395. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_rpc_register.py +0 -0
  396. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_rpc_server.py +0 -0
  397. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_rpc_widget_handler.py +0 -0
  398. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_scan_control.py +0 -0
  399. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_scan_control_group_box.py +0 -0
  400. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_setting_dialog.py +0 -0
  401. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_spinner.py +0 -0
  402. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_stop_button.py +0 -0
  403. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_text_box_widget.py +0 -0
  404. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_toggle.py +0 -0
  405. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_vscode_widget.py +0 -0
  406. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_waveform1d.py +0 -0
  407. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_waveform_widget.py +0 -0
  408. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_website_widget.py +0 -0
  409. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_widget_io.py +0 -0
  410. {bec_widgets-0.97.0 → bec_widgets-0.99.0}/tests/unit_tests/test_yaml_dialog.py +0 -0
@@ -1,5 +1,53 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.99.0 (2024-08-25)
4
+
5
+ ### Documentation
6
+
7
+ * docs(darkmodebutton): added dark mode button docs ([`406c263`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/406c263746f0e809c1a4d98356c48f40428c23d7))
8
+
9
+ ### Feature
10
+
11
+ * feat(darkmodebutton): added button to toggle between dark and light mode ([`cc8c166`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/cc8c166b5c1d37e0f64c83801b2347a54a6550b6))
12
+
13
+ ### Fix
14
+
15
+ * fix(toggle): emit state change ([`c4f3308`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/c4f3308dc0c3e4b2064760ccd7372d71b3e49f96))
16
+
17
+ ### Refactor
18
+
19
+ * refactor(darkmodebutton): renamed set_dark_mode_enabled to toggle_dark_mode ([`c70724a`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/c70724a456900bcb06b040407a2c5d497e49ce77))
20
+
21
+ ### Test
22
+
23
+ * test(dark_mode_button): added tests for dark mode button ([`df35aab`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/df35aabff30c5d00b1c441132bd370446653741e))
24
+
25
+ ## v0.98.0 (2024-08-25)
26
+
27
+ ### Feature
28
+
29
+ * feat(themes): added set_theme method ([`2b4449a`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/2b4449afebdda0a97f95712a1353cf40ec55c283))
30
+
31
+ ### Fix
32
+
33
+ * fix(toolbar): removed hardcoded color values ([`afdf4e8`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/afdf4e8782a22566932180224fa1c924d24c810f))
34
+
35
+ * fix: transitioning to material icons ([`2a82032`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/2a82032644a84e38df04e2035a6aa63f4a046360))
36
+
37
+ * fix(dock_area): transitioned to MaterialIconAction ([`88a2f66`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/88a2f667588e9aeb34ae556fa327898824052bc3))
38
+
39
+ * fix: fix color palette if qtheme was not called ([`3f3b207`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/3f3b207295ebd406ebaeecee465c774965161b8b))
40
+
41
+ * fix(figure): removed theme from figure init ([`e42b84c`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/e42b84c63650297d67feffccc02a2c2ba111ca79))
42
+
43
+ * fix: use globally set theme instead of the internal bec widgets theme ([`77c5aa7`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/77c5aa741cf1f5b969a42aa878aa2965176dbf41))
44
+
45
+ * fix(waveform): fixed icon appearance ([`36ad464`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/36ad4641594b67c9b789515c28f7db78a12757ee))
46
+
47
+ ### Refactor
48
+
49
+ * refactor(waveform): use set theme for demo ([`44cfda1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/44cfda1c07306669c9a4e09706d95e6b91dee370))
50
+
3
51
  ## v0.97.0 (2024-08-23)
4
52
 
5
53
  ### Feature
@@ -123,37 +171,3 @@ Since we now rely on reusing the BECClient singleton, we need the fix introduced
123
171
  ### Fix
124
172
 
125
173
  * fix(rpc): use client singleton instead of dispatcher ([`ea9240d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ea9240d2f71931082f33fb6b68231469875c3d63))
126
-
127
- * fix: removed qcoreapplication for polling events ([`4d02b42`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4d02b42f11e9882b843317255a4975565c8a536f))
128
-
129
- ## v0.94.4 (2024-08-14)
130
-
131
- ### Documentation
132
-
133
- * docs: review developer section; add introduction ([`2af5c94`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/2af5c94913a3435c1839034df4f45f885b56d08b))
134
-
135
- ### Fix
136
-
137
- * fix: do not shutdown client in "close"
138
-
139
- Terminating client connections has to be done at the application level ([`198c1d1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/198c1d1064cc2dae55de4b941929341faddacb28))
140
-
141
- ## v0.94.3 (2024-08-13)
142
-
143
- ### Fix
144
-
145
- * fix(curve_dialog): async curves are shown in curve dialog after addition. ([`7aeb2b5`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/7aeb2b5c26c7c2851e8d663d32521da8daec95ef))
146
-
147
- * fix(waveform): async device entry is correctly passed, updated and with new scan the previous data are cleared ([`d56ea95`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/d56ea95ef97bfdd0bc3eeddc4505d20b38e28559))
148
-
149
- ### Test
150
-
151
- * test(waveform_widget): added tests for axis setting and curve dialog ([`f285b35`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f285b35b491660549e74349318119f7c2c44f619))
152
-
153
- ## v0.94.2 (2024-08-13)
154
-
155
- ### Fix
156
-
157
- * fix(image): image is single image mode do not raise popup error when connected twice with the same monitor ([`98b79aa`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/98b79aac7b47b73137f4d582f7f1d552b1d95366))
158
-
159
- ## v0.94.1 (2024-08-12)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.97.0
3
+ Version: 0.99.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
@@ -21,6 +21,7 @@ class Widgets(str, enum.Enum):
21
21
  BECQueue = "BECQueue"
22
22
  BECStatusBox = "BECStatusBox"
23
23
  BECWaveformWidget = "BECWaveformWidget"
24
+ DarkModeButton = "DarkModeButton"
24
25
  DeviceBrowser = "DeviceBrowser"
25
26
  DeviceComboBox = "DeviceComboBox"
26
27
  DeviceLineEdit = "DeviceLineEdit"
@@ -2289,6 +2290,15 @@ class BECWaveformWidget(RPCBase):
2289
2290
  """
2290
2291
 
2291
2292
 
2293
+ class DarkModeButton(RPCBase):
2294
+ @rpc_call
2295
+ def toggle_dark_mode(self) -> None:
2296
+ """
2297
+ Toggle the dark mode state. This will change the theme of the entire
2298
+ application to dark or light mode.
2299
+ """
2300
+
2301
+
2292
2302
  class DeviceBrowser(RPCBase):
2293
2303
  @property
2294
2304
  @rpc_call
@@ -76,31 +76,38 @@ class MaterialIconAction:
76
76
  Action with a Material icon for the toolbar.
77
77
 
78
78
  Args:
79
- icon_path (str, optional): The name of the icon file from `assets/toolbar_icons`. Defaults to None.
79
+ icon_path (str, optional): The name of the Material icon. Defaults to None.
80
80
  tooltip (bool, optional): The tooltip for the action. Defaults to None.
81
81
  checkable (bool, optional): Whether the action is checkable. Defaults to False.
82
+ filled (bool, optional): Whether the icon is filled. Defaults to False.
82
83
  """
83
84
 
84
- def __init__(self, icon_name: str = None, tooltip: str = None, checkable: bool = False):
85
+ def __init__(
86
+ self,
87
+ icon_name: str = None,
88
+ tooltip: str = None,
89
+ checkable: bool = False,
90
+ filled: bool = False,
91
+ ):
85
92
  self.icon_name = icon_name
86
93
  self.tooltip = tooltip
87
94
  self.checkable = checkable
88
95
  self.action = None
96
+ self.filled = filled
89
97
 
90
98
  def add_to_toolbar(self, toolbar: QToolBar, target: QWidget):
91
- color = {
92
- "dark": "#FFFFFF",
93
- "light": "#000000",
94
- } # FIXME: This should be a theme color but the toolbar doesn't respect the theme atm
95
- # once fixed, change it to
96
- # palette = QGuiApplication.palette()
97
- # palette.toolTipBase().color()
98
-
99
- icon = material_icon(self.icon_name, size=(20, 20), color=color, convert_to_pixmap=False)
99
+ icon = self.get_icon()
100
100
  self.action = QAction(icon, self.tooltip, target)
101
101
  self.action.setCheckable(self.checkable)
102
102
  toolbar.addAction(self.action)
103
103
 
104
+ def get_icon(self):
105
+
106
+ icon = material_icon(
107
+ self.icon_name, size=(20, 20), convert_to_pixmap=False, filled=self.filled
108
+ )
109
+ return icon
110
+
104
111
 
105
112
  class DeviceSelectionAction(ToolBarAction):
106
113
  """
@@ -165,10 +172,12 @@ class ExpandableMenuAction(ToolBarAction):
165
172
  menu = QMenu(button)
166
173
  for action_id, action in self.actions.items():
167
174
  sub_action = QAction(action.tooltip, target)
168
- if action.icon_path:
175
+ if hasattr(action, "icon_path"):
169
176
  icon = QIcon()
170
177
  icon.addFile(action.icon_path, size=QSize(20, 20))
171
178
  sub_action.setIcon(icon)
179
+ elif hasattr(action, "get_icon"):
180
+ sub_action.setIcon(action.get_icon())
172
181
  sub_action.setCheckable(action.checkable)
173
182
  menu.addAction(sub_action)
174
183
  self.widgets[action_id] = sub_action
@@ -182,20 +191,13 @@ class ModularToolBar(QToolBar):
182
191
  parent (QWidget, optional): The parent widget of the toolbar. Defaults to None.
183
192
  actions (list[ToolBarAction], optional): A list of action creators to populate the toolbar. Defaults to None.
184
193
  target_widget (QWidget, optional): The widget that the actions will target. Defaults to None.
185
- color (str, optional): The background color of the toolbar. Defaults to "black".
186
194
  """
187
195
 
188
- def __init__(
189
- self,
190
- parent=None,
191
- actions: dict | None = None,
192
- target_widget=None,
193
- color: str = "rgba(255, 255, 255, 0)",
194
- ):
196
+ def __init__(self, parent=None, actions: dict | None = None, target_widget=None):
195
197
  super().__init__(parent)
196
198
 
197
199
  self.widgets = defaultdict(dict)
198
- self.set_background_color(color)
200
+ self.set_background_color()
199
201
 
200
202
  if actions is not None and target_widget is not None:
201
203
  self.populate_toolbar(actions, target_widget)
@@ -212,8 +214,7 @@ class ModularToolBar(QToolBar):
212
214
  action.add_to_toolbar(self, target_widget)
213
215
  self.widgets[action_id] = action
214
216
 
215
- def set_background_color(self, color: str):
216
- self.setStyleSheet(f"QToolBar {{ background: {color}; }}")
217
+ def set_background_color(self):
217
218
  self.setIconSize(QSize(20, 20))
218
219
  self.setMovable(False)
219
220
  self.setFloatable(False)
@@ -5,21 +5,45 @@ from typing import Literal
5
5
  import bec_qthemes
6
6
  import numpy as np
7
7
  import pyqtgraph as pg
8
+ from bec_qthemes._os_appearance.listener import OSThemeSwitchListener
8
9
  from pydantic_core import PydanticCustomError
9
10
  from qtpy.QtGui import QColor
10
11
  from qtpy.QtWidgets import QApplication
11
12
 
12
- CURRENT_THEME = "dark"
13
-
14
13
 
15
14
  def get_theme_palette():
16
- return bec_qthemes.load_palette(CURRENT_THEME)
15
+ if QApplication.instance() is None or not hasattr(QApplication.instance(), "theme"):
16
+ theme = "dark"
17
+ else:
18
+ theme = QApplication.instance().theme["theme"]
19
+ return bec_qthemes.load_palette(theme)
17
20
 
18
21
 
19
- def apply_theme(theme: Literal["dark", "light"]):
20
- global CURRENT_THEME
21
- CURRENT_THEME = theme
22
+ def set_theme(theme: Literal["dark", "light", "auto"]):
23
+ """
24
+ Set the theme for the application.
25
+
26
+ Args:
27
+ theme (Literal["dark", "light", "auto"]): The theme to set. "auto" will automatically switch between dark and light themes based on the system theme.
28
+ """
29
+ app = QApplication.instance()
30
+ bec_qthemes.setup_theme(theme)
31
+ pg.setConfigOption("background", "w" if app.theme["theme"] == "light" else "k")
32
+
33
+ # pylint: disable=protected-access
34
+ if theme != "auto":
35
+ return
22
36
 
37
+ def callback():
38
+ app.theme["theme"] = listener._theme.lower()
39
+ apply_theme(listener._theme.lower())
40
+
41
+ listener = OSThemeSwitchListener(callback)
42
+
43
+ app.installEventFilter(listener)
44
+
45
+
46
+ def apply_theme(theme: Literal["dark", "light"]):
23
47
  app = QApplication.instance()
24
48
  # go through all pyqtgraph widgets and set background
25
49
  children = itertools.chain.from_iterable(
@@ -0,0 +1,71 @@
1
+ from bec_qthemes import material_icon
2
+ from qtpy.QtCore import Property, Qt, Slot
3
+ from qtpy.QtWidgets import QHBoxLayout, QPushButton, QWidget
4
+
5
+ from bec_widgets.utils.bec_widget import BECWidget
6
+ from bec_widgets.utils.colors import set_theme
7
+
8
+
9
+ class DarkModeButton(BECWidget, QWidget):
10
+ USER_ACCESS = ["toggle_dark_mode"]
11
+
12
+ def __init__(
13
+ self, parent: QWidget | None = None, client=None, gui_id: str | None = None
14
+ ) -> None:
15
+ super().__init__(client=client, gui_id=gui_id)
16
+ QWidget.__init__(self, parent)
17
+
18
+ self._dark_mode_enabled = False
19
+ self.layout = QHBoxLayout(self)
20
+ self.layout.setSpacing(0)
21
+ self.layout.setContentsMargins(0, 0, 0, 0)
22
+ self.layout.setAlignment(Qt.AlignmentFlag.AlignVCenter)
23
+
24
+ icon = material_icon("dark_mode", size=(20, 20), convert_to_pixmap=False)
25
+ self.mode_button = QPushButton(icon=icon)
26
+ self.update_mode_button()
27
+ self.mode_button.clicked.connect(self.toggle_dark_mode)
28
+ self.layout.addWidget(self.mode_button)
29
+ self.setLayout(self.layout)
30
+ self.setFixedSize(40, 40)
31
+
32
+ @Property(bool)
33
+ def dark_mode_enabled(self) -> bool:
34
+ """
35
+ The dark mode state. If True, dark mode is enabled. If False, light mode is enabled.
36
+ """
37
+ return self._dark_mode_enabled
38
+
39
+ @dark_mode_enabled.setter
40
+ def dark_mode_enabled(self, state: bool) -> None:
41
+ self._dark_mode_enabled = state
42
+
43
+ @Slot()
44
+ def toggle_dark_mode(self) -> None:
45
+ """
46
+ Toggle the dark mode state. This will change the theme of the entire
47
+ application to dark or light mode.
48
+ """
49
+ self.dark_mode_enabled = not self.dark_mode_enabled
50
+ self.update_mode_button()
51
+ set_theme("dark" if self.dark_mode_enabled else "light")
52
+
53
+ def update_mode_button(self):
54
+ icon = material_icon(
55
+ "light_mode" if self.dark_mode_enabled else "dark_mode",
56
+ size=(20, 20),
57
+ convert_to_pixmap=False,
58
+ )
59
+ self.mode_button.setIcon(icon)
60
+ self.mode_button.setToolTip("Set Light Mode" if self.dark_mode_enabled else "Set Dark Mode")
61
+
62
+
63
+ if __name__ == "__main__":
64
+ from qtpy.QtWidgets import QApplication
65
+
66
+ app = QApplication([])
67
+
68
+ w = DarkModeButton()
69
+ w.show()
70
+
71
+ app.exec_()
@@ -0,0 +1 @@
1
+ {'files': ['dark_mode_button.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.dark_mode_button.dark_mode_button import DarkModeButton
8
+
9
+ DOM_XML = """
10
+ <ui language='c++'>
11
+ <widget class='DarkModeButton' name='dark_mode_button'>
12
+ </widget>
13
+ </ui>
14
+ """
15
+
16
+
17
+ class DarkModeButtonPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
18
+ def __init__(self):
19
+ super().__init__()
20
+ self._form_editor = None
21
+
22
+ def createWidget(self, parent):
23
+ t = DarkModeButton(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("dark_mode")
34
+
35
+ def includeFile(self):
36
+ return "dark_mode_button"
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 "DarkModeButton"
49
+
50
+ def toolTip(self):
51
+ return "Button to toggle between dark and light mode."
52
+
53
+ def whatsThis(self):
54
+ return self.toolTip()
@@ -0,0 +1,15 @@
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.dark_mode_button.dark_mode_button_plugin import DarkModeButtonPlugin
10
+
11
+ QPyDesignerCustomWidgetCollection.addCustomWidget(DarkModeButtonPlugin())
12
+
13
+
14
+ if __name__ == "__main__": # pragma: no cover
15
+ main()
@@ -9,17 +9,16 @@ from qtpy.QtCore import Qt
9
9
  from qtpy.QtGui import QPainter, QPaintEvent
10
10
  from qtpy.QtWidgets import QVBoxLayout, QWidget
11
11
 
12
+ from bec_widgets.qt_utils.error_popups import SafeSlot
12
13
  from bec_widgets.qt_utils.toolbar import (
13
14
  ExpandableMenuAction,
14
- IconAction,
15
+ MaterialIconAction,
15
16
  ModularToolBar,
16
17
  SeparatorAction,
17
18
  )
18
19
  from bec_widgets.utils import ConnectionConfig, WidgetContainerUtils
19
20
  from bec_widgets.utils.bec_widget import BECWidget
20
-
21
- from ...qt_utils.error_popups import SafeSlot
22
- from .dock import BECDock, DockConfig
21
+ from bec_widgets.widgets.dock.dock import BECDock, DockConfig
23
22
 
24
23
 
25
24
  class DockAreaConfig(ConnectionConfig):
@@ -71,20 +70,26 @@ class BECDockArea(BECWidget, QWidget):
71
70
  "menu_plots": ExpandableMenuAction(
72
71
  label="Add Plot ",
73
72
  actions={
74
- "waveform": IconAction(icon_path="waveform.svg", tooltip="Add Waveform"),
75
- "image": IconAction(icon_path="image.svg", tooltip="Add Image"),
76
- "motor_map": IconAction(icon_path="motor_map.svg", tooltip="Add Motor Map"),
73
+ "waveform": MaterialIconAction(
74
+ icon_name="show_chart", tooltip="Add Waveform", filled=True
75
+ ),
76
+ "image": MaterialIconAction(
77
+ icon_name="image", tooltip="Add Image", filled=True
78
+ ),
79
+ "motor_map": MaterialIconAction(
80
+ icon_name="my_location", tooltip="Add Motor Map", filled=True
81
+ ),
77
82
  },
78
83
  ),
79
84
  "separator_0": SeparatorAction(),
80
85
  "menu_devices": ExpandableMenuAction(
81
86
  label="Add Device Control ",
82
87
  actions={
83
- "scan_control": IconAction(
84
- icon_path="scan_control.svg", tooltip="Add Scan Control"
88
+ "scan_control": MaterialIconAction(
89
+ icon_name="stacked_line_chart", tooltip="Add Scan Control", filled=True
85
90
  ),
86
- "positioner_box": IconAction(
87
- icon_path="positioner_box.svg", tooltip="Add Device Box"
91
+ "positioner_box": MaterialIconAction(
92
+ icon_name="switch_right", tooltip="Add Device Box", filled=True
88
93
  ),
89
94
  },
90
95
  ),
@@ -92,21 +97,29 @@ class BECDockArea(BECWidget, QWidget):
92
97
  "menu_utils": ExpandableMenuAction(
93
98
  label="Add Utils ",
94
99
  actions={
95
- "queue": IconAction(icon_path="queue.svg", tooltip="Add Scan Queue"),
96
- "vs_code": IconAction(icon_path="terminal.svg", tooltip="Add VS Code"),
97
- "status": IconAction(icon_path="status.svg", tooltip="Add BEC Status Box"),
98
- "progress_bar": IconAction(
99
- icon_path="ring_progress.svg", tooltip="Add Circular ProgressBar"
100
+ "queue": MaterialIconAction(
101
+ icon_name="edit_note", tooltip="Add Scan Queue", filled=True
102
+ ),
103
+ "vs_code": MaterialIconAction(
104
+ icon_name="show_chart", tooltip="Add VS Code", filled=True
105
+ ),
106
+ "status": MaterialIconAction(
107
+ icon_name="dns", tooltip="Add BEC Status Box", filled=True
108
+ ),
109
+ "progress_bar": MaterialIconAction(
110
+ icon_name="track_changes",
111
+ tooltip="Add Circular ProgressBar",
112
+ filled=True,
100
113
  ),
101
114
  },
102
115
  ),
103
116
  "separator_2": SeparatorAction(),
104
- "attach_all": IconAction(
105
- icon_path="attach_all.svg", tooltip="Attach all floating docks"
117
+ "attach_all": MaterialIconAction(
118
+ icon_name="zoom_in_map", tooltip="Attach all floating docks"
106
119
  ),
107
- "save_state": IconAction(icon_path="save_state.svg", tooltip="Save Dock State"),
108
- "restore_state": IconAction(
109
- icon_path="restore_state.svg", tooltip="Restore Dock State"
120
+ "save_state": MaterialIconAction(icon_name="bookmark", tooltip="Save Dock State"),
121
+ "restore_state": MaterialIconAction(
122
+ icon_name="frame_reload", tooltip="Restore Dock State"
110
123
  ),
111
124
  },
112
125
  target_widget=self,
@@ -368,3 +381,15 @@ class BECDockArea(BECWidget, QWidget):
368
381
  """
369
382
  self.cleanup()
370
383
  super().close()
384
+
385
+
386
+ if __name__ == "__main__":
387
+ from qtpy.QtWidgets import QApplication
388
+
389
+ from bec_widgets.utils.colors import set_theme
390
+
391
+ app = QApplication([])
392
+ set_theme("auto")
393
+ dock_area = BECDockArea()
394
+ dock_area.show()
395
+ app.exec_()
@@ -182,7 +182,6 @@ class BECFigure(BECWidget, pg.GraphicsLayoutWidget):
182
182
  print(f"Error in applying config: {e}")
183
183
  return
184
184
  self.config = config
185
- self.change_theme(self.config.theme)
186
185
 
187
186
  # widget_config has to be reset for not have each widget config twice when added to the figure
188
187
  widget_configs = list(self.config.widgets.values())
@@ -10,7 +10,7 @@ from bec_widgets.qt_utils.error_popups import SafeSlot, WarningPopupUtility
10
10
  from bec_widgets.qt_utils.settings_dialog import SettingsDialog
11
11
  from bec_widgets.qt_utils.toolbar import (
12
12
  DeviceSelectionAction,
13
- IconAction,
13
+ MaterialIconAction,
14
14
  ModularToolBar,
15
15
  SeparatorAction,
16
16
  )
@@ -66,45 +66,45 @@ class BECImageWidget(BECWidget, QWidget):
66
66
  "monitor": DeviceSelectionAction(
67
67
  "Monitor:", DeviceComboBox(device_filter="Device")
68
68
  ),
69
- "connect": IconAction(icon_path="connection.svg", tooltip="Connect Device"),
69
+ "connect": MaterialIconAction(icon_name="link", tooltip="Connect Device"),
70
70
  "separator_0": SeparatorAction(),
71
- "save": IconAction(icon_path="save.svg", tooltip="Open Export Dialog"),
71
+ "save": MaterialIconAction(icon_name="save", tooltip="Open Export Dialog"),
72
72
  "separator_1": SeparatorAction(),
73
- "drag_mode": IconAction(
74
- icon_path="drag_pan_mode.svg", tooltip="Drag Mouse Mode", checkable=True
73
+ "drag_mode": MaterialIconAction(
74
+ icon_name="open_with", tooltip="Drag Mouse Mode", checkable=True
75
75
  ),
76
- "rectangle_mode": IconAction(
77
- icon_path="rectangle_mode.svg", tooltip="Rectangle Zoom Mode", checkable=True
76
+ "rectangle_mode": MaterialIconAction(
77
+ icon_name="frame_inspect", tooltip="Rectangle Zoom Mode", checkable=True
78
78
  ),
79
- "auto_range": IconAction(icon_path="auto_range.svg", tooltip="Autorange Plot"),
80
- "auto_range_image": IconAction(
81
- icon_path="image_autorange.svg",
82
- tooltip="Autorange Image Intensity",
83
- checkable=True,
79
+ "auto_range": MaterialIconAction(
80
+ icon_name="open_in_full", tooltip="Autorange Plot"
84
81
  ),
85
- "aspect_ratio": IconAction(
86
- icon_path="lock_aspect_ratio.svg",
87
- tooltip="Lock image aspect ratio",
88
- checkable=True,
82
+ "auto_range_image": MaterialIconAction(
83
+ icon_name="hdr_auto", tooltip="Autorange Image Intensity", checkable=True
84
+ ),
85
+ "aspect_ratio": MaterialIconAction(
86
+ icon_name="aspect_ratio", tooltip="Lock image aspect ratio", checkable=True
89
87
  ),
90
88
  "separator_2": SeparatorAction(),
91
- "FFT": IconAction(icon_path="fft.svg", tooltip="Toggle FFT", checkable=True),
92
- "log": IconAction(
93
- icon_path="log_scale.png", tooltip="Toggle log scale", checkable=True
89
+ "FFT": MaterialIconAction(icon_name="fft", tooltip="Toggle FFT", checkable=True),
90
+ "log": MaterialIconAction(
91
+ icon_name="log_scale", tooltip="Toggle log scale", checkable=True
92
+ ),
93
+ "transpose": MaterialIconAction(
94
+ icon_name="transform", tooltip="Transpose Image", checkable=True
94
95
  ),
95
- "transpose": IconAction(
96
- icon_path="transform.svg", tooltip="Transpose Image", checkable=True
96
+ "rotate_right": MaterialIconAction(
97
+ icon_name="rotate_right", tooltip="Rotate image clockwise by 90 deg"
97
98
  ),
98
- "rotate_right": IconAction(
99
- icon_path="rotate_right.svg", tooltip="Rotate image clockwise by 90 deg"
99
+ "rotate_left": MaterialIconAction(
100
+ icon_name="rotate_left", tooltip="Rotate image counterclockwise by 90 deg"
100
101
  ),
101
- "rotate_left": IconAction(
102
- icon_path="rotate_left.svg", tooltip="Rotate image counterclockwise by 90 deg"
102
+ "reset": MaterialIconAction(
103
+ icon_name="reset_settings", tooltip="Reset Image Settings"
103
104
  ),
104
- "reset": IconAction(icon_path="reset_settings.svg", tooltip="Reset Image Settings"),
105
105
  "separator_3": SeparatorAction(),
106
- "axis_settings": IconAction(
107
- icon_path="settings.svg", tooltip="Open Configuration Dialog"
106
+ "axis_settings": MaterialIconAction(
107
+ icon_name="settings", tooltip="Open Configuration Dialog"
108
108
  ),
109
109
  },
110
110
  target_widget=self,
@@ -5,7 +5,7 @@ import sys
5
5
  from qtpy.QtWidgets import QVBoxLayout, QWidget
6
6
 
7
7
  from bec_widgets.qt_utils.settings_dialog import SettingsDialog
8
- from bec_widgets.qt_utils.toolbar import DeviceSelectionAction, IconAction, ModularToolBar
8
+ from bec_widgets.qt_utils.toolbar import DeviceSelectionAction, MaterialIconAction, ModularToolBar
9
9
  from bec_widgets.utils.bec_widget import BECWidget
10
10
  from bec_widgets.widgets.device_combobox.device_combobox import DeviceComboBox
11
11
  from bec_widgets.widgets.figure import BECFigure
@@ -54,9 +54,11 @@ class BECMotorMapWidget(BECWidget, QWidget):
54
54
  "motor_y": DeviceSelectionAction(
55
55
  "Motor Y:", DeviceComboBox(device_filter="Positioner")
56
56
  ),
57
- "connect": IconAction(icon_path="connection.svg", tooltip="Connect Motors"),
58
- "history": IconAction(icon_path="history.svg", tooltip="Reset Trace History"),
59
- "config": IconAction(icon_path="settings.svg", tooltip="Open Configuration Dialog"),
57
+ "connect": MaterialIconAction(icon_name="link", tooltip="Connect Motors"),
58
+ "history": MaterialIconAction(icon_name="history", tooltip="Reset Trace History"),
59
+ "config": MaterialIconAction(
60
+ icon_name="settings", tooltip="Open Configuration Dialog"
61
+ ),
60
62
  },
61
63
  target_widget=self,
62
64
  )