bec-widgets 0.81.2__tar.gz → 0.82.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 (251) hide show
  1. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/CHANGELOG.md +38 -32
  2. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/PKG-INFO +1 -1
  3. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/cli/client.py +1 -0
  4. bec_widgets-0.82.1/bec_widgets/qt_utils/settings_dialog.py +107 -0
  5. {bec_widgets-0.81.2/bec_widgets/widgets/toolbar → bec_widgets-0.82.1/bec_widgets/qt_utils}/toolbar.py +1 -30
  6. {bec_widgets-0.81.2/bec_widgets/widgets/device_inputs → bec_widgets-0.82.1/bec_widgets/widgets/base_classes}/device_input_base.py +2 -0
  7. {bec_widgets-0.81.2/bec_widgets/widgets/buttons → bec_widgets-0.82.1/bec_widgets/widgets}/color_button/color_button_plugin.py +1 -1
  8. {bec_widgets-0.81.2/bec_widgets/widgets/buttons → bec_widgets-0.82.1/bec_widgets/widgets}/color_button/register_color_button.py +1 -1
  9. bec_widgets-0.82.1/bec_widgets/widgets/device_combobox/assets/device_combobox_icon.png +0 -0
  10. {bec_widgets-0.81.2/bec_widgets/widgets/device_inputs → bec_widgets-0.82.1/bec_widgets/widgets}/device_combobox/device_combobox.py +2 -2
  11. bec_widgets-0.82.1/bec_widgets/widgets/device_combobox/device_combobox.pyproject +3 -0
  12. {bec_widgets-0.81.2/bec_widgets/widgets/device_inputs → bec_widgets-0.82.1/bec_widgets/widgets}/device_combobox/device_combobox_plugin.py +6 -3
  13. {bec_widgets-0.81.2/bec_widgets/widgets/device_inputs → bec_widgets-0.82.1/bec_widgets/widgets}/device_combobox/register_device_combobox.py +1 -3
  14. bec_widgets-0.82.1/bec_widgets/widgets/device_line_edit/assets/line_edit_icon.png +0 -0
  15. {bec_widgets-0.81.2/bec_widgets/widgets/device_inputs → bec_widgets-0.82.1/bec_widgets/widgets}/device_line_edit/device_line_edit.py +2 -2
  16. bec_widgets-0.82.1/bec_widgets/widgets/device_line_edit/device_line_edit.pyproject +3 -0
  17. {bec_widgets-0.81.2/bec_widgets/widgets/device_inputs → bec_widgets-0.82.1/bec_widgets/widgets}/device_line_edit/device_line_edit_plugin.py +6 -3
  18. {bec_widgets-0.81.2/bec_widgets/widgets/device_inputs → bec_widgets-0.82.1/bec_widgets/widgets}/device_line_edit/register_device_line_edit.py +1 -3
  19. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/figure/plots/motor_map/motor_map.py +10 -8
  20. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py +5 -31
  21. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_toolbar.py +2 -2
  22. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/motor_map/motor_map_widget.py +6 -15
  23. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/scan_control/scan_control.py +1 -1
  24. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/scan_control/scan_group_box.py +1 -1
  25. bec_widgets-0.82.1/bec_widgets/widgets/stop_button/assets/stop.png +0 -0
  26. bec_widgets-0.82.1/bec_widgets/widgets/stop_button/register_stop_button.py +15 -0
  27. {bec_widgets-0.81.2/bec_widgets/widgets/buttons → bec_widgets-0.82.1/bec_widgets/widgets}/stop_button/stop_button.py +5 -12
  28. bec_widgets-0.82.1/bec_widgets/widgets/stop_button/stop_button.pyproject +1 -0
  29. bec_widgets-0.82.1/bec_widgets/widgets/stop_button/stop_button_plugin.py +57 -0
  30. bec_widgets-0.82.1/bec_widgets/widgets/toggle/register_toggle_switch.py +15 -0
  31. bec_widgets-0.82.1/bec_widgets/widgets/toggle/toggle.py +149 -0
  32. bec_widgets-0.82.1/bec_widgets/widgets/toggle/toggle_switch.pyproject +1 -0
  33. bec_widgets-0.82.1/bec_widgets/widgets/toggle/toggle_switch_plugin.py +54 -0
  34. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/pyproject.toml +1 -1
  35. bec_widgets-0.82.1/tests/end-2-end/__init__.py +0 -0
  36. bec_widgets-0.82.1/tests/unit_tests/__init__.py +0 -0
  37. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/client_mocks.py +8 -0
  38. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_device_input_base.py +2 -2
  39. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_device_input_widgets.py +4 -2
  40. bec_widgets-0.82.1/tests/unit_tests/test_motor_map_widget.py +196 -0
  41. bec_widgets-0.82.1/tests/unit_tests/test_msgs/__init__.py +0 -0
  42. bec_widgets-0.82.1/tests/unit_tests/test_setting_dialog.py +97 -0
  43. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_stop_button.py +5 -2
  44. bec_widgets-0.82.1/tests/unit_tests/test_toggle.py +38 -0
  45. bec_widgets-0.81.2/bec_widgets/widgets/buttons/__init__.py +0 -1
  46. bec_widgets-0.81.2/bec_widgets/widgets/device_inputs/__init__.py +0 -2
  47. bec_widgets-0.81.2/bec_widgets/widgets/device_inputs/device_combobox/device_combobox.pyproject +0 -4
  48. bec_widgets-0.81.2/bec_widgets/widgets/device_inputs/device_combobox/launch_device_combobox.py +0 -11
  49. bec_widgets-0.81.2/bec_widgets/widgets/device_inputs/device_line_edit/device_line_edit.pyproject +0 -4
  50. bec_widgets-0.81.2/bec_widgets/widgets/device_inputs/device_line_edit/launch_device_line_edit.py +0 -11
  51. bec_widgets-0.81.2/bec_widgets/widgets/toolbar/__init__.py +0 -1
  52. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/.git_hooks/pre-commit +0 -0
  53. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/.gitignore +0 -0
  54. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/.gitlab/issue_templates/bug_report_template.md +0 -0
  55. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/.gitlab/issue_templates/documentation_update_template.md +0 -0
  56. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/.gitlab/issue_templates/feature_request_template.md +0 -0
  57. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/.gitlab/merge_request_templates/default.md +0 -0
  58. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/.gitlab-ci.yml +0 -0
  59. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/.pylintrc +0 -0
  60. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/.readthedocs.yaml +0 -0
  61. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/LICENSE +0 -0
  62. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/README.md +0 -0
  63. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/__init__.py +0 -0
  64. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/assets/bec_widgets_icon.png +0 -0
  65. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/assets/terminal_icon.png +0 -0
  66. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/cli/__init__.py +0 -0
  67. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/cli/auto_updates.py +0 -0
  68. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/cli/client_utils.py +0 -0
  69. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/cli/generate_cli.py +0 -0
  70. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/cli/rpc_register.py +0 -0
  71. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/cli/rpc_wigdet_handler.py +0 -0
  72. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/cli/server.py +0 -0
  73. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/examples/__init__.py +0 -0
  74. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  75. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
  76. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/examples/jupyter_console/jupyter_console_window.ui +0 -0
  77. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
  78. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
  79. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
  80. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
  81. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
  82. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
  83. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
  84. {bec_widgets-0.81.2/bec_widgets/widgets/bec_queue → bec_widgets-0.82.1/bec_widgets/qt_utils}/__init__.py +0 -0
  85. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/__init__.py +0 -0
  86. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/bec_connector.py +0 -0
  87. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/bec_designer.py +0 -0
  88. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/bec_dispatcher.py +0 -0
  89. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/bec_table.py +0 -0
  90. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/bec_widget.py +0 -0
  91. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/colors.py +0 -0
  92. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/container_utils.py +0 -0
  93. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/crosshair.py +0 -0
  94. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/entry_validator.py +0 -0
  95. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/generate_designer_plugin.py +0 -0
  96. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/layout_manager.py +0 -0
  97. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
  98. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/plugin_templates/register.template +0 -0
  99. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/plugin_utils.py +0 -0
  100. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/rpc_decorator.py +0 -0
  101. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/thread_checker.py +0 -0
  102. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/ui_loader.py +0 -0
  103. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/validator_delegate.py +0 -0
  104. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/widget_io.py +0 -0
  105. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/utils/yaml_dialog.py +0 -0
  106. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/__init__.py +0 -0
  107. {bec_widgets-0.81.2/bec_widgets/widgets/bec_status_box → bec_widgets-0.82.1/bec_widgets/widgets/base_classes}/__init__.py +0 -0
  108. {bec_widgets-0.81.2/bec_widgets/widgets/buttons/color_button → bec_widgets-0.82.1/bec_widgets/widgets/bec_queue}/__init__.py +0 -0
  109. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/bec_queue/bec_queue.py +0 -0
  110. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/bec_queue/bec_queue.pyproject +0 -0
  111. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/bec_queue/bec_queue_plugin.py +0 -0
  112. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/bec_queue/register_bec_queue.py +0 -0
  113. {bec_widgets-0.81.2/bec_widgets/widgets/buttons/stop_button → bec_widgets-0.82.1/bec_widgets/widgets/bec_status_box}/__init__.py +0 -0
  114. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/bec_status_box/bec_status_box.py +0 -0
  115. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/bec_status_box/bec_status_box.pyproject +0 -0
  116. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py +0 -0
  117. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/bec_status_box/register_bec_status_box.py +0 -0
  118. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/bec_status_box/status_item.py +0 -0
  119. {bec_widgets-0.81.2/bec_widgets/widgets/device_inputs/device_combobox → bec_widgets-0.82.1/bec_widgets/widgets/color_button}/__init__.py +0 -0
  120. {bec_widgets-0.81.2/bec_widgets/widgets/buttons → bec_widgets-0.82.1/bec_widgets/widgets}/color_button/assets/color_button.png +0 -0
  121. {bec_widgets-0.81.2/bec_widgets/widgets/buttons → bec_widgets-0.82.1/bec_widgets/widgets}/color_button/color_button.py +0 -0
  122. {bec_widgets-0.81.2/bec_widgets/widgets/buttons → bec_widgets-0.82.1/bec_widgets/widgets}/color_button/color_button.pyproject +0 -0
  123. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/console/console.py +0 -0
  124. {bec_widgets-0.81.2/bec_widgets/widgets/device_inputs/device_line_edit → bec_widgets-0.82.1/bec_widgets/widgets/device_combobox}/__init__.py +0 -0
  125. {bec_widgets-0.81.2/bec_widgets/widgets/figure/plots → bec_widgets-0.82.1/bec_widgets/widgets/device_line_edit}/__init__.py +0 -0
  126. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/dock/__init__.py +0 -0
  127. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/dock/dock.py +0 -0
  128. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/dock/dock_area.py +0 -0
  129. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/figure/__init__.py +0 -0
  130. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/figure/figure.py +0 -0
  131. {bec_widgets-0.81.2/bec_widgets/widgets/figure/plots/image → bec_widgets-0.82.1/bec_widgets/widgets/figure/plots}/__init__.py +0 -0
  132. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/figure/plots/axis_settings.py +0 -0
  133. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/figure/plots/axis_settings.ui +0 -0
  134. {bec_widgets-0.81.2/bec_widgets/widgets/figure/plots/motor_map → bec_widgets-0.82.1/bec_widgets/widgets/figure/plots/image}/__init__.py +0 -0
  135. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/figure/plots/image/image.py +0 -0
  136. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/figure/plots/image/image_item.py +0 -0
  137. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/figure/plots/image/image_processor.py +0 -0
  138. {bec_widgets-0.81.2/bec_widgets/widgets/figure/plots/waveform → bec_widgets-0.82.1/bec_widgets/widgets/figure/plots/motor_map}/__init__.py +0 -0
  139. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/figure/plots/plot_base.py +0 -0
  140. {bec_widgets-0.81.2/bec_widgets/widgets/jupyter_console → bec_widgets-0.82.1/bec_widgets/widgets/figure/plots/waveform}/__init__.py +0 -0
  141. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/figure/plots/waveform/waveform.py +0 -0
  142. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +0 -0
  143. {bec_widgets-0.81.2/bec_widgets/widgets/motor_map → bec_widgets-0.82.1/bec_widgets/widgets/jupyter_console}/__init__.py +0 -0
  144. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/jupyter_console/jupyter_console.py +0 -0
  145. {bec_widgets-0.81.2/bec_widgets/widgets/motor_map/motor_map_dialog → bec_widgets-0.82.1/bec_widgets/widgets/motor_map}/__init__.py +0 -0
  146. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/motor_map/assets/connection.svg +0 -0
  147. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/motor_map/assets/history.svg +0 -0
  148. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/motor_map/assets/motor_map.png +0 -0
  149. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/motor_map/assets/settings.svg +0 -0
  150. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/motor_map/bec_motor_map_widget.pyproject +0 -0
  151. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py +0 -0
  152. {bec_widgets-0.81.2/bec_widgets/widgets/text_box → bec_widgets-0.82.1/bec_widgets/widgets/motor_map/motor_map_dialog}/__init__.py +0 -0
  153. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui +0 -0
  154. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py +0 -0
  155. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/ring_progress_bar/__init__.py +0 -0
  156. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/ring_progress_bar/ring.py +0 -0
  157. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.py +0 -0
  158. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/scan_control/__init__.py +0 -0
  159. {bec_widgets-0.81.2/bec_widgets/widgets/vscode → bec_widgets-0.82.1/bec_widgets/widgets/stop_button}/__init__.py +0 -0
  160. {bec_widgets-0.81.2/bec_widgets/widgets/website → bec_widgets-0.82.1/bec_widgets/widgets/text_box}/__init__.py +0 -0
  161. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/text_box/text_box.py +0 -0
  162. {bec_widgets-0.81.2/tests → bec_widgets-0.82.1/bec_widgets/widgets/toggle}/__init__.py +0 -0
  163. {bec_widgets-0.81.2/tests/end-2-end → bec_widgets-0.82.1/bec_widgets/widgets/vscode}/__init__.py +0 -0
  164. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/vscode/vscode.py +0 -0
  165. {bec_widgets-0.81.2/tests/unit_tests → bec_widgets-0.82.1/bec_widgets/widgets/website}/__init__.py +0 -0
  166. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/bec_widgets/widgets/website/website.py +0 -0
  167. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/Makefile +0 -0
  168. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/_static/custom.css +0 -0
  169. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/_templates/custom-class-template.rst +0 -0
  170. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/_templates/custom-module-template.rst +0 -0
  171. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/api_reference/api_reference.md +0 -0
  172. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/assets/apps_48dp.svg +0 -0
  173. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/assets/display_settings_48dp.svg +0 -0
  174. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/assets/index_api.svg +0 -0
  175. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/assets/index_contribute.svg +0 -0
  176. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/assets/index_getting_started.svg +0 -0
  177. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/assets/index_user_guide.svg +0 -0
  178. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/assets/rocket_launch_48dp.svg +0 -0
  179. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/conf.py +0 -0
  180. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/developer/developer.md +0 -0
  181. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/developer/getting_started/development.md +0 -0
  182. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/developer/getting_started/getting_started.md +0 -0
  183. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/developer/widgets/widgets.md +0 -0
  184. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/index.md +0 -0
  185. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/introduction/introduction.md +0 -0
  186. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/make.bat +0 -0
  187. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/requirements.txt +0 -0
  188. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/api_reference/api_reference.md +0 -0
  189. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/applications/applications.md +0 -0
  190. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/customisation.md +0 -0
  191. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/getting_started/BECDockArea.png +0 -0
  192. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/getting_started/auto_updates.md +0 -0
  193. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/getting_started/getting_started.md +0 -0
  194. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/getting_started/gui_complex_gui.gif +0 -0
  195. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/getting_started/installation.md +0 -0
  196. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/getting_started/quick_start.md +0 -0
  197. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/user.md +0 -0
  198. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/widgets/BECFigure.png +0 -0
  199. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/widgets/bec_figure.md +0 -0
  200. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/widgets/bec_figure_dap.gif +0 -0
  201. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/widgets/bec_status_box.gif +0 -0
  202. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/widgets/bec_status_box.md +0 -0
  203. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/widgets/buttons.md +0 -0
  204. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/widgets/image_plot.gif +0 -0
  205. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/widgets/motor.gif +0 -0
  206. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/widgets/progress_bar.gif +0 -0
  207. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/widgets/ring_progress_bar.md +0 -0
  208. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/widgets/scan_control.gif +0 -0
  209. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/widgets/scan_control.md +0 -0
  210. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/widgets/scatter_2D.gif +0 -0
  211. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/widgets/text_box.md +0 -0
  212. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/widgets/w1D.gif +0 -0
  213. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/widgets/website.md +0 -0
  214. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/docs/user/widgets/widgets.md +0 -0
  215. {bec_widgets-0.81.2/tests/unit_tests/test_msgs → bec_widgets-0.82.1/tests}/__init__.py +0 -0
  216. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/end-2-end/conftest.py +0 -0
  217. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/end-2-end/test_bec_dock_rpc_e2e.py +0 -0
  218. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/end-2-end/test_bec_figure_rpc_e2e.py +0 -0
  219. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/end-2-end/test_rpc_register_e2e.py +0 -0
  220. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/end-2-end/test_scan_control_e2e.py +0 -0
  221. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/conftest.py +0 -0
  222. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_bec_connector.py +0 -0
  223. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_bec_dispatcher.py +0 -0
  224. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_bec_dock.py +0 -0
  225. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_bec_figure.py +0 -0
  226. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_bec_image.py +0 -0
  227. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_bec_motor_map.py +0 -0
  228. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_bec_queue.py +0 -0
  229. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_bec_status_box.py +0 -0
  230. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_client_utils.py +0 -0
  231. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_color_validation.py +0 -0
  232. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_configs/config_device.yaml +0 -0
  233. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_configs/config_device_no_entry.yaml +0 -0
  234. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_configs/config_scan.yaml +0 -0
  235. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_crosshair.py +0 -0
  236. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_generate_cli_client.py +0 -0
  237. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_generate_plugin.py +0 -0
  238. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_msgs/available_scans_message.py +0 -0
  239. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_plot_base.py +0 -0
  240. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_plugin_utils.py +0 -0
  241. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_ring_progress_bar.py +0 -0
  242. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_rpc_register.py +0 -0
  243. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_rpc_widget_handler.py +0 -0
  244. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_scan_control.py +0 -0
  245. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_scan_control_group_box.py +0 -0
  246. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_text_box_widget.py +0 -0
  247. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_vscode_widget.py +0 -0
  248. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_waveform1d.py +0 -0
  249. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_website_widget.py +0 -0
  250. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_widget_io.py +0 -0
  251. {bec_widgets-0.81.2 → bec_widgets-0.82.1}/tests/unit_tests/test_yaml_dialog.py +0 -0
@@ -1,5 +1,43 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.82.1 (2024-07-07)
4
+
5
+ ### Fix
6
+
7
+ * fix(motor_map): bug where motors without limits were selected ([`c78cd89`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/c78cd898f203f950d7cb589eb5609feaa88062cf))
8
+
9
+ ### Refactor
10
+
11
+ * refactor(setting_dialog): moved to qt_utils ([`3826bb3`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/3826bb3d9e870e85709b5b20ef09a4d22641280c))
12
+
13
+ * refactor(toolbar): toolbar moved from widgets to qt_utils ([`7ffc06f`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/7ffc06f3c7ddd86a1681408a75221b9bbadb236b))
14
+
15
+ ### Test
16
+
17
+ * test(setting_dialog): tests added ([`74a249b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/74a249bd065d01006cb532bfff2a9bfedb34b592))
18
+
19
+ ### Unknown
20
+
21
+ * tests(motor_map_widget): tests added ([`734f4c7`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/734f4c77507a1edafd477d81b5f7401d8e759be2))
22
+
23
+ * feat(settings_dialog):apply button ([`2020953`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/2020953b933b6fcad61ecc770588d39518c26fdd))
24
+
25
+ ## v0.82.0 (2024-07-07)
26
+
27
+ ### Feature
28
+
29
+ * feat(toggle): added angular component-like toggle ([`b9bff38`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b9bff38b64b86f06b3bc047922ef9df0c7d32e71))
30
+
31
+ ### Refactor
32
+
33
+ * refactor(device_input): DeviceComboBox and DeviceLineEdit moved to top layer of widgets ([`f048629`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f04862933f049030554086adef3ec9e1aebd3eda))
34
+
35
+ * refactor(stop_button): moved to top layer, plugin added ([`f5b8375`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f5b8375fd36e3bb681de571da86a6c0bdb3cb6f0))
36
+
37
+ * refactor(motor_map_widget): removed restriction of only PySide6 for widget ([`db1cdf4`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/db1cdf42806fef6d7c6d2db83528f32df3f9751d))
38
+
39
+ * refactor(color_button): ColorButton moved to top level of widgets ([`fa1e86f`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/fa1e86ff07b25d2c47c73117b00765b8e2f25da4))
40
+
3
41
  ## v0.81.2 (2024-07-07)
4
42
 
5
43
  ### Fix
@@ -98,8 +136,6 @@
98
136
 
99
137
  * feat(bec_connector): export config to yaml ([`a391f30`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a391f3018c50fee6a4a06884491b957df80c3cd3))
100
138
 
101
- * feat(utils): colors added convertor for rgba to hex ([`572f2fb`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/572f2fb8110d5cb0e80f3ca45ce57ef405572456))
102
-
103
139
  ### Fix
104
140
 
105
141
  * fix(waveform): scatter 2D brush error ([`215d59c`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/215d59c8bfe7fda9aff8cec8353bef9e1ce2eca1))
@@ -109,33 +145,3 @@
109
145
  * fix(figure): if/else logic corrected in subplot_factory ([`3e78723`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/3e787234c7274b0698423d7bf9a4c54ec46bad5f))
110
146
 
111
147
  * fix(image): processing of already displayed data; closes #106 ([`1173510`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/1173510105d2d70d7e498c2ac1e122cea3a16597))
112
-
113
- * fix(bec_figure): full reconstruction with config from other bec figure ([`b6e1e20`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b6e1e20b7c8549bb092e981062329e601411dda6))
114
-
115
- * fix(motor_map): API changes updates current visualisation; motor_map can be initialised from config ([`2e2d422`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/2e2d422910685a2527a3d961a468c787f771ca44))
116
-
117
- * fix(image): image add_custom_image fixed, closes #225 ([`f0556e4`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f0556e44113ffee66cf735aa2dd758c62cb634f4))
118
-
119
- * fix(figure): subplot methods consolidated; added subplot factory ([`4a97105`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4a97105e4bd2ce77d72dfe5f8307dd9ee65b21b0))
120
-
121
- * fix(image): image can be fully reconstructed from config ([`797f73c`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/797f73c39aa73e07d6311f3de4baea53f6c380e0))
122
-
123
- * fix(image_item): vrange added int for pydantic model check ([`b8f796f`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b8f796fd3fcc15641e8fc6a3ca75c344ce90fc45))
124
-
125
- * fix(bec_figure): waveforms can be initialised from the config; widgets are deleteLater after removal ([`78673ea`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/78673ea11a47aad878128197ae6213925228ed59))
126
-
127
- ### Unknown
128
-
129
- * Resolve "add VT100 console executing BEC as a widget" ([`c6a14c0`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/c6a14c0768a90695567a83a7895247ed0c64f3ce))
130
-
131
- ## v0.76.1 (2024-06-29)
132
-
133
- ### Fix
134
-
135
- * fix(plugins): fixes and tests for auto-gen plugins ([`c42511d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/c42511dd44cc13577e108a6cef3166376e594f54))
136
-
137
- ## v0.76.0 (2024-06-28)
138
-
139
- ### Fix
140
-
141
- * fix: fixed qwidget inheritance for ring progress bar ([`0610d2f`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/0610d2f9f027f8659e7149f2dfbb316ff30e337d))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.81.2
3
+ Version: 0.82.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
  BECStatusBox = "BECStatusBox"
22
22
  RingProgressBar = "RingProgressBar"
23
23
  ScanControl = "ScanControl"
24
+ StopButton = "StopButton"
24
25
  TextBox = "TextBox"
25
26
  VSCodeEditor = "VSCodeEditor"
26
27
  WebsiteWidget = "WebsiteWidget"
@@ -0,0 +1,107 @@
1
+ from qtpy.QtCore import Slot
2
+ from qtpy.QtWidgets import QDialog, QDialogButtonBox, QHBoxLayout, QPushButton, QVBoxLayout, QWidget
3
+
4
+
5
+ class SettingWidget(QWidget):
6
+ """
7
+ Abstract class for a settings widget to enforce the implementation of the accept_changes and display_current_settings.
8
+ Can be used for toolbar actions to display the settings of a widget.
9
+
10
+ Args:
11
+ target_widget (QWidget): The widget that the settings will be taken from and applied to.
12
+ """
13
+
14
+ def __init__(self, parent=None, *args, **kwargs):
15
+ super().__init__(parent, *args, **kwargs)
16
+
17
+ self.target_widget = None
18
+
19
+ def set_target_widget(self, target_widget: QWidget):
20
+ self.target_widget = target_widget
21
+
22
+ @Slot()
23
+ def accept_changes(self):
24
+ """
25
+ Accepts the changes made in the settings widget and applies them to the target widget.
26
+ """
27
+ pass
28
+
29
+ @Slot(dict)
30
+ def display_current_settings(self, config_dict: dict):
31
+ """
32
+ Displays the current settings of the target widget in the settings widget.
33
+
34
+ Args:
35
+ config_dict(dict): The current settings of the target widget.
36
+ """
37
+ pass
38
+
39
+
40
+ class SettingsDialog(QDialog):
41
+ """
42
+ Dialog to display and edit the settings of a widget with accept and cancel buttons.
43
+
44
+ Args:
45
+ parent (QWidget): The parent widget of the dialog.
46
+ target_widget (QWidget): The widget that the settings will be taken from and applied to.
47
+ settings_widget (SettingWidget): The widget that will display the settings.
48
+ """
49
+
50
+ def __init__(
51
+ self,
52
+ parent=None,
53
+ settings_widget: SettingWidget = None,
54
+ window_title: str = "Settings",
55
+ config: dict = None,
56
+ *args,
57
+ **kwargs,
58
+ ):
59
+ super().__init__(parent, *args, **kwargs)
60
+
61
+ self.setModal(False)
62
+
63
+ self.setWindowTitle(window_title)
64
+
65
+ self.widget = settings_widget
66
+ self.widget.set_target_widget(parent)
67
+ if config is None:
68
+ config = parent.get_config()
69
+
70
+ self.widget.display_current_settings(config)
71
+
72
+ self.button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
73
+
74
+ self.apply_button = QPushButton("Apply")
75
+
76
+ button_layout = QHBoxLayout()
77
+ button_layout.addWidget(self.button_box.button(QDialogButtonBox.Cancel))
78
+ button_layout.addWidget(self.apply_button)
79
+ button_layout.addWidget(self.button_box.button(QDialogButtonBox.Ok))
80
+
81
+ self.button_box.accepted.connect(self.accept)
82
+ self.button_box.rejected.connect(self.reject)
83
+ self.apply_button.clicked.connect(self.apply_changes)
84
+
85
+ self.layout = QVBoxLayout(self)
86
+ self.layout.setContentsMargins(5, 5, 5, 5)
87
+ self.layout.addWidget(self.widget)
88
+ self.layout.addLayout(button_layout)
89
+
90
+ ok_button = self.button_box.button(QDialogButtonBox.Ok)
91
+ ok_button.setDefault(True)
92
+ ok_button.setAutoDefault(True)
93
+
94
+ @Slot()
95
+ def accept(self):
96
+ """
97
+ Accept the changes made in the settings widget and close the dialog.
98
+ """
99
+ self.widget.accept_changes()
100
+ super().accept()
101
+
102
+ @Slot()
103
+ def apply_changes(self):
104
+ """
105
+ Apply the changes made in the settings widget without closing the dialog.
106
+ """
107
+ self.widget.accept_changes()
@@ -3,8 +3,7 @@ from collections import defaultdict
3
3
 
4
4
  # pylint: disable=no-name-in-module
5
5
  from qtpy.QtCore import QSize
6
- from qtpy.QtGui import QAction
7
- from qtpy.QtWidgets import QHBoxLayout, QLabel, QSpinBox, QToolBar, QWidget
6
+ from qtpy.QtWidgets import QToolBar, QWidget
8
7
 
9
8
 
10
9
  class ToolBarAction(ABC):
@@ -18,34 +17,6 @@ class ToolBarAction(ABC):
18
17
  """
19
18
 
20
19
 
21
- class ColumnAdjustAction(ToolBarAction):
22
- """Toolbar spinbox to adjust number of columns in the plot layout"""
23
-
24
- def add_to_toolbar(self, toolbar: QToolBar, target: QWidget):
25
- """Creates a access history button for the toolbar.
26
-
27
- Args:
28
- toolbar (QToolBar): The toolbar to add the action to.
29
- target (QWidget): The widget that the 'Access Scan History' action will be targeted.
30
-
31
- Returns:
32
- QAction: The 'Access Scan History' action created for the toolbar.
33
- """
34
- widget = QWidget()
35
- layout = QHBoxLayout(widget)
36
-
37
- label = QLabel("Columns:")
38
- spin_box = QSpinBox()
39
- spin_box.setMinimum(1) # Set minimum value
40
- spin_box.setMaximum(10) # Set maximum value
41
- spin_box.setValue(target.get_column_count()) # Initial value
42
- spin_box.valueChanged.connect(lambda value: target.set_column_count(value))
43
-
44
- layout.addWidget(label)
45
- layout.addWidget(spin_box)
46
- toolbar.addWidget(widget)
47
-
48
-
49
20
  class ModularToolBar(QToolBar):
50
21
  """Modular toolbar with optional automatic initialization.
51
22
  Args:
@@ -25,6 +25,7 @@ class DeviceInputBase(BECConnector):
25
25
  super().__init__(client=client, config=config, gui_id=gui_id)
26
26
 
27
27
  self.get_bec_shortcuts()
28
+ self._device_filter = None
28
29
  self._devices = []
29
30
 
30
31
  @property
@@ -56,6 +57,7 @@ class DeviceInputBase(BECConnector):
56
57
  """
57
58
  self.validate_device_filter(device_filter)
58
59
  self.config.device_filter = device_filter
60
+ self._device_filter = device_filter
59
61
 
60
62
  def set_default_device(self, default_device: str):
61
63
  """
@@ -3,7 +3,7 @@ import os
3
3
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
4
4
  from qtpy.QtGui import QIcon
5
5
 
6
- from bec_widgets.widgets.buttons.color_button.color_button import ColorButton
6
+ from bec_widgets.widgets.color_button.color_button import ColorButton
7
7
 
8
8
  DOM_XML = """
9
9
  <ui language='c++'>
@@ -6,7 +6,7 @@ def main(): # pragma: no cover
6
6
  return
7
7
  from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
8
8
 
9
- from bec_widgets.widgets.buttons.color_button.color_button_plugin import ColorButtonPlugin
9
+ from bec_widgets.widgets.color_button.color_button_plugin import ColorButtonPlugin
10
10
 
11
11
  QPyDesignerCustomWidgetCollection.addCustomWidget(ColorButtonPlugin())
12
12
 
@@ -2,10 +2,10 @@ from typing import TYPE_CHECKING
2
2
 
3
3
  from qtpy.QtWidgets import QComboBox
4
4
 
5
- from bec_widgets.widgets.device_inputs.device_input_base import DeviceInputBase, DeviceInputConfig
5
+ from bec_widgets.widgets.base_classes.device_input_base import DeviceInputBase, DeviceInputConfig
6
6
 
7
7
  if TYPE_CHECKING:
8
- from bec_widgets.widgets.device_inputs.device_input_base import DeviceInputConfig
8
+ from bec_widgets.widgets.base_classes.device_input_base import DeviceInputConfig
9
9
 
10
10
 
11
11
  class DeviceComboBox(DeviceInputBase, QComboBox):
@@ -0,0 +1,3 @@
1
+ {
2
+ "files": ["device_combobox.py"]
3
+ }
@@ -1,10 +1,11 @@
1
1
  # Copyright (C) 2022 The Qt Company Ltd.
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
+ import os
3
4
 
4
5
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
5
6
  from qtpy.QtGui import QIcon
6
7
 
7
- from bec_widgets.widgets.device_inputs import DeviceComboBox
8
+ from bec_widgets.widgets.device_combobox.device_combobox import DeviceComboBox
8
9
 
9
10
  DOM_XML = """
10
11
  <ui language='c++'>
@@ -27,10 +28,12 @@ class DeviceComboBoxPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
27
28
  return DOM_XML
28
29
 
29
30
  def group(self):
30
- return ""
31
+ return "BEC Device Inputs"
31
32
 
32
33
  def icon(self):
33
- return QIcon()
34
+ current_path = os.path.dirname(__file__)
35
+ icon_path = os.path.join(current_path, "assets", "device_combobox_icon.png")
36
+ return QIcon(icon_path)
34
37
 
35
38
  def includeFile(self):
36
39
  return "device_combobox"
@@ -6,9 +6,7 @@ def main(): # pragma: no cover
6
6
  return
7
7
  from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
8
8
 
9
- from bec_widgets.widgets.device_inputs.device_combobox.device_combobox_plugin import (
10
- DeviceComboBoxPlugin,
11
- )
9
+ from bec_widgets.widgets.device_combobox.device_combobox_plugin import DeviceComboBoxPlugin
12
10
 
13
11
  QPyDesignerCustomWidgetCollection.addCustomWidget(DeviceComboBoxPlugin())
14
12
 
@@ -3,10 +3,10 @@ from typing import TYPE_CHECKING
3
3
  from qtpy.QtCore import QSize
4
4
  from qtpy.QtWidgets import QCompleter, QLineEdit, QSizePolicy
5
5
 
6
- from bec_widgets.widgets.device_inputs.device_input_base import DeviceInputBase, DeviceInputConfig
6
+ from bec_widgets.widgets.base_classes.device_input_base import DeviceInputBase, DeviceInputConfig
7
7
 
8
8
  if TYPE_CHECKING:
9
- from bec_widgets.widgets.device_inputs.device_input_base import DeviceInputConfig
9
+ from bec_widgets.widgets.base_classes.device_input_base import DeviceInputConfig
10
10
 
11
11
 
12
12
  class DeviceLineEdit(DeviceInputBase, QLineEdit):
@@ -0,0 +1,3 @@
1
+ {
2
+ "files": ["device_line_edit.py"]
3
+ }
@@ -1,10 +1,11 @@
1
1
  # Copyright (C) 2022 The Qt Company Ltd.
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
+ import os
3
4
 
4
5
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
5
6
  from qtpy.QtGui import QIcon
6
7
 
7
- from bec_widgets.widgets.device_inputs import DeviceLineEdit
8
+ from bec_widgets.widgets.device_line_edit.device_line_edit import DeviceLineEdit
8
9
 
9
10
  DOM_XML = """
10
11
  <ui language='c++'>
@@ -27,10 +28,12 @@ class DeviceLineEditPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
27
28
  return DOM_XML
28
29
 
29
30
  def group(self):
30
- return ""
31
+ return "BEC Device Inputs"
31
32
 
32
33
  def icon(self):
33
- return QIcon()
34
+ current_path = os.path.dirname(__file__)
35
+ icon_path = os.path.join(current_path, "assets", "line_edit_icon.png")
36
+ return QIcon(icon_path)
34
37
 
35
38
  def includeFile(self):
36
39
  return "device_line_edit"
@@ -6,9 +6,7 @@ def main(): # pragma: no cover
6
6
  return
7
7
  from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
8
8
 
9
- from bec_widgets.widgets.device_inputs.device_line_edit.device_line_edit_plugin import (
10
- DeviceLineEditPlugin,
11
- )
9
+ from bec_widgets.widgets.device_line_edit.device_line_edit_plugin import DeviceLineEditPlugin
12
10
 
13
11
  QPyDesignerCustomWidgetCollection.addCustomWidget(DeviceLineEditPlugin())
14
12
 
@@ -271,11 +271,12 @@ class BECMotorMap(BECPlotBase):
271
271
  def _swap_limit_map(self):
272
272
  """Swap the limit map."""
273
273
  self.plot_item.removeItem(self.plot_components["limit_map"])
274
- self.plot_components["limit_map"] = self._make_limit_map(
275
- self.config.signals.x.limits, self.config.signals.y.limits
276
- )
277
- self.plot_components["limit_map"].setZValue(-1)
278
- self.plot_item.addItem(self.plot_components["limit_map"])
274
+ if self.config.signals.x.limits is not None and self.config.signals.y.limits is not None:
275
+ self.plot_components["limit_map"] = self._make_limit_map(
276
+ self.config.signals.x.limits, self.config.signals.y.limits
277
+ )
278
+ self.plot_components["limit_map"].setZValue(-1)
279
+ self.plot_item.addItem(self.plot_components["limit_map"])
279
280
 
280
281
  def _make_motor_map(self):
281
282
  """
@@ -284,9 +285,10 @@ class BECMotorMap(BECPlotBase):
284
285
  # Create limit map
285
286
  motor_x_limit = self.config.signals.x.limits
286
287
  motor_y_limit = self.config.signals.y.limits
287
- self.plot_components["limit_map"] = self._make_limit_map(motor_x_limit, motor_y_limit)
288
- self.plot_item.addItem(self.plot_components["limit_map"])
289
- self.plot_components["limit_map"].setZValue(-1)
288
+ if motor_x_limit is not None or motor_y_limit is not None:
289
+ self.plot_components["limit_map"] = self._make_limit_map(motor_x_limit, motor_y_limit)
290
+ self.plot_item.addItem(self.plot_components["limit_map"])
291
+ self.plot_components["limit_map"].setZValue(-1)
290
292
 
291
293
  # Create scatter plot
292
294
  scatter_size = self.config.scatter_size
@@ -1,19 +1,19 @@
1
1
  import os
2
2
 
3
3
  from qtpy.QtCore import Slot
4
- from qtpy.QtWidgets import QDialog, QDialogButtonBox, QLabel, QVBoxLayout, QWidget
4
+ from qtpy.QtWidgets import QVBoxLayout
5
5
 
6
+ from bec_widgets.qt_utils.settings_dialog import SettingWidget
6
7
  from bec_widgets.utils import UILoader
7
8
  from bec_widgets.utils.widget_io import WidgetIO
8
9
 
9
10
 
10
- class MotorMapSettings(QWidget):
11
- def __init__(self, parent=None, target_widget: QWidget = None, *args, **kwargs):
11
+ class MotorMapSettings(SettingWidget):
12
+ def __init__(self, parent=None, *args, **kwargs):
12
13
  super().__init__(parent, *args, **kwargs)
13
14
  current_path = os.path.dirname(__file__)
14
15
 
15
16
  self.ui = UILoader(self).loader(os.path.join(current_path, "motor_map_settings.ui"))
16
- self.target_widget = target_widget
17
17
 
18
18
  self.layout = QVBoxLayout(self)
19
19
  self.layout.addWidget(self.ui)
@@ -36,7 +36,7 @@ class MotorMapSettings(QWidget):
36
36
  precision = WidgetIO.get_value(self.ui.precision)
37
37
  scatter_size = WidgetIO.get_value(self.ui.scatter_size)
38
38
  background_intensity = int(WidgetIO.get_value(self.ui.background_value) * 0.01 * 255)
39
- color = self.ui.color.color().toTuple()
39
+ color = self.ui.color.get_color("RGBA")
40
40
 
41
41
  if self.target_widget is not None:
42
42
  self.target_widget.set_max_points(max_points)
@@ -45,29 +45,3 @@ class MotorMapSettings(QWidget):
45
45
  self.target_widget.set_scatter_size(scatter_size)
46
46
  self.target_widget.set_background_value(background_intensity)
47
47
  self.target_widget.set_color(color)
48
-
49
-
50
- class MotorMapDialog(QDialog):
51
- def __init__(self, parent=None, target_widget: QWidget = None, *args, **kwargs):
52
- super().__init__(parent, *args, **kwargs)
53
-
54
- self.setModal(False)
55
-
56
- self.setWindowTitle("Motor Map Settings")
57
-
58
- self.target_widget = target_widget
59
- self.widget = MotorMapSettings(target_widget=self.target_widget)
60
- self.widget.display_current_settings(self.target_widget._config_dict)
61
- self.button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
62
-
63
- self.button_box.accepted.connect(self.accept)
64
- self.button_box.rejected.connect(self.reject)
65
-
66
- self.layout = QVBoxLayout(self)
67
- self.layout.addWidget(self.widget)
68
- self.layout.addWidget(self.button_box)
69
-
70
- @Slot()
71
- def accept(self):
72
- self.widget.accept_changes()
73
- super().accept()
@@ -4,8 +4,8 @@ from qtpy.QtCore import QSize
4
4
  from qtpy.QtGui import QAction, QIcon
5
5
  from qtpy.QtWidgets import QHBoxLayout, QLabel, QWidget
6
6
 
7
- from bec_widgets.widgets.device_inputs import DeviceComboBox
8
- from bec_widgets.widgets.toolbar.toolbar import ToolBarAction
7
+ from bec_widgets.qt_utils.toolbar import ToolBarAction
8
+ from bec_widgets.widgets.device_combobox.device_combobox import DeviceComboBox
9
9
 
10
10
 
11
11
  class DeviceSelectionAction(ToolBarAction):
@@ -2,20 +2,20 @@ from __future__ import annotations
2
2
 
3
3
  import sys
4
4
 
5
- from qtpy import PYSIDE6
6
5
  from qtpy.QtWidgets import QVBoxLayout, QWidget
7
6
 
7
+ from bec_widgets.qt_utils.settings_dialog import SettingsDialog
8
+ from bec_widgets.qt_utils.toolbar import ModularToolBar
8
9
  from bec_widgets.utils import BECConnector
9
10
  from bec_widgets.widgets.figure import BECFigure
10
11
  from bec_widgets.widgets.figure.plots.motor_map.motor_map import MotorMapConfig
11
- from bec_widgets.widgets.motor_map.motor_map_dialog.motor_map_settings import MotorMapDialog
12
+ from bec_widgets.widgets.motor_map.motor_map_dialog.motor_map_settings import MotorMapSettings
12
13
  from bec_widgets.widgets.motor_map.motor_map_dialog.motor_map_toolbar import (
13
14
  ConnectAction,
14
15
  DeviceSelectionAction,
15
16
  ResetHistoryAction,
16
17
  SettingsAction,
17
18
  )
18
- from bec_widgets.widgets.toolbar import ModularToolBar
19
19
 
20
20
 
21
21
  class BECMotorMapWidget(BECConnector, QWidget):
@@ -37,10 +37,6 @@ class BECMotorMapWidget(BECConnector, QWidget):
37
37
  client=None,
38
38
  gui_id: str | None = None,
39
39
  ) -> None:
40
- if not PYSIDE6:
41
- raise RuntimeError(
42
- "PYSIDE6 is not available in the environment. This widget is compatible only with PySide6."
43
- )
44
40
  if config is None:
45
41
  config = MotorMapConfig(widget_class=self.__class__.__name__)
46
42
  else:
@@ -97,7 +93,9 @@ class BECMotorMapWidget(BECConnector, QWidget):
97
93
  toolbar_y.setStyleSheet("QComboBox {{ background-color: " "; }}")
98
94
 
99
95
  def show_settings(self) -> None:
100
- dialog = MotorMapDialog(self, target_widget=self)
96
+ dialog = SettingsDialog(
97
+ self, settings_widget=MotorMapSettings(), window_title="Motor Map Settings"
98
+ )
101
99
  dialog.exec()
102
100
 
103
101
  ###################################
@@ -216,13 +214,6 @@ class BECMotorMapWidget(BECConnector, QWidget):
216
214
 
217
215
 
218
216
  def main(): # pragma: no cover
219
-
220
- if not PYSIDE6:
221
- print(
222
- "PYSIDE6 is not available in the environment. UI files with BEC custom widgets are runnable only with PySide6."
223
- )
224
- return
225
-
226
217
  from qtpy.QtWidgets import QApplication
227
218
 
228
219
  app = QApplication(sys.argv)
@@ -12,8 +12,8 @@ from qtpy.QtWidgets import (
12
12
  )
13
13
 
14
14
  from bec_widgets.utils import BECConnector
15
- from bec_widgets.widgets.buttons.stop_button.stop_button import StopButton
16
15
  from bec_widgets.widgets.scan_control.scan_group_box import ScanGroupBox
16
+ from bec_widgets.widgets.stop_button.stop_button import StopButton
17
17
 
18
18
 
19
19
  class ScanControl(BECConnector, QWidget):
@@ -12,7 +12,7 @@ from qtpy.QtWidgets import (
12
12
  )
13
13
 
14
14
  from bec_widgets.utils.widget_io import WidgetIO
15
- from bec_widgets.widgets.device_inputs import DeviceLineEdit
15
+ from bec_widgets.widgets.device_line_edit.device_line_edit import DeviceLineEdit
16
16
 
17
17
 
18
18
  class ScanArgType:
@@ -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.stop_button.stop_button_plugin import StopButtonPlugin
10
+
11
+ QPyDesignerCustomWidgetCollection.addCustomWidget(StopButtonPlugin())
12
+
13
+
14
+ if __name__ == "__main__": # pragma: no cover
15
+ main()
@@ -1,3 +1,4 @@
1
+ from qtpy.QtCore import Slot
1
2
  from qtpy.QtWidgets import QPushButton
2
3
 
3
4
  from bec_widgets.utils import BECConnector
@@ -12,21 +13,13 @@ class StopButton(BECConnector, QPushButton):
12
13
 
13
14
  self.get_bec_shortcuts()
14
15
  self.setText("Stop")
15
- self.setStyleSheet("background-color: #cc181e; color: white")
16
+ self.setStyleSheet(
17
+ "background-color: #cc181e; color: white; font-weight: bold; font-size: 12px;"
18
+ )
16
19
  self.clicked.connect(self.stop_scan)
17
20
 
21
+ @Slot()
18
22
  def stop_scan(self):
19
23
  """Stop the scan."""
20
24
  self.queue.request_scan_abortion()
21
25
  self.queue.request_queue_reset()
22
-
23
-
24
- if __name__ == "__main__": # pragma: no cover
25
- import sys
26
-
27
- from qtpy.QtWidgets import QApplication
28
-
29
- app = QApplication(sys.argv)
30
- widget = StopButton()
31
- widget.show()
32
- sys.exit(app.exec_())
@@ -0,0 +1 @@
1
+ {'files': ['stop_button.py']}