bec-widgets 0.56.3__tar.gz → 0.57.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/CHANGELOG.md +24 -24
  2. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/PKG-INFO +1 -1
  3. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/cli/auto_updates.py +1 -1
  4. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/cli/client.py +4 -4
  5. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +41 -42
  6. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/dock/dock.py +44 -35
  7. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/dock/dock_area.py +1 -3
  8. bec_widgets-0.57.1/bec_widgets/widgets/jupyter_console/jupyter_console.py +72 -0
  9. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/user/applications/applications.md +0 -4
  10. bec_widgets-0.57.1/docs/user/getting_started/command_line_introduction.md +87 -0
  11. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/user/getting_started/getting_started.md +2 -1
  12. bec_widgets-0.57.1/docs/user/getting_started/gui_complex_gui.gif +0 -0
  13. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/user/getting_started/installation.md +2 -15
  14. bec_widgets-0.57.1/docs/user/widgets/bec_figure.md +100 -0
  15. bec_widgets-0.57.1/docs/user/widgets/image_plot.gif +0 -0
  16. bec_widgets-0.57.1/docs/user/widgets/progress_bar.gif +0 -0
  17. bec_widgets-0.57.1/docs/user/widgets/spiral_progress_bar.md +21 -0
  18. bec_widgets-0.57.1/docs/user/widgets/widgets.md +15 -0
  19. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/pyproject.toml +1 -1
  20. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/end-2-end/test_bec_dock_rpc_e2e.py +5 -5
  21. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_bec_dock.py +1 -1
  22. bec_widgets-0.57.1/tests/unit_tests/test_msgs/__init__.py +0 -0
  23. bec_widgets-0.56.3/docs/user/widgets/widgets.md +0 -41
  24. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/.git_hooks/pre-commit +0 -0
  25. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/.gitignore +0 -0
  26. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/.gitlab/issue_templates/bug_report_template.md +0 -0
  27. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/.gitlab/issue_templates/documentation_update_template.md +0 -0
  28. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/.gitlab/issue_templates/feature_request_template.md +0 -0
  29. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/.gitlab/merge_request_templates/default.md +0 -0
  30. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/.gitlab-ci.yml +0 -0
  31. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/.pylintrc +0 -0
  32. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/.readthedocs.yaml +0 -0
  33. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/LICENSE +0 -0
  34. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/README.md +0 -0
  35. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/__init__.py +0 -0
  36. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/assets/bec_widgets_icon.png +0 -0
  37. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/assets/terminal_icon.png +0 -0
  38. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/cli/__init__.py +0 -0
  39. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/cli/client_utils.py +0 -0
  40. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/cli/generate_cli.py +0 -0
  41. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/cli/rpc_register.py +0 -0
  42. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/cli/rpc_wigdet_handler.py +0 -0
  43. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/cli/server.py +0 -0
  44. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/examples/__init__.py +0 -0
  45. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  46. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/examples/jupyter_console/jupyter_console_window.ui +0 -0
  47. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/examples/motor_movement/__init__.py +0 -0
  48. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/examples/motor_movement/motor_control_compilations.py +0 -0
  49. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/examples/motor_movement/motor_controller.ui +0 -0
  50. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/utils/__init__.py +0 -0
  51. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/utils/bec_connector.py +0 -0
  52. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/utils/bec_dispatcher.py +0 -0
  53. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/utils/bec_table.py +0 -0
  54. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/utils/colors.py +0 -0
  55. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/utils/container_utils.py +0 -0
  56. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/utils/crosshair.py +0 -0
  57. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/utils/entry_validator.py +0 -0
  58. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/utils/layout_manager.py +0 -0
  59. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/utils/plugin_utils.py +0 -0
  60. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/utils/rpc_decorator.py +0 -0
  61. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/utils/thread_checker.py +0 -0
  62. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/utils/ui_loader.py +0 -0
  63. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/utils/validator_delegate.py +0 -0
  64. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/utils/widget_io.py +0 -0
  65. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/utils/yaml_dialog.py +0 -0
  66. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/__init__.py +0 -0
  67. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/dock/__init__.py +0 -0
  68. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/figure/__init__.py +0 -0
  69. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/figure/figure.py +0 -0
  70. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/figure/plots/__init__.py +0 -0
  71. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/figure/plots/image/__init__.py +0 -0
  72. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/figure/plots/image/image.py +0 -0
  73. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/figure/plots/image/image_item.py +0 -0
  74. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/figure/plots/image/image_processor.py +0 -0
  75. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/figure/plots/motor_map/__init__.py +0 -0
  76. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/figure/plots/motor_map/motor_map.py +0 -0
  77. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/figure/plots/plot_base.py +0 -0
  78. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/figure/plots/waveform/__init__.py +0 -0
  79. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/figure/plots/waveform/waveform.py +0 -0
  80. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +0 -0
  81. {bec_widgets-0.56.3/bec_widgets/widgets/motor_control → bec_widgets-0.57.1/bec_widgets/widgets/jupyter_console}/__init__.py +0 -0
  82. {bec_widgets-0.56.3/bec_widgets/widgets/motor_control/motor_table → bec_widgets-0.57.1/bec_widgets/widgets/motor_control}/__init__.py +0 -0
  83. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/motor_control/motor_control.py +0 -0
  84. {bec_widgets-0.56.3/bec_widgets/widgets/motor_control/movement_absolute → bec_widgets-0.57.1/bec_widgets/widgets/motor_control/motor_table}/__init__.py +0 -0
  85. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/motor_control/motor_table/motor_table.py +0 -0
  86. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/motor_control/motor_table/motor_table.ui +0 -0
  87. {bec_widgets-0.56.3/bec_widgets/widgets/motor_control/movement_relative → bec_widgets-0.57.1/bec_widgets/widgets/motor_control/movement_absolute}/__init__.py +0 -0
  88. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/motor_control/movement_absolute/movement_absolute.py +0 -0
  89. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/motor_control/movement_absolute/movement_absolute.ui +0 -0
  90. {bec_widgets-0.56.3/bec_widgets/widgets/motor_control/selection → bec_widgets-0.57.1/bec_widgets/widgets/motor_control/movement_relative}/__init__.py +0 -0
  91. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/motor_control/movement_relative/movement_relative.py +0 -0
  92. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/motor_control/movement_relative/movement_relative.ui +0 -0
  93. {bec_widgets-0.56.3/tests → bec_widgets-0.57.1/bec_widgets/widgets/motor_control/selection}/__init__.py +0 -0
  94. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/motor_control/selection/selection.py +0 -0
  95. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/motor_control/selection/selection.ui +0 -0
  96. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/scan_control/__init__.py +0 -0
  97. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/scan_control/scan_control.py +0 -0
  98. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/spiral_progress_bar/__init__.py +0 -0
  99. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/spiral_progress_bar/ring.py +0 -0
  100. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/spiral_progress_bar/spiral_progress_bar.py +0 -0
  101. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/toolbar/__init__.py +0 -0
  102. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/bec_widgets/widgets/toolbar/toolbar.py +0 -0
  103. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/Makefile +0 -0
  104. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/_static/custom.css +0 -0
  105. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/_templates/custom-class-template.rst +0 -0
  106. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/_templates/custom-module-template.rst +0 -0
  107. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/api_reference/api_reference.md +0 -0
  108. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/assets/apps_48dp.svg +0 -0
  109. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/assets/display_settings_48dp.svg +0 -0
  110. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/assets/index_api.svg +0 -0
  111. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/assets/index_contribute.svg +0 -0
  112. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/assets/index_getting_started.svg +0 -0
  113. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/assets/index_user_guide.svg +0 -0
  114. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/assets/rocket_launch_48dp.svg +0 -0
  115. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/conf.py +0 -0
  116. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/developer/developer.md +0 -0
  117. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/index.md +0 -0
  118. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/introduction/introduction.md +0 -0
  119. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/make.bat +0 -0
  120. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/requirements.txt +0 -0
  121. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/user/api_reference/api_reference.md +0 -0
  122. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/user/customisation.md +0 -0
  123. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/user/user.md +0 -0
  124. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/user/widgets/motor.gif +0 -0
  125. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/user/widgets/scatter_2D.gif +0 -0
  126. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/docs/user/widgets/w1D.gif +0 -0
  127. {bec_widgets-0.56.3/tests/end-2-end → bec_widgets-0.57.1/tests}/__init__.py +0 -0
  128. {bec_widgets-0.56.3/tests/unit_tests → bec_widgets-0.57.1/tests/end-2-end}/__init__.py +0 -0
  129. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/end-2-end/conftest.py +0 -0
  130. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/end-2-end/test_bec_figure_rpc_e2e.py +0 -0
  131. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/end-2-end/test_rpc_register_e2e.py +0 -0
  132. {bec_widgets-0.56.3/tests/unit_tests/test_msgs → bec_widgets-0.57.1/tests/unit_tests}/__init__.py +0 -0
  133. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/client_mocks.py +0 -0
  134. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/conftest.py +0 -0
  135. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_bec_connector.py +0 -0
  136. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_bec_dispatcher.py +0 -0
  137. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_bec_figure.py +0 -0
  138. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_bec_motor_map.py +0 -0
  139. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_client_utils.py +0 -0
  140. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_configs/config_device.yaml +0 -0
  141. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_configs/config_device_no_entry.yaml +0 -0
  142. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_configs/config_scan.yaml +0 -0
  143. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_crosshair.py +0 -0
  144. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_generate_cli_client.py +0 -0
  145. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_motor_control.py +0 -0
  146. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_msgs/available_scans_message.py +0 -0
  147. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_plot_base.py +0 -0
  148. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_rpc_register.py +0 -0
  149. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_scan_control.py +0 -0
  150. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_spiral_progress_bar.py +0 -0
  151. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_waveform1d.py +0 -0
  152. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_widget_io.py +0 -0
  153. {bec_widgets-0.56.3 → bec_widgets-0.57.1}/tests/unit_tests/test_yaml_dialog.py +0 -0
@@ -2,6 +2,30 @@
2
2
 
3
3
 
4
4
 
5
+ ## v0.57.1 (2024-06-06)
6
+
7
+ ### Documentation
8
+
9
+ * docs: docs refactored from add_widget_bec to add_widget ([`c3f4845`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/c3f4845b4f95005ff737fed5542600b0b9a9cc2b))
10
+
11
+ ### Fix
12
+
13
+ * fix: tests references to add_widget_bec refactored ([`f51b25f`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f51b25f0af4ab8b0a75ee48a40bfbb079c16e9d1))
14
+
15
+ * fix(dock): add_widget and add_widget_bec consolidated ([`8ae323f`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/8ae323f5c3c0d9d0f202d31d5e8374a272a26be2))
16
+
17
+
18
+ ## v0.57.0 (2024-06-05)
19
+
20
+ ### Documentation
21
+
22
+ * docs: extend user documentation for BEC Widgets ([`4160f3d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4160f3d6d7ec1122785b5e3fdfc4afe67a95e9a1))
23
+
24
+ ### Feature
25
+
26
+ * feat(widgets/console): BECJupyterConsole added ([`8c03034`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/8c03034acf6b3ed1e346ebf1b785d41068513cc5))
27
+
28
+
5
29
  ## v0.56.3 (2024-06-05)
6
30
 
7
31
  ### Ci
@@ -149,27 +173,3 @@
149
173
  ### Fix
150
174
 
151
175
  * fix(docstrings): docstrings formating fixed for sphinx to properly format readdocs ([`7f2f7cd`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/7f2f7cd07a14876617cd83cedde8c281fdc52c3a))
152
-
153
-
154
- ## v0.52.0 (2024-05-07)
155
-
156
- ### Ci
157
-
158
- * ci: fixed support for child pipelines ([`e65c7f3`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/e65c7f3be895ada407bd358edf67d569d2cab08e))
159
-
160
- ### Feature
161
-
162
- * feat(utils/layout_manager): added GridLayoutManager to extend functionalities of native QGridLayout ([`fcd6ef0`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/fcd6ef0975dc872f69c9d6fb2b8a1ad04a423aae))
163
-
164
- * feat(widget/dock): BECDock and BECDock area for dockable windows ([`d8ff8af`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/d8ff8afcd474660a6069bbdab05f10a65f221727))
165
-
166
- ### Fix
167
-
168
- * fix(widgets/dock): BECDockArea close overwrites the default pyqtgraph Container close + minor improvements ([`ceae979`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ceae979f375ecc33c5c97148f197655c1ca57b6c))
169
-
170
- ### Refactor
171
-
172
- * refactor(widget/plots): WidgetConfig changed to SubplotConfig ([`03fa1f2`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/03fa1f26d0fa6b58ed05556fb2438d1e62f6c107))
173
-
174
-
175
- ## v0.51.0 (2024-05-07)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.56.3
3
+ Version: 0.57.1
4
4
  Summary: BEC Widgets
5
5
  Project-URL: Bug Tracker, https://gitlab.psi.ch/bec/bec_widgets/issues
6
6
  Project-URL: Homepage, https://gitlab.psi.ch/bec/bec_widgets
@@ -30,7 +30,7 @@ class AutoUpdates:
30
30
  Create a default dock for the auto updates.
31
31
  """
32
32
  dock = self.gui.add_dock("default_figure")
33
- dock.add_widget_bec("BECFigure")
33
+ dock.add_widget("BECFigure")
34
34
  self.dock_name = "default_figure"
35
35
 
36
36
  @staticmethod
@@ -1468,20 +1468,20 @@ class BECDock(RPCBase):
1468
1468
  """
1469
1469
 
1470
1470
  @rpc_call
1471
- def add_widget_bec(
1471
+ def add_widget(
1472
1472
  self,
1473
- widget_type: "str",
1473
+ widget: "BECConnector | str",
1474
1474
  row=None,
1475
1475
  col=0,
1476
1476
  rowspan=1,
1477
1477
  colspan=1,
1478
1478
  shift: "Literal['down', 'up', 'left', 'right']" = "down",
1479
- ):
1479
+ ) -> "BECConnector":
1480
1480
  """
1481
1481
  Add a widget to the dock.
1482
1482
 
1483
1483
  Args:
1484
- widget_type(str): The widget to add. Only BEC RPC widgets from RPCWidgetHandler are allowed.
1484
+ widget(QWidget): The widget to add.
1485
1485
  row(int): The row to add the widget to. If None, the widget will be added to the next available row.
1486
1486
  col(int): The column to add the widget to.
1487
1487
  rowspan(int): The number of rows the widget should span.
@@ -12,22 +12,22 @@ from qtpy.QtWidgets import QApplication, QVBoxLayout, QWidget
12
12
  from bec_widgets.utils import BECDispatcher, UILoader
13
13
  from bec_widgets.widgets import BECFigure
14
14
  from bec_widgets.widgets.dock.dock_area import BECDockArea
15
-
16
-
17
- class JupyterConsoleWidget(RichJupyterWidget): # pragma: no cover:
18
- def __init__(self):
19
- super().__init__()
20
-
21
- self.kernel_manager = QtInProcessKernelManager()
22
- self.kernel_manager.start_kernel(show_banner=False)
23
- self.kernel_client = self.kernel_manager.client()
24
- self.kernel_client.start_channels()
25
-
26
- self.kernel_manager.kernel.shell.push({"np": np, "pg": pg})
27
-
28
- def shutdown_kernel(self):
29
- self.kernel_client.stop_channels()
30
- self.kernel_manager.shutdown_kernel()
15
+ from bec_widgets.widgets.jupyter_console.jupyter_console import BECJupyterConsole
16
+
17
+ # class JupyterConsoleWidget(RichJupyterWidget): # pragma: no cover:
18
+ # def __init__(self):
19
+ # super().__init__()
20
+ #
21
+ # self.kernel_manager = QtInProcessKernelManager()
22
+ # self.kernel_manager.start_kernel(show_banner=False)
23
+ # self.kernel_client = self.kernel_manager.client()
24
+ # self.kernel_client.start_channels()
25
+ #
26
+ # self.kernel_manager.kernel.shell.push({"np": np, "pg": pg})
27
+ #
28
+ # def shutdown_kernel(self):
29
+ # self.kernel_client.stop_channels()
30
+ # self.kernel_manager.shutdown_kernel()
31
31
 
32
32
 
33
33
  class JupyterConsoleWindow(QWidget): # pragma: no cover:
@@ -45,25 +45,25 @@ class JupyterConsoleWindow(QWidget): # pragma: no cover:
45
45
  self.safe_close = False
46
46
 
47
47
  # console push
48
- self.console.kernel_manager.kernel.shell.push(
49
- {
50
- "fig": self.figure,
51
- "dock": self.dock,
52
- "w1": self.w1,
53
- "w2": self.w2,
54
- "w3": self.w3,
55
- "d0": self.d0,
56
- "d1": self.d1,
57
- "d2": self.d2,
58
- "fig0": self.fig0,
59
- "fig1": self.fig1,
60
- "fig2": self.fig2,
61
- "bar": self.bar,
62
- "bec": self.figure.client,
63
- "scans": self.figure.client.scans,
64
- "dev": self.figure.client.device_manager.devices,
65
- }
66
- )
48
+ if self.console.inprocess is True:
49
+ self.console.kernel_manager.kernel.shell.push(
50
+ {
51
+ "np": np,
52
+ "pg": pg,
53
+ "fig": self.figure,
54
+ "dock": self.dock,
55
+ "w1": self.w1,
56
+ "w2": self.w2,
57
+ "w3": self.w3,
58
+ "d0": self.d0,
59
+ "d1": self.d1,
60
+ "d2": self.d2,
61
+ "fig0": self.fig0,
62
+ "fig1": self.fig1,
63
+ "fig2": self.fig2,
64
+ "bar": self.bar,
65
+ }
66
+ )
67
67
 
68
68
  def _init_ui(self):
69
69
  # Plotting window
@@ -82,9 +82,8 @@ class JupyterConsoleWindow(QWidget): # pragma: no cover:
82
82
  self._init_dock()
83
83
 
84
84
  self.console_layout = QVBoxLayout(self.ui.widget_console)
85
- self.console = JupyterConsoleWidget()
85
+ self.console = BECJupyterConsole(inprocess=True)
86
86
  self.console_layout.addWidget(self.console)
87
- self.console.set_default_style("linux")
88
87
 
89
88
  def _init_figure(self):
90
89
  self.figure.plot(x_name="samx", y_name="bpm4d")
@@ -105,19 +104,19 @@ class JupyterConsoleWindow(QWidget): # pragma: no cover:
105
104
  def _init_dock(self):
106
105
 
107
106
  self.d0 = self.dock.add_dock(name="dock_0")
108
- self.fig0 = self.d0.add_widget_bec("BECFigure")
107
+ self.fig0 = self.d0.add_widget("BECFigure")
109
108
  self.fig0.image("eiger", vrange=(0, 100))
110
109
 
111
110
  self.d1 = self.dock.add_dock(name="dock_1", position="right")
112
- self.fig1 = self.d1.add_widget_bec("BECFigure")
111
+ self.fig1 = self.d1.add_widget("BECFigure")
113
112
  self.fig1.plot(x_name="samx", y_name="bpm4i")
114
113
  self.fig1.plot(x_name="samx", y_name="bpm3a")
115
114
 
116
115
  self.d2 = self.dock.add_dock(name="dock_2", position="bottom")
117
- self.fig2 = self.d2.add_widget_bec("BECFigure", row=0, col=0)
116
+ self.fig2 = self.d2.add_widget("BECFigure", row=0, col=0)
118
117
  self.fig2.motor_map(x_name="samx", y_name="samy")
119
118
  self.fig2.plot(x_name="samx", y_name="bpm4i")
120
- self.bar = self.d2.add_widget_bec("SpiralProgressBar", row=0, col=1)
119
+ self.bar = self.d2.add_widget("SpiralProgressBar", row=0, col=1)
121
120
  self.bar.set_diameter(200)
122
121
 
123
122
  self.dock.save_state()
@@ -144,7 +143,7 @@ if __name__ == "__main__": # pragma: no cover
144
143
  app = QApplication(sys.argv)
145
144
  app.setApplicationName("Jupyter Console")
146
145
  app.setApplicationDisplayName("Jupyter Console")
147
- qdarktheme.setup_theme("auto")
146
+ # qdarktheme.setup_theme("auto")
148
147
  icon = QIcon()
149
148
  icon.addFile(os.path.join(module_path, "assets", "terminal_icon.png"), size=QSize(48, 48))
150
149
  app.setWindowIcon(icon)
@@ -33,7 +33,7 @@ class BECDock(BECConnector, Dock):
33
33
  "hide_title_bar",
34
34
  "get_widgets_positions",
35
35
  "set_title",
36
- "add_widget_bec",
36
+ "add_widget",
37
37
  "list_eligible_widgets",
38
38
  "move_widget",
39
39
  "remove_widget",
@@ -152,47 +152,47 @@ class BECDock(BECConnector, Dock):
152
152
  """
153
153
  return list(RPCWidgetHandler.widget_classes.keys())
154
154
 
155
- def add_widget_bec(
156
- self,
157
- widget_type: str,
158
- row=None,
159
- col=0,
160
- rowspan=1,
161
- colspan=1,
162
- shift: Literal["down", "up", "left", "right"] = "down",
163
- ):
164
- """
165
- Add a widget to the dock.
166
-
167
- Args:
168
- widget_type(str): The widget to add. Only BEC RPC widgets from RPCWidgetHandler are allowed.
169
- row(int): The row to add the widget to. If None, the widget will be added to the next available row.
170
- col(int): The column to add the widget to.
171
- rowspan(int): The number of rows the widget should span.
172
- colspan(int): The number of columns the widget should span.
173
- shift(Literal["down", "up", "left", "right"]): The direction to shift the widgets if the position is occupied.
174
- """
175
- if row is None:
176
- row = self.layout.rowCount()
177
-
178
- if self.layout_manager.is_position_occupied(row, col):
179
- self.layout_manager.shift_widgets(shift, start_row=row)
180
-
181
- widget = RPCWidgetHandler.create_widget(widget_type)
182
- self.addWidget(widget, row=row, col=col, rowspan=rowspan, colspan=colspan)
183
- self.config.widgets[widget.gui_id] = widget.config
184
-
185
- return widget
155
+ # def add_widget_bec(
156
+ # self,
157
+ # widget_type: str,
158
+ # row=None,
159
+ # col=0,
160
+ # rowspan=1,
161
+ # colspan=1,
162
+ # shift: Literal["down", "up", "left", "right"] = "down",
163
+ # ):
164
+ # """
165
+ # Add a widget to the dock.
166
+ #
167
+ # Args:
168
+ # widget_type(str): The widget to add. Only BEC RPC widgets from RPCWidgetHandler are allowed.
169
+ # row(int): The row to add the widget to. If None, the widget will be added to the next available row.
170
+ # col(int): The column to add the widget to.
171
+ # rowspan(int): The number of rows the widget should span.
172
+ # colspan(int): The number of columns the widget should span.
173
+ # shift(Literal["down", "up", "left", "right"]): The direction to shift the widgets if the position is occupied.
174
+ # """
175
+ # if row is None:
176
+ # row = self.layout.rowCount()
177
+ #
178
+ # if self.layout_manager.is_position_occupied(row, col):
179
+ # self.layout_manager.shift_widgets(shift, start_row=row)
180
+ #
181
+ # widget = RPCWidgetHandler.create_widget(widget_type)
182
+ # self.addWidget(widget, row=row, col=col, rowspan=rowspan, colspan=colspan)
183
+ # self.config.widgets[widget.gui_id] = widget.config
184
+ #
185
+ # return widget
186
186
 
187
187
  def add_widget(
188
188
  self,
189
- widget: QWidget,
189
+ widget: BECConnector | str,
190
190
  row=None,
191
191
  col=0,
192
192
  rowspan=1,
193
193
  colspan=1,
194
194
  shift: Literal["down", "up", "left", "right"] = "down",
195
- ):
195
+ ) -> BECConnector:
196
196
  """
197
197
  Add a widget to the dock.
198
198
 
@@ -210,8 +210,17 @@ class BECDock(BECConnector, Dock):
210
210
  if self.layout_manager.is_position_occupied(row, col):
211
211
  self.layout_manager.shift_widgets(shift, start_row=row)
212
212
 
213
+ if isinstance(widget, str):
214
+ widget = RPCWidgetHandler.create_widget(widget)
215
+ else:
216
+ widget = widget
217
+
213
218
  self.addWidget(widget, row=row, col=col, rowspan=rowspan, colspan=colspan)
214
- self.config.widgets[widget.gui_id] = widget.config
219
+
220
+ if hasattr(widget, "config"):
221
+ self.config.widgets[widget.gui_id] = widget.config
222
+
223
+ return widget
215
224
 
216
225
  def move_widget(self, widget: QWidget, new_row: int, new_col: int):
217
226
  """
@@ -171,9 +171,7 @@ class BECDockArea(BECConnector, DockArea):
171
171
  dock.show_title_bar()
172
172
 
173
173
  if widget is not None and isinstance(widget, str):
174
- dock.add_widget_bec(
175
- widget_type=widget, row=row, col=col, rowspan=rowspan, colspan=colspan
176
- )
174
+ dock.add_widget(widget=widget, row=row, col=col, rowspan=rowspan, colspan=colspan)
177
175
  elif widget is not None and isinstance(widget, QWidget):
178
176
  dock.addWidget(widget, row=row, col=col, rowspan=rowspan, colspan=colspan)
179
177
  if self._instructions_visible:
@@ -0,0 +1,72 @@
1
+ from bec_ipython_client.main import BECIPythonClient
2
+ from qtconsole.inprocess import QtInProcessKernelManager
3
+ from qtconsole.manager import QtKernelManager
4
+ from qtconsole.rich_jupyter_widget import RichJupyterWidget
5
+ from qtpy.QtWidgets import QApplication, QMainWindow
6
+
7
+
8
+ class BECJupyterConsole(RichJupyterWidget): # pragma: no cover:
9
+ def __init__(self, inprocess: bool = False):
10
+ super().__init__()
11
+
12
+ self.inprocess = None
13
+
14
+ self.kernel_manager, self.kernel_client = self._init_kernel(inprocess=inprocess)
15
+ self.set_default_style("linux")
16
+ self._init_bec()
17
+
18
+ def _init_kernel(self, inprocess: bool = False, kernel_name: str = "python3"):
19
+ self.inprocess = inprocess
20
+ if inprocess is True:
21
+ print("starting inprocess kernel")
22
+ kernel_manager = QtInProcessKernelManager()
23
+ else:
24
+ kernel_manager = QtKernelManager(kernel_name=kernel_name)
25
+ kernel_manager.start_kernel()
26
+ kernel_client = kernel_manager.client()
27
+ kernel_client.start_channels()
28
+ return kernel_manager, kernel_client
29
+
30
+ def _init_bec(self):
31
+ if self.inprocess is True:
32
+ self._init_bec_inprocess()
33
+ else:
34
+ self._init_bec_kernel()
35
+
36
+ def _init_bec_inprocess(self):
37
+ self.client = BECIPythonClient()
38
+ self.client.start()
39
+
40
+ self.kernel_manager.kernel.shell.push(
41
+ {
42
+ "bec": self.client,
43
+ "dev": self.client.device_manager.devices,
44
+ "scans": self.client.scans,
45
+ }
46
+ )
47
+
48
+ def _init_bec_kernel(self):
49
+ self.execute(
50
+ """
51
+ from bec_ipython_client.main import BECIPythonClient
52
+ bec = BECIPythonClient()
53
+ bec.start()
54
+ dev = bec.device_manager.devices if bec else None
55
+ scans = bec.scans if bec else None
56
+ """
57
+ )
58
+
59
+ def shutdown_kernel(self):
60
+ self.kernel_client.stop_channels()
61
+ self.kernel_manager.shutdown_kernel()
62
+
63
+
64
+ if __name__ == "__main__": # pragma: no cover
65
+ import sys
66
+
67
+ app = QApplication(sys.argv)
68
+ win = QMainWindow()
69
+ win.setCentralWidget(BECJupyterConsole(True))
70
+ win.show()
71
+
72
+ sys.exit(app.exec_())
@@ -8,7 +8,3 @@
8
8
  maxdepth: 1
9
9
  hidden: true
10
10
  ---
11
-
12
- apps/motor_app
13
- apps/plot_app
14
- apps/modular_app
@@ -0,0 +1,87 @@
1
+ (user.command_line_introduction)=
2
+ # Command Line Introduction
3
+ In order to use BEC Widgets as a plotting tool for BEC, it needs to be [installed](#user.installation) in the same python environment as the BECIpythonClient. If that is the case, it will automatically launch a GUI and assign the control of the GUI to the `gui` object in the client. The GUI backend will also be automatically connect to the BEC server, giving access to all information on the server and allowing the user to visualize the data in real-time.
4
+
5
+ ## BECDockArea
6
+ The `gui` object represents the top level of hierarchy in BEC Widgets. It is a [`BECDockArea`](/api_reference/_autosummary/bec_widgets.cli.client.BECDockArea) based on the [pyqtgraph.dockarea](https://pyqtgraph.readthedocs.io/en/latest/api_reference/dockarea.html). The GUI can be further composed of multiple [`BECDock`](/api_reference/_autosummary/bec_widgets.cli.client.BECDock)s that can be detached and attached to the main area. These docks allow users to freely arrange and customize the widgets they add to the gui, giving them the necessary freedom to design the user interface they desire.
7
+
8
+ ## Widgets
9
+ Widgets are the building blocks of the BEC Widgets framework. They are the visual components that allow users to interact with the data and control the behavior of the application. Each dock can contain multiple widgets, although we recommend using a direct mapping of a single widget to a dock. We currently support two type of widgets:
10
+ - [`BECFigure`](/api_reference/_autosummary/bec_widgets.cli.client.BECFigure): A widget that can be used to visualize data from BEC. It is automatically connected to the BEC server and can be used to plot data from BEC.
11
+ - [`SpiralProgressBar`](/api_reference/_autosummary/bec_widgets.cli.client.SpiralProgressBar): A custom widget that can be used to show progress in a spiral shape.
12
+
13
+ **BECFigure**
14
+ The [`BECFigure`](/api_reference/_autosummary/bec_widgets.cli.client.BECFigure) widget is one of the core widgets developed for BEC and designed to be flexible and can be used to visualize different types of data. It can be used to visualize [1D Waveform](user.widgets.waveform_1d), [2D Scatter Plot](user.widgets.scatter_2d), [Motor Position Map](user.widgets.motor_map) and 2D image data. As mentioned before, starting the BECIPythonClient will automatically launch a `gui` with a single dock area and a BECFigure widget attached to it. This widget is accessible via the `fig` object from the client directly. We also provide two methods [`plot()`](/api_reference/_autosummary/bec_widgets.cli.client.BECFigure.rst#bec_widgets.cli.client.BECFigure.plot), [`image()`](/api_reference/_autosummary/bec_widgets.cli.client.BECFigure.rst#bec_widgets.cli.client.BECFigure.image) and [`motor_map()`](/api_reference/_autosummary/bec_widgets.cli.client.BECFigure.rst#bec_widgets.cli.client.BECFigure.motor_map) as shortcuts to add a plot, image or motor map to the BECFigure.
15
+
16
+ **Waveform Plot**
17
+ The [`BECWaveForm`](/api_reference/_autosummary/bec_widgets.cli.client.BECWaveform) is a widget that can be used to visualize 1D waveform data, i.e. to plot data of a monitor against a motor position. The method [`plot()`](/api_reference/_autosummary/bec_widgets.cli.client.BECFigure.rst#bec_widgets.cli.client.BECFigure.plot) of BECFigure adds a BECWaveForm widget to the figure, and returns the plot object.
18
+
19
+ ```python
20
+ plt = fig.add_plot('samx', 'bpm4i')
21
+ ```
22
+ Here, we assign the plot to the object `plt`. We can now use this object to further customize the plot, e.g. changing the title ([`set_title()`](/api_reference/_autosummary/bec_widgets.cli.client.BECWaveform.rst#bec_widgets.cli.client.BECWaveform.set_title)), axis labels ([`set_x_label()`](/api_reference/_autosummary/bec_widgets.cli.client.BECWaveform.rst#bec_widgets.cli.client.BECWaveform.set_x_label)) or limits ([`set_x_lim()`](/api_reference/_autosummary/bec_widgets.cli.client.BECWaveform.rst#bec_widgets.cli.client.BECWaveform.set_x_lim)). We invite you to explore the API of the BECWaveForm in the [documentation](user.widgets.waveform_1d) or directly in the command line.
23
+
24
+ **Scatter Plot**
25
+ The [`BECWaveForm`](/api_reference/_autosummary/bec_widgets.cli.client.BECWaveForm) widget can also be used to visualize 2D scatter plots. More details on setting up the scatter plot are available in the widget documentation of the [scatter plot](user.widgets.scatter_2d).
26
+
27
+ **Motor Map**
28
+ The [`BECMotorMap`](/api_reference/_autosummary/bec_widgets.cli.client.BECMotorMap) widget can be used to visualize the position of motors. It's focused on tracking and visualizing the position of motors, crucial for precise alignment and movement tracking during scans. More details on setting up the motor map are available in the widget documentation of the [motor map](user.widgets.motor_map).
29
+
30
+ **Image Plot**
31
+ The [`BECImageItem`](/api_reference/_autosummary/bec_widgets.cli.client.BECImageItem) widget can be used to visualize 2D image data for example a camera. More details on setting up the image plot are available in the widget documentation of the [image plot](user.widgets.image)
32
+
33
+ ### Useful Commands
34
+ We recommend users to explore the API of the widgets by themselves since we assume that the user interface is supposed to be intuitive and self-explanatory. We appreciate feedback from user in order to constantly improve the experience and allow easy access to the gui, widgets and their functionality. We recommend checking the [API documentation](user.api_reference), but also by using BEC Widgets, exploring the available functions and check their dockstrings.
35
+ ```python
36
+ gui.add_dock? # shows the dockstring of the add_dock method
37
+ ```
38
+
39
+ In addition, we list below a few useful commands that can be used to interface with the widgets:
40
+
41
+ ```python
42
+ gui.panels # returns a dictionary of all docks in the gui
43
+ gui.add_dock() # adds a new dock to the gui
44
+
45
+ dock = gui.panels['dock_2']
46
+ dock.add_widget_bec('BECFigure') # adds a new widget of BECFigure to the dock
47
+ dock.widget_list # returns a list of all widgets in the dock
48
+
49
+ figure = dock.widget_list[0] # assigns the created BECFigure to figure
50
+ plt = figure.add_plot('samx', 'bpm4i') # adds a BECWaveForm plot to the figure
51
+ plt.curves # returns a list of all curves in the plot
52
+ ```
53
+
54
+ We note that commands can also be chained. For example, `gui.add_dock().add_widget_bec('BECFigure')` will add a new dock to the gui and add a new widget of `BECFigure` to the dock.
55
+
56
+ ## Composing a larger GUI
57
+ The example given above introduces BEC Widgets with its different components, and provides an overview of how to interact with the widgets. Nevertheless, another power aspect of BEC Widgets lies in the ability to compose a larger GUI with multiple docks and widgets. This section aims to provide a tutorial like guide on how to compose a more complex GUI that (A) live-plots a 1D waveform, (B) plots data from a camera, and (C) tracks the positions of two motors.
58
+ Let's assume BEC was just started and the `gui` object is available in the client. A single dock is already attached together with a BEC Figure. Let's add the 1D waveform to this dock, change the color of the line to white and add the title *1D Waveform* to the plot.
59
+
60
+ ```python
61
+ plt = fig.add_plot('samx', 'bpm4i')
62
+ plt.curves[0].set_color(color="white")
63
+ plt.set_title('1D Waveform')
64
+ ```
65
+
66
+ Next, we add 2 new docks to the gui, one to plot the data of a camera and one to track the positions of two motors.
67
+ ```ipython
68
+ cam_widget= gui.add_dock(name="cam_dock").add_widget_bec('BECFigure').image("eiger")
69
+ motor_widget = gui.add_dock(name="mot_dock").add_widget_bec('BECFigure').motor_map("samx", "samy")
70
+ ```
71
+ Note, we chain commands here which is possible since the `add_dock` and `add_widget_bec` methods return the dock and the widget respectively. We can now further customize the widgets by changing the title, axis labels, etc.
72
+
73
+ ```python
74
+ cam_widget.set_title("Camera Image Eiger")
75
+ cam_widget.set_vrange(vmin=0, vmax=100)
76
+ ```
77
+ As a final step, we can now add also a SpiralProgressBar to a new dock, and perform a grid_scan with the motors *samx* and *samy*.
78
+ As you see in the example below, all docks are arranged below each other. This is the default behavior of the `add_dock` method. However, the docks can be freely arranged by drag and drop as desired by the user. We invite you to explore this by yourself following the example in the video, and build your custom GUI with BEC Widgets.
79
+
80
+ ```python
81
+ prog_bar = gui.add_dock(name="prog_dock").add_widget_bec('SpiralProgressBar')
82
+ prog_bar.set_line_widths(15)
83
+ scans.grid_scan(dev.samy, -2, 2, 10, dev.samx, -5, 5, 10, exp_time=0.1, relative=False)
84
+ ```
85
+
86
+ ![gui_complex_gui](./gui_complex_gui.gif)
87
+
@@ -8,5 +8,6 @@ maxdepth: 2
8
8
  hidden: true
9
9
  ---
10
10
 
11
- getting_started/installation
11
+ installation/
12
+ command_line_introduction/
12
13
  ```
@@ -1,7 +1,5 @@
1
1
  (user.installation)=
2
2
  # Installation
3
-
4
-
5
3
  **Prerequisites**
6
4
 
7
5
  Before installing BEC Widgets, please ensure the following requirements are met:
@@ -11,25 +9,14 @@ Before installing BEC Widgets, please ensure the following requirements are met:
11
9
 
12
10
  **Standard Installation**
13
11
 
14
- Install BEC Widgets using the pip package manager. Open your terminal and execute:
15
-
16
- ```bash
17
- pip install bec_widgets PyQt6
18
- ```
19
-
20
- This command installs BEC Widgets along with its dependencies, including the default PyQt6.
21
-
22
- **Selecting a PyQt Version**
23
-
24
- BEC Widgets supports both PyQt5 and PyQt6. To install a specific version, use:
12
+ To install BEC Widgets using the pip package manager, execute the following command in your terminal for getting the default PyQT6 version in your python environment:
25
13
 
26
- For PyQt6:
27
14
 
28
15
  ```bash
29
16
  pip install bec_widgets[pyqt6]
30
17
  ```
31
18
 
32
- For PyQt5:
19
+ In case you want to use PyQt5, you can install it by using the following command:
33
20
 
34
21
  ```bash
35
22
  pip install bec_widgets[pyqt5]