bec-widgets 0.93.3__tar.gz → 0.93.5__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 (376) hide show
  1. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/CHANGELOG.md +24 -22
  2. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/PKG-INFO +1 -1
  3. bec_widgets-0.93.5/bec_widgets/assets/toolbar_icons/device_line_edit.svg +3 -0
  4. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/cli/client.py +9 -16
  5. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/dock/dock_area.py +4 -4
  6. bec_widgets-0.93.3/bec_widgets/widgets/device_box/device_box.py → bec_widgets-0.93.5/bec_widgets/widgets/positioner_box/positioner_box.py +125 -15
  7. bec_widgets-0.93.5/bec_widgets/widgets/positioner_box/positioner_box.pyproject +1 -0
  8. bec_widgets-0.93.3/bec_widgets/widgets/device_box/device_box.ui → bec_widgets-0.93.5/bec_widgets/widgets/positioner_box/positioner_box.ui +30 -3
  9. bec_widgets-0.93.3/bec_widgets/widgets/device_box/device_box_plugin.py → bec_widgets-0.93.5/bec_widgets/widgets/positioner_box/positioner_box_plugin.py +10 -11
  10. bec_widgets-0.93.5/bec_widgets/widgets/positioner_box/register_positioner_box.py +15 -0
  11. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/pyproject.toml +1 -1
  12. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/end-2-end/test_bec_dock_rpc_e2e.py +13 -2
  13. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/end-2-end/test_bec_figure_rpc_e2e.py +9 -7
  14. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_bec_dock.py +6 -4
  15. bec_widgets-0.93.5/tests/unit_tests/test_positioner_box.py +104 -0
  16. bec_widgets-0.93.3/bec_widgets/widgets/device_box/device_box.pyproject +0 -1
  17. bec_widgets-0.93.3/bec_widgets/widgets/device_box/register_device_box.py +0 -15
  18. bec_widgets-0.93.3/tests/unit_tests/test_device_box.py +0 -98
  19. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/.git_hooks/pre-commit +0 -0
  20. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/.gitignore +0 -0
  21. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/.gitlab/issue_templates/bug_report_template.md +0 -0
  22. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/.gitlab/issue_templates/documentation_update_template.md +0 -0
  23. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/.gitlab/issue_templates/feature_request_template.md +0 -0
  24. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/.gitlab/merge_request_templates/default.md +0 -0
  25. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/.gitlab-ci.yml +0 -0
  26. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/.pylintrc +0 -0
  27. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/.readthedocs.yaml +0 -0
  28. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/LICENSE +0 -0
  29. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/README.md +0 -0
  30. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/__init__.py +0 -0
  31. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/app_icons/BEC-Dark.png +0 -0
  32. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
  33. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/app_icons/terminal_icon.png +0 -0
  34. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/code.png +0 -0
  35. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/color_button.png +0 -0
  36. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/colormap_selector.png +0 -0
  37. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/device_combo_box.png +0 -0
  38. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/device_line_edit.png +0 -0
  39. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/dock_area.png +0 -0
  40. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/games.png +0 -0
  41. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/image.png +0 -0
  42. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/motor_map.png +0 -0
  43. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/position_indicator.png +0 -0
  44. /bec_widgets-0.93.3/bec_widgets/assets/designer_icons/device_box.png → /bec_widgets-0.93.5/bec_widgets/assets/designer_icons/positioner_box.png +0 -0
  45. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/queue.png +0 -0
  46. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/ring_progress.png +0 -0
  47. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/scan_control.png +0 -0
  48. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/spinner.png +0 -0
  49. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/status.png +0 -0
  50. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/stop.png +0 -0
  51. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/text.png +0 -0
  52. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/toggle.png +0 -0
  53. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/waveform.png +0 -0
  54. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/designer_icons/web.png +0 -0
  55. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/status_icons/error.svg +0 -0
  56. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/status_icons/not_connected.svg +0 -0
  57. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/status_icons/refresh.svg +0 -0
  58. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/status_icons/running.svg +0 -0
  59. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/status_icons/warning.svg +0 -0
  60. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/add.svg +0 -0
  61. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/attach_all.svg +0 -0
  62. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/auto_range.svg +0 -0
  63. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/compare.svg +0 -0
  64. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/connection.svg +0 -0
  65. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/drag_pan_mode.svg +0 -0
  66. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/export.svg +0 -0
  67. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/fft.svg +0 -0
  68. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/fitting_parameters.svg +0 -0
  69. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/history.svg +0 -0
  70. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/image.svg +0 -0
  71. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/image_autorange.svg +0 -0
  72. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/import.svg +0 -0
  73. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/line_axis.svg +0 -0
  74. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/line_curve.svg +0 -0
  75. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/lock_aspect_ratio.svg +0 -0
  76. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/log_scale.png +0 -0
  77. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/motor_map.svg +0 -0
  78. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/photo_library.svg +0 -0
  79. /bec_widgets-0.93.3/bec_widgets/assets/toolbar_icons/device_box.svg → /bec_widgets-0.93.5/bec_widgets/assets/toolbar_icons/positioner_box.svg +0 -0
  80. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/progress.svg +0 -0
  81. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/queue.svg +0 -0
  82. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/rectangle_mode.svg +0 -0
  83. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/remove.svg +0 -0
  84. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/reset_settings.svg +0 -0
  85. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/restore_state.svg +0 -0
  86. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/ring_progress.svg +0 -0
  87. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/rotate_left.svg +0 -0
  88. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/rotate_right.svg +0 -0
  89. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/save.svg +0 -0
  90. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/save_state.svg +0 -0
  91. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/scan_control.svg +0 -0
  92. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/settings.svg +0 -0
  93. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/status.svg +0 -0
  94. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/terminal.svg +0 -0
  95. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/transform.svg +0 -0
  96. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/assets/toolbar_icons/waveform.svg +0 -0
  97. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/cli/__init__.py +0 -0
  98. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/cli/auto_updates.py +0 -0
  99. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/cli/client_utils.py +0 -0
  100. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/cli/generate_cli.py +0 -0
  101. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/cli/rpc_register.py +0 -0
  102. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/cli/rpc_wigdet_handler.py +0 -0
  103. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/cli/server.py +0 -0
  104. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/examples/__init__.py +0 -0
  105. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/examples/general_app/__init__.py +0 -0
  106. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/examples/general_app/general_app.py +0 -0
  107. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/examples/general_app/general_app.ui +0 -0
  108. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/examples/general_app/web_links.py +0 -0
  109. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  110. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
  111. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
  112. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
  113. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
  114. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
  115. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
  116. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
  117. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
  118. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/qt_utils/__init__.py +0 -0
  119. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/qt_utils/error_popups.py +0 -0
  120. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/qt_utils/settings_dialog.py +0 -0
  121. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/qt_utils/toolbar.py +0 -0
  122. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/__init__.py +0 -0
  123. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/bec_connector.py +0 -0
  124. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/bec_designer.py +0 -0
  125. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/bec_dispatcher.py +0 -0
  126. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/bec_table.py +0 -0
  127. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/bec_widget.py +0 -0
  128. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/colors.py +0 -0
  129. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/container_utils.py +0 -0
  130. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/crosshair.py +0 -0
  131. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/entry_validator.py +0 -0
  132. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/generate_designer_plugin.py +0 -0
  133. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/layout_manager.py +0 -0
  134. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
  135. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/plugin_templates/register.template +0 -0
  136. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/plugin_utils.py +0 -0
  137. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/reference_utils.py +0 -0
  138. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/rpc_decorator.py +0 -0
  139. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/thread_checker.py +0 -0
  140. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/ui_loader.py +0 -0
  141. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/validator_delegate.py +0 -0
  142. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/widget_io.py +0 -0
  143. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/utils/yaml_dialog.py +0 -0
  144. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/__init__.py +0 -0
  145. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/base_classes/__init__.py +0 -0
  146. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/base_classes/device_input_base.py +0 -0
  147. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/bec_queue/__init__.py +0 -0
  148. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/bec_queue/bec_queue.py +0 -0
  149. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/bec_queue/bec_queue.pyproject +0 -0
  150. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/bec_queue/bec_queue_plugin.py +0 -0
  151. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/bec_queue/register_bec_queue.py +0 -0
  152. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/bec_status_box/__init__.py +0 -0
  153. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/bec_status_box/bec_status_box.py +0 -0
  154. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/bec_status_box/bec_status_box.pyproject +0 -0
  155. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py +0 -0
  156. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/bec_status_box/register_bec_status_box.py +0 -0
  157. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/bec_status_box/status_item.py +0 -0
  158. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/color_button/__init__.py +0 -0
  159. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/color_button/color_button.py +0 -0
  160. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/color_button/color_button.pyproject +0 -0
  161. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/color_button/color_button_plugin.py +0 -0
  162. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/color_button/register_color_button.py +0 -0
  163. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/colormap_selector/__init__.py +0 -0
  164. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/colormap_selector/colormap_selector.py +0 -0
  165. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/colormap_selector/colormap_selector.pyproject +0 -0
  166. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py +0 -0
  167. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/colormap_selector/register_colormap_selector.py +0 -0
  168. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/console/console.py +0 -0
  169. {bec_widgets-0.93.3/bec_widgets/widgets/device_box → bec_widgets-0.93.5/bec_widgets/widgets/device_combobox}/__init__.py +0 -0
  170. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/device_combobox/device_combo_box.pyproject +0 -0
  171. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/device_combobox/device_combo_box_plugin.py +0 -0
  172. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/device_combobox/device_combobox.py +0 -0
  173. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/device_combobox/register_device_combo_box.py +0 -0
  174. {bec_widgets-0.93.3/bec_widgets/widgets/device_combobox → bec_widgets-0.93.5/bec_widgets/widgets/device_line_edit}/__init__.py +0 -0
  175. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/device_line_edit/device_line_edit.py +0 -0
  176. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/device_line_edit/device_line_edit.pyproject +0 -0
  177. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py +0 -0
  178. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/device_line_edit/register_device_line_edit.py +0 -0
  179. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/dock/__init__.py +0 -0
  180. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/dock/dock.py +0 -0
  181. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/dock/dock_area.pyproject +0 -0
  182. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/dock/dock_area_plugin.py +0 -0
  183. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/dock/register_dock_area.py +0 -0
  184. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/figure/__init__.py +0 -0
  185. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/figure/figure.py +0 -0
  186. {bec_widgets-0.93.3/bec_widgets/widgets/device_line_edit → bec_widgets-0.93.5/bec_widgets/widgets/figure/plots}/__init__.py +0 -0
  187. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/figure/plots/axis_settings.py +0 -0
  188. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/figure/plots/axis_settings.ui +0 -0
  189. {bec_widgets-0.93.3/bec_widgets/widgets/figure/plots → bec_widgets-0.93.5/bec_widgets/widgets/figure/plots/image}/__init__.py +0 -0
  190. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/figure/plots/image/image.py +0 -0
  191. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/figure/plots/image/image_item.py +0 -0
  192. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/figure/plots/image/image_processor.py +0 -0
  193. {bec_widgets-0.93.3/bec_widgets/widgets/figure/plots/image → bec_widgets-0.93.5/bec_widgets/widgets/figure/plots/motor_map}/__init__.py +0 -0
  194. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/figure/plots/motor_map/motor_map.py +0 -0
  195. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/figure/plots/plot_base.py +0 -0
  196. {bec_widgets-0.93.3/bec_widgets/widgets/figure/plots/motor_map → bec_widgets-0.93.5/bec_widgets/widgets/figure/plots/waveform}/__init__.py +0 -0
  197. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/figure/plots/waveform/waveform.py +0 -0
  198. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +0 -0
  199. {bec_widgets-0.93.3/bec_widgets/widgets/figure/plots/waveform → bec_widgets-0.93.5/bec_widgets/widgets/image}/__init__.py +0 -0
  200. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/image/bec_image_widget.pyproject +0 -0
  201. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/image/bec_image_widget_plugin.py +0 -0
  202. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/image/image_widget.py +0 -0
  203. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/image/register_bec_image_widget.py +0 -0
  204. {bec_widgets-0.93.3/bec_widgets/widgets/image → bec_widgets-0.93.5/bec_widgets/widgets/jupyter_console}/__init__.py +0 -0
  205. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/jupyter_console/jupyter_console.py +0 -0
  206. {bec_widgets-0.93.3/bec_widgets/widgets/jupyter_console → bec_widgets-0.93.5/bec_widgets/widgets/motor_map}/__init__.py +0 -0
  207. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/motor_map/bec_motor_map_widget.pyproject +0 -0
  208. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py +0 -0
  209. {bec_widgets-0.93.3/bec_widgets/widgets/motor_map → bec_widgets-0.93.5/bec_widgets/widgets/motor_map/motor_map_dialog}/__init__.py +0 -0
  210. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py +0 -0
  211. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui +0 -0
  212. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/motor_map/motor_map_widget.py +0 -0
  213. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py +0 -0
  214. {bec_widgets-0.93.3/bec_widgets/widgets/motor_map/motor_map_dialog → bec_widgets-0.93.5/bec_widgets/widgets/position_indicator}/__init__.py +0 -0
  215. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/position_indicator/position_indicator.py +0 -0
  216. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/position_indicator/position_indicator.pyproject +0 -0
  217. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/position_indicator/position_indicator_plugin.py +0 -0
  218. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/position_indicator/register_position_indicator.py +0 -0
  219. {bec_widgets-0.93.3/bec_widgets/widgets/position_indicator → bec_widgets-0.93.5/bec_widgets/widgets/positioner_box}/__init__.py +0 -0
  220. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/ring_progress_bar/__init__.py +0 -0
  221. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/ring_progress_bar/register_ring_progress_bar.py +0 -0
  222. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/ring_progress_bar/ring.py +0 -0
  223. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.py +0 -0
  224. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject +0 -0
  225. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
  226. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/scan_control/__init__.py +0 -0
  227. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/scan_control/register_scan_control.py +0 -0
  228. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/scan_control/scan_control.py +0 -0
  229. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/scan_control/scan_control.pyproject +0 -0
  230. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/scan_control/scan_control_plugin.py +0 -0
  231. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/scan_control/scan_group_box.py +0 -0
  232. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/spinner/__init__.py +0 -0
  233. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/spinner/register_spinner_widget.py +0 -0
  234. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/spinner/spinner.py +0 -0
  235. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/spinner/spinner_widget.pyproject +0 -0
  236. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/spinner/spinner_widget_plugin.py +0 -0
  237. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/stop_button/__init__.py +0 -0
  238. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/stop_button/register_stop_button.py +0 -0
  239. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/stop_button/stop_button.py +0 -0
  240. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/stop_button/stop_button.pyproject +0 -0
  241. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/stop_button/stop_button_plugin.py +0 -0
  242. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/text_box/__init__.py +0 -0
  243. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/text_box/register_text_box.py +0 -0
  244. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/text_box/text_box.py +0 -0
  245. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/text_box/text_box.pyproject +0 -0
  246. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/text_box/text_box_plugin.py +0 -0
  247. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/toggle/__init__.py +0 -0
  248. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/toggle/register_toggle_switch.py +0 -0
  249. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/toggle/toggle.py +0 -0
  250. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/toggle/toggle_switch.pyproject +0 -0
  251. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/toggle/toggle_switch_plugin.py +0 -0
  252. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/vscode/__init__.py +0 -0
  253. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/vscode/register_vs_code_editor.py +0 -0
  254. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/vscode/vs_code_editor.pyproject +0 -0
  255. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/vscode/vs_code_editor_plugin.py +0 -0
  256. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/vscode/vscode.py +0 -0
  257. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/waveform/__init__.py +0 -0
  258. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/waveform/bec_waveform_widget.pyproject +0 -0
  259. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py +0 -0
  260. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/waveform/register_bec_waveform_widget.py +0 -0
  261. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/waveform/waveform_popups/__init__.py +0 -0
  262. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/__init__.py +0 -0
  263. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.py +0 -0
  264. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.ui +0 -0
  265. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/__init__.py +0 -0
  266. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary.ui +0 -0
  267. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py +0 -0
  268. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/waveform/waveform_widget.py +0 -0
  269. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/website/__init__.py +0 -0
  270. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/website/register_website_widget.py +0 -0
  271. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/website/website.py +0 -0
  272. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/website/website_widget.pyproject +0 -0
  273. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/bec_widgets/widgets/website/website_widget_plugin.py +0 -0
  274. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/Makefile +0 -0
  275. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/_static/custom.css +0 -0
  276. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/_templates/custom-class-template.rst +0 -0
  277. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/_templates/custom-module-template.rst +0 -0
  278. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/api_reference/api_reference.md +0 -0
  279. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/assets/apps_48dp.svg +0 -0
  280. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/assets/display_settings_48dp.svg +0 -0
  281. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/assets/index_api.svg +0 -0
  282. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/assets/index_contribute.svg +0 -0
  283. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/assets/index_getting_started.svg +0 -0
  284. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/assets/index_user_guide.svg +0 -0
  285. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/assets/rocket_launch_48dp.svg +0 -0
  286. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/conf.py +0 -0
  287. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/developer/developer.md +0 -0
  288. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/developer/getting_started/development.md +0 -0
  289. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/developer/getting_started/getting_started.md +0 -0
  290. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/developer/widgets/widgets.md +0 -0
  291. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/index.md +0 -0
  292. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/introduction/introduction.md +0 -0
  293. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/make.bat +0 -0
  294. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/requirements.txt +0 -0
  295. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/api_reference/api_reference.md +0 -0
  296. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/applications/applications.md +0 -0
  297. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/customisation.md +0 -0
  298. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/getting_started/BECDockArea.png +0 -0
  299. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/getting_started/auto_updates.md +0 -0
  300. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/getting_started/getting_started.md +0 -0
  301. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/getting_started/gui_complex_gui.gif +0 -0
  302. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/getting_started/installation.md +0 -0
  303. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/getting_started/quick_start.md +0 -0
  304. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/getting_started/video_tutorials.md +0 -0
  305. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/user.md +0 -0
  306. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/widgets/BECFigure.png +0 -0
  307. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/widgets/bec_figure.md +0 -0
  308. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/widgets/bec_figure_dap.gif +0 -0
  309. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/widgets/bec_status_box.gif +0 -0
  310. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/widgets/bec_status_box.md +0 -0
  311. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/widgets/buttons.md +0 -0
  312. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/widgets/image_plot.gif +0 -0
  313. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/widgets/motor.gif +0 -0
  314. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/widgets/progress_bar.gif +0 -0
  315. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/widgets/ring_progress_bar.md +0 -0
  316. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/widgets/scan_control.gif +0 -0
  317. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/widgets/scan_control.md +0 -0
  318. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/widgets/scatter_2D.gif +0 -0
  319. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/widgets/text_box.md +0 -0
  320. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/widgets/w1D.gif +0 -0
  321. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/widgets/website.md +0 -0
  322. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/docs/user/widgets/widgets.md +0 -0
  323. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/__init__.py +0 -0
  324. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/end-2-end/__init__.py +0 -0
  325. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/end-2-end/conftest.py +0 -0
  326. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/end-2-end/test_rpc_register_e2e.py +0 -0
  327. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/end-2-end/test_scan_control_e2e.py +0 -0
  328. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/references/SpinnerWidget/SpinnerWidget_darwin.png +0 -0
  329. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/references/SpinnerWidget/SpinnerWidget_linux.png +0 -0
  330. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/references/SpinnerWidget/SpinnerWidget_started_darwin.png +0 -0
  331. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/references/SpinnerWidget/SpinnerWidget_started_linux.png +0 -0
  332. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/__init__.py +0 -0
  333. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/client_mocks.py +0 -0
  334. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/conftest.py +0 -0
  335. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_bec_connector.py +0 -0
  336. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_bec_dispatcher.py +0 -0
  337. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_bec_figure.py +0 -0
  338. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_bec_image.py +0 -0
  339. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_bec_image_widget.py +0 -0
  340. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_bec_motor_map.py +0 -0
  341. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_bec_queue.py +0 -0
  342. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_bec_status_box.py +0 -0
  343. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_client_utils.py +0 -0
  344. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_color_map_selector.py +0 -0
  345. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_color_validation.py +0 -0
  346. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_configs/config_device.yaml +0 -0
  347. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_configs/config_device_no_entry.yaml +0 -0
  348. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_configs/config_scan.yaml +0 -0
  349. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_crosshair.py +0 -0
  350. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_device_input_base.py +0 -0
  351. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_device_input_widgets.py +0 -0
  352. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_error_utils.py +0 -0
  353. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_generate_cli_client.py +0 -0
  354. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_generate_plugin.py +0 -0
  355. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_motor_map_widget.py +0 -0
  356. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_msgs/__init__.py +0 -0
  357. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_msgs/available_scans_message.py +0 -0
  358. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_plot_base.py +0 -0
  359. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_plugin_utils.py +0 -0
  360. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_ring_progress_bar.py +0 -0
  361. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_rpc_register.py +0 -0
  362. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_rpc_server.py +0 -0
  363. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_rpc_widget_handler.py +0 -0
  364. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_scan_control.py +0 -0
  365. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_scan_control_group_box.py +0 -0
  366. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_setting_dialog.py +0 -0
  367. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_spinner.py +0 -0
  368. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_stop_button.py +0 -0
  369. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_text_box_widget.py +0 -0
  370. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_toggle.py +0 -0
  371. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_vscode_widget.py +0 -0
  372. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_waveform1d.py +0 -0
  373. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_waveform_widget.py +0 -0
  374. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_website_widget.py +0 -0
  375. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_widget_io.py +0 -0
  376. {bec_widgets-0.93.3 → bec_widgets-0.93.5}/tests/unit_tests/test_yaml_dialog.py +0 -0
@@ -1,5 +1,29 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.93.5 (2024-08-08)
4
+
5
+ ### Fix
6
+
7
+ * fix(positioner_box): icons fixed ([`281633d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/281633deff15b6879dac3a4f0770fa6949aaecdc))
8
+
9
+ ### Refactor
10
+
11
+ * refactor: add button for positioner selection ([`0d190c5`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/0d190c5c5996e59fec4bdd44d2003e10e200b009))
12
+
13
+ ### Test
14
+
15
+ * test(dap): wait for fit ([`6269009`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/6269009e5451f830cdee58a514c7858483488a8d))
16
+
17
+ * test(auto-update): wait for rendering ([`6d2442d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/6d2442d23c683fe92af13df982ce681c07e99cde))
18
+
19
+ ## v0.93.4 (2024-08-07)
20
+
21
+ ### Fix
22
+
23
+ * fix: rename DeviceBox to PositionerBox, fix test for validation ([`37aa371`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/37aa371e7c4c62d70abf37abc125db0c088790fe))
24
+
25
+ * fix: add validation for bec_lib.device.Positioner; closes #268 ([`eb54e9f`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/eb54e9f788e97af23db8fe0c78f8facb8688bb99))
26
+
3
27
  ## v0.93.3 (2024-08-07)
4
28
 
5
29
  ### Fix
@@ -121,25 +145,3 @@ This reverts commit fd6ae91993a23a7b8dbb2cf3c4b7c3eda6d2b0f6 ([`5aad401`](https:
121
145
  * fix(dock): custom label can be created closable ([`4457ef2`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4457ef2147e21b856c9dcaf63c81ba98002dcaf1))
122
146
 
123
147
  * fix(device_combobox): set minimum size to 125px ([`1206e15`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/1206e153094cd8505badf69a1461572a76b4c5ad))
124
-
125
- ## v0.91.0 (2024-07-23)
126
-
127
- ### Feature
128
-
129
- * feat(dock_area): plugin added ([`a16b87a`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a16b87ac28d164230dd2e8020f50ff3a63cd407e))
130
-
131
- * feat(dock_area): Added toolbar to dock area to add widgets without CLI interactions ([`cce1367`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/cce1367a72fca7206d351894bd1831b7bbfa7ec6))
132
-
133
- * feat(toolbar): expandable menu actions ([`28f26e9`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/28f26e92a46063db1a194be552156a5d3b2c43e7))
134
-
135
- ### Fix
136
-
137
- * fix(status_item): icons changed to material design ([`1b9c55a`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/1b9c55a46a0dfd8678c8e95ff64dd6e8cfb9233e))
138
-
139
- * fix(plugins): Qt Designer plugins icons adjusted ([`f4844d2`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f4844d2e067ce75dc64b89b230d7932b308ddfc2))
140
-
141
- ### Test
142
-
143
- * test(dock_area): tests extended ([`06fab0e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/06fab0eab926cef5677d4988fd1fce09da342dd8))
144
-
145
- ## v0.90.0 (2024-07-23)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.93.3
3
+ Version: 0.93.5
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
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#FFFFFF">
2
+ <path d="M180-404.87v-50.26h289.75v50.26H180Zm0-162.57v-50.25h454.62v50.25H180Zm0-162.3V-780h454.62v50.26H180ZM524.62-180v-105.69l217.15-216.16q7.46-7.07 16.11-10.3 8.65-3.23 17.3-3.23 9.43 0 18.25 3.53 8.82 3.54 16.03 10.62l37 37.38q6.87 7.47 10.21 16.16Q860-439 860-430.31t-3.37 17.69q-3.37 9-10.52 16.46L630.31-180H524.62Zm250.69-211.69 37-38.62-37-37.38-38 38 38 38Z"/>
3
+ </svg>
@@ -21,9 +21,9 @@ class Widgets(str, enum.Enum):
21
21
  BECQueue = "BECQueue"
22
22
  BECStatusBox = "BECStatusBox"
23
23
  BECWaveformWidget = "BECWaveformWidget"
24
- DeviceBox = "DeviceBox"
25
24
  DeviceComboBox = "DeviceComboBox"
26
25
  DeviceLineEdit = "DeviceLineEdit"
26
+ PositionerBox = "PositionerBox"
27
27
  RingProgressBar = "RingProgressBar"
28
28
  ScanControl = "ScanControl"
29
29
  StopButton = "StopButton"
@@ -2287,7 +2287,7 @@ class BECWaveformWidget(RPCBase):
2287
2287
  """
2288
2288
 
2289
2289
 
2290
- class DeviceBox(RPCBase):
2290
+ class DeviceComboBox(RPCBase):
2291
2291
  @property
2292
2292
  @rpc_call
2293
2293
  def _config_dict(self) -> "dict":
@@ -2305,7 +2305,7 @@ class DeviceBox(RPCBase):
2305
2305
  """
2306
2306
 
2307
2307
 
2308
- class DeviceComboBox(RPCBase):
2308
+ class DeviceInputBase(RPCBase):
2309
2309
  @property
2310
2310
  @rpc_call
2311
2311
  def _config_dict(self) -> "dict":
@@ -2323,7 +2323,7 @@ class DeviceComboBox(RPCBase):
2323
2323
  """
2324
2324
 
2325
2325
 
2326
- class DeviceInputBase(RPCBase):
2326
+ class DeviceLineEdit(RPCBase):
2327
2327
  @property
2328
2328
  @rpc_call
2329
2329
  def _config_dict(self) -> "dict":
@@ -2341,21 +2341,14 @@ class DeviceInputBase(RPCBase):
2341
2341
  """
2342
2342
 
2343
2343
 
2344
- class DeviceLineEdit(RPCBase):
2345
- @property
2344
+ class PositionerBox(RPCBase):
2346
2345
  @rpc_call
2347
- def _config_dict(self) -> "dict":
2348
- """
2349
- Get the configuration of the widget.
2350
-
2351
- Returns:
2352
- dict: The configuration of the widget.
2346
+ def set_positioner(self, positioner: str):
2353
2347
  """
2348
+ Set the device
2354
2349
 
2355
- @rpc_call
2356
- def _get_all_rpc(self) -> "dict":
2357
- """
2358
- Get all registered RPC objects.
2350
+ Args:
2351
+ positioner (Positioner | str) : Positioner to set, accepts str or the device
2359
2352
  """
2360
2353
 
2361
2354
 
@@ -83,8 +83,8 @@ class BECDockArea(BECWidget, QWidget):
83
83
  "scan_control": IconAction(
84
84
  icon_path="scan_control.svg", tooltip="Add Scan Control"
85
85
  ),
86
- "device_box": IconAction(
87
- icon_path="device_box.svg", tooltip="Add Device Box"
86
+ "positioner_box": IconAction(
87
+ icon_path="positioner_box.svg", tooltip="Add Device Box"
88
88
  ),
89
89
  },
90
90
  ),
@@ -132,8 +132,8 @@ class BECDockArea(BECWidget, QWidget):
132
132
  self.toolbar.widgets["menu_devices"].widgets["scan_control"].triggered.connect(
133
133
  lambda: self.add_dock(widget="ScanControl", prefix="scan_control")
134
134
  )
135
- self.toolbar.widgets["menu_devices"].widgets["device_box"].triggered.connect(
136
- lambda: self.add_dock(widget="DeviceBox", prefix="device_box")
135
+ self.toolbar.widgets["menu_devices"].widgets["positioner_box"].triggered.connect(
136
+ lambda: self.add_dock(widget="PositionerBox", prefix="positioner_box")
137
137
  )
138
138
 
139
139
  # Menu Utils
@@ -1,22 +1,40 @@
1
+ """ Module for a PositionerBox widget to control a positioner device."""
2
+
1
3
  import os
2
4
  import uuid
3
5
 
6
+ from bec_lib.device import Positioner
4
7
  from bec_lib.endpoints import MessageEndpoints
8
+ from bec_lib.logger import bec_logger
5
9
  from bec_lib.messages import ScanQueueMessage
6
- from qtpy.QtCore import Property, Signal, Slot
7
- from qtpy.QtGui import QDoubleValidator
8
- from qtpy.QtWidgets import QDoubleSpinBox, QVBoxLayout, QWidget
10
+ from qtpy.QtCore import Property, QSize, Signal, Slot
11
+ from qtpy.QtGui import QDoubleValidator, QIcon
12
+ from qtpy.QtWidgets import QDialog, QDoubleSpinBox, QPushButton, QVBoxLayout, QWidget
9
13
 
10
14
  from bec_widgets.utils import UILoader
11
15
  from bec_widgets.utils.bec_widget import BECWidget
12
16
  from bec_widgets.utils.colors import apply_theme
17
+ from bec_widgets.widgets.device_line_edit.device_line_edit import DeviceLineEdit
18
+
19
+ logger = bec_logger.logger
20
+
21
+ MODULE_PATH = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
13
22
 
14
23
 
15
- class DeviceBox(BECWidget, QWidget):
24
+ class PositionerBox(BECWidget, QWidget):
25
+ """Simple Widget to control a positioner in box form"""
26
+
27
+ USER_ACCESS = ["set_positioner"]
16
28
  device_changed = Signal(str, str)
17
29
 
18
- def __init__(self, parent=None, device=None, *args, **kwargs):
19
- super().__init__(*args, **kwargs)
30
+ def __init__(self, parent=None, device: Positioner = None, *args, **kwargs):
31
+ """Initialize the PositionerBox widget.
32
+
33
+ Args:
34
+ parent: The parent widget.
35
+ device (Positioner): The device to control.
36
+ """
37
+ super().__init__(**kwargs)
20
38
  QWidget.__init__(self, parent=parent)
21
39
  self.get_bec_shortcuts()
22
40
  self._device = ""
@@ -29,10 +47,11 @@ class DeviceBox(BECWidget, QWidget):
29
47
  self.init_device()
30
48
 
31
49
  def init_ui(self):
50
+ """Init the ui"""
32
51
  self.device_changed.connect(self.on_device_change)
33
52
 
34
53
  current_path = os.path.dirname(__file__)
35
- self.ui = UILoader(self).loader(os.path.join(current_path, "device_box.ui"))
54
+ self.ui = UILoader(self).loader(os.path.join(current_path, "positioner_box.ui"))
36
55
 
37
56
  self.layout = QVBoxLayout(self)
38
57
  self.layout.addWidget(self.ui)
@@ -55,30 +74,105 @@ class DeviceBox(BECWidget, QWidget):
55
74
  self.setpoint_validator = QDoubleValidator()
56
75
  self.ui.setpoint.setValidator(self.setpoint_validator)
57
76
  self.ui.spinner_widget.start()
77
+ self.ui.tool_button.clicked.connect(self._open_dialog_selection)
78
+ icon = QIcon()
79
+ icon.addFile(
80
+ os.path.join(MODULE_PATH, "assets", "toolbar_icons", "device_line_edit.svg"),
81
+ size=QSize(16, 16),
82
+ )
83
+ self.ui.tool_button.setIcon(icon)
84
+
85
+ def _open_dialog_selection(self):
86
+ """Open dialog window for positioner selection"""
87
+ dialog = QDialog(self)
88
+ dialog.setWindowTitle("Positioner Selection")
89
+ layout = QVBoxLayout()
90
+ line_edit = DeviceLineEdit(self, client=self.client, device_filter="Positioner")
91
+ line_edit.textChanged.connect(self._positioner_changed)
92
+ layout.addWidget(line_edit)
93
+ close_button = QPushButton("Close")
94
+ close_button.clicked.connect(dialog.accept)
95
+ layout.addWidget(close_button)
96
+ dialog.setLayout(layout)
97
+ dialog.exec()
98
+
99
+ @Slot(str)
100
+ def _positioner_changed(self, positioner_name: str):
101
+ """Changed input in combobox.
102
+
103
+ Args:
104
+ positioner_name (str): name of the positioner
105
+ """
106
+ self.set_positioner(positioner_name)
58
107
 
59
108
  def init_device(self):
60
- if self.device in self.dev:
109
+ """Init the device view and readback"""
110
+ if self._check_device_is_valid(self.device):
61
111
  data = self.dev[self.device].read()
62
112
  self.on_device_readback({"signals": data}, {})
63
113
 
114
+ def _toogle_enable_buttons(self, enable: bool) -> None:
115
+ """Toogle enable/disable on available buttons
116
+
117
+ Args:
118
+ enable (bool): Enable buttons
119
+ """
120
+ self.ui.tweak_left.setEnabled(enable)
121
+ self.ui.tweak_right.setEnabled(enable)
122
+ self.ui.stop.setEnabled(enable)
123
+ self.ui.setpoint.setEnabled(enable)
124
+ self.ui.step_size.setEnabled(enable)
125
+
64
126
  @Property(str)
65
127
  def device(self):
128
+ """Property to set the device"""
66
129
  return self._device
67
130
 
68
131
  @device.setter
69
- def device(self, value):
132
+ def device(self, value: str):
133
+ """Setter, checks if device is a string"""
70
134
  if not value or not isinstance(value, str):
71
135
  return
72
136
  old_device = self._device
73
137
  self._device = value
74
138
  self.device_changed.emit(old_device, value)
75
139
 
140
+ def set_positioner(self, positioner: str):
141
+ """Set the device
142
+
143
+ Args:
144
+ positioner (Positioner | str) : Positioner to set, accepts str or the device
145
+ """
146
+ if isinstance(positioner, Positioner):
147
+ positioner = positioner.name
148
+ self.device = positioner
149
+
150
+ def _check_device_is_valid(self, device: str):
151
+ """Check if the device is a positioner
152
+
153
+ Args:
154
+ device (str): The device name
155
+ """
156
+ if device not in self.dev:
157
+ logger.info(f"Device {device} not found in the device list")
158
+ return False
159
+ if not isinstance(self.dev[device], Positioner):
160
+ logger.info(f"Device {device} is not a positioner")
161
+ return False
162
+ return True
163
+
76
164
  @Slot(str, str)
77
165
  def on_device_change(self, old_device: str, new_device: str):
78
- if new_device not in self.dev:
79
- print(f"Device {new_device} not found in the device list")
166
+ """Upon changing the device, a check will be performed if the device is a Positioner.
167
+
168
+ Args:
169
+ old_device (str): The old device name.
170
+ new_device (str): The new device name.
171
+ """
172
+ if not self._check_device_is_valid(new_device):
80
173
  return
81
- print(f"Device changed from {old_device} to {new_device}")
174
+ logger.info(f"Device changed from {old_device} to {new_device}")
175
+ self._toogle_enable_buttons(True)
82
176
  self.init_device()
83
177
  self.bec_dispatcher.disconnect_slot(
84
178
  self.on_device_readback, MessageEndpoints.device_readback(old_device)
@@ -98,6 +192,12 @@ class DeviceBox(BECWidget, QWidget):
98
192
 
99
193
  @Slot(dict, dict)
100
194
  def on_device_readback(self, msg_content: dict, metadata: dict):
195
+ """Callback for device readback.
196
+
197
+ Args:
198
+ msg_content (dict): The message content.
199
+ metadata (dict): The message metadata.
200
+ """
101
201
  signals = msg_content.get("signals", {})
102
202
  # pylint: disable=protected-access
103
203
  hinted_signals = self.dev[self.device]._hints
@@ -134,7 +234,12 @@ class DeviceBox(BECWidget, QWidget):
134
234
  pos = (readback_val - limits[0]) / (limits[1] - limits[0])
135
235
  self.ui.position_indicator.on_position_update(pos)
136
236
 
137
- def update_limits(self, limits):
237
+ def update_limits(self, limits: tuple):
238
+ """Update limits
239
+
240
+ Args:
241
+ limits (tuple): Limits of the positioner
242
+ """
138
243
  if limits == self._limits:
139
244
  return
140
245
  self._limits = limits
@@ -147,6 +252,7 @@ class DeviceBox(BECWidget, QWidget):
147
252
 
148
253
  @Slot()
149
254
  def on_stop(self):
255
+ """Stop call"""
150
256
  request_id = str(uuid.uuid4())
151
257
  params = {
152
258
  "device": self.device,
@@ -165,18 +271,22 @@ class DeviceBox(BECWidget, QWidget):
165
271
 
166
272
  @property
167
273
  def step_size(self):
274
+ """Step size for tweak"""
168
275
  return self.ui.step_size.value()
169
276
 
170
277
  @Slot()
171
278
  def on_tweak_right(self):
279
+ """Tweak motor right"""
172
280
  self.dev[self.device].move(self.step_size, relative=True)
173
281
 
174
282
  @Slot()
175
283
  def on_tweak_left(self):
284
+ """Tweak motor left"""
176
285
  self.dev[self.device].move(-self.step_size, relative=True)
177
286
 
178
287
  @Slot()
179
288
  def on_setpoint_change(self):
289
+ """Change the setpoint for the motor"""
180
290
  self.ui.setpoint.clearFocus()
181
291
  setpoint = self.ui.setpoint.text()
182
292
  self.dev[self.device].move(float(setpoint), relative=False)
@@ -190,8 +300,8 @@ if __name__ == "__main__": # pragma: no cover
190
300
  from qtpy.QtWidgets import QApplication
191
301
 
192
302
  app = QApplication(sys.argv)
193
- apply_theme("light")
194
- widget = DeviceBox(device="samx")
303
+ apply_theme("dark")
304
+ widget = PositionerBox(device="bpm4i")
195
305
 
196
306
  widget.show()
197
307
  sys.exit(app.exec_())
@@ -0,0 +1 @@
1
+ {'files': ['positioner_box.py']}
@@ -29,17 +29,24 @@
29
29
  <item>
30
30
  <widget class="QGroupBox" name="device_box">
31
31
  <property name="title">
32
- <string>Device Name</string>
32
+ <string>No positioner selected</string>
33
33
  </property>
34
34
  <layout class="QGridLayout" name="gridLayout" rowstretch="0,0,0,0,0">
35
35
  <property name="topMargin">
36
36
  <number>0</number>
37
37
  </property>
38
38
  <item row="3" column="1">
39
- <widget class="QDoubleSpinBox" name="step_size"/>
39
+ <widget class="QDoubleSpinBox" name="step_size">
40
+ <property name="enabled">
41
+ <bool>false</bool>
42
+ </property>
43
+ </widget>
40
44
  </item>
41
45
  <item row="3" column="2">
42
46
  <widget class="QToolButton" name="tweak_right">
47
+ <property name="enabled">
48
+ <bool>false</bool>
49
+ </property>
43
50
  <property name="minimumSize">
44
51
  <size>
45
52
  <width>50</width>
@@ -67,10 +74,20 @@
67
74
  </widget>
68
75
  </item>
69
76
  <item row="2" column="0" colspan="3">
70
- <widget class="QLineEdit" name="setpoint"/>
77
+ <widget class="QLineEdit" name="setpoint">
78
+ <property name="enabled">
79
+ <bool>false</bool>
80
+ </property>
81
+ <property name="alignment">
82
+ <set>Qt::AlignmentFlag::AlignCenter</set>
83
+ </property>
84
+ </widget>
71
85
  </item>
72
86
  <item row="3" column="0">
73
87
  <widget class="QToolButton" name="tweak_left">
88
+ <property name="enabled">
89
+ <bool>false</bool>
90
+ </property>
74
91
  <property name="minimumSize">
75
92
  <size>
76
93
  <width>50</width>
@@ -99,6 +116,9 @@
99
116
  </item>
100
117
  <item row="4" column="0" colspan="3">
101
118
  <widget class="QPushButton" name="stop">
119
+ <property name="enabled">
120
+ <bool>false</bool>
121
+ </property>
102
122
  <property name="text">
103
123
  <string>Stop</string>
104
124
  </property>
@@ -108,6 +128,13 @@
108
128
  <layout class="QVBoxLayout" name="verticalLayout_2">
109
129
  <item>
110
130
  <layout class="QHBoxLayout" name="horizontalLayout">
131
+ <item>
132
+ <widget class="QToolButton" name="tool_button">
133
+ <property name="text">
134
+ <string>...</string>
135
+ </property>
136
+ </widget>
137
+ </item>
111
138
  <item>
112
139
  <spacer name="horizontalSpacer">
113
140
  <property name="orientation">
@@ -1,30 +1,29 @@
1
1
  # Copyright (C) 2022 The Qt Company Ltd.
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
+
3
4
  import os
4
5
 
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
7
  from qtpy.QtGui import QIcon
7
8
 
8
- import bec_widgets
9
- from bec_widgets.widgets.device_box.device_box import DeviceBox
9
+ from bec_widgets.widgets.positioner_box.positioner_box import PositionerBox
10
10
 
11
11
  DOM_XML = """
12
12
  <ui language='c++'>
13
- <widget class='DeviceBox' name='device_box'>
13
+ <widget class='PositionerBox' name='positioner_box'>
14
14
  </widget>
15
15
  </ui>
16
16
  """
17
-
18
- MODULE_PATH = os.path.dirname(bec_widgets.__file__)
17
+ MODULE_PATH = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
19
18
 
20
19
 
21
- class DeviceBoxPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
20
+ class PositionerBoxPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
22
21
  def __init__(self):
23
22
  super().__init__()
24
23
  self._form_editor = None
25
24
 
26
25
  def createWidget(self, parent):
27
- t = DeviceBox(parent)
26
+ t = PositionerBox(parent)
28
27
  return t
29
28
 
30
29
  def domXml(self):
@@ -34,11 +33,11 @@ class DeviceBoxPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
34
33
  return "Device Control"
35
34
 
36
35
  def icon(self):
37
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "device_box.png")
36
+ icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "positioner_box.png")
38
37
  return QIcon(icon_path)
39
38
 
40
39
  def includeFile(self):
41
- return "device_box"
40
+ return "positioner_box"
42
41
 
43
42
  def initialize(self, form_editor):
44
43
  self._form_editor = form_editor
@@ -50,10 +49,10 @@ class DeviceBoxPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
50
49
  return self._form_editor is not None
51
50
 
52
51
  def name(self):
53
- return "DeviceBox"
52
+ return "PositionerBox"
54
53
 
55
54
  def toolTip(self):
56
- return "A widget for controlling a single positioner. "
55
+ return "Simple Widget to control a positioner in box form"
57
56
 
58
57
  def whatsThis(self):
59
58
  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.positioner_box.positioner_box_plugin import PositionerBoxPlugin
10
+
11
+ QPyDesignerCustomWidgetCollection.addCustomWidget(PositionerBoxPlugin())
12
+
13
+
14
+ if __name__ == "__main__": # pragma: no cover
15
+ main()
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "0.93.3"
7
+ version = "0.93.5"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [
@@ -9,6 +9,10 @@ from bec_widgets.cli.auto_updates import AutoUpdates
9
9
  from bec_widgets.cli.client import BECDockArea, BECFigure, BECImageShow, BECMotorMap, BECWaveform
10
10
  from bec_widgets.utils import Colors
11
11
 
12
+ # pylint: disable=unused-argument
13
+ # pylint: disable=redefined-outer-name
14
+ # pylint: disable=too-many-locals
15
+
12
16
 
13
17
  def test_rpc_add_dock_with_figure_e2e(bec_client_lib, rpc_server_dock):
14
18
  # BEC client shortcuts
@@ -227,13 +231,20 @@ def test_ring_bar_scan_update(bec_client_lib, rpc_server_dock):
227
231
  assert bar_config["rings"][1]["max_value"] == final_samy
228
232
 
229
233
 
230
- def test_auto_update(bec_client_lib, rpc_server_dock):
234
+ def test_auto_update(bec_client_lib, rpc_server_dock, qtbot):
231
235
  dock = BECDockArea(rpc_server_dock)
232
236
 
233
237
  AutoUpdates.enabled = True
234
238
  AutoUpdates.create_default_dock = True
235
239
  dock.auto_updates = AutoUpdates(gui=dock)
236
240
  dock.auto_updates.start_default_dock()
241
+
242
+ def get_default_figure():
243
+ return dock.auto_updates.get_default_figure()
244
+
245
+ qtbot.waitUntil(lambda: get_default_figure() is not None, timeout=10000)
246
+ plt = get_default_figure()
247
+
237
248
  dock.selected_device = "bpm4i"
238
249
 
239
250
  # we need to start the update script manually; normally this is done when the GUI is started
@@ -250,7 +261,6 @@ def test_auto_update(bec_client_lib, rpc_server_dock):
250
261
  last_scan_data = queue.scan_storage.storage[-1].data
251
262
 
252
263
  # get data from curves
253
- plt = dock.auto_updates.get_default_figure()
254
264
  widgets = plt.widget_list
255
265
  plt_data = widgets[0].get_all_data()
256
266
 
@@ -271,6 +281,7 @@ def test_auto_update(bec_client_lib, rpc_server_dock):
271
281
 
272
282
  plt = dock.auto_updates.get_default_figure()
273
283
  widgets = plt.widget_list
284
+ qtbot.waitUntil(lambda: len(plt.widget_list) > 0, timeout=5000)
274
285
  plt_data = widgets[0].get_all_data()
275
286
 
276
287
  last_scan_data = queue.scan_storage.storage[-1].data
@@ -158,7 +158,7 @@ def test_rpc_motor_map(rpc_server_figure, bec_client_lib):
158
158
  )
159
159
 
160
160
 
161
- def test_dap_rpc(rpc_server_figure, bec_client_lib):
161
+ def test_dap_rpc(rpc_server_figure, bec_client_lib, qtbot):
162
162
 
163
163
  fig = BECFigure(rpc_server_figure)
164
164
  plt = fig.plot(x_name="samx", y_name="bpm4i", dap="GaussianModel")
@@ -178,13 +178,15 @@ def test_dap_rpc(rpc_server_figure, bec_client_lib):
178
178
  res = scans.line_scan(dev.samx, 0, 8, steps=50, relative=False)
179
179
  res.wait()
180
180
 
181
- time.sleep(2)
181
+ # especially on slow machines, the fit might not be done yet
182
+ # so we wait until the fit reaches the expected value
183
+ def wait_for_fit():
184
+ dap_curve = plt.get_curve("bpm4i-bpm4i-GaussianModel")
185
+ fit_params = dap_curve.dap_params
186
+ print(fit_params)
187
+ return np.isclose(fit_params["center"], 5, atol=0.5)
182
188
 
183
- dap_curve = plt.get_curve("bpm4i-bpm4i-GaussianModel")
184
- fit_params = dap_curve.dap_params
185
- print(fit_params)
186
-
187
- assert np.isclose(fit_params["center"], 5, atol=0.5)
189
+ qtbot.waitUntil(wait_for_fit, timeout=10000)
188
190
 
189
191
 
190
192
  def test_removing_subplots(rpc_server_figure, bec_client_lib):
@@ -127,10 +127,12 @@ def test_toolbar_add_plot_motor_map(bec_dock_area):
127
127
  assert bec_dock_area.panels["motor_map_1"].widgets[0].config.widget_class == "BECMotorMapWidget"
128
128
 
129
129
 
130
- def test_toolbar_add_device_device_box(bec_dock_area):
131
- bec_dock_area.toolbar.widgets["menu_devices"].widgets["device_box"].trigger()
132
- assert "device_box_1" in bec_dock_area.panels
133
- assert bec_dock_area.panels["device_box_1"].widgets[0].config.widget_class == "DeviceBox"
130
+ def test_toolbar_add_device_positioner_box(bec_dock_area):
131
+ bec_dock_area.toolbar.widgets["menu_devices"].widgets["positioner_box"].trigger()
132
+ assert "positioner_box_1" in bec_dock_area.panels
133
+ assert (
134
+ bec_dock_area.panels["positioner_box_1"].widgets[0].config.widget_class == "PositionerBox"
135
+ )
134
136
 
135
137
 
136
138
  def test_toolbar_add_utils_queue(bec_dock_area):