bec-widgets 0.92.1__tar.gz → 0.94.4__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 (390) hide show
  1. bec_widgets-0.94.4/CHANGELOG.md +155 -0
  2. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/PKG-INFO +2 -2
  3. bec_widgets-0.94.4/bec_widgets/assets/toolbar_icons/device_line_edit.svg +3 -0
  4. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/cli/client.py +17 -12
  5. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +1 -0
  6. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/examples/plugin_example_pyside/main.py +2 -1
  7. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +3 -2
  8. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +2 -2
  9. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +1 -1
  10. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/qt_utils/settings_dialog.py +11 -0
  11. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/bec_dispatcher.py +3 -3
  12. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/colors.py +3 -4
  13. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_queue/bec_queue.py +18 -12
  14. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_status_box/bec_status_box.py +10 -0
  15. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/color_button/color_button.py +7 -0
  16. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/dock/dock.py +22 -3
  17. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/dock/dock_area.py +19 -5
  18. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/figure.py +21 -16
  19. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/image/image.py +23 -7
  20. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/motor_map/motor_map.py +3 -2
  21. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/plot_base.py +8 -0
  22. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/waveform/waveform.py +7 -5
  23. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/image/image_widget.py +2 -1
  24. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/jupyter_console/jupyter_console.py +0 -2
  25. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py +9 -0
  26. bec_widgets-0.92.1/bec_widgets/widgets/device_box/device_box.py → bec_widgets-0.94.4/bec_widgets/widgets/positioner_box/positioner_box.py +130 -17
  27. bec_widgets-0.94.4/bec_widgets/widgets/positioner_box/positioner_box.pyproject +1 -0
  28. bec_widgets-0.92.1/bec_widgets/widgets/device_box/device_box.ui → bec_widgets-0.94.4/bec_widgets/widgets/positioner_box/positioner_box.ui +30 -3
  29. bec_widgets-0.92.1/bec_widgets/widgets/device_box/device_box_plugin.py → bec_widgets-0.94.4/bec_widgets/widgets/positioner_box/positioner_box_plugin.py +10 -11
  30. bec_widgets-0.94.4/bec_widgets/widgets/positioner_box/positioner_control_line.py +33 -0
  31. bec_widgets-0.94.4/bec_widgets/widgets/positioner_box/positioner_control_line.pyproject +1 -0
  32. bec_widgets-0.94.4/bec_widgets/widgets/positioner_box/positioner_control_line.ui +216 -0
  33. bec_widgets-0.94.4/bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py +58 -0
  34. bec_widgets-0.94.4/bec_widgets/widgets/positioner_box/register_positioner_box.py +15 -0
  35. bec_widgets-0.94.4/bec_widgets/widgets/positioner_box/register_positioner_control_line.py +17 -0
  36. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/scan_control/scan_group_box.py +54 -2
  37. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/spinner/spinner.py +5 -1
  38. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.py +17 -15
  39. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/waveform_widget.py +0 -1
  40. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/website/website.py +6 -0
  41. bec_widgets-0.94.4/docs/developer/developer.md +50 -0
  42. bec_widgets-0.94.4/docs/developer/introduction/concepts.md +14 -0
  43. bec_widgets-0.92.1/docs/developer/getting_started/development.md → bec_widgets-0.94.4/docs/developer/introduction/contributing.md +5 -4
  44. bec_widgets-0.94.4/docs/developer/introduction/introduction.md +15 -0
  45. bec_widgets-0.92.1/docs/developer/widgets/widgets.md → bec_widgets-0.94.4/docs/developer/widget_development/widget_development.md +2 -2
  46. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/requirements.txt +1 -2
  47. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/getting_started/getting_started.md +1 -0
  48. bec_widgets-0.94.4/docs/user/getting_started/video_tutorials.md +17 -0
  49. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/pyproject.toml +2 -2
  50. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/end-2-end/test_bec_dock_rpc_e2e.py +13 -2
  51. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/end-2-end/test_bec_figure_rpc_e2e.py +9 -7
  52. bec_widgets-0.94.4/tests/references/SpinnerWidget/SpinnerWidget_darwin.png +0 -0
  53. bec_widgets-0.94.4/tests/references/SpinnerWidget/SpinnerWidget_linux.png +0 -0
  54. bec_widgets-0.94.4/tests/references/SpinnerWidget/SpinnerWidget_started_darwin.png +0 -0
  55. bec_widgets-0.94.4/tests/references/SpinnerWidget/SpinnerWidget_started_linux.png +0 -0
  56. bec_widgets-0.94.4/tests/unit_tests/conftest.py +64 -0
  57. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_dispatcher.py +2 -0
  58. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_dock.py +6 -5
  59. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_figure.py +31 -24
  60. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_image.py +15 -17
  61. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_image_widget.py +0 -1
  62. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_motor_map.py +45 -22
  63. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_queue.py +8 -8
  64. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_color_map_selector.py +0 -1
  65. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_device_input_base.py +6 -2
  66. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_device_input_widgets.py +0 -6
  67. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_motor_map_widget.py +0 -2
  68. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_plot_base.py +9 -4
  69. bec_widgets-0.94.4/tests/unit_tests/test_positioner_box.py +130 -0
  70. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_ring_progress_bar.py +0 -1
  71. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_setting_dialog.py +8 -9
  72. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_spinner.py +1 -0
  73. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_stop_button.py +0 -1
  74. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_text_box_widget.py +0 -1
  75. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_vscode_widget.py +2 -0
  76. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_waveform1d.py +46 -23
  77. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_waveform_widget.py +199 -1
  78. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_website_widget.py +0 -2
  79. bec_widgets-0.92.1/CHANGELOG.md +0 -145
  80. bec_widgets-0.92.1/bec_widgets/widgets/device_box/device_box.pyproject +0 -1
  81. bec_widgets-0.92.1/bec_widgets/widgets/device_box/register_device_box.py +0 -15
  82. bec_widgets-0.92.1/docs/developer/developer.md +0 -46
  83. bec_widgets-0.92.1/docs/developer/getting_started/getting_started.md +0 -12
  84. bec_widgets-0.92.1/tests/references/SpinnerWidget/SpinnerWidget_darwin.png +0 -0
  85. bec_widgets-0.92.1/tests/references/SpinnerWidget/SpinnerWidget_linux.png +0 -0
  86. bec_widgets-0.92.1/tests/references/SpinnerWidget/SpinnerWidget_started_darwin.png +0 -0
  87. bec_widgets-0.92.1/tests/references/SpinnerWidget/SpinnerWidget_started_linux.png +0 -0
  88. bec_widgets-0.92.1/tests/unit_tests/conftest.py +0 -32
  89. bec_widgets-0.92.1/tests/unit_tests/test_device_box.py +0 -98
  90. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/.git_hooks/pre-commit +0 -0
  91. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/.gitignore +0 -0
  92. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/.gitlab/issue_templates/bug_report_template.md +0 -0
  93. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/.gitlab/issue_templates/documentation_update_template.md +0 -0
  94. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/.gitlab/issue_templates/feature_request_template.md +0 -0
  95. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/.gitlab/merge_request_templates/default.md +0 -0
  96. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/.gitlab-ci.yml +0 -0
  97. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/.pylintrc +0 -0
  98. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/.readthedocs.yaml +0 -0
  99. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/LICENSE +0 -0
  100. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/README.md +0 -0
  101. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/__init__.py +0 -0
  102. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/app_icons/BEC-Dark.png +0 -0
  103. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
  104. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/app_icons/terminal_icon.png +0 -0
  105. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/code.png +0 -0
  106. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/color_button.png +0 -0
  107. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/colormap_selector.png +0 -0
  108. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/device_combo_box.png +0 -0
  109. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/device_line_edit.png +0 -0
  110. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/dock_area.png +0 -0
  111. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/games.png +0 -0
  112. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/image.png +0 -0
  113. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/motor_map.png +0 -0
  114. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/position_indicator.png +0 -0
  115. /bec_widgets-0.92.1/bec_widgets/assets/designer_icons/device_box.png → /bec_widgets-0.94.4/bec_widgets/assets/designer_icons/positioner_box.png +0 -0
  116. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/queue.png +0 -0
  117. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/ring_progress.png +0 -0
  118. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/scan_control.png +0 -0
  119. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/spinner.png +0 -0
  120. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/status.png +0 -0
  121. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/stop.png +0 -0
  122. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/text.png +0 -0
  123. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/toggle.png +0 -0
  124. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/waveform.png +0 -0
  125. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/designer_icons/web.png +0 -0
  126. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/status_icons/error.svg +0 -0
  127. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/status_icons/not_connected.svg +0 -0
  128. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/status_icons/refresh.svg +0 -0
  129. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/status_icons/running.svg +0 -0
  130. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/status_icons/warning.svg +0 -0
  131. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/add.svg +0 -0
  132. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/attach_all.svg +0 -0
  133. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/auto_range.svg +0 -0
  134. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/compare.svg +0 -0
  135. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/connection.svg +0 -0
  136. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/drag_pan_mode.svg +0 -0
  137. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/export.svg +0 -0
  138. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/fft.svg +0 -0
  139. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/fitting_parameters.svg +0 -0
  140. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/history.svg +0 -0
  141. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/image.svg +0 -0
  142. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/image_autorange.svg +0 -0
  143. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/import.svg +0 -0
  144. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/line_axis.svg +0 -0
  145. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/line_curve.svg +0 -0
  146. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/lock_aspect_ratio.svg +0 -0
  147. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/log_scale.png +0 -0
  148. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/motor_map.svg +0 -0
  149. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/photo_library.svg +0 -0
  150. /bec_widgets-0.92.1/bec_widgets/assets/toolbar_icons/device_box.svg → /bec_widgets-0.94.4/bec_widgets/assets/toolbar_icons/positioner_box.svg +0 -0
  151. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/progress.svg +0 -0
  152. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/queue.svg +0 -0
  153. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/rectangle_mode.svg +0 -0
  154. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/remove.svg +0 -0
  155. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/reset_settings.svg +0 -0
  156. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/restore_state.svg +0 -0
  157. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/ring_progress.svg +0 -0
  158. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/rotate_left.svg +0 -0
  159. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/rotate_right.svg +0 -0
  160. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/save.svg +0 -0
  161. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/save_state.svg +0 -0
  162. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/scan_control.svg +0 -0
  163. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/settings.svg +0 -0
  164. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/status.svg +0 -0
  165. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/terminal.svg +0 -0
  166. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/transform.svg +0 -0
  167. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/assets/toolbar_icons/waveform.svg +0 -0
  168. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/cli/__init__.py +0 -0
  169. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/cli/auto_updates.py +0 -0
  170. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/cli/client_utils.py +0 -0
  171. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/cli/generate_cli.py +0 -0
  172. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/cli/rpc_register.py +0 -0
  173. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/cli/rpc_wigdet_handler.py +0 -0
  174. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/cli/server.py +0 -0
  175. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/examples/__init__.py +0 -0
  176. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/examples/general_app/__init__.py +0 -0
  177. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/examples/general_app/general_app.py +0 -0
  178. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/examples/general_app/general_app.ui +0 -0
  179. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/examples/general_app/web_links.py +0 -0
  180. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  181. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
  182. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
  183. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
  184. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/qt_utils/__init__.py +0 -0
  185. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/qt_utils/error_popups.py +0 -0
  186. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/qt_utils/toolbar.py +0 -0
  187. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/__init__.py +0 -0
  188. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/bec_connector.py +0 -0
  189. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/bec_designer.py +0 -0
  190. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/bec_table.py +0 -0
  191. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/bec_widget.py +0 -0
  192. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/container_utils.py +0 -0
  193. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/crosshair.py +0 -0
  194. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/entry_validator.py +0 -0
  195. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/generate_designer_plugin.py +0 -0
  196. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/layout_manager.py +0 -0
  197. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
  198. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/plugin_templates/register.template +0 -0
  199. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/plugin_utils.py +0 -0
  200. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/reference_utils.py +0 -0
  201. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/rpc_decorator.py +0 -0
  202. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/thread_checker.py +0 -0
  203. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/ui_loader.py +0 -0
  204. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/validator_delegate.py +0 -0
  205. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/widget_io.py +0 -0
  206. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/utils/yaml_dialog.py +0 -0
  207. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/__init__.py +0 -0
  208. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/base_classes/__init__.py +0 -0
  209. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/base_classes/device_input_base.py +0 -0
  210. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_queue/__init__.py +0 -0
  211. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_queue/bec_queue.pyproject +0 -0
  212. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_queue/bec_queue_plugin.py +0 -0
  213. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_queue/register_bec_queue.py +0 -0
  214. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_status_box/__init__.py +0 -0
  215. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_status_box/bec_status_box.pyproject +0 -0
  216. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py +0 -0
  217. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_status_box/register_bec_status_box.py +0 -0
  218. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/bec_status_box/status_item.py +0 -0
  219. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/color_button/__init__.py +0 -0
  220. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/color_button/color_button.pyproject +0 -0
  221. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/color_button/color_button_plugin.py +0 -0
  222. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/color_button/register_color_button.py +0 -0
  223. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/colormap_selector/__init__.py +0 -0
  224. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/colormap_selector/colormap_selector.py +0 -0
  225. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/colormap_selector/colormap_selector.pyproject +0 -0
  226. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py +0 -0
  227. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/colormap_selector/register_colormap_selector.py +0 -0
  228. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/console/console.py +0 -0
  229. {bec_widgets-0.92.1/bec_widgets/widgets/device_box → bec_widgets-0.94.4/bec_widgets/widgets/device_combobox}/__init__.py +0 -0
  230. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/device_combobox/device_combo_box.pyproject +0 -0
  231. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/device_combobox/device_combo_box_plugin.py +0 -0
  232. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/device_combobox/device_combobox.py +0 -0
  233. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/device_combobox/register_device_combo_box.py +0 -0
  234. {bec_widgets-0.92.1/bec_widgets/widgets/device_combobox → bec_widgets-0.94.4/bec_widgets/widgets/device_line_edit}/__init__.py +0 -0
  235. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/device_line_edit/device_line_edit.py +0 -0
  236. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/device_line_edit/device_line_edit.pyproject +0 -0
  237. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py +0 -0
  238. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/device_line_edit/register_device_line_edit.py +0 -0
  239. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/dock/__init__.py +0 -0
  240. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/dock/dock_area.pyproject +0 -0
  241. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/dock/dock_area_plugin.py +0 -0
  242. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/dock/register_dock_area.py +0 -0
  243. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/__init__.py +0 -0
  244. {bec_widgets-0.92.1/bec_widgets/widgets/device_line_edit → bec_widgets-0.94.4/bec_widgets/widgets/figure/plots}/__init__.py +0 -0
  245. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/axis_settings.py +0 -0
  246. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/axis_settings.ui +0 -0
  247. {bec_widgets-0.92.1/bec_widgets/widgets/figure/plots → bec_widgets-0.94.4/bec_widgets/widgets/figure/plots/image}/__init__.py +0 -0
  248. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/image/image_item.py +0 -0
  249. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/image/image_processor.py +0 -0
  250. {bec_widgets-0.92.1/bec_widgets/widgets/figure/plots/image → bec_widgets-0.94.4/bec_widgets/widgets/figure/plots/motor_map}/__init__.py +0 -0
  251. {bec_widgets-0.92.1/bec_widgets/widgets/figure/plots/motor_map → bec_widgets-0.94.4/bec_widgets/widgets/figure/plots/waveform}/__init__.py +0 -0
  252. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +0 -0
  253. {bec_widgets-0.92.1/bec_widgets/widgets/figure/plots/waveform → bec_widgets-0.94.4/bec_widgets/widgets/image}/__init__.py +0 -0
  254. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/image/bec_image_widget.pyproject +0 -0
  255. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/image/bec_image_widget_plugin.py +0 -0
  256. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/image/register_bec_image_widget.py +0 -0
  257. {bec_widgets-0.92.1/bec_widgets/widgets/image → bec_widgets-0.94.4/bec_widgets/widgets/jupyter_console}/__init__.py +0 -0
  258. {bec_widgets-0.92.1/bec_widgets/widgets/jupyter_console → bec_widgets-0.94.4/bec_widgets/widgets/motor_map}/__init__.py +0 -0
  259. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/motor_map/bec_motor_map_widget.pyproject +0 -0
  260. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py +0 -0
  261. {bec_widgets-0.92.1/bec_widgets/widgets/motor_map → bec_widgets-0.94.4/bec_widgets/widgets/motor_map/motor_map_dialog}/__init__.py +0 -0
  262. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui +0 -0
  263. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/motor_map/motor_map_widget.py +0 -0
  264. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py +0 -0
  265. {bec_widgets-0.92.1/bec_widgets/widgets/motor_map/motor_map_dialog → bec_widgets-0.94.4/bec_widgets/widgets/position_indicator}/__init__.py +0 -0
  266. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/position_indicator/position_indicator.py +0 -0
  267. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/position_indicator/position_indicator.pyproject +0 -0
  268. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/position_indicator/position_indicator_plugin.py +0 -0
  269. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/position_indicator/register_position_indicator.py +0 -0
  270. {bec_widgets-0.92.1/bec_widgets/widgets/position_indicator → bec_widgets-0.94.4/bec_widgets/widgets/positioner_box}/__init__.py +0 -0
  271. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/ring_progress_bar/__init__.py +0 -0
  272. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/ring_progress_bar/register_ring_progress_bar.py +0 -0
  273. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/ring_progress_bar/ring.py +0 -0
  274. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.py +0 -0
  275. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject +0 -0
  276. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
  277. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/scan_control/__init__.py +0 -0
  278. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/scan_control/register_scan_control.py +0 -0
  279. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/scan_control/scan_control.py +0 -0
  280. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/scan_control/scan_control.pyproject +0 -0
  281. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/scan_control/scan_control_plugin.py +0 -0
  282. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/spinner/__init__.py +0 -0
  283. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/spinner/register_spinner_widget.py +0 -0
  284. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/spinner/spinner_widget.pyproject +0 -0
  285. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/spinner/spinner_widget_plugin.py +0 -0
  286. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/stop_button/__init__.py +0 -0
  287. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/stop_button/register_stop_button.py +0 -0
  288. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/stop_button/stop_button.py +0 -0
  289. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/stop_button/stop_button.pyproject +0 -0
  290. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/stop_button/stop_button_plugin.py +0 -0
  291. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/text_box/__init__.py +0 -0
  292. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/text_box/register_text_box.py +0 -0
  293. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/text_box/text_box.py +0 -0
  294. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/text_box/text_box.pyproject +0 -0
  295. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/text_box/text_box_plugin.py +0 -0
  296. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/toggle/__init__.py +0 -0
  297. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/toggle/register_toggle_switch.py +0 -0
  298. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/toggle/toggle.py +0 -0
  299. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/toggle/toggle_switch.pyproject +0 -0
  300. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/toggle/toggle_switch_plugin.py +0 -0
  301. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/vscode/__init__.py +0 -0
  302. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/vscode/register_vs_code_editor.py +0 -0
  303. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/vscode/vs_code_editor.pyproject +0 -0
  304. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/vscode/vs_code_editor_plugin.py +0 -0
  305. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/vscode/vscode.py +0 -0
  306. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/__init__.py +0 -0
  307. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/bec_waveform_widget.pyproject +0 -0
  308. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py +0 -0
  309. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/register_bec_waveform_widget.py +0 -0
  310. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/waveform_popups/__init__.py +0 -0
  311. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/__init__.py +0 -0
  312. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.ui +0 -0
  313. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/__init__.py +0 -0
  314. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary.ui +0 -0
  315. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py +0 -0
  316. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/website/__init__.py +0 -0
  317. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/website/register_website_widget.py +0 -0
  318. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/website/website_widget.pyproject +0 -0
  319. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/bec_widgets/widgets/website/website_widget_plugin.py +0 -0
  320. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/Makefile +0 -0
  321. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/_static/custom.css +0 -0
  322. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/_templates/custom-class-template.rst +0 -0
  323. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/_templates/custom-module-template.rst +0 -0
  324. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/api_reference/api_reference.md +0 -0
  325. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/assets/apps_48dp.svg +0 -0
  326. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/assets/display_settings_48dp.svg +0 -0
  327. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/assets/index_api.svg +0 -0
  328. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/assets/index_contribute.svg +0 -0
  329. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/assets/index_getting_started.svg +0 -0
  330. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/assets/index_user_guide.svg +0 -0
  331. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/assets/rocket_launch_48dp.svg +0 -0
  332. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/conf.py +0 -0
  333. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/index.md +0 -0
  334. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/introduction/introduction.md +0 -0
  335. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/make.bat +0 -0
  336. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/api_reference/api_reference.md +0 -0
  337. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/applications/applications.md +0 -0
  338. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/customisation.md +0 -0
  339. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/getting_started/BECDockArea.png +0 -0
  340. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/getting_started/auto_updates.md +0 -0
  341. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/getting_started/gui_complex_gui.gif +0 -0
  342. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/getting_started/installation.md +0 -0
  343. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/getting_started/quick_start.md +0 -0
  344. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/user.md +0 -0
  345. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/widgets/BECFigure.png +0 -0
  346. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/widgets/bec_figure.md +0 -0
  347. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/widgets/bec_figure_dap.gif +0 -0
  348. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/widgets/bec_status_box.gif +0 -0
  349. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/widgets/bec_status_box.md +0 -0
  350. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/widgets/buttons.md +0 -0
  351. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/widgets/image_plot.gif +0 -0
  352. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/widgets/motor.gif +0 -0
  353. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/widgets/progress_bar.gif +0 -0
  354. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/widgets/ring_progress_bar.md +0 -0
  355. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/widgets/scan_control.gif +0 -0
  356. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/widgets/scan_control.md +0 -0
  357. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/widgets/scatter_2D.gif +0 -0
  358. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/widgets/text_box.md +0 -0
  359. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/widgets/w1D.gif +0 -0
  360. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/widgets/website.md +0 -0
  361. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/docs/user/widgets/widgets.md +0 -0
  362. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/__init__.py +0 -0
  363. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/end-2-end/__init__.py +0 -0
  364. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/end-2-end/conftest.py +0 -0
  365. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/end-2-end/test_rpc_register_e2e.py +0 -0
  366. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/end-2-end/test_scan_control_e2e.py +0 -0
  367. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/__init__.py +0 -0
  368. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/client_mocks.py +0 -0
  369. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_connector.py +0 -0
  370. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_bec_status_box.py +0 -0
  371. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_client_utils.py +0 -0
  372. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_color_validation.py +0 -0
  373. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_configs/config_device.yaml +0 -0
  374. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_configs/config_device_no_entry.yaml +0 -0
  375. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_configs/config_scan.yaml +0 -0
  376. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_crosshair.py +0 -0
  377. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_error_utils.py +0 -0
  378. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_generate_cli_client.py +0 -0
  379. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_generate_plugin.py +0 -0
  380. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_msgs/__init__.py +0 -0
  381. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_msgs/available_scans_message.py +0 -0
  382. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_plugin_utils.py +0 -0
  383. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_rpc_register.py +0 -0
  384. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_rpc_server.py +0 -0
  385. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_rpc_widget_handler.py +0 -0
  386. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_scan_control.py +0 -0
  387. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_scan_control_group_box.py +0 -0
  388. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_toggle.py +0 -0
  389. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_widget_io.py +0 -0
  390. {bec_widgets-0.92.1 → bec_widgets-0.94.4}/tests/unit_tests/test_yaml_dialog.py +0 -0
@@ -0,0 +1,155 @@
1
+ # CHANGELOG
2
+
3
+ ## v0.94.4 (2024-08-14)
4
+
5
+ ### Documentation
6
+
7
+ * docs: review developer section; add introduction ([`2af5c94`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/2af5c94913a3435c1839034df4f45f885b56d08b))
8
+
9
+ ### Fix
10
+
11
+ * fix: do not shutdown client in "close"
12
+
13
+ Terminating client connections has to be done at the application level ([`198c1d1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/198c1d1064cc2dae55de4b941929341faddacb28))
14
+
15
+ ## v0.94.3 (2024-08-13)
16
+
17
+ ### Fix
18
+
19
+ * fix(curve_dialog): async curves are shown in curve dialog after addition. ([`7aeb2b5`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/7aeb2b5c26c7c2851e8d663d32521da8daec95ef))
20
+
21
+ * fix(waveform): async device entry is correctly passed, updated and with new scan the previous data are cleared ([`d56ea95`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/d56ea95ef97bfdd0bc3eeddc4505d20b38e28559))
22
+
23
+ ### Test
24
+
25
+ * test(waveform_widget): added tests for axis setting and curve dialog ([`f285b35`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f285b35b491660549e74349318119f7c2c44f619))
26
+
27
+ ## v0.94.2 (2024-08-13)
28
+
29
+ ### Fix
30
+
31
+ * fix(image): image is single image mode do not raise popup error when connected twice with the same monitor ([`98b79aa`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/98b79aac7b47b73137f4d582f7f1d552b1d95366))
32
+
33
+ ## v0.94.1 (2024-08-12)
34
+
35
+ ### Fix
36
+
37
+ * fix: issue #292, wrong key was used to clean _slots internal dictionary ([`93d3977`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/93d397759c756397604ebff5e24f3a580be8620d))
38
+
39
+ ## v0.94.0 (2024-08-08)
40
+
41
+ ### Feature
42
+
43
+ * feat: add PositionerControlLine ([`c80a7cd`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/c80a7cd1083baa9543a2cee2e3c3a51dfd209b19))
44
+
45
+ ### Refactor
46
+
47
+ * refactor: adjust dimensions ([`0273bf4`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/0273bf485694609325b5b556a3c69fb53c18446e))
48
+
49
+ ## v0.93.5 (2024-08-08)
50
+
51
+ ### Fix
52
+
53
+ * fix(positioner_box): icons fixed ([`281633d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/281633deff15b6879dac3a4f0770fa6949aaecdc))
54
+
55
+ ### Refactor
56
+
57
+ * refactor: add button for positioner selection ([`0d190c5`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/0d190c5c5996e59fec4bdd44d2003e10e200b009))
58
+
59
+ ### Test
60
+
61
+ * test(dap): wait for fit ([`6269009`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/6269009e5451f830cdee58a514c7858483488a8d))
62
+
63
+ * test(auto-update): wait for rendering ([`6d2442d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/6d2442d23c683fe92af13df982ce681c07e99cde))
64
+
65
+ ## v0.93.4 (2024-08-07)
66
+
67
+ ### Fix
68
+
69
+ * fix: rename DeviceBox to PositionerBox, fix test for validation ([`37aa371`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/37aa371e7c4c62d70abf37abc125db0c088790fe))
70
+
71
+ * fix: add validation for bec_lib.device.Positioner; closes #268 ([`eb54e9f`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/eb54e9f788e97af23db8fe0c78f8facb8688bb99))
72
+
73
+ ## v0.93.3 (2024-08-07)
74
+
75
+ ### Fix
76
+
77
+ * fix(dock): properly shut down docks and temp areas ([`99ee545`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/99ee545e41c6078654958b668b5b329f85553d16))
78
+
79
+ * fix(settings): shut down settings dialog ([`b50b3a2`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b50b3a27e68956e10e8169a0aa698c911d2d9642))
80
+
81
+ * fix(website): fixed teardown of website widgets ([`a3d4f5a`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a3d4f5ac4bc52acfed2791a1724fade6972ed320))
82
+
83
+ * fix(dock): properly shut down docks and dock areas ([`bc26497`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/bc264975b1363c9dfea516621d7878c320677d15))
84
+
85
+ * fix(figure): cleanup pyqtgraph ([`ad07bbf`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ad07bbf85e9c8d9838bdd686f69d41c235b7db19))
86
+
87
+ ### Test
88
+
89
+ * test: removed quit from teardown ([`cf94599`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/cf94599c2544d6831c8afbe7b340082077557ed1))
90
+
91
+ * test: removed explicit call to close the widget ([`bf6294e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/bf6294ecbfd494565d2dc215e4d7e0c280ac7745))
92
+
93
+ * test: use factory instead of fixture to properly cleanup widgets on teardown ([`9856857`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/9856857f4cc7fa229c10d00fbae4452464a207cb))
94
+
95
+ * test: ensure all toplevelwidgets are closed ([`f9e5897`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f9e58979009cf632feea529700ad191401dd7eb8))
96
+
97
+ ## v0.93.2 (2024-08-07)
98
+
99
+ ### Fix
100
+
101
+ * fix(scan_group_box): Scan Spinboxes limits increased to max allowed values; setting dialog for step size and decimal precision for ScanDoubleSpinBox on right click ([`a372925`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a372925fffa787c686198ae7cb3f9c15b459c109))
102
+
103
+ ## v0.93.1 (2024-08-06)
104
+
105
+ ### Documentation
106
+
107
+ * docs: added video tutorial section with BSEG YT video ([`302ae90`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/302ae90139f6a88e2401fe29fe312387486e27a9))
108
+
109
+ ### Fix
110
+
111
+ * fix(dock): docks have more recognizable red icon for closing docks ([`af86860`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/af86860bf35474805fb1a7bc3725cf8835ed4cc7))
112
+
113
+ ## v0.93.0 (2024-08-05)
114
+
115
+ ### Feature
116
+
117
+ * feat(themes): moved themes to bec_qthemes
118
+
119
+ This reverts commit fd6ae91993a23a7b8dbb2cf3c4b7c3eda6d2b0f6 ([`5aad401`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/5aad401ef8774c7330784f72cd3b9d8c253e2b6a))
120
+
121
+ ## v0.92.5 (2024-08-05)
122
+
123
+ ### Fix
124
+
125
+ * fix(spinner): stop timer on close event ([`30fef92`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/30fef929cf6fb4b73f48151c92a0ee54c734031d))
126
+
127
+ * fix(status_box): fix cleanup of status box ([`1f30dd7`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/1f30dd73a9c1e3135087a5eef92c7329f54a604e))
128
+
129
+ ### Refactor
130
+
131
+ * refactor(queue): refactored bec queue to inherit only from qwidget ([`7616ca0`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/7616ca0e145e233ccb48029a8c0b54b54b5b4194))
132
+
133
+ ### Test
134
+
135
+ * test: register all widgets with qtbot and close them ([`73cd11e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/73cd11e47277e4437554b785a9551b28a572094f))
136
+
137
+ ## v0.92.4 (2024-07-31)
138
+
139
+ ### Fix
140
+
141
+ * fix: fix missmatch of signal/slot in image and motormap ([`dcc5fd7`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/dcc5fd71ee9f51767a7b2b1ed6200e89d1ef754c))
142
+
143
+ ## v0.92.3 (2024-07-28)
144
+
145
+ ### Fix
146
+
147
+ * fix(docs): moved to pyside6 ([`71873dd`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/71873ddf359516ded8f74f4d2f73df4156aa1368))
148
+
149
+ ## v0.92.2 (2024-07-28)
150
+
151
+ ### Fix
152
+
153
+ * fix(widgets): fixed import for tictactoe example ([`995a795`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/995a795060bebe25c17108d80ae0fa30463f03b1))
154
+
155
+ ## v0.92.1 (2024-07-28)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.92.1
3
+ Version: 0.94.4
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
@@ -11,12 +11,12 @@ Classifier: Topic :: Scientific/Engineering
11
11
  Requires-Python: >=3.10
12
12
  Requires-Dist: bec-ipython-client~=2.16
13
13
  Requires-Dist: bec-lib~=2.16
14
+ Requires-Dist: bec-qthemes~=0.0
14
15
  Requires-Dist: black~=24.0
15
16
  Requires-Dist: isort>=5.13.2,~=5.13
16
17
  Requires-Dist: pydantic~=2.0
17
18
  Requires-Dist: pyqtgraph~=0.13
18
19
  Requires-Dist: pyte
19
- Requires-Dist: qdarkstyle>=3.2.2
20
20
  Requires-Dist: qtconsole>=5.5.1,~=5.5
21
21
  Requires-Dist: qtpy~=2.4
22
22
  Provides-Extra: dev
@@ -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,10 @@ 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
+ PositionerControlLine = "PositionerControlLine"
27
28
  RingProgressBar = "RingProgressBar"
28
29
  ScanControl = "ScanControl"
29
30
  StopButton = "StopButton"
@@ -2287,7 +2288,7 @@ class BECWaveformWidget(RPCBase):
2287
2288
  """
2288
2289
 
2289
2290
 
2290
- class DeviceBox(RPCBase):
2291
+ class DeviceComboBox(RPCBase):
2291
2292
  @property
2292
2293
  @rpc_call
2293
2294
  def _config_dict(self) -> "dict":
@@ -2305,7 +2306,7 @@ class DeviceBox(RPCBase):
2305
2306
  """
2306
2307
 
2307
2308
 
2308
- class DeviceComboBox(RPCBase):
2309
+ class DeviceInputBase(RPCBase):
2309
2310
  @property
2310
2311
  @rpc_call
2311
2312
  def _config_dict(self) -> "dict":
@@ -2323,7 +2324,7 @@ class DeviceComboBox(RPCBase):
2323
2324
  """
2324
2325
 
2325
2326
 
2326
- class DeviceInputBase(RPCBase):
2327
+ class DeviceLineEdit(RPCBase):
2327
2328
  @property
2328
2329
  @rpc_call
2329
2330
  def _config_dict(self) -> "dict":
@@ -2341,21 +2342,25 @@ class DeviceInputBase(RPCBase):
2341
2342
  """
2342
2343
 
2343
2344
 
2344
- class DeviceLineEdit(RPCBase):
2345
- @property
2345
+ class PositionerBox(RPCBase):
2346
2346
  @rpc_call
2347
- def _config_dict(self) -> "dict":
2347
+ def set_positioner(self, positioner: str):
2348
2348
  """
2349
- Get the configuration of the widget.
2349
+ Set the device
2350
2350
 
2351
- Returns:
2352
- dict: The configuration of the widget.
2351
+ Args:
2352
+ positioner (Positioner | str) : Positioner to set, accepts str or the device
2353
2353
  """
2354
2354
 
2355
+
2356
+ class PositionerControlLine(RPCBase):
2355
2357
  @rpc_call
2356
- def _get_all_rpc(self) -> "dict":
2358
+ def set_positioner(self, positioner: str):
2357
2359
  """
2358
- Get all registered RPC objects.
2360
+ Set the device
2361
+
2362
+ Args:
2363
+ positioner (Positioner | str) : Positioner to set, accepts str or the device
2359
2364
  """
2360
2365
 
2361
2366
 
@@ -46,6 +46,7 @@ class JupyterConsoleWindow(QWidget): # pragma: no cover:
46
46
  "w7": self.w7,
47
47
  "w8": self.w8,
48
48
  "w9": self.w9,
49
+ "w10": self.w10,
49
50
  "d0": self.d0,
50
51
  "d1": self.d1,
51
52
  "d2": self.d2,
@@ -7,7 +7,8 @@ import sys
7
7
 
8
8
  from bec_ipython_client.main import BECIPythonClient
9
9
  from qtpy.QtWidgets import QApplication
10
- from tictactoe import TicTacToe
10
+
11
+ from bec_widgets.examples.plugin_example_pyside.tictactoe import TicTacToe
11
12
 
12
13
  if __name__ == "__main__": # pragma: no cover
13
14
  app = QApplication(sys.argv)
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
 
4
4
  from qtpy.QtDesigner import QPyDesignerCustomWidgetCollection
5
- from tictactoe import TicTacToe
6
- from tictactoeplugin import TicTacToePlugin
5
+
6
+ from bec_widgets.examples.plugin_example_pyside.tictactoe import TicTacToe
7
+ from bec_widgets.examples.plugin_example_pyside.tictactoeplugin import TicTacToePlugin
7
8
 
8
9
  # Set PYSIDE_DESIGNER_PLUGINS to point to this directory and load the plugin
9
10
 
@@ -4,10 +4,10 @@ import os
4
4
 
5
5
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
6
  from qtpy.QtGui import QIcon
7
- from tictactoe import TicTacToe
8
- from tictactoetaskmenu import TicTacToeTaskMenuFactory
9
7
 
10
8
  import bec_widgets
9
+ from bec_widgets.examples.plugin_example_pyside.tictactoe import TicTacToe
10
+ from bec_widgets.examples.plugin_example_pyside.tictactoetaskmenu import TicTacToeTaskMenuFactory
11
11
 
12
12
  DOM_XML = """
13
13
  <ui language='c++'>
@@ -4,8 +4,8 @@
4
4
  from qtpy.QtDesigner import QExtensionFactory, QPyDesignerTaskMenuExtension
5
5
  from qtpy.QtGui import QAction
6
6
  from qtpy.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout
7
- from tictactoe import TicTacToe
8
7
 
8
+ from bec_widgets.examples.plugin_example_pyside.tictactoe import TicTacToe
9
9
  from bec_widgets.qt_utils.error_popups import SafeSlot as Slot
10
10
 
11
11
 
@@ -106,3 +106,14 @@ class SettingsDialog(QDialog):
106
106
  Apply the changes made in the settings widget without closing the dialog.
107
107
  """
108
108
  self.widget.accept_changes()
109
+
110
+ def cleanup(self):
111
+ """
112
+ Cleanup the dialog.
113
+ """
114
+ self.button_box.close()
115
+ self.button_box.deleteLater()
116
+
117
+ def closeEvent(self, event):
118
+ self.cleanup()
119
+ super().closeEvent(event)
@@ -162,9 +162,9 @@ class BECDispatcher:
162
162
  return
163
163
  self.client.connector.unregister(topics, cb=connected_slot)
164
164
  topics_str, _ = self.client.connector._convert_endpointinfo(topics)
165
- self._slots[slot].difference_update(set(topics_str))
166
- if not self._slots[slot]:
167
- del self._slots[slot]
165
+ self._slots[connected_slot].difference_update(set(topics_str))
166
+ if not self._slots[connected_slot]:
167
+ del self._slots[connected_slot]
168
168
 
169
169
  def disconnect_topics(self, topics: Union[str, list]):
170
170
  self.client.connector.unregister(topics)
@@ -2,11 +2,10 @@ import itertools
2
2
  import re
3
3
  from typing import Literal
4
4
 
5
+ import bec_qthemes
5
6
  import numpy as np
6
7
  import pyqtgraph as pg
7
- import qdarkstyle
8
8
  from pydantic_core import PydanticCustomError
9
- from qdarkstyle import DarkPalette, LightPalette
10
9
  from qtpy.QtGui import QColor
11
10
  from qtpy.QtWidgets import QApplication
12
11
 
@@ -14,7 +13,7 @@ CURRENT_THEME = "dark"
14
13
 
15
14
 
16
15
  def get_theme_palette():
17
- return DarkPalette if CURRENT_THEME == "dark" else LightPalette
16
+ return bec_qthemes.load_palette(CURRENT_THEME)
18
17
 
19
18
 
20
19
  def apply_theme(theme: Literal["dark", "light"]):
@@ -30,7 +29,7 @@ def apply_theme(theme: Literal["dark", "light"]):
30
29
  pg_widget.setBackground("k" if theme == "dark" else "w")
31
30
 
32
31
  # now define stylesheet according to theme and apply it
33
- style = qdarkstyle.load_stylesheet(palette=get_theme_palette())
32
+ style = bec_qthemes.load_stylesheet(theme)
34
33
  app.setStyleSheet(style)
35
34
 
36
35
 
@@ -1,12 +1,12 @@
1
1
  from bec_lib.endpoints import MessageEndpoints
2
2
  from qtpy.QtCore import Qt, Slot
3
- from qtpy.QtWidgets import QHeaderView, QTableWidget, QTableWidgetItem, QWidget
3
+ from qtpy.QtWidgets import QHBoxLayout, QHeaderView, QTableWidget, QTableWidgetItem, QWidget
4
4
 
5
5
  from bec_widgets.utils.bec_connector import ConnectionConfig
6
6
  from bec_widgets.utils.bec_widget import BECWidget
7
7
 
8
8
 
9
- class BECQueue(BECWidget, QTableWidget):
9
+ class BECQueue(BECWidget, QWidget):
10
10
  """
11
11
  Widget to display the BEC queue.
12
12
  """
@@ -19,10 +19,14 @@ class BECQueue(BECWidget, QTableWidget):
19
19
  gui_id: str = None,
20
20
  ):
21
21
  super().__init__(client, config, gui_id)
22
- QTableWidget.__init__(self, parent=parent)
23
- self.setColumnCount(3)
24
- self.setHorizontalHeaderLabels(["Scan Number", "Type", "Status"])
25
- header = self.horizontalHeader()
22
+ QWidget.__init__(self, parent=parent)
23
+ self.table = QTableWidget(self)
24
+ self.layout = QHBoxLayout(self)
25
+ self.layout.addWidget(self.table)
26
+
27
+ self.table.setColumnCount(3)
28
+ self.table.setHorizontalHeaderLabels(["Scan Number", "Type", "Status"])
29
+ header = self.table.horizontalHeader()
26
30
  header.setSectionResizeMode(QHeaderView.Stretch)
27
31
  self.bec_dispatcher.connect_slot(self.update_queue, MessageEndpoints.scan_queue_status())
28
32
  self.reset_content()
@@ -38,8 +42,8 @@ class BECQueue(BECWidget, QTableWidget):
38
42
  """
39
43
  # only show the primary queue for now
40
44
  queue_info = content.get("queue", {}).get("primary", {}).get("info", [])
41
- self.setRowCount(len(queue_info))
42
- self.clearContents()
45
+ self.table.setRowCount(len(queue_info))
46
+ self.table.clearContents()
43
47
 
44
48
  if not queue_info:
45
49
  self.reset_content()
@@ -73,6 +77,8 @@ class BECQueue(BECWidget, QTableWidget):
73
77
  Returns:
74
78
  QTableWidgetItem: The formatted item.
75
79
  """
80
+ if not content or not isinstance(content, str):
81
+ content = ""
76
82
  item = QTableWidgetItem(content)
77
83
  item.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
78
84
  return item
@@ -88,16 +94,16 @@ class BECQueue(BECWidget, QTableWidget):
88
94
  status (str): The status.
89
95
  """
90
96
 
91
- self.setItem(index, 0, self.format_item(scan_number))
92
- self.setItem(index, 1, self.format_item(scan_type))
93
- self.setItem(index, 2, self.format_item(status))
97
+ self.table.setItem(index, 0, self.format_item(scan_number))
98
+ self.table.setItem(index, 1, self.format_item(scan_type))
99
+ self.table.setItem(index, 2, self.format_item(status))
94
100
 
95
101
  def reset_content(self):
96
102
  """
97
103
  Reset the content of the table.
98
104
  """
99
105
 
100
- self.setRowCount(1)
106
+ self.table.setRowCount(1)
101
107
  self.set_row(0, "", "", "")
102
108
 
103
109
 
@@ -56,6 +56,11 @@ class BECServiceStatusMixin(QObject):
56
56
  self.client._update_existing_services()
57
57
  self.services_update.emit(self.client._services_info, self.client._services_metric)
58
58
 
59
+ def cleanup(self):
60
+ """Cleanup the BECServiceStatusMixin."""
61
+ self._service_update_timer.stop()
62
+ self._service_update_timer.deleteLater()
63
+
59
64
 
60
65
  class BECStatusBox(BECWidget, QWidget):
61
66
  """An autonomous widget to display the status of BEC services.
@@ -290,6 +295,11 @@ class BECStatusBox(BECWidget, QWidget):
290
295
  if objects["item"] == item:
291
296
  objects["widget"].show_popup()
292
297
 
298
+ def cleanup(self):
299
+ """Cleanup the BECStatusBox widget."""
300
+ self.bec_service_status.cleanup()
301
+ return super().cleanup()
302
+
293
303
 
294
304
  def main():
295
305
  """Main method to run the BECStatusBox widget."""
@@ -34,3 +34,10 @@ class ColorButton(pg.ColorButton):
34
34
  return self.color().getRgb()
35
35
  if format == "HEX":
36
36
  return self.color().name()
37
+
38
+ def cleanup(self):
39
+ """
40
+ Clean up the ColorButton.
41
+ """
42
+ self.colorDialog.close()
43
+ self.colorDialog.deleteLater()
@@ -4,6 +4,7 @@ from typing import TYPE_CHECKING, Any, Literal, Optional
4
4
 
5
5
  from pydantic import Field
6
6
  from pyqtgraph.dockarea import Dock, DockLabel
7
+ from qtpy import QtCore, QtGui
7
8
 
8
9
  from bec_widgets.cli.rpc_wigdet_handler import widget_handler
9
10
  from bec_widgets.utils import ConnectionConfig, GridLayoutManager
@@ -12,8 +13,6 @@ from bec_widgets.utils.bec_widget import BECWidget
12
13
  if TYPE_CHECKING:
13
14
  from qtpy.QtWidgets import QWidget
14
15
 
15
- from bec_widgets.widgets.dock import BECDockArea
16
-
17
16
 
18
17
  class DockConfig(ConnectionConfig):
19
18
  widgets: dict[str, Any] = Field({}, description="The widgets in the dock.")
@@ -26,6 +25,23 @@ class DockConfig(ConnectionConfig):
26
25
 
27
26
 
28
27
  class CustomDockLabel(DockLabel):
28
+ def __init__(self, text: str, closable: bool = True):
29
+ super().__init__(text, closable)
30
+ if closable:
31
+ red_icon = QtGui.QIcon()
32
+ pixmap = QtGui.QPixmap(32, 32)
33
+ pixmap.fill(QtCore.Qt.GlobalColor.red)
34
+ painter = QtGui.QPainter(pixmap)
35
+ pen = QtGui.QPen(QtCore.Qt.GlobalColor.white)
36
+ pen.setWidth(2)
37
+ painter.setPen(pen)
38
+ painter.drawLine(8, 8, 24, 24)
39
+ painter.drawLine(24, 8, 8, 24)
40
+ painter.end()
41
+ red_icon.addPixmap(pixmap)
42
+
43
+ self.closeButton.setIcon(red_icon)
44
+
29
45
  def updateStyle(self):
30
46
  r = "3px"
31
47
  if self.dim:
@@ -137,6 +153,7 @@ class BECDock(BECWidget, Dock):
137
153
  super().dropEvent(event)
138
154
  if old_area in self.orig_area.tempAreas and old_area != self.orig_area:
139
155
  self.orig_area.removeTempArea(old_area)
156
+ old_area.window().deleteLater()
140
157
 
141
158
  def float(self):
142
159
  """
@@ -268,7 +285,7 @@ class BECDock(BECWidget, Dock):
268
285
  """
269
286
  Attach the dock to the parent dock area.
270
287
  """
271
- self.orig_area.removeTempArea(self.area)
288
+ self.parent_dock_area.remove_temp_area(self.area)
272
289
 
273
290
  def detach(self):
274
291
  """
@@ -303,6 +320,8 @@ class BECDock(BECWidget, Dock):
303
320
  if hasattr(widget, "cleanup"):
304
321
  widget.cleanup()
305
322
  self.widgets.clear()
323
+ self.label.close()
324
+ self.label.deleteLater()
306
325
  super().cleanup()
307
326
 
308
327
  def close(self):
@@ -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
@@ -231,6 +231,7 @@ class BECDockArea(BECWidget, QWidget):
231
231
  self.config.docks.pop(name, None)
232
232
  if dock:
233
233
  dock.close()
234
+ dock.deleteLater()
234
235
  if len(self.dock_area.docks) <= 1:
235
236
  for dock in self.dock_area.docks.values():
236
237
  dock.hide_title_bar()
@@ -329,7 +330,16 @@ class BECDockArea(BECWidget, QWidget):
329
330
  """
330
331
  while self.dock_area.tempAreas:
331
332
  for temp_area in self.dock_area.tempAreas:
332
- self.dock_area.removeTempArea(temp_area)
333
+ self.remove_temp_area(temp_area)
334
+
335
+ def remove_temp_area(self, area):
336
+ """
337
+ Remove a temporary area from the dock area.
338
+ This is a patched method of pyqtgraph's removeTempArea
339
+ """
340
+ self.dock_area.tempAreas.remove(area)
341
+ area.window().close()
342
+ area.window().deleteLater()
333
343
 
334
344
  def clear_all(self):
335
345
  """
@@ -345,6 +355,10 @@ class BECDockArea(BECWidget, QWidget):
345
355
  Cleanup the dock area.
346
356
  """
347
357
  self.clear_all()
358
+ self.toolbar.close()
359
+ self.toolbar.deleteLater()
360
+ self.dock_area.close()
361
+ self.dock_area.deleteLater()
348
362
  super().cleanup()
349
363
 
350
364
  def close(self):
@@ -513,6 +513,13 @@ class BECFigure(BECWidget, pg.GraphicsLayoutWidget):
513
513
  if widget_id in self._widgets:
514
514
  raise ValueError(f"Widget with ID '{widget_id}' already exists.")
515
515
 
516
+ # Check if position is occupied
517
+ if row is not None and col is not None:
518
+ if self.getItem(row, col):
519
+ raise ValueError(f"Position at row {row} and column {col} is already occupied.")
520
+ else:
521
+ row, col = self._find_next_empty_position()
522
+
516
523
  widget = self.widget_handler.create_widget(
517
524
  widget_type=widget_type,
518
525
  widget_id=widget_id,
@@ -525,23 +532,11 @@ class BECFigure(BECWidget, pg.GraphicsLayoutWidget):
525
532
  # used otherwise multiple times
526
533
  widget.set_gui_id(widget_id)
527
534
 
528
- # Check if position is occupied
529
- if row is not None and col is not None:
530
- if self.getItem(row, col):
531
- raise ValueError(f"Position at row {row} and column {col} is already occupied.")
532
-
533
- widget.config.row = row
534
- widget.config.col = col
535
-
536
- # Add widget to the figure
537
- self.addItem(widget, row=row, col=col)
538
- else:
539
- row, col = self._find_next_empty_position()
540
- widget.config.row = row
541
- widget.config.col = col
535
+ widget.config.row = row
536
+ widget.config.col = col
542
537
 
543
- # Add widget to the figure
544
- self.addItem(widget, row=row, col=col)
538
+ # Add widget to the figure
539
+ self.addItem(widget, row=row, col=col)
545
540
 
546
541
  # Update num_cols and num_rows based on the added widget
547
542
  self.config.num_rows = max(self.config.num_rows, row + 1)
@@ -620,6 +615,7 @@ class BECFigure(BECWidget, pg.GraphicsLayoutWidget):
620
615
  """
621
616
  if widget_id in self._widgets:
622
617
  widget = self._widgets.pop(widget_id)
618
+ widget.cleanup_pyqtgraph()
623
619
  widget.cleanup()
624
620
  self.removeItem(widget)
625
621
  self.grid[widget.config.row][widget.config.col] = None
@@ -745,3 +741,12 @@ class BECFigure(BECWidget, pg.GraphicsLayoutWidget):
745
741
  self.config = FigureConfig(
746
742
  widget_class=self.__class__.__name__, gui_id=self.gui_id, theme=theme
747
743
  )
744
+
745
+ def cleanup_pyqtgraph_all_widgets(self):
746
+ """Clean up the pyqtgraph widget."""
747
+ for widget in self.widget_list:
748
+ widget.cleanup_pyqtgraph()
749
+
750
+ def cleanup(self):
751
+ """Close the figure widget."""
752
+ self.cleanup_pyqtgraph_all_widgets()