bec-widgets 0.98.0__tar.gz → 0.99.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/CHANGELOG.md +28 -26
  2. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/PKG-INFO +1 -1
  3. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/cli/client.py +10 -0
  4. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/crosshair.py +4 -0
  5. bec_widgets-0.99.1/bec_widgets/widgets/dark_mode_button/dark_mode_button.py +71 -0
  6. bec_widgets-0.99.1/bec_widgets/widgets/dark_mode_button/dark_mode_button.pyproject +1 -0
  7. bec_widgets-0.99.1/bec_widgets/widgets/dark_mode_button/dark_mode_button_plugin.py +54 -0
  8. bec_widgets-0.99.1/bec_widgets/widgets/dark_mode_button/register_dark_mode_button.py +15 -0
  9. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/figure/plots/plot_base.py +6 -0
  10. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/toggle/toggle.py +5 -4
  11. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/waveform/waveform_widget.py +36 -0
  12. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/buttons/buttons.md +13 -0
  13. bec_widgets-0.99.1/docs/user/widgets/buttons/dark_mode_disabled.png +0 -0
  14. bec_widgets-0.99.1/docs/user/widgets/buttons/dark_mode_enabled.png +0 -0
  15. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/pyproject.toml +1 -1
  16. bec_widgets-0.99.1/tests/unit_tests/test_dark_mode_button.py +70 -0
  17. bec_widgets-0.99.1/tests/unit_tests/test_msgs/__init__.py +0 -0
  18. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/.git_hooks/pre-commit +0 -0
  19. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/.gitignore +0 -0
  20. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/.gitlab/issue_templates/bug_report_template.md +0 -0
  21. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/.gitlab/issue_templates/documentation_update_template.md +0 -0
  22. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/.gitlab/issue_templates/feature_request_template.md +0 -0
  23. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/.gitlab/merge_request_templates/default.md +0 -0
  24. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/.gitlab-ci.yml +0 -0
  25. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/.pylintrc +0 -0
  26. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/.readthedocs.yaml +0 -0
  27. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/LICENSE +0 -0
  28. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/README.md +0 -0
  29. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/__init__.py +0 -0
  30. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/app_icons/BEC-Dark.png +0 -0
  31. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
  32. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/app_icons/terminal_icon.png +0 -0
  33. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/status_icons/error.svg +0 -0
  34. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/status_icons/not_connected.svg +0 -0
  35. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/status_icons/refresh.svg +0 -0
  36. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/status_icons/running.svg +0 -0
  37. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/status_icons/warning.svg +0 -0
  38. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/add.svg +0 -0
  39. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/attach_all.svg +0 -0
  40. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/auto_range.svg +0 -0
  41. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/compare.svg +0 -0
  42. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/connection.svg +0 -0
  43. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/device_line_edit.svg +0 -0
  44. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/drag_pan_mode.svg +0 -0
  45. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/export.svg +0 -0
  46. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/fft.svg +0 -0
  47. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/fitting_parameters.svg +0 -0
  48. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/history.svg +0 -0
  49. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/image.svg +0 -0
  50. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/image_autorange.svg +0 -0
  51. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/import.svg +0 -0
  52. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/line_axis.svg +0 -0
  53. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/line_curve.svg +0 -0
  54. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/lock_aspect_ratio.svg +0 -0
  55. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/log_scale.png +0 -0
  56. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/motor_map.svg +0 -0
  57. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/photo_library.svg +0 -0
  58. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/positioner_box.svg +0 -0
  59. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/progress.svg +0 -0
  60. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/queue.svg +0 -0
  61. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/rectangle_mode.svg +0 -0
  62. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/remove.svg +0 -0
  63. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/reset_settings.svg +0 -0
  64. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/restore_state.svg +0 -0
  65. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/ring_progress.svg +0 -0
  66. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/rotate_left.svg +0 -0
  67. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/rotate_right.svg +0 -0
  68. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/save.svg +0 -0
  69. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/save_state.svg +0 -0
  70. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/scan_control.svg +0 -0
  71. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/settings.svg +0 -0
  72. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/status.svg +0 -0
  73. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/terminal.svg +0 -0
  74. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/transform.svg +0 -0
  75. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/assets/toolbar_icons/waveform.svg +0 -0
  76. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/cli/__init__.py +0 -0
  77. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/cli/auto_updates.py +0 -0
  78. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/cli/client_utils.py +0 -0
  79. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/cli/generate_cli.py +0 -0
  80. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/cli/rpc_register.py +0 -0
  81. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/cli/rpc_wigdet_handler.py +0 -0
  82. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/cli/server.py +0 -0
  83. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/examples/__init__.py +0 -0
  84. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/examples/general_app/__init__.py +0 -0
  85. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/examples/general_app/general_app.py +0 -0
  86. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/examples/general_app/general_app.ui +0 -0
  87. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/examples/general_app/web_links.py +0 -0
  88. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  89. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
  90. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
  91. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
  92. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
  93. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
  94. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
  95. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
  96. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
  97. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/qt_utils/__init__.py +0 -0
  98. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/qt_utils/error_popups.py +0 -0
  99. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/qt_utils/redis_message_waiter.py +0 -0
  100. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/qt_utils/settings_dialog.py +0 -0
  101. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/qt_utils/toolbar.py +0 -0
  102. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/__init__.py +0 -0
  103. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/bec_connector.py +0 -0
  104. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/bec_designer.py +0 -0
  105. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/bec_dispatcher.py +0 -0
  106. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/bec_table.py +0 -0
  107. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/bec_widget.py +0 -0
  108. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/colors.py +0 -0
  109. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/container_utils.py +0 -0
  110. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/entry_validator.py +0 -0
  111. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/generate_designer_plugin.py +0 -0
  112. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/layout_manager.py +0 -0
  113. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
  114. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/plugin_templates/register.template +0 -0
  115. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/plugin_utils.py +0 -0
  116. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/reference_utils.py +0 -0
  117. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/rpc_decorator.py +0 -0
  118. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/thread_checker.py +0 -0
  119. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/ui_loader.py +0 -0
  120. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/validator_delegate.py +0 -0
  121. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/widget_io.py +0 -0
  122. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/utils/yaml_dialog.py +0 -0
  123. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/__init__.py +0 -0
  124. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/base_classes/__init__.py +0 -0
  125. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/base_classes/device_input_base.py +0 -0
  126. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/bec_queue/__init__.py +0 -0
  127. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/bec_queue/bec_queue.py +0 -0
  128. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/bec_queue/bec_queue.pyproject +0 -0
  129. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/bec_queue/bec_queue_plugin.py +0 -0
  130. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/bec_queue/register_bec_queue.py +0 -0
  131. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/bec_status_box/__init__.py +0 -0
  132. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/bec_status_box/bec_status_box.py +0 -0
  133. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/bec_status_box/bec_status_box.pyproject +0 -0
  134. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py +0 -0
  135. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/bec_status_box/register_bec_status_box.py +0 -0
  136. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/bec_status_box/status_item.py +0 -0
  137. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/color_button/__init__.py +0 -0
  138. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/color_button/color_button.py +0 -0
  139. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/color_button/color_button.pyproject +0 -0
  140. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/color_button/color_button_plugin.py +0 -0
  141. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/color_button/register_color_button.py +0 -0
  142. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/colormap_selector/__init__.py +0 -0
  143. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/colormap_selector/colormap_selector.py +0 -0
  144. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/colormap_selector/colormap_selector.pyproject +0 -0
  145. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py +0 -0
  146. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/colormap_selector/register_colormap_selector.py +0 -0
  147. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/console/console.py +0 -0
  148. {bec_widgets-0.98.0/bec_widgets/widgets/device_browser → bec_widgets-0.99.1/bec_widgets/widgets/dark_mode_button}/__init__.py +0 -0
  149. {bec_widgets-0.98.0/bec_widgets/widgets/device_combobox → bec_widgets-0.99.1/bec_widgets/widgets/device_browser}/__init__.py +0 -0
  150. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/device_browser/device_browser.py +0 -0
  151. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/device_browser/device_browser.pyproject +0 -0
  152. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/device_browser/device_browser.ui +0 -0
  153. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/device_browser/device_browser_plugin.py +0 -0
  154. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/device_browser/device_item/__init__.py +0 -0
  155. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/device_browser/device_item/device_item.py +0 -0
  156. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/device_browser/register_device_browser.py +0 -0
  157. {bec_widgets-0.98.0/bec_widgets/widgets/device_line_edit → bec_widgets-0.99.1/bec_widgets/widgets/device_combobox}/__init__.py +0 -0
  158. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/device_combobox/device_combo_box.pyproject +0 -0
  159. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/device_combobox/device_combo_box_plugin.py +0 -0
  160. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/device_combobox/device_combobox.py +0 -0
  161. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/device_combobox/register_device_combo_box.py +0 -0
  162. {bec_widgets-0.98.0/bec_widgets/widgets/figure/plots → bec_widgets-0.99.1/bec_widgets/widgets/device_line_edit}/__init__.py +0 -0
  163. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/device_line_edit/device_line_edit.py +0 -0
  164. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/device_line_edit/device_line_edit.pyproject +0 -0
  165. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py +0 -0
  166. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/device_line_edit/register_device_line_edit.py +0 -0
  167. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/dock/__init__.py +0 -0
  168. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/dock/dock.py +0 -0
  169. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/dock/dock_area.py +0 -0
  170. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/dock/dock_area.pyproject +0 -0
  171. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/dock/dock_area_plugin.py +0 -0
  172. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/dock/register_dock_area.py +0 -0
  173. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/figure/__init__.py +0 -0
  174. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/figure/figure.py +0 -0
  175. {bec_widgets-0.98.0/bec_widgets/widgets/figure/plots/image → bec_widgets-0.99.1/bec_widgets/widgets/figure/plots}/__init__.py +0 -0
  176. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/figure/plots/axis_settings.py +0 -0
  177. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/figure/plots/axis_settings.ui +0 -0
  178. {bec_widgets-0.98.0/bec_widgets/widgets/figure/plots/motor_map → bec_widgets-0.99.1/bec_widgets/widgets/figure/plots/image}/__init__.py +0 -0
  179. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/figure/plots/image/image.py +0 -0
  180. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/figure/plots/image/image_item.py +0 -0
  181. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/figure/plots/image/image_processor.py +0 -0
  182. {bec_widgets-0.98.0/bec_widgets/widgets/figure/plots/waveform → bec_widgets-0.99.1/bec_widgets/widgets/figure/plots/motor_map}/__init__.py +0 -0
  183. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/figure/plots/motor_map/motor_map.py +0 -0
  184. {bec_widgets-0.98.0/bec_widgets/widgets/image → bec_widgets-0.99.1/bec_widgets/widgets/figure/plots/waveform}/__init__.py +0 -0
  185. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/figure/plots/waveform/waveform.py +0 -0
  186. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +0 -0
  187. {bec_widgets-0.98.0/bec_widgets/widgets/jupyter_console → bec_widgets-0.99.1/bec_widgets/widgets/image}/__init__.py +0 -0
  188. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/image/bec_image_widget.pyproject +0 -0
  189. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/image/bec_image_widget_plugin.py +0 -0
  190. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/image/image_widget.py +0 -0
  191. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/image/register_bec_image_widget.py +0 -0
  192. {bec_widgets-0.98.0/bec_widgets/widgets/motor_map → bec_widgets-0.99.1/bec_widgets/widgets/jupyter_console}/__init__.py +0 -0
  193. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/jupyter_console/jupyter_console.py +0 -0
  194. {bec_widgets-0.98.0/bec_widgets/widgets/motor_map/motor_map_dialog → bec_widgets-0.99.1/bec_widgets/widgets/motor_map}/__init__.py +0 -0
  195. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/motor_map/bec_motor_map_widget.pyproject +0 -0
  196. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py +0 -0
  197. {bec_widgets-0.98.0/bec_widgets/widgets/position_indicator → bec_widgets-0.99.1/bec_widgets/widgets/motor_map/motor_map_dialog}/__init__.py +0 -0
  198. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py +0 -0
  199. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui +0 -0
  200. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/motor_map/motor_map_widget.py +0 -0
  201. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py +0 -0
  202. {bec_widgets-0.98.0/bec_widgets/widgets/positioner_box → bec_widgets-0.99.1/bec_widgets/widgets/position_indicator}/__init__.py +0 -0
  203. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/position_indicator/position_indicator.py +0 -0
  204. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/position_indicator/position_indicator.pyproject +0 -0
  205. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/position_indicator/position_indicator_plugin.py +0 -0
  206. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/position_indicator/register_position_indicator.py +0 -0
  207. {bec_widgets-0.98.0/bec_widgets/widgets/spinner → bec_widgets-0.99.1/bec_widgets/widgets/positioner_box}/__init__.py +0 -0
  208. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/positioner_box/positioner_box.py +0 -0
  209. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/positioner_box/positioner_box.pyproject +0 -0
  210. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/positioner_box/positioner_box.ui +0 -0
  211. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/positioner_box/positioner_box_plugin.py +0 -0
  212. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/positioner_box/positioner_control_line.py +0 -0
  213. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/positioner_box/positioner_control_line.pyproject +0 -0
  214. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/positioner_box/positioner_control_line.ui +0 -0
  215. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py +0 -0
  216. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/positioner_box/register_positioner_box.py +0 -0
  217. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/positioner_box/register_positioner_control_line.py +0 -0
  218. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/ring_progress_bar/__init__.py +0 -0
  219. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/ring_progress_bar/register_ring_progress_bar.py +0 -0
  220. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/ring_progress_bar/ring.py +0 -0
  221. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.py +0 -0
  222. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject +0 -0
  223. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
  224. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/scan_control/__init__.py +0 -0
  225. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/scan_control/register_scan_control.py +0 -0
  226. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/scan_control/scan_control.py +0 -0
  227. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/scan_control/scan_control.pyproject +0 -0
  228. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/scan_control/scan_control_plugin.py +0 -0
  229. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/scan_control/scan_group_box.py +0 -0
  230. {bec_widgets-0.98.0/bec_widgets/widgets/stop_button → bec_widgets-0.99.1/bec_widgets/widgets/spinner}/__init__.py +0 -0
  231. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/spinner/register_spinner_widget.py +0 -0
  232. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/spinner/spinner.py +0 -0
  233. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/spinner/spinner_widget.pyproject +0 -0
  234. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/spinner/spinner_widget_plugin.py +0 -0
  235. {bec_widgets-0.98.0/bec_widgets/widgets/text_box → bec_widgets-0.99.1/bec_widgets/widgets/stop_button}/__init__.py +0 -0
  236. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/stop_button/register_stop_button.py +0 -0
  237. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/stop_button/stop_button.py +0 -0
  238. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/stop_button/stop_button.pyproject +0 -0
  239. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/stop_button/stop_button_plugin.py +0 -0
  240. {bec_widgets-0.98.0/bec_widgets/widgets/toggle → bec_widgets-0.99.1/bec_widgets/widgets/text_box}/__init__.py +0 -0
  241. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/text_box/register_text_box.py +0 -0
  242. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/text_box/text_box.py +0 -0
  243. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/text_box/text_box.pyproject +0 -0
  244. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/text_box/text_box_plugin.py +0 -0
  245. {bec_widgets-0.98.0/bec_widgets/widgets/vscode → bec_widgets-0.99.1/bec_widgets/widgets/toggle}/__init__.py +0 -0
  246. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/toggle/register_toggle_switch.py +0 -0
  247. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/toggle/toggle_switch.pyproject +0 -0
  248. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/toggle/toggle_switch_plugin.py +0 -0
  249. {bec_widgets-0.98.0/bec_widgets/widgets/waveform → bec_widgets-0.99.1/bec_widgets/widgets/vscode}/__init__.py +0 -0
  250. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/vscode/register_vs_code_editor.py +0 -0
  251. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/vscode/vs_code_editor.pyproject +0 -0
  252. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/vscode/vs_code_editor_plugin.py +0 -0
  253. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/vscode/vscode.py +0 -0
  254. {bec_widgets-0.98.0/bec_widgets/widgets/waveform/waveform_popups → bec_widgets-0.99.1/bec_widgets/widgets/waveform}/__init__.py +0 -0
  255. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/waveform/bec_waveform_widget.pyproject +0 -0
  256. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py +0 -0
  257. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/waveform/register_bec_waveform_widget.py +0 -0
  258. {bec_widgets-0.98.0/bec_widgets/widgets/waveform/waveform_popups/curve_dialog → bec_widgets-0.99.1/bec_widgets/widgets/waveform/waveform_popups}/__init__.py +0 -0
  259. {bec_widgets-0.98.0/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog → bec_widgets-0.99.1/bec_widgets/widgets/waveform/waveform_popups/curve_dialog}/__init__.py +0 -0
  260. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.py +0 -0
  261. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.ui +0 -0
  262. {bec_widgets-0.98.0/bec_widgets/widgets/website → bec_widgets-0.99.1/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog}/__init__.py +0 -0
  263. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary.ui +0 -0
  264. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py +0 -0
  265. {bec_widgets-0.98.0/tests → bec_widgets-0.99.1/bec_widgets/widgets/website}/__init__.py +0 -0
  266. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/website/register_website_widget.py +0 -0
  267. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/website/website.py +0 -0
  268. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/website/website_widget.pyproject +0 -0
  269. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/bec_widgets/widgets/website/website_widget_plugin.py +0 -0
  270. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/Makefile +0 -0
  271. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/_static/custom.css +0 -0
  272. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/_templates/custom-class-template.rst +0 -0
  273. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/_templates/custom-module-template.rst +0 -0
  274. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/api_reference/api_reference.md +0 -0
  275. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/apps_48dp.svg +0 -0
  276. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/display_settings_48dp.svg +0 -0
  277. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/index_api.svg +0 -0
  278. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/index_contribute.svg +0 -0
  279. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/index_getting_started.svg +0 -0
  280. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/index_user_guide.svg +0 -0
  281. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/rocket_launch_48dp.svg +0 -0
  282. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/buttons.png +0 -0
  283. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/device_box.png +0 -0
  284. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/device_browser.png +0 -0
  285. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/device_inputs.png +0 -0
  286. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/dock_area.png +0 -0
  287. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/figure.png +0 -0
  288. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/image_widget.png +0 -0
  289. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/motor_map_widget.png +0 -0
  290. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/position_indicator.png +0 -0
  291. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/queue.png +0 -0
  292. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/ring_progress_bar.png +0 -0
  293. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/scan_controller.png +0 -0
  294. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/spinner.gif +0 -0
  295. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/status_box.png +0 -0
  296. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/text_box.png +0 -0
  297. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/toggle.png +0 -0
  298. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/waveform_widget.png +0 -0
  299. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/assets/widget_screenshots/website.png +0 -0
  300. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/conf.py +0 -0
  301. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/developer/developer.md +0 -0
  302. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/developer/introduction/concepts.md +0 -0
  303. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/developer/introduction/contributing.md +0 -0
  304. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/developer/introduction/introduction.md +0 -0
  305. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/developer/introduction/useful_links.md +0 -0
  306. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/developer/widget_development/bec_dispatcher.md +0 -0
  307. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/developer/widget_development/widget_development.md +0 -0
  308. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/index.md +0 -0
  309. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/introduction/introduction.md +0 -0
  310. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/make.bat +0 -0
  311. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/requirements.txt +0 -0
  312. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/api_reference/api_reference.md +0 -0
  313. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/applications/applications.md +0 -0
  314. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/customisation.md +0 -0
  315. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/getting_started/BECDockArea.png +0 -0
  316. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/getting_started/auto_updates.md +0 -0
  317. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/getting_started/getting_started.md +0 -0
  318. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/getting_started/gui_complex_gui.gif +0 -0
  319. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/getting_started/installation.md +0 -0
  320. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/getting_started/quick_start.md +0 -0
  321. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/getting_started/video_tutorials.md +0 -0
  322. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/user.md +0 -0
  323. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/bec_figure/BECFigure.png +0 -0
  324. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/bec_figure/bec_figure.md +0 -0
  325. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/bec_status_box/bec_status_box.gif +0 -0
  326. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/bec_status_box/bec_status_box.md +0 -0
  327. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/device_browser/device_browser.md +0 -0
  328. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/device_browser/device_browser.png +0 -0
  329. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/device_input/device_input.md +0 -0
  330. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/dock_area/BECDockArea.png +0 -0
  331. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/dock_area/bec_dock_area.md +0 -0
  332. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/image/image_plot.gif +0 -0
  333. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/image/image_widget.md +0 -0
  334. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/motor_map/motor.gif +0 -0
  335. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/motor_map/motor_map.md +0 -0
  336. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/position_indicator/position_indicator.md +0 -0
  337. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/positioner_box/positioner_box.md +0 -0
  338. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/progress_bar/progress_bar.gif +0 -0
  339. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/progress_bar/ring_progress_bar.md +0 -0
  340. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/queue/queue.md +0 -0
  341. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/scan_control/hide_scan_control.png +0 -0
  342. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/scan_control/scan_control.gif +0 -0
  343. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/scan_control/scan_control.md +0 -0
  344. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/spinner/spinner.md +0 -0
  345. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/text_box/text_box.md +0 -0
  346. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/toggle/toggle.md +0 -0
  347. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/waveform/bec_figure_dap.gif +0 -0
  348. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/waveform/scatter_2D.gif +0 -0
  349. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/waveform/w1D.gif +0 -0
  350. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/waveform/waveform_widget.md +0 -0
  351. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/website/website.md +0 -0
  352. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/docs/user/widgets/widgets.md +0 -0
  353. {bec_widgets-0.98.0/tests/end-2-end → bec_widgets-0.99.1/tests}/__init__.py +0 -0
  354. {bec_widgets-0.98.0/tests/unit_tests → bec_widgets-0.99.1/tests/end-2-end}/__init__.py +0 -0
  355. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/end-2-end/conftest.py +0 -0
  356. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/end-2-end/test_bec_dock_rpc_e2e.py +0 -0
  357. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/end-2-end/test_bec_figure_rpc_e2e.py +0 -0
  358. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/end-2-end/test_rpc_register_e2e.py +0 -0
  359. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/end-2-end/test_scan_control_e2e.py +0 -0
  360. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/references/SpinnerWidget/SpinnerWidget_darwin.png +0 -0
  361. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/references/SpinnerWidget/SpinnerWidget_linux.png +0 -0
  362. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/references/SpinnerWidget/SpinnerWidget_started_darwin.png +0 -0
  363. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/references/SpinnerWidget/SpinnerWidget_started_linux.png +0 -0
  364. {bec_widgets-0.98.0/tests/unit_tests/test_msgs → bec_widgets-0.99.1/tests/unit_tests}/__init__.py +0 -0
  365. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/client_mocks.py +0 -0
  366. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/conftest.py +0 -0
  367. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_bec_connector.py +0 -0
  368. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_bec_dispatcher.py +0 -0
  369. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_bec_dock.py +0 -0
  370. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_bec_figure.py +0 -0
  371. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_bec_image.py +0 -0
  372. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_bec_image_widget.py +0 -0
  373. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_bec_motor_map.py +0 -0
  374. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_bec_queue.py +0 -0
  375. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_bec_status_box.py +0 -0
  376. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_client_utils.py +0 -0
  377. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_color_map_selector.py +0 -0
  378. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_color_validation.py +0 -0
  379. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_configs/config_device.yaml +0 -0
  380. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_configs/config_device_no_entry.yaml +0 -0
  381. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_configs/config_scan.yaml +0 -0
  382. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_crosshair.py +0 -0
  383. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_device_browser.py +0 -0
  384. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_device_input_base.py +0 -0
  385. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_device_input_widgets.py +0 -0
  386. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_error_utils.py +0 -0
  387. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_generate_cli_client.py +0 -0
  388. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_generate_plugin.py +0 -0
  389. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_motor_map_widget.py +0 -0
  390. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_msgs/available_scans_message.py +0 -0
  391. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_plot_base.py +0 -0
  392. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_plugin_utils.py +0 -0
  393. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_positioner_box.py +0 -0
  394. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_ring_progress_bar.py +0 -0
  395. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_rpc_register.py +0 -0
  396. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_rpc_server.py +0 -0
  397. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_rpc_widget_handler.py +0 -0
  398. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_scan_control.py +0 -0
  399. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_scan_control_group_box.py +0 -0
  400. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_setting_dialog.py +0 -0
  401. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_spinner.py +0 -0
  402. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_stop_button.py +0 -0
  403. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_text_box_widget.py +0 -0
  404. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_toggle.py +0 -0
  405. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_vscode_widget.py +0 -0
  406. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_waveform1d.py +0 -0
  407. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_waveform_widget.py +0 -0
  408. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_website_widget.py +0 -0
  409. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_widget_io.py +0 -0
  410. {bec_widgets-0.98.0 → bec_widgets-0.99.1}/tests/unit_tests/test_yaml_dialog.py +0 -0
@@ -1,5 +1,33 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.99.1 (2024-08-27)
4
+
5
+ ### Fix
6
+
7
+ * fix(crosshair): emit all crosshair events, not just line coordinates ([`2265458`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/2265458dcc57970db18c62619f5877d542d72e81))
8
+
9
+ ## v0.99.0 (2024-08-25)
10
+
11
+ ### Documentation
12
+
13
+ * docs(darkmodebutton): added dark mode button docs ([`406c263`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/406c263746f0e809c1a4d98356c48f40428c23d7))
14
+
15
+ ### Feature
16
+
17
+ * feat(darkmodebutton): added button to toggle between dark and light mode ([`cc8c166`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/cc8c166b5c1d37e0f64c83801b2347a54a6550b6))
18
+
19
+ ### Fix
20
+
21
+ * fix(toggle): emit state change ([`c4f3308`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/c4f3308dc0c3e4b2064760ccd7372d71b3e49f96))
22
+
23
+ ### Refactor
24
+
25
+ * refactor(darkmodebutton): renamed set_dark_mode_enabled to toggle_dark_mode ([`c70724a`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/c70724a456900bcb06b040407a2c5d497e49ce77))
26
+
27
+ ### Test
28
+
29
+ * test(dark_mode_button): added tests for dark mode button ([`df35aab`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/df35aabff30c5d00b1c441132bd370446653741e))
30
+
3
31
  ## v0.98.0 (2024-08-25)
4
32
 
5
33
  ### Feature
@@ -125,29 +153,3 @@
125
153
  ### Test
126
154
 
127
155
  * test: added test for device browser ([`e870e5b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/e870e5ba083c61df581c9c0305adabe72967f997))
128
-
129
- ## v0.94.7 (2024-08-20)
130
-
131
- ### Fix
132
-
133
- * fix: formatting of stdout, stderr captured text for logger ([`939f834`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/939f834a26ddbac0bdead0b60b1cdf52014f182f))
134
-
135
- ## v0.94.6 (2024-08-14)
136
-
137
- ### Fix
138
-
139
- * fix(server): emit heartbeat with state ([`bc2abe9`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/bc2abe945fb5adeec89ed5ac45e966db86ce6ffc))
140
-
141
- ## v0.94.5 (2024-08-14)
142
-
143
- ### Build
144
-
145
- * build: increased min version of bec to 2.21.4
146
-
147
- Since we now rely on reusing the BECClient singleton, we need the fix introduced with 2.21.4 in BEC. ([`4f96d0e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4f96d0e4a14edc4b2839c1dddeda384737dc7a8a))
148
-
149
- ### Fix
150
-
151
- * fix(rpc): use client singleton instead of dispatcher ([`ea9240d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ea9240d2f71931082f33fb6b68231469875c3d63))
152
-
153
- * fix: removed qcoreapplication for polling events ([`4d02b42`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4d02b42f11e9882b843317255a4975565c8a536f))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.98.0
3
+ Version: 0.99.1
4
4
  Summary: BEC Widgets
5
5
  Project-URL: Bug Tracker, https://gitlab.psi.ch/bec/bec_widgets/issues
6
6
  Project-URL: Homepage, https://gitlab.psi.ch/bec/bec_widgets
@@ -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
@@ -9,6 +9,8 @@ from qtpy.QtCore import Signal as pyqtSignal
9
9
 
10
10
 
11
11
  class Crosshair(QObject):
12
+ positionChanged = pyqtSignal(tuple)
13
+ positionClicked = pyqtSignal(tuple)
12
14
  # Signal for 1D plot
13
15
  coordinatesChanged1D = pyqtSignal(tuple)
14
16
  coordinatesClicked1D = pyqtSignal(tuple)
@@ -164,6 +166,7 @@ class Crosshair(QObject):
164
166
  """
165
167
  pos = event[0]
166
168
  self.update_markers()
169
+ self.positionChanged.emit((pos.x(), pos.y()))
167
170
  if self.plot_item.vb.sceneBoundingRect().contains(pos):
168
171
  mouse_point = self.plot_item.vb.mapSceneToView(pos)
169
172
  self.v_line.setPos(mouse_point.x())
@@ -217,6 +220,7 @@ class Crosshair(QObject):
217
220
  if self.plot_item.vb.sceneBoundingRect().contains(event._scenePos):
218
221
  mouse_point = self.plot_item.vb.mapSceneToView(event._scenePos)
219
222
  x, y = mouse_point.x(), mouse_point.y()
223
+ self.positionClicked.emit((x, y))
220
224
 
221
225
  if self.is_log_x:
222
226
  x = 10**x
@@ -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()
@@ -56,6 +56,8 @@ class BECViewBox(pg.ViewBox):
56
56
 
57
57
 
58
58
  class BECPlotBase(BECConnector, pg.GraphicsLayout):
59
+ crosshair_position_changed = Signal(tuple)
60
+ crosshair_position_clicked = Signal(tuple)
59
61
  crosshair_coordinates_changed = Signal(tuple)
60
62
  crosshair_coordinates_clicked = Signal(tuple)
61
63
  USER_ACCESS = [
@@ -328,6 +330,8 @@ class BECPlotBase(BECConnector, pg.GraphicsLayout):
328
330
  """Hook the crosshair to all plots."""
329
331
  if self.crosshair is None:
330
332
  self.crosshair = Crosshair(self.plot_item, precision=3)
333
+ self.crosshair.positionChanged.connect(self.crosshair_position_changed)
334
+ self.crosshair.positionClicked.connect(self.crosshair_position_clicked)
331
335
  self.crosshair.coordinatesChanged1D.connect(self.crosshair_coordinates_changed)
332
336
  self.crosshair.coordinatesClicked1D.connect(self.crosshair_coordinates_clicked)
333
337
  self.crosshair.coordinatesChanged2D.connect(self.crosshair_coordinates_changed)
@@ -336,6 +340,8 @@ class BECPlotBase(BECConnector, pg.GraphicsLayout):
336
340
  def unhook_crosshair(self) -> None:
337
341
  """Unhook the crosshair from all plots."""
338
342
  if self.crosshair is not None:
343
+ self.crosshair.positionChanged.disconnect(self.crosshair_position_changed)
344
+ self.crosshair.positionClicked.disconnect(self.crosshair_position_clicked)
339
345
  self.crosshair.coordinatesChanged1D.disconnect(self.crosshair_coordinates_changed)
340
346
  self.crosshair.coordinatesClicked1D.disconnect(self.crosshair_coordinates_clicked)
341
347
  self.crosshair.coordinatesChanged2D.disconnect(self.crosshair_coordinates_changed)
@@ -1,6 +1,6 @@
1
1
  import sys
2
2
 
3
- from qtpy.QtCore import Property, QEasingCurve, QPointF, QPropertyAnimation, Qt
3
+ from qtpy.QtCore import Property, QEasingCurve, QPointF, QPropertyAnimation, Qt, Signal
4
4
  from qtpy.QtGui import QColor, QPainter
5
5
  from qtpy.QtWidgets import QApplication, QWidget
6
6
 
@@ -10,6 +10,8 @@ class ToggleSwitch(QWidget):
10
10
  A simple toggle.
11
11
  """
12
12
 
13
+ enabled = Signal(bool)
14
+
13
15
  def __init__(self, parent=None):
14
16
  super().__init__(parent)
15
17
  self.setFixedSize(40, 21)
@@ -41,6 +43,7 @@ class ToggleSwitch(QWidget):
41
43
  self._checked = state
42
44
  self.update_colors()
43
45
  self.set_thumb_pos_to_state()
46
+ self.enabled.emit(self._checked)
44
47
 
45
48
  @Property(QPointF)
46
49
  def thumb_pos(self):
@@ -109,9 +112,7 @@ class ToggleSwitch(QWidget):
109
112
 
110
113
  def mousePressEvent(self, event):
111
114
  if event.button() == Qt.LeftButton:
112
- self._checked = not self._checked
113
- self.update_colors()
114
- self.animate_thumb()
115
+ self.checked = not self.checked
115
116
 
116
117
  def update_colors(self):
117
118
 
@@ -58,8 +58,14 @@ class BECWaveformWidget(BECWidget, QWidget):
58
58
  dap_summary_update = Signal(dict)
59
59
  autorange_signal = Signal()
60
60
  new_scan = Signal()
61
+ crosshair_position_changed = Signal(tuple)
62
+ crosshair_position_changed_string = Signal(str)
63
+ crosshair_position_clicked = Signal(tuple)
64
+ crosshair_position_clicked_string = Signal(str)
61
65
  crosshair_coordinates_changed = Signal(tuple)
66
+ crosshair_coordinates_changed_string = Signal(str)
62
67
  crosshair_coordinates_clicked = Signal(tuple)
68
+ crosshair_coordinates_clicked_string = Signal(str)
63
69
 
64
70
  def __init__(
65
71
  self,
@@ -136,6 +142,20 @@ class BECWaveformWidget(BECWidget, QWidget):
136
142
  self.waveform.new_scan.connect(self.new_scan)
137
143
  self.waveform.crosshair_coordinates_changed.connect(self.crosshair_coordinates_changed)
138
144
  self.waveform.crosshair_coordinates_clicked.connect(self.crosshair_coordinates_clicked)
145
+ self.waveform.crosshair_coordinates_changed.connect(
146
+ self._emit_crosshair_coordinates_changed_string
147
+ )
148
+ self.waveform.crosshair_coordinates_clicked.connect(
149
+ self._emit_crosshair_coordinates_clicked_string
150
+ )
151
+ self.waveform.crosshair_position_changed.connect(self.crosshair_position_changed)
152
+ self.waveform.crosshair_position_clicked.connect(self.crosshair_position_clicked)
153
+ self.waveform.crosshair_position_changed.connect(
154
+ self._emit_crosshair_position_changed_string
155
+ )
156
+ self.waveform.crosshair_position_clicked.connect(
157
+ self._emit_crosshair_position_clicked_string
158
+ )
139
159
 
140
160
  def _hook_actions(self):
141
161
  self.toolbar.widgets["save"].action.triggered.connect(self.export)
@@ -156,6 +176,22 @@ class BECWaveformWidget(BECWidget, QWidget):
156
176
  # lambda: self.save_config(path=None, gui=True)
157
177
  # )
158
178
 
179
+ @SafeSlot(tuple)
180
+ def _emit_crosshair_coordinates_changed_string(self, coordinates):
181
+ self.crosshair_coordinates_changed_string.emit(str(coordinates))
182
+
183
+ @SafeSlot(tuple)
184
+ def _emit_crosshair_coordinates_clicked_string(self, coordinates):
185
+ self.crosshair_coordinates_clicked_string.emit(str(coordinates))
186
+
187
+ @SafeSlot(tuple)
188
+ def _emit_crosshair_position_changed_string(self, position):
189
+ self.crosshair_position_changed_string.emit(str(position))
190
+
191
+ @SafeSlot(tuple)
192
+ def _emit_crosshair_position_clicked_string(self, position):
193
+ self.crosshair_position_clicked_string.emit(str(position))
194
+
159
195
  ###################################
160
196
  # Dialog Windows
161
197
  ###################################
@@ -14,6 +14,18 @@ The `Stop Button` is a specialized control that provides an immediate interface
14
14
  - **Immediate Termination**: Instantly halts the execution of the current script or process.
15
15
  - **Queue Management**: Clears any pending operations in the scan queue, ensuring the system is reset and ready for new tasks.
16
16
 
17
+ ## Dark Mode Button
18
+
19
+ The `Dark Mode Button` is a toggle control that allows users to switch between light and dark themes in the BEC GUI. It provides a convenient way to adjust the interface's appearance based on user preferences or environmental conditions.
20
+
21
+ ```{figure} ./dark_mode_enabled.png
22
+ ```
23
+ ```{figure} ./dark_mode_disabled.png
24
+ ```
25
+
26
+ **Key Features:**
27
+ - **Theme Switching**: Enables users to switch between light and dark themes with a single click.
28
+ - **Configurable from BECDesigner**: The defaults for the dark mode can be set in the BECDesigner, allowing users to customize the startup appearance of the GUI.
17
29
  ````
18
30
 
19
31
  ````{tab} Examples
@@ -46,5 +58,6 @@ my_gui.show()
46
58
  ````{tab} API
47
59
  ```{eval-rst}
48
60
  .. include:: /api_reference/_autosummary/bec_widgets.cli.client.StopButton.rst
61
+ .. include:: /api_reference/_autosummary/bec_widgets.cli.client.DarkModeButton.rst
49
62
  ```
50
63
  ````
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "0.98.0"
7
+ version = "0.99.1"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [
@@ -0,0 +1,70 @@
1
+ from unittest import mock
2
+
3
+ import pytest
4
+ from qtpy.QtCore import Qt
5
+
6
+ from bec_widgets.widgets.dark_mode_button.dark_mode_button import DarkModeButton
7
+
8
+ # pylint: disable=unused-import
9
+ from .client_mocks import mocked_client
10
+
11
+ # pylint: disable=redefined-outer-name
12
+
13
+
14
+ @pytest.fixture
15
+ def dark_mode_button(qtbot, mocked_client):
16
+ """
17
+ Fixture for the dark mode button.
18
+ """
19
+ button = DarkModeButton(client=mocked_client)
20
+ qtbot.addWidget(button)
21
+ qtbot.waitExposed(button)
22
+ yield button
23
+
24
+
25
+ def test_dark_mode_button_init(dark_mode_button):
26
+ """
27
+ Test that the dark mode button is initialized correctly.
28
+ """
29
+ assert dark_mode_button.dark_mode_enabled is False
30
+ assert dark_mode_button.mode_button.toolTip() == "Set Dark Mode"
31
+
32
+
33
+ def test_dark_mode_button_toggle(dark_mode_button):
34
+ """
35
+ Test that the dark mode button toggles correctly.
36
+ """
37
+ dark_mode_button.toggle_dark_mode()
38
+ assert dark_mode_button.dark_mode_enabled is True
39
+ assert dark_mode_button.mode_button.toolTip() == "Set Light Mode"
40
+
41
+ dark_mode_button.toggle_dark_mode()
42
+ assert dark_mode_button.dark_mode_enabled == False
43
+ assert dark_mode_button.mode_button.toolTip() == "Set Dark Mode"
44
+
45
+
46
+ def test_dark_mode_button_toggles_on_click(dark_mode_button, qtbot):
47
+ """
48
+ Test that the dark mode button toggles correctly when clicked.
49
+ """
50
+ qtbot.mouseClick(dark_mode_button.mode_button, Qt.MouseButton.LeftButton)
51
+ assert dark_mode_button.dark_mode_enabled is True
52
+ assert dark_mode_button.mode_button.toolTip() == "Set Light Mode"
53
+
54
+ qtbot.mouseClick(dark_mode_button.mode_button, Qt.MouseButton.LeftButton)
55
+ assert dark_mode_button.dark_mode_enabled is False
56
+ assert dark_mode_button.mode_button.toolTip() == "Set Dark Mode"
57
+
58
+
59
+ def test_dark_mode_button_changes_theme(dark_mode_button):
60
+ """
61
+ Test that the dark mode button changes the theme correctly.
62
+ """
63
+ with mock.patch(
64
+ "bec_widgets.widgets.dark_mode_button.dark_mode_button.set_theme"
65
+ ) as mocked_set_theme:
66
+ dark_mode_button.toggle_dark_mode()
67
+ mocked_set_theme.assert_called_with("dark")
68
+
69
+ dark_mode_button.toggle_dark_mode()
70
+ mocked_set_theme.assert_called_with("light")
File without changes
File without changes
File without changes
File without changes