bec-widgets 0.95.0__py3-none-any.whl → 0.96.0__py3-none-any.whl

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 (57) hide show
  1. CHANGELOG.md +26 -16
  2. PKG-INFO +1 -1
  3. bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +5 -3
  4. bec_widgets/widgets/bec_queue/bec_queue_plugin.py +5 -3
  5. bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py +5 -3
  6. bec_widgets/widgets/color_button/color_button_plugin.py +5 -3
  7. bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py +5 -3
  8. bec_widgets/widgets/device_browser/device_browser_plugin.py +5 -2
  9. bec_widgets/widgets/device_combobox/device_combo_box_plugin.py +5 -3
  10. bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py +5 -3
  11. bec_widgets/widgets/dock/dock_area_plugin.py +5 -3
  12. bec_widgets/widgets/image/bec_image_widget_plugin.py +5 -3
  13. bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py +5 -3
  14. bec_widgets/widgets/position_indicator/position_indicator_plugin.py +5 -3
  15. bec_widgets/widgets/positioner_box/positioner_box_plugin.py +5 -3
  16. bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py +5 -3
  17. bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py +5 -3
  18. bec_widgets/widgets/scan_control/scan_control.py +77 -16
  19. bec_widgets/widgets/scan_control/scan_control_plugin.py +5 -3
  20. bec_widgets/widgets/spinner/spinner_widget_plugin.py +5 -3
  21. bec_widgets/widgets/stop_button/stop_button_plugin.py +5 -3
  22. bec_widgets/widgets/text_box/text_box_plugin.py +5 -3
  23. bec_widgets/widgets/toggle/toggle_switch_plugin.py +5 -3
  24. bec_widgets/widgets/vscode/vs_code_editor_plugin.py +5 -3
  25. bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py +5 -3
  26. bec_widgets/widgets/website/website_widget_plugin.py +5 -3
  27. {bec_widgets-0.95.0.dist-info → bec_widgets-0.96.0.dist-info}/METADATA +1 -1
  28. {bec_widgets-0.95.0.dist-info → bec_widgets-0.96.0.dist-info}/RECORD +36 -55
  29. docs/developer/introduction/introduction.md +1 -0
  30. docs/developer/introduction/useful_links.md +23 -0
  31. docs/user/widgets/scan_control/hide_scan_control.png +0 -0
  32. docs/user/widgets/scan_control/scan_control.md +10 -2
  33. pyproject.toml +1 -1
  34. bec_widgets/assets/designer_icons/code.png +0 -0
  35. bec_widgets/assets/designer_icons/color_button.png +0 -0
  36. bec_widgets/assets/designer_icons/colormap_selector.png +0 -0
  37. bec_widgets/assets/designer_icons/device_combo_box.png +0 -0
  38. bec_widgets/assets/designer_icons/device_line_edit.png +0 -0
  39. bec_widgets/assets/designer_icons/dock_area.png +0 -0
  40. bec_widgets/assets/designer_icons/games.png +0 -0
  41. bec_widgets/assets/designer_icons/image.png +0 -0
  42. bec_widgets/assets/designer_icons/motor_map.png +0 -0
  43. bec_widgets/assets/designer_icons/position_indicator.png +0 -0
  44. bec_widgets/assets/designer_icons/positioner_box.png +0 -0
  45. bec_widgets/assets/designer_icons/queue.png +0 -0
  46. bec_widgets/assets/designer_icons/ring_progress.png +0 -0
  47. bec_widgets/assets/designer_icons/scan_control.png +0 -0
  48. bec_widgets/assets/designer_icons/spinner.png +0 -0
  49. bec_widgets/assets/designer_icons/status.png +0 -0
  50. bec_widgets/assets/designer_icons/stop.png +0 -0
  51. bec_widgets/assets/designer_icons/text.png +0 -0
  52. bec_widgets/assets/designer_icons/toggle.png +0 -0
  53. bec_widgets/assets/designer_icons/waveform.png +0 -0
  54. bec_widgets/assets/designer_icons/web.png +0 -0
  55. {bec_widgets-0.95.0.dist-info → bec_widgets-0.96.0.dist-info}/WHEEL +0 -0
  56. {bec_widgets-0.95.0.dist-info → bec_widgets-0.96.0.dist-info}/entry_points.txt +0 -0
  57. {bec_widgets-0.95.0.dist-info → bec_widgets-0.96.0.dist-info}/licenses/LICENSE +0 -0
CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.96.0 (2024-08-22)
4
+
5
+ ### Documentation
6
+
7
+ * docs(scan_control): added designer options ([`9d7718c`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/9d7718c3d9badf14150174410b9958a3134a1e23))
8
+
9
+ ### Feature
10
+
11
+ * feat(scan_control): added the ability to configure the scan control widget from designer ([`9d8fb0b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/9d8fb0b761efa92972399bcd9aea28e956074380))
12
+
13
+ ## v0.95.1 (2024-08-22)
14
+
15
+ ### Documentation
16
+
17
+ * docs: links section added ([`2bf5c70`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/2bf5c7096e7d822713e1b50bde89f072e6356e17))
18
+
19
+ ### Fix
20
+
21
+ * fix(docs): changed link to scan gui config in main docs ([`640464a`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/640464a6543b2111bdb58d0174f2ce86c5836cbe))
22
+
23
+ ### Refactor
24
+
25
+ * refactor: removed designer pngs ([`84abe46`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/84abe460502d838aac41bb8ff63d93c9fcec9214))
26
+
27
+ * refactor: moved to dynamically loaded material design icons ([`1d2afaa`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/1d2afaa09e64b7f714d72796e87e2cb49b2a75a7))
28
+
3
29
  ## v0.95.0 (2024-08-21)
4
30
 
5
31
  ### Documentation
@@ -132,22 +158,6 @@ Terminating client connections has to be done at the application level ([`198c1d
132
158
 
133
159
  * fix(dock): properly shut down docks and temp areas ([`99ee545`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/99ee545e41c6078654958b668b5b329f85553d16))
134
160
 
135
- * fix(settings): shut down settings dialog ([`b50b3a2`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b50b3a27e68956e10e8169a0aa698c911d2d9642))
136
-
137
- * fix(website): fixed teardown of website widgets ([`a3d4f5a`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a3d4f5ac4bc52acfed2791a1724fade6972ed320))
138
-
139
- * fix(dock): properly shut down docks and dock areas ([`bc26497`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/bc264975b1363c9dfea516621d7878c320677d15))
140
-
141
- * fix(figure): cleanup pyqtgraph ([`ad07bbf`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ad07bbf85e9c8d9838bdd686f69d41c235b7db19))
142
-
143
161
  ### Test
144
162
 
145
163
  * test: removed quit from teardown ([`cf94599`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/cf94599c2544d6831c8afbe7b340082077557ed1))
146
-
147
- * test: removed explicit call to close the widget ([`bf6294e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/bf6294ecbfd494565d2dc215e4d7e0c280ac7745))
148
-
149
- * test: use factory instead of fixture to properly cleanup widgets on teardown ([`9856857`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/9856857f4cc7fa229c10d00fbae4452464a207cb))
150
-
151
- * test: ensure all toplevelwidgets are closed ([`f9e5897`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f9e58979009cf632feea529700ad191401dd7eb8))
152
-
153
- ## v0.93.2 (2024-08-07)
PKG-INFO CHANGED
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.95.0
3
+ Version: 0.96.0
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
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.examples.plugin_example_pyside.tictactoe import TicTacToe
@@ -46,8 +47,9 @@ class TicTacToePlugin(QDesignerCustomWidgetInterface): # pragma: no cover
46
47
  return "Games"
47
48
 
48
49
  def icon(self):
49
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "games.png")
50
- return QIcon(icon_path)
50
+ palette = QGuiApplication.palette()
51
+ pixmap = material_icon("sports_esports", color=palette.text().color(), filled=True)
52
+ return QIcon(pixmap)
51
53
 
52
54
  def includeFile(self):
53
55
  return "tictactoe"
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.widgets.bec_queue.bec_queue import BECQueue
@@ -34,8 +35,9 @@ class BECQueuePlugin(QDesignerCustomWidgetInterface): # pragma: no cover
34
35
  return "BEC Services"
35
36
 
36
37
  def icon(self):
37
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "device_line_edit.png")
38
- return QIcon(icon_path)
38
+ palette = QGuiApplication.palette()
39
+ pixmap = material_icon("edit_note", color=palette.text().color(), filled=True)
40
+ return QIcon(pixmap)
39
41
 
40
42
  def includeFile(self):
41
43
  return "bec_queue"
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.widgets.bec_status_box.bec_status_box import BECStatusBox
@@ -34,8 +35,9 @@ class BECStatusBoxPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
34
35
  return "BEC Services"
35
36
 
36
37
  def icon(self):
37
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "status.png")
38
- return QIcon(icon_path)
38
+ palette = QGuiApplication.palette()
39
+ pixmap = material_icon("dns", color=palette.text().color(), filled=True)
40
+ return QIcon(pixmap)
39
41
 
40
42
  def includeFile(self):
41
43
  return "bec_status_box"
@@ -1,7 +1,8 @@
1
1
  import os
2
2
 
3
+ from bec_qthemes import material_icon
3
4
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
4
- from qtpy.QtGui import QIcon
5
+ from qtpy.QtGui import QGuiApplication, QIcon
5
6
 
6
7
  import bec_widgets
7
8
  from bec_widgets.widgets.color_button.color_button import ColorButton
@@ -31,8 +32,9 @@ class ColorButtonPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
31
32
  return "BEC Buttons"
32
33
 
33
34
  def icon(self):
34
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "color_button.png")
35
- return QIcon(icon_path)
35
+ palette = QGuiApplication.palette()
36
+ pixmap = material_icon("colors", color=palette.text().color(), filled=True)
37
+ return QIcon(pixmap)
36
38
 
37
39
  def includeFile(self):
38
40
  return "color_button"
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.widgets.colormap_selector.colormap_selector import ColormapSelector
@@ -34,8 +35,9 @@ class ColormapSelectorPlugin(QDesignerCustomWidgetInterface): # pragma: no cove
34
35
  return "BEC Buttons"
35
36
 
36
37
  def icon(self):
37
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "colormap_selector.png")
38
- return QIcon(icon_path)
38
+ palette = QGuiApplication.palette()
39
+ pixmap = material_icon("palette", color=palette.text().color(), filled=True)
40
+ return QIcon(pixmap)
39
41
 
40
42
  def includeFile(self):
41
43
  return "colormap_selector"
@@ -1,8 +1,9 @@
1
1
  # Copyright (C) 2022 The Qt Company Ltd.
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
 
4
+ from bec_qthemes import material_icon
4
5
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
5
- from qtpy.QtGui import QIcon
6
+ from qtpy.QtGui import QGuiApplication, QIcon
6
7
 
7
8
  from bec_widgets.widgets.device_browser.device_browser import DeviceBrowser
8
9
 
@@ -30,7 +31,9 @@ class DeviceBrowserPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
30
31
  return "BEC Services"
31
32
 
32
33
  def icon(self):
33
- return QIcon()
34
+ palette = QGuiApplication.palette()
35
+ pixmap = material_icon("lists", color=palette.text().color(), filled=True)
36
+ return QIcon(pixmap)
34
37
 
35
38
  def includeFile(self):
36
39
  return "device_browser"
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.widgets.device_combobox.device_combobox import DeviceComboBox
@@ -34,8 +35,9 @@ class DeviceComboBoxPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
34
35
  return "Device Control"
35
36
 
36
37
  def icon(self):
37
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "device_combo_box.png")
38
- return QIcon(icon_path)
38
+ palette = QGuiApplication.palette()
39
+ pixmap = material_icon("list_alt", color=palette.text().color(), filled=True)
40
+ return QIcon(pixmap)
39
41
 
40
42
  def includeFile(self):
41
43
  return "device_combobox"
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.widgets.device_line_edit.device_line_edit import DeviceLineEdit
@@ -34,8 +35,9 @@ class DeviceLineEditPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
34
35
  return "Device Control"
35
36
 
36
37
  def icon(self):
37
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "device_line_edit.png")
38
- return QIcon(icon_path)
38
+ palette = QGuiApplication.palette()
39
+ pixmap = material_icon("edit_note", color=palette.text().color(), filled=True)
40
+ return QIcon(pixmap)
39
41
 
40
42
  def includeFile(self):
41
43
  return "device_line_edit"
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.widgets.dock import BECDockArea
@@ -34,8 +35,9 @@ class BECDockAreaPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
34
35
  return "BEC Plots"
35
36
 
36
37
  def icon(self):
37
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "dock_area.png")
38
- return QIcon(icon_path)
38
+ palette = QGuiApplication.palette()
39
+ pixmap = material_icon("widgets", color=palette.text().color(), filled=True)
40
+ return QIcon(pixmap)
39
41
 
40
42
  def includeFile(self):
41
43
  return "dock_area"
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.widgets.image.image_widget import BECImageWidget
@@ -34,8 +35,9 @@ class BECImageWidgetPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
34
35
  return "BEC Plots"
35
36
 
36
37
  def icon(self):
37
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "image.png")
38
- return QIcon(icon_path)
38
+ palette = QGuiApplication.palette()
39
+ pixmap = material_icon("image", color=palette.text().color(), filled=True)
40
+ return QIcon(pixmap)
39
41
 
40
42
  def includeFile(self):
41
43
  return "bec_image_widget"
@@ -1,7 +1,8 @@
1
1
  import os
2
2
 
3
+ from bec_qthemes import material_icon
3
4
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
4
- from qtpy.QtGui import QIcon
5
+ from qtpy.QtGui import QGuiApplication, QIcon
5
6
 
6
7
  import bec_widgets
7
8
  from bec_widgets.widgets.motor_map.motor_map_widget import BECMotorMapWidget
@@ -32,8 +33,9 @@ class BECMotorMapWidgetPlugin(QDesignerCustomWidgetInterface): # pragma: no cov
32
33
  return "BEC Plots"
33
34
 
34
35
  def icon(self):
35
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "motor_map.png")
36
- return QIcon(icon_path)
36
+ palette = QGuiApplication.palette()
37
+ pixmap = material_icon("my_location", color=palette.text().color(), filled=True)
38
+ return QIcon(pixmap)
37
39
 
38
40
  def includeFile(self):
39
41
  return "bec_motor_map_widget"
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.widgets.position_indicator.position_indicator import PositionIndicator
@@ -34,8 +35,9 @@ class PositionIndicatorPlugin(QDesignerCustomWidgetInterface): # pragma: no cov
34
35
  return "BEC Utils"
35
36
 
36
37
  def icon(self):
37
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "position_indicator.png")
38
- return QIcon(icon_path)
38
+ palette = QGuiApplication.palette()
39
+ pixmap = material_icon("horizontal_distribute", color=palette.text().color(), filled=True)
40
+ return QIcon(pixmap)
39
41
 
40
42
  def includeFile(self):
41
43
  return "position_indicator"
@@ -3,8 +3,9 @@
3
3
 
4
4
  import os
5
5
 
6
+ from bec_qthemes import material_icon
6
7
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
7
- from qtpy.QtGui import QIcon
8
+ from qtpy.QtGui import QGuiApplication, QIcon
8
9
 
9
10
  from bec_widgets.widgets.positioner_box.positioner_box import PositionerBox
10
11
 
@@ -33,8 +34,9 @@ class PositionerBoxPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
33
34
  return "Device Control"
34
35
 
35
36
  def icon(self):
36
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "positioner_box.png")
37
- return QIcon(icon_path)
37
+ palette = QGuiApplication.palette()
38
+ pixmap = material_icon("switch_right", color=palette.text().color(), filled=True)
39
+ return QIcon(pixmap)
38
40
 
39
41
  def includeFile(self):
40
42
  return "positioner_box"
@@ -3,8 +3,9 @@
3
3
 
4
4
  import os
5
5
 
6
+ from bec_qthemes import material_icon
6
7
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
7
- from qtpy.QtGui import QIcon
8
+ from qtpy.QtGui import QGuiApplication, QIcon
8
9
 
9
10
  from bec_widgets.widgets.positioner_box.positioner_control_line import PositionerControlLine
10
11
 
@@ -33,8 +34,9 @@ class PositionerControlLinePlugin(QDesignerCustomWidgetInterface): # pragma: no
33
34
  return "Device Control"
34
35
 
35
36
  def icon(self):
36
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "positioner_box.png")
37
- return QIcon(icon_path)
37
+ palette = QGuiApplication.palette()
38
+ pixmap = material_icon("switch_left", color=palette.text().color(), filled=True)
39
+ return QIcon(pixmap)
38
40
 
39
41
  def includeFile(self):
40
42
  return "positioner_control_line"
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.widgets.ring_progress_bar.ring_progress_bar import RingProgressBar
@@ -33,8 +34,9 @@ class RingProgressBarPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
33
34
  return "BEC Utils"
34
35
 
35
36
  def icon(self):
36
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "ring_progress.png")
37
- return QIcon(icon_path)
37
+ palette = QGuiApplication.palette()
38
+ pixmap = material_icon("track_changes", color=palette.text().color(), filled=True)
39
+ return QIcon(pixmap)
38
40
 
39
41
  def includeFile(self):
40
42
  return "ring_progress_bar"
@@ -1,9 +1,11 @@
1
1
  from bec_lib.endpoints import MessageEndpoints
2
+ from qtpy.QtCore import Property, Signal, Slot
2
3
  from qtpy.QtWidgets import (
3
4
  QApplication,
4
5
  QComboBox,
5
6
  QGridLayout,
6
7
  QGroupBox,
8
+ QHBoxLayout,
7
9
  QPushButton,
8
10
  QSizePolicy,
9
11
  QVBoxLayout,
@@ -18,6 +20,9 @@ from bec_widgets.widgets.stop_button.stop_button import StopButton
18
20
 
19
21
  class ScanControl(BECWidget, QWidget):
20
22
 
23
+ scan_started = Signal()
24
+ scan_selected = Signal(str)
25
+
21
26
  def __init__(
22
27
  self, parent=None, client=None, gui_id: str | None = None, allowed_scans: list | None = None
23
28
  ):
@@ -50,11 +55,26 @@ class ScanControl(BECWidget, QWidget):
50
55
  self.layout.addWidget(self.scan_selection_group)
51
56
 
52
57
  # Connect signals
53
- self.comboBox_scan_selection.currentIndexChanged.connect(self.on_scan_selected)
58
+ self.comboBox_scan_selection.currentIndexChanged.connect(self.on_scan_selection_changed)
54
59
  self.button_run_scan.clicked.connect(self.run_scan)
60
+
61
+ # Add bundle button
62
+ self.button_add_bundle = QPushButton("Add Bundle")
63
+ self.button_add_bundle.setVisible(False)
64
+ # Remove bundle button
65
+ self.button_remove_bundle = QPushButton("Remove Bundle")
66
+ self.button_remove_bundle.setVisible(False)
67
+
68
+ bundle_layout = QHBoxLayout()
69
+ bundle_layout.addWidget(self.button_add_bundle)
70
+ bundle_layout.addWidget(self.button_remove_bundle)
71
+ self.layout.addLayout(bundle_layout)
72
+
55
73
  self.button_add_bundle.clicked.connect(self.add_arg_bundle)
56
74
  self.button_remove_bundle.clicked.connect(self.remove_arg_bundle)
57
75
 
76
+ self.scan_selected.connect(self.scan_select)
77
+
58
78
  # Initialize scan selection
59
79
  self.populate_scans()
60
80
 
@@ -69,21 +89,16 @@ class ScanControl(BECWidget, QWidget):
69
89
  scan_selection_group = QGroupBox("Scan Selection", self)
70
90
  self.scan_selection_layout = QGridLayout(scan_selection_group)
71
91
  self.comboBox_scan_selection = QComboBox(scan_selection_group)
92
+
72
93
  # Run button
73
94
  self.button_run_scan = QPushButton("Start", scan_selection_group)
74
95
  self.button_run_scan.setStyleSheet("background-color: #559900; color: white")
75
96
  # Stop button
76
97
  self.button_stop_scan = StopButton(parent=scan_selection_group)
77
- # Add bundle button
78
- self.button_add_bundle = QPushButton("Add Bundle", scan_selection_group)
79
- # Remove bundle button
80
- self.button_remove_bundle = QPushButton("Remove Bundle", scan_selection_group)
81
98
 
82
99
  self.scan_selection_layout.addWidget(self.comboBox_scan_selection, 0, 0, 1, 2)
83
100
  self.scan_selection_layout.addWidget(self.button_run_scan, 1, 0)
84
101
  self.scan_selection_layout.addWidget(self.button_stop_scan, 1, 1)
85
- self.scan_selection_layout.addWidget(self.button_add_bundle, 2, 0)
86
- self.scan_selection_layout.addWidget(self.button_remove_bundle, 2, 1)
87
102
 
88
103
  return scan_selection_group
89
104
 
@@ -104,23 +119,65 @@ class ScanControl(BECWidget, QWidget):
104
119
  allowed_scans = self.allowed_scans
105
120
  self.comboBox_scan_selection.addItems(allowed_scans)
106
121
 
107
- def on_scan_selected(self):
122
+ def on_scan_selection_changed(self, index: int):
108
123
  """Callback for scan selection combo box"""
109
- self.reset_layout()
110
124
  selected_scan_name = self.comboBox_scan_selection.currentText()
111
- selected_scan_info = self.available_scans.get(selected_scan_name, {})
125
+ self.scan_selected.emit(selected_scan_name)
126
+
127
+ @Property(bool)
128
+ def hide_scan_control_buttons(self):
129
+ return not self.button_run_scan.isVisible()
130
+
131
+ @hide_scan_control_buttons.setter
132
+ def hide_scan_control_buttons(self, hide: bool):
133
+ self.show_scan_control_buttons(not hide)
134
+
135
+ @Slot(bool)
136
+ def show_scan_control_buttons(self, show: bool):
137
+ """Shows or hides the scan control buttons."""
138
+ self.button_run_scan.setVisible(show)
139
+ self.button_stop_scan.setVisible(show)
140
+
141
+ show_group = show or self.button_run_scan.isVisible()
142
+ self.scan_selection_group.setVisible(show_group)
143
+
144
+ @Property(bool)
145
+ def hide_scan_selection_combobox(self):
146
+ return not self.comboBox_scan_selection.isVisible()
147
+
148
+ @hide_scan_selection_combobox.setter
149
+ def hide_scan_selection_combobox(self, hide: bool):
150
+ self.show_scan_selection_combobox(not hide)
151
+
152
+ @Slot(bool)
153
+ def show_scan_selection_combobox(self, show: bool):
154
+ """Shows or hides the scan selection combobox."""
155
+ self.comboBox_scan_selection.setVisible(show)
156
+
157
+ show_group = show or self.button_run_scan.isVisible()
158
+ self.scan_selection_group.setVisible(show_group)
159
+
160
+ @Slot(str)
161
+ def scan_select(self, scan_name: str):
162
+ """
163
+ Slot for scan selection. Updates the scan control layout based on the selected scan.
164
+
165
+ Args:
166
+ scan_name(str): Name of the selected scan.
167
+ """
168
+ self.reset_layout()
169
+ selected_scan_info = self.available_scans.get(scan_name, {})
112
170
 
113
171
  gui_config = selected_scan_info.get("gui_config", {})
114
172
  self.arg_group = gui_config.get("arg_group", None)
115
173
  self.kwarg_groups = gui_config.get("kwarg_groups", None)
116
174
 
117
- if self.arg_box is None:
118
- self.button_add_bundle.setEnabled(False)
119
- self.button_remove_bundle.setEnabled(False)
175
+ show_bundle_buttons = bool(self.arg_group["arg_inputs"])
176
+
177
+ self.button_add_bundle.setVisible(show_bundle_buttons)
178
+ self.button_remove_bundle.setVisible(show_bundle_buttons)
120
179
 
121
- if len(self.arg_group["arg_inputs"]) > 0:
122
- self.button_add_bundle.setEnabled(True)
123
- self.button_remove_bundle.setEnabled(True)
180
+ if show_bundle_buttons:
124
181
  self.add_arg_group(self.arg_group)
125
182
  if len(self.kwarg_groups) > 0:
126
183
  self.add_kwargs_boxes(self.kwarg_groups)
@@ -151,9 +208,11 @@ class ScanControl(BECWidget, QWidget):
151
208
  self.arg_box.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
152
209
  self.layout.addWidget(self.arg_box)
153
210
 
211
+ @Slot()
154
212
  def add_arg_bundle(self):
155
213
  self.arg_box.add_widget_bundle()
156
214
 
215
+ @Slot()
157
216
  def remove_arg_bundle(self):
158
217
  self.arg_box.remove_widget_bundle()
159
218
 
@@ -172,7 +231,9 @@ class ScanControl(BECWidget, QWidget):
172
231
  box.deleteLater()
173
232
  self.kwarg_boxes = []
174
233
 
234
+ @Slot()
175
235
  def run_scan(self):
236
+ self.scan_started.emit()
176
237
  args = []
177
238
  kwargs = {}
178
239
  if self.arg_box is not None:
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.widgets.scan_control.scan_control import ScanControl
@@ -33,8 +34,9 @@ class ScanControlPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
33
34
  return "Device Control"
34
35
 
35
36
  def icon(self):
36
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "scan_control.png")
37
- return QIcon(icon_path)
37
+ palette = QGuiApplication.palette()
38
+ pixmap = material_icon("stacked_line_chart", color=palette.text().color(), filled=True)
39
+ return QIcon(pixmap)
38
40
 
39
41
  def includeFile(self):
40
42
  return "scan_control"
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.widgets.spinner.spinner import SpinnerWidget
@@ -34,8 +35,9 @@ class SpinnerWidgetPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
34
35
  return "BEC Utils"
35
36
 
36
37
  def icon(self):
37
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "spinner.png")
38
- return QIcon(icon_path)
38
+ palette = QGuiApplication.palette()
39
+ pixmap = material_icon("progress_activity", color=palette.text().color(), filled=True)
40
+ return QIcon(pixmap)
39
41
 
40
42
  def includeFile(self):
41
43
  return "spinner_widget"
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.widgets.stop_button.stop_button import StopButton
@@ -34,8 +35,9 @@ class StopButtonPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
34
35
  return "BEC Utils"
35
36
 
36
37
  def icon(self):
37
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "stop.png")
38
- return QIcon(icon_path)
38
+ palette = QGuiApplication.palette()
39
+ pixmap = material_icon("dangerous", color=palette.text().color(), filled=True)
40
+ return QIcon(pixmap)
39
41
 
40
42
  def includeFile(self):
41
43
  return "stop_button"
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.widgets.text_box.text_box import TextBox
@@ -33,8 +34,9 @@ class TextBoxPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
33
34
  return "BEC Utils"
34
35
 
35
36
  def icon(self):
36
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "text.png")
37
- return QIcon(icon_path)
37
+ palette = QGuiApplication.palette()
38
+ pixmap = material_icon("chat", color=palette.text().color(), filled=True)
39
+ return QIcon(pixmap)
38
40
 
39
41
  def includeFile(self):
40
42
  return "text_box"
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.widgets.toggle.toggle import ToggleSwitch
@@ -34,8 +35,9 @@ class ToggleSwitchPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
34
35
  return "BEC Utils"
35
36
 
36
37
  def icon(self):
37
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "toggle.png")
38
- return QIcon(icon_path)
38
+ palette = QGuiApplication.palette()
39
+ pixmap = material_icon("toggle_on", color=palette.text().color(), filled=True)
40
+ return QIcon(pixmap)
39
41
 
40
42
  def includeFile(self):
41
43
  return "toggle_switch"
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.widgets.vscode.vscode import VSCodeEditor
@@ -34,8 +35,9 @@ class VSCodeEditorPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
34
35
  return "BEC Developer"
35
36
 
36
37
  def icon(self):
37
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "code.png")
38
- return QIcon(icon_path)
38
+ palette = QGuiApplication.palette()
39
+ pixmap = material_icon("developer_mode_tv", color=palette.text().color(), filled=True)
40
+ return QIcon(pixmap)
39
41
 
40
42
  def includeFile(self):
41
43
  return "vs_code_editor"
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.widgets.waveform.waveform_widget import BECWaveformWidget
@@ -34,8 +35,9 @@ class BECWaveformWidgetPlugin(QDesignerCustomWidgetInterface): # pragma: no cov
34
35
  return "BEC Plots"
35
36
 
36
37
  def icon(self):
37
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "waveform.png")
38
- return QIcon(icon_path)
38
+ palette = QGuiApplication.palette()
39
+ pixmap = material_icon("show_chart", color=palette.text().color(), filled=True)
40
+ return QIcon(pixmap)
39
41
 
40
42
  def includeFile(self):
41
43
  return "bec_waveform_widget"
@@ -2,8 +2,9 @@
2
2
  # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
3
  import os
4
4
 
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
6
- from qtpy.QtGui import QIcon
7
+ from qtpy.QtGui import QGuiApplication, QIcon
7
8
 
8
9
  import bec_widgets
9
10
  from bec_widgets.widgets.website.website import WebsiteWidget
@@ -33,8 +34,9 @@ class WebsiteWidgetPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
33
34
  return "BEC Utils"
34
35
 
35
36
  def icon(self):
36
- icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "web.png")
37
- return QIcon(icon_path)
37
+ palette = QGuiApplication.palette()
38
+ pixmap = material_icon("travel_explore", color=palette.text().color(), filled=True)
39
+ return QIcon(pixmap)
38
40
 
39
41
  def includeFile(self):
40
42
  return "website_widget"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.95.0
3
+ Version: 0.96.0
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
@@ -2,11 +2,11 @@
2
2
  .gitlab-ci.yml,sha256=BtKhZI3dhK09En1BfpglYi-ZJwG6ZdC-iJr7kXFVfCg,8346
3
3
  .pylintrc,sha256=eeY8YwSI74oFfq6IYIbCqnx3Vk8ZncKaatv96n_Y8Rs,18544
4
4
  .readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
5
- CHANGELOG.md,sha256=P1nCtnUL_FbmH_Zs0Fgdj9koB4czJbLpUghYkjZ_ia0,6774
5
+ CHANGELOG.md,sha256=cn9vMVxfaE1aginGiTCdUyQqJGCeFJ8LjFsmXsuI8Gg,6733
6
6
  LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
7
- PKG-INFO,sha256=RN9pJSz3DeE3sqmpUsCsmEqKPkzUaCHOZ3m0xoeD7ks,1325
7
+ PKG-INFO,sha256=wPwVfj4xSkopVoH2p_P6HnIWGsIpRruwbtMoyn-TEW0,1325
8
8
  README.md,sha256=Od69x-RS85Hph0-WwWACwal4yUd67XkEn4APEfHhHFw,2649
9
- pyproject.toml,sha256=rk3vWwBi2RVRVZP9ssBKmwEnoM8PE4I0_fgUgVtrOuU,2416
9
+ pyproject.toml,sha256=K2NOh1jWSsA8Lu9cm-ed-LPb1LoORhaFvSNJcmFGcy4,2416
10
10
  .git_hooks/pre-commit,sha256=n3RofIZHJl8zfJJIUomcMyYGFi_rwq4CC19z0snz3FI,286
11
11
  .gitlab/issue_templates/bug_report_template.md,sha256=gAuyEwl7XlnebBrkiJ9AqffSNOywmr8vygUFWKTuQeI,386
12
12
  .gitlab/issue_templates/documentation_update_template.md,sha256=FHLdb3TS_D9aL4CYZCjyXSulbaW5mrN2CmwTaeLPbNw,860
@@ -16,27 +16,6 @@ bec_widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  bec_widgets/assets/app_icons/BEC-Dark.png,sha256=TUebkoQX26eY7CIbXXVzyen5rph0loTQot7FfqWzsQs,1683654
17
17
  bec_widgets/assets/app_icons/bec_widgets_icon.png,sha256=K8dgGwIjalDh9PRHUsSQBqgdX7a00nM3igZdc20pkYM,1747017
18
18
  bec_widgets/assets/app_icons/terminal_icon.png,sha256=bJl7Tft4Fi2uxvuXI8o14uMHnI9eAWKSU2uftXCH9ws,3889
19
- bec_widgets/assets/designer_icons/code.png,sha256=o_d4UbojdvmdPY6exO3Eu0aQlS3UbvMuwrTlptvRMQE,4420
20
- bec_widgets/assets/designer_icons/color_button.png,sha256=1cg0jmTbWQbfmmEb09ABoX03tovIt6loLyO90oOVe8k,4810
21
- bec_widgets/assets/designer_icons/colormap_selector.png,sha256=KULLUA5T9SLhcSyrdouG07nXHZtE-LNNOn0ghG7T-OQ,6831
22
- bec_widgets/assets/designer_icons/device_combo_box.png,sha256=ubt4ltSC8gIkrTnzaZ58JhiIinFhmKBstYIMrcH5Ua4,3555
23
- bec_widgets/assets/designer_icons/device_line_edit.png,sha256=68sb_4_z7SvdTXsw21g6dIuWKX70l08LB8pW79d8cg8,3316
24
- bec_widgets/assets/designer_icons/dock_area.png,sha256=I5U1ivkYRtcxSF2wQQa-SMHxHYDm06Nhd0AvGip9gCk,2774
25
- bec_widgets/assets/designer_icons/games.png,sha256=83th_P_GG6d_xd7X55rqy8yf8ygeVv_Nrh-R8qDi8Cg,4571
26
- bec_widgets/assets/designer_icons/image.png,sha256=0Kppbe2BBcsXzSHjqHxjrRgBE6DUT-ZF7xNPMMI2bxA,3984
27
- bec_widgets/assets/designer_icons/motor_map.png,sha256=8iqST5mTnZfv9rN9rx3D-XBm232Mwvzz9D0Wx6QaT8I,7293
28
- bec_widgets/assets/designer_icons/position_indicator.png,sha256=9moeldNTfRWdf7aFvBS1GCewYtKC5o3hgx8BDgxALb0,2030
29
- bec_widgets/assets/designer_icons/positioner_box.png,sha256=CtEDj_GTTi_WOmKipuMjbKsejIBVEFiAxy7QsKHke5A,3676
30
- bec_widgets/assets/designer_icons/queue.png,sha256=NdlrmWwon7K2zWbqg32WkHx1RBKznQDN5H-UfRVqDRA,1827
31
- bec_widgets/assets/designer_icons/ring_progress.png,sha256=klAmhZJOpFZOkI1fP1nk47Ug6uHXc1s_0y_vwmFMhjU,10358
32
- bec_widgets/assets/designer_icons/scan_control.png,sha256=WxdbBMCnGh1e_qsgPxccSDcR0hhUzUBiHtAjortzWh0,4392
33
- bec_widgets/assets/designer_icons/spinner.png,sha256=FEpnnvaaJDaULZCJlDRH4-nWjmpRxqwcGwSw2xvYoTc,6147
34
- bec_widgets/assets/designer_icons/status.png,sha256=NAylyfriC9eowNkuce-0S0WrDap_1J2XSbbEV2KvnQg,2838
35
- bec_widgets/assets/designer_icons/stop.png,sha256=wPK4P7X3fiMr8_xbp8o5MQrq3UT2Ivj3dxFLvbHGi1M,4209
36
- bec_widgets/assets/designer_icons/text.png,sha256=S6nQtgZX4GuGcPQgkntbYi8iH8VPLkb1UwJwq865UVc,3318
37
- bec_widgets/assets/designer_icons/toggle.png,sha256=PGkL6RM-3gNNCakJIQo4INoSwD44sTuihWF6G7Z8_ZM,4730
38
- bec_widgets/assets/designer_icons/waveform.png,sha256=QKocOi6e1frT6anrTwIQqQEwkalbl2AoOrTpvN1dr90,3764
39
- bec_widgets/assets/designer_icons/web.png,sha256=qxhJvAf77T3HtbK5fIV-710MD9cA7OM7jXg6OVRkPf4,8729
40
19
  bec_widgets/assets/status_icons/error.svg,sha256=U_-8qDHAeCH8Z9sUXoU5zSPf0RyVx-CAWK6h2gH99C4,718
41
20
  bec_widgets/assets/status_icons/not_connected.svg,sha256=wuNdFzNHuZrd_pguRi-mUw3l6uRSkb37yGFJ6kKyMQo,721
42
21
  bec_widgets/assets/status_icons/refresh.svg,sha256=Em_236ARgCdkSof-HU5EYGwv2hXPhOH0NYj2mKaIrwI,559
@@ -100,7 +79,7 @@ bec_widgets/examples/plugin_example_pyside/main.py,sha256=zDP5wO7wb3BVsQ15HOCRT1
100
79
  bec_widgets/examples/plugin_example_pyside/registertictactoe.py,sha256=cVhBnP0qx5j9Jft-VeKvlTFE-bX58hbP45CX0f4r5pM,535
101
80
  bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject,sha256=O_PSMFJlXxQuf55gIOfkpfZIZGpX8W1SfUVZ-mvtI_E,119
102
81
  bec_widgets/examples/plugin_example_pyside/tictactoe.py,sha256=byR7mTiIXFaA9igPTH04pzm0yfikNB5KgISwvNiRPd8,4940
103
- bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py,sha256=Hj-04Y3u_0HvPUrIYv0-tSdCN48S9f5pcfcElSAJVmw,2004
82
+ bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py,sha256=daEn01EIpYrv0tfR7wgOHaZNfhx_ExNQf9ToCMbvVdQ,2105
104
83
  bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py,sha256=V6OVnBTS-60zjQ2FAs88Ldjm1MfoMROfiQZZu6Guav8,2379
105
84
  bec_widgets/qt_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
85
  bec_widgets/qt_utils/error_popups.py,sha256=y9gKKWaafp468ioHr96nBhf02ZpEgjDc-BAVOTWh-e8,7680
@@ -135,48 +114,48 @@ bec_widgets/widgets/base_classes/device_input_base.py,sha256=thCOHOa9Z0b3-vlNFWK
135
114
  bec_widgets/widgets/bec_queue/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
136
115
  bec_widgets/widgets/bec_queue/bec_queue.py,sha256=bU3HvghPuh7smTuKMp5WlJ0g3rW0UHIV05WekNHU8Q8,3846
137
116
  bec_widgets/widgets/bec_queue/bec_queue.pyproject,sha256=VhoNmAv1DQUl9dg7dELyf5i4pZ5k65N3GnqOYiSwbQo,27
138
- bec_widgets/widgets/bec_queue/bec_queue_plugin.py,sha256=QjT79mY32pFONBXOhv_Sem9nq648LYjXHBciqTWP9NU,1376
117
+ bec_widgets/widgets/bec_queue/bec_queue_plugin.py,sha256=wuUeTXorzsrVi9ifCSjVkEMX9qQ_q6PydHBkTkgeoEA,1461
139
118
  bec_widgets/widgets/bec_queue/register_bec_queue.py,sha256=XnwtUSa1asK1b80knKWodcyX9qJy4DnKsQL_FoDfZy4,463
140
119
  bec_widgets/widgets/bec_status_box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
120
  bec_widgets/widgets/bec_status_box/bec_status_box.py,sha256=hlo-U9rf1jzSCXpCjx3tthNYT8KImxKSRri5gsCULvw,13108
142
121
  bec_widgets/widgets/bec_status_box/bec_status_box.pyproject,sha256=JWtx3Csfn2h7ODtk10HtyBNLf6tFIqyU6g04rMWOO1U,32
143
- bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py,sha256=1yyH1vrhVoCVJg9ezo1ADaM0aoTYG8lPVvmulI7Npps,1433
122
+ bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py,sha256=hX6UjJcetD-XMQLMLScwItEezqpyGyK6CjgEEWiTMaQ,1522
144
123
  bec_widgets/widgets/bec_status_box/register_bec_status_box.py,sha256=EiQITnkNw7IU7hE776wAeXro97eZd9XlsB9essgCebE,481
145
124
  bec_widgets/widgets/bec_status_box/status_item.py,sha256=3aNaa-e64PmkBoAWfItYAmhB1EFhWRiFLzXWWz0dS_8,5317
146
125
  bec_widgets/widgets/color_button/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
126
  bec_widgets/widgets/color_button/color_button.py,sha256=Jx4UAn7ZomLei0OCg7RmTnq395scXW4jmqslQRbEVMI,1203
148
127
  bec_widgets/widgets/color_button/color_button.pyproject,sha256=LUYF4VkDOB4ttVe7YfvLh64K-XZg0-xaVT06BqCT3UA,30
149
- bec_widgets/widgets/color_button/color_button_plugin.py,sha256=Cmz6EqdykdZDQmpjgGBspf4MvHi7iAV1q9E-_cqRvW4,1295
128
+ bec_widgets/widgets/color_button/color_button_plugin.py,sha256=8ilyeKIbgUHKCUE4qf2IyMY65a6dDlL3MxHzCgz17I4,1381
150
129
  bec_widgets/widgets/color_button/register_color_button.py,sha256=ZAx3t7G2VI2S-1qcEof31Xi9O0X8deLeZNgS651L1JI,475
151
130
  bec_widgets/widgets/colormap_selector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
131
  bec_widgets/widgets/colormap_selector/colormap_selector.py,sha256=4BqV11XMZVmcwzHiKgwUVFtg_bg4Nz7CQznkL4hHRYU,3794
153
132
  bec_widgets/widgets/colormap_selector/colormap_selector.pyproject,sha256=lHl9qmlMCB6BKB2orqctKwLcKK3Swc0THsyr-5O_vXM,35
154
- bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py,sha256=NWTldO9XMyyOVL0No-Bmr-tvWrinmU7LkDxB5LkIQtA,1416
133
+ bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py,sha256=cM-5o6GgtH69h2dfV6phJDDz30UAuUQbuxRalQRT_eQ,1498
155
134
  bec_widgets/widgets/colormap_selector/register_colormap_selector.py,sha256=bfw7RWmTmMLTLxGT-izSwcGtxGLKvL3jdivJw2z8oN4,512
156
135
  bec_widgets/widgets/console/console.py,sha256=NG0cBuqqPX4hC-sHhk_UEkT-nHhhN9Y7karJITPLzyo,17864
157
136
  bec_widgets/widgets/device_browser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
158
137
  bec_widgets/widgets/device_browser/device_browser.py,sha256=PRpgXuAUc6dCWXddp7m_dxUE9VA6AuSzCJ8t3TYng1w,3517
159
138
  bec_widgets/widgets/device_browser/device_browser.pyproject,sha256=s0vM1xYUwyU6Je68_hSCSBLK8ZPfHB-ftt4flfdpkXY,32
160
139
  bec_widgets/widgets/device_browser/device_browser.ui,sha256=Dy_3oXArScP-_7hRI6nQ7SKKnihuyYAzJfXiRxxJQBE,1077
161
- bec_widgets/widgets/device_browser/device_browser_plugin.py,sha256=H2NBiDlEJC1SzFNmBpSnQv93QfXDToDML_ektE8rksc,1213
140
+ bec_widgets/widgets/device_browser/device_browser_plugin.py,sha256=FprIStCa-cjuIm_P2YRwyWu3mxIDzjEgGPjIl92__Tk,1401
162
141
  bec_widgets/widgets/device_browser/register_device_browser.py,sha256=LJ0ckrgUbU5yprhlrOtSQzymztKyb9zksMuFO4BKN6s,483
163
142
  bec_widgets/widgets/device_browser/device_item/__init__.py,sha256=VGY-uNVCnpcY-q-gijteB2N8KxFNgYR-qQ209MVu1QI,36
164
143
  bec_widgets/widgets/device_browser/device_item/device_item.py,sha256=MtiHM8JXalfNzWYwBj12u_SJidkSchbCy7iT1YZouec,1476
165
144
  bec_widgets/widgets/device_combobox/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
166
145
  bec_widgets/widgets/device_combobox/device_combo_box.pyproject,sha256=wI2eXR5ky_IM9-BCHJnH_9CEqYcZwIuLcgitSEr8OJU,40
167
- bec_widgets/widgets/device_combobox/device_combo_box_plugin.py,sha256=py1VYOpy0gTpdQ9eCut1dxMSfF0ckAwO5qT8ZDNkSts,1439
146
+ bec_widgets/widgets/device_combobox/device_combo_box_plugin.py,sha256=ntd0K1W3O2RgoomTsmnuG16CJ12G6iqJiCIoDjxxswU,1523
168
147
  bec_widgets/widgets/device_combobox/device_combobox.py,sha256=4YohiVtN-R4j9m2mrdwdkRL6IMpIbJ16KJ0SpJC86_g,2667
169
148
  bec_widgets/widgets/device_combobox/register_device_combo_box.py,sha256=ZCrWVdWOvIjnUJWe3MU7JO021rcXYg2SgA1iSKqbLoY,488
170
149
  bec_widgets/widgets/device_line_edit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
171
150
  bec_widgets/widgets/device_line_edit/device_line_edit.py,sha256=iKK2NrVu4okWP8kxPU5whmo_y5VHtrD7Fd_q3ZgXN1Y,3221
172
151
  bec_widgets/widgets/device_line_edit/device_line_edit.pyproject,sha256=tqAYXRbxsHR41MwqmAxvfq1CFeZ1IRv84whUG67HjjE,41
173
- bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py,sha256=RPtGVPLadUVyfEvj1EAJ9ftXe3Htp40JdHGj9zBLukc,1462
152
+ bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py,sha256=zFg-t4JsrSOOboX8DENHx27_XQlBUh9ocPD-tPXrrp8,1547
174
153
  bec_widgets/widgets/device_line_edit/register_device_line_edit.py,sha256=8gEPnC8djYCw-idoZAENNB3bPOxM6pbzEp9A366EAGg,489
175
154
  bec_widgets/widgets/dock/__init__.py,sha256=B7foHt02gnhM7mFksa7GJVwT7n0j_JvYDCt6wc6XR5g,61
176
155
  bec_widgets/widgets/dock/dock.py,sha256=hQw5tpGrRbybjfF-aVEAeGdLTudtH4kFa70flu6_ZA8,10349
177
156
  bec_widgets/widgets/dock/dock_area.py,sha256=VfKyMxKo-r1Ugu2xjSsfGMYZUg3i3xxaokaZCFcCoxA,13579
178
157
  bec_widgets/widgets/dock/dock_area.pyproject,sha256=URW0UrDXCnkzk80rbQmUMgF6Uqay2TjHsq8Dq0g1j-c,37
179
- bec_widgets/widgets/dock/dock_area_plugin.py,sha256=oG2zDxUA1YLvSBoFVeFVkz4HIWLruAwOsCZ00H2Z70A,1345
158
+ bec_widgets/widgets/dock/dock_area_plugin.py,sha256=DoVhw15MW8JoEXRj4d53B02nYH5ffRISr033Xw2FK8g,1435
180
159
  bec_widgets/widgets/dock/register_dock_area.py,sha256=Yqd1mq6CcHwlxHZxX5EHKONy4P44nMm8pso-4X0tvJI,464
181
160
  bec_widgets/widgets/figure/__init__.py,sha256=3hGx_KOV7QHCYAV06aNuUgKq4QIYCjUTad-DrwkUaBM,44
182
161
  bec_widgets/widgets/figure/figure.py,sha256=yujtlDj5NutRJ0gfHMkCVXvBNj5r2z3pb3gwWlUQ92Q,28822
@@ -195,14 +174,14 @@ bec_widgets/widgets/figure/plots/waveform/waveform.py,sha256=-op62_CFX1Gu-Ag6CD5
195
174
  bec_widgets/widgets/figure/plots/waveform/waveform_curve.py,sha256=ZwRxSfPHbMWEvgUC-mL2orpZvtxR-DcrYAFikkdWEzk,8654
196
175
  bec_widgets/widgets/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
197
176
  bec_widgets/widgets/image/bec_image_widget.pyproject,sha256=PHisdBo5_5UCApd27GkizzqgfdjsDx2bFZa_p9LiSW8,30
198
- bec_widgets/widgets/image/bec_image_widget_plugin.py,sha256=B7whBMsoQ85MyCR_C6YHBl2s1T7odOJJYeiHaLXzmcM,1387
177
+ bec_widgets/widgets/image/bec_image_widget_plugin.py,sha256=WNm1c6tP77PxA0joGREc2Dpv2tsi8dSXdb8BeKrJWdc,1479
199
178
  bec_widgets/widgets/image/image_widget.py,sha256=TCpTF8v94iSMklG9bYxZOjm9SbO60XZB9X0ldEp8lWE,16288
200
179
  bec_widgets/widgets/image/register_bec_image_widget.py,sha256=01YLZQTMSSIXvH1TSL-1AYsRs1a4EbSwKLVAwh9AjeA,478
201
180
  bec_widgets/widgets/jupyter_console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
202
181
  bec_widgets/widgets/jupyter_console/jupyter_console.py,sha256=-e7HQOECeH5eDrJYh4BFIzRL78LDkooU4otabyN0aX4,2343
203
182
  bec_widgets/widgets/motor_map/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
204
183
  bec_widgets/widgets/motor_map/bec_motor_map_widget.pyproject,sha256=NAI8s5gRKz80ED4KY7OgD2OgSH5HEsjt2ux2BYp66yg,63
205
- bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py,sha256=V6iN82E8Za8BharR_cSyZZShh4fI9yc5ky2TQBGELR0,1316
184
+ bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py,sha256=RRW72pQGFEQErGbOnI09wBdHIkx9iDdCA6n5hXBJeiI,1410
206
185
  bec_widgets/widgets/motor_map/motor_map_widget.py,sha256=URcysThbJKGsCZUqQm2lCtVn5FG8t4kT7DaN5EJUexg,7555
207
186
  bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py,sha256=qRG8PtWGjso0pWbvj_DXKnbUfmQzfGqPSrnAozXfM7o,492
208
187
  bec_widgets/widgets/motor_map/motor_map_dialog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -211,17 +190,17 @@ bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui,sha256=nv5v
211
190
  bec_widgets/widgets/position_indicator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
212
191
  bec_widgets/widgets/position_indicator/position_indicator.py,sha256=QVlWvs_RvEJe5IMxGYCpi-CXYF7vFeMqEMFCs6u5NGc,2020
213
192
  bec_widgets/widgets/position_indicator/position_indicator.pyproject,sha256=s0JEf5YkpMag19ddFSYeRZ8erBau7erO3bqw05YrTyg,36
214
- bec_widgets/widgets/position_indicator/position_indicator_plugin.py,sha256=xD8YyATYfpoHxGVcsecDKx9CLASAP6lKyypCEjRhNd0,1441
193
+ bec_widgets/widgets/position_indicator/position_indicator_plugin.py,sha256=lCXbgVkLUmCiKOpovwnRDcIspvzzPJ2nOwBfQcrxDE4,1536
215
194
  bec_widgets/widgets/position_indicator/register_position_indicator.py,sha256=OZNiMgM_80TPSAXK_0hXAkne4vUh8DGvh_OdpOiMpwI,516
216
195
  bec_widgets/widgets/positioner_box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
217
196
  bec_widgets/widgets/positioner_box/positioner_box.py,sha256=FyUGskWAb-5m44bdUNVig_AkoDbLRbB0GucI6RRHge8,10839
218
197
  bec_widgets/widgets/positioner_box/positioner_box.pyproject,sha256=7966pHdDseaHciaPNEKgdQgbUThSZf5wEDCeAEJh9po,32
219
198
  bec_widgets/widgets/positioner_box/positioner_box.ui,sha256=Y-Xp0z32okT7X4-rL5r7dF_QH_QpXvPes3f778cC7_k,5633
220
- bec_widgets/widgets/positioner_box/positioner_box_plugin.py,sha256=Q-FTqaxB78ShlhB56TtDMtllEb-USqWRw_s6gm0WUr0,1441
199
+ bec_widgets/widgets/positioner_box/positioner_box_plugin.py,sha256=fSkLRBfCdJ6531BslhcxdwLQJWO9xcHGuX9TGGJJQbc,1531
221
200
  bec_widgets/widgets/positioner_box/positioner_control_line.py,sha256=DWSDakPsOu8SrhTMKh9NR8b1a7npuyrkjVpZVqj1Kb0,915
222
201
  bec_widgets/widgets/positioner_box/positioner_control_line.pyproject,sha256=RGIXDjWq3fNCgOnU-08oeIeBLCcjYbRXgyh26drxB7I,41
223
202
  bec_widgets/widgets/positioner_box/positioner_control_line.ui,sha256=hJ4e3e3A1zZY3WRfQ7yvAZUAtL8tJhCJX2bWbtty_EQ,5625
224
- bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py,sha256=lX5oqGHb0100NIvI1MxyeSswaCdyA1FGnVmOYtlhEtk,1515
203
+ bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py,sha256=N6AQS7kLtvdAr76F-kdDtXSOpz-mbfnQX20H-_YL6N8,1604
225
204
  bec_widgets/widgets/positioner_box/register_positioner_box.py,sha256=UPOUjXXq6-IgSj0kdV_nJe1rYPMF8aIZxF4eSmWgQAg,483
226
205
  bec_widgets/widgets/positioner_box/register_positioner_control_line.py,sha256=MJ13vKGIwTMQGFhll63tfUGXHyd6bz40Cvr85oYKH3I,525
227
206
  bec_widgets/widgets/ring_progress_bar/__init__.py,sha256=_uoJKnDM2YAeUBfwc5WLbIHSJj7zm_FAurSKP3WRaCw,47
@@ -229,41 +208,41 @@ bec_widgets/widgets/ring_progress_bar/register_ring_progress_bar.py,sha256=uJrMh
229
208
  bec_widgets/widgets/ring_progress_bar/ring.py,sha256=2pdEzETaJpvx4Dzyosq2YhnvDOEUvFnj_f9GfFKpG5Q,11159
230
209
  bec_widgets/widgets/ring_progress_bar/ring_progress_bar.py,sha256=F7z6BbY7BYSKivpCus6T8pXIwzqHOsDlaIV5fGRIboQ,24119
231
210
  bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject,sha256=ZNYDnKDu9pixrY2XrulAGdKZg-Ysa7q67O_X2tAA0fc,35
232
- bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py,sha256=H2dEpH7cef5zE5FNGgE2j2HFxoKiku4StqNPHs4uUL4,1419
211
+ bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py,sha256=f6eAuDEvmnl0gy-cBwUkuUS4yr1VGjVEa40N5MIXwF0,1511
233
212
  bec_widgets/widgets/scan_control/__init__.py,sha256=IOfHl15vxb_uC6KN62-PeUzbBha_vQyqkkXbJ2HU674,38
234
213
  bec_widgets/widgets/scan_control/register_scan_control.py,sha256=xUX2yR0-MaIMg9_y9qe50yDDphzsh2x1b5PMrF90yPM,475
235
- bec_widgets/widgets/scan_control/scan_control.py,sha256=YT3Vvy27_FY3UY7IXvy87o9ZB_syauuEKzkJFOpbP4s,7610
214
+ bec_widgets/widgets/scan_control/scan_control.py,sha256=30pcaVaBVo6JxJuMH1ul1s-sPuWqCUKsUQ-XfAgzRZ8,9384
236
215
  bec_widgets/widgets/scan_control/scan_control.pyproject,sha256=eTgVDFKToIH8_BbJjM2RvbOLr7HnYoidX0SAHx640DM,30
237
- bec_widgets/widgets/scan_control/scan_control_plugin.py,sha256=vglBKLZKVSFsVxiU1s6j1X4ASyfD2YWzMGBSeup_Q7E,1379
216
+ bec_widgets/widgets/scan_control/scan_control_plugin.py,sha256=t3_qTACqYcvl_Wr102bIdVDyw6uNK1B94fh_wjs-lxg,1477
238
217
  bec_widgets/widgets/scan_control/scan_group_box.py,sha256=BpX9ZphqOhdEbQnGzNeNlmuZsMS__U97CkBMical2FY,9300
239
218
  bec_widgets/widgets/spinner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
240
219
  bec_widgets/widgets/spinner/register_spinner_widget.py,sha256=_zCPjLh4M7NTSHP1Atdn6yu33zJ3LJkcBy3KOJ5eSVY,476
241
220
  bec_widgets/widgets/spinner/spinner.py,sha256=3A-VcX7HLDyqWsMoTUpB4jKHL26YuAbwOk3qonp3dI4,2591
242
221
  bec_widgets/widgets/spinner/spinner_widget.pyproject,sha256=zzLajGB3DTgVnrSqMey2jRpBlxTq9cBXZL9tWJCKe-I,25
243
- bec_widgets/widgets/spinner/spinner_widget_plugin.py,sha256=22b3n0ZGBDI44_cd72Q8ts_iKA3X1i1GhAQ80N2SGtU,1376
222
+ bec_widgets/widgets/spinner/spinner_widget_plugin.py,sha256=WlPUlCeSVFPup4ZY90oIo5WjSCglIKw_bsNdEGs3yWA,1478
244
223
  bec_widgets/widgets/stop_button/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
245
224
  bec_widgets/widgets/stop_button/register_stop_button.py,sha256=U7r3fEOH-uPhAQI-nTituHXDDXDWR4JQZ7_vD6b_dfM,471
246
225
  bec_widgets/widgets/stop_button/stop_button.py,sha256=XLrRFvVrAhD16_-SPgzvsUhy0ROunsrWlI5BPRyqZOI,832
247
226
  bec_widgets/widgets/stop_button/stop_button.pyproject,sha256=Cc_xbv-zfzNVpsdg_1QyzuTlrJaM9_BkIjes70umrx0,29
248
- bec_widgets/widgets/stop_button/stop_button_plugin.py,sha256=PgMuMDuw5Fhfg89akNrIBTKl9ibVcgxg5wuI9cvQ9cc,1384
227
+ bec_widgets/widgets/stop_button/stop_button_plugin.py,sha256=yAvIPsdyn0X8Srx2KB8KEmDLDTScQH2dc8MGH0cFj_I,1481
249
228
  bec_widgets/widgets/text_box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
250
229
  bec_widgets/widgets/text_box/register_text_box.py,sha256=UwrmCoYjAAtJJK8BwC0P_wSb-lOlOvxPe3-Bemg_9nw,459
251
230
  bec_widgets/widgets/text_box/text_box.py,sha256=3OWC6L3CWsH_uh8X11WnifYjhO8ruDe2FWFhE8cn5lY,4274
252
231
  bec_widgets/widgets/text_box/text_box.pyproject,sha256=XohO1BIe2hrpU-z_KHKRgjcUkXru7jeFte31j2TPbNk,26
253
- bec_widgets/widgets/text_box/text_box_plugin.py,sha256=4XBmO3Yw8_vLduyV7mt6kD0XMB3VNgxgZy_-4zKJ2kI,1326
232
+ bec_widgets/widgets/text_box/text_box_plugin.py,sha256=UyP7NQ-rHnBOOww8ICAuI61FDuAoAl_KcpsKhkiPH3k,1418
254
233
  bec_widgets/widgets/toggle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
255
234
  bec_widgets/widgets/toggle/register_toggle_switch.py,sha256=8pVtkeEeiDOjV4OPoZq1I30F9JDzl4nQE7e7xoWyWBs,472
256
235
  bec_widgets/widgets/toggle/toggle.py,sha256=JzCGYoyHBrlBWCoyL94QX4zSLyEwWbCNHMegjlnSy2E,4442
257
236
  bec_widgets/widgets/toggle/toggle_switch.pyproject,sha256=Msa-AS5H5XlqW65r8GlX2AxD8FnFnDyDgGnbKcXqKOw,24
258
- bec_widgets/widgets/toggle/toggle_switch_plugin.py,sha256=nCmVeCVr7vkFL60hnoSBgq7R9A2d2B0k5kXC2GULiU0,1365
237
+ bec_widgets/widgets/toggle/toggle_switch_plugin.py,sha256=V8qW7o-8ld9Lc_P_SLfpb6Fo0DSZt3Vu2mMJEueM5fc,1460
259
238
  bec_widgets/widgets/vscode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
260
239
  bec_widgets/widgets/vscode/register_vs_code_editor.py,sha256=JATKBkTEuReeQ2Jj402xasjgVRMFI8uUOAAwmnFOWRA,473
261
240
  bec_widgets/widgets/vscode/vs_code_editor.pyproject,sha256=bxx0jZlSfBo-Em7p15W1QIJ9lFr9jqTqGynUQG01ocU,24
262
- bec_widgets/widgets/vscode/vs_code_editor_plugin.py,sha256=hdAJrE8CHSi7Fn508DNbA0S-FjlA91u7DLsx6_Al5hw,1357
241
+ bec_widgets/widgets/vscode/vs_code_editor_plugin.py,sha256=0DA6gjG1ZFvrrF23W5rarUVOR6oeeB0leEjtQIK6g6o,1462
263
242
  bec_widgets/widgets/vscode/vscode.py,sha256=yV1D9PK2IYomq9yYfwqUOrZGIeBwMnNuBfXxBc2M8Qc,2231
264
243
  bec_widgets/widgets/waveform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
265
244
  bec_widgets/widgets/waveform/bec_waveform_widget.pyproject,sha256=GLD8GN9dXx9wNbtnevrxqqcwk7vKV-Uv8QYSycdaoaI,33
266
- bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py,sha256=D9q3wdBPB5x0iCzyYDo1qdSXzySXdRIc1d5oD3Gv5gY,1420
245
+ bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py,sha256=f8zgTQGp6hbfxOAnMqLvaI3N9KwxEMtUKkZQZBAL_rw,1514
267
246
  bec_widgets/widgets/waveform/register_bec_waveform_widget.py,sha256=qZHVZH_lP2hvzkG1Ra0EyrXlMeLkRCy0aceH-bfJ1cs,490
268
247
  bec_widgets/widgets/waveform/waveform_widget.py,sha256=4aHwkLdn7C8BgvKqFIbOB0YaAxAIIFTG_hG0iLougKQ,19094
269
248
  bec_widgets/widgets/waveform/waveform_popups/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -277,7 +256,7 @@ bec_widgets/widgets/website/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
277
256
  bec_widgets/widgets/website/register_website_widget.py,sha256=LIQJpV9uqcBiPR9cEAiDjaUS_l7JroYVdsotnLpD9H0,476
278
257
  bec_widgets/widgets/website/website.py,sha256=vyRJr4jsti1h6cPHzTTtS_0IELJ3kYdS2_HdZCzavl4,1840
279
258
  bec_widgets/widgets/website/website_widget.pyproject,sha256=scOiV3cV1_BjbzpPzy2N8rIJL5P2qIZz8ObTJ-Uvdtg,25
280
- bec_widgets/widgets/website/website_widget_plugin.py,sha256=hcASV-UW2TsIwspApzMbKoTVL9rqImU8ukMRn1EfXTw,1358
259
+ bec_widgets/widgets/website/website_widget_plugin.py,sha256=E5qf7ZK26tkXjRwJMzYqHypX0ChxAleMs6Mxw7XaPl4,1461
281
260
  docs/Makefile,sha256=i2WHuFlgfyAPEW4ssEP8NY4cOibDJrVjvzSEU8_Ggwc,634
282
261
  docs/conf.py,sha256=eSfoMdl2eObhbKr7eki59DrkNUh15KfcZpuBc7goMRc,2500
283
262
  docs/index.md,sha256=h4edya5UA0bx21ReHu40lJudqVBH41tOASjnCjmoYj8,1197
@@ -315,7 +294,8 @@ docs/assets/widget_screenshots/website.png,sha256=2NZmVKy2MOP6L1Y2ZNUllJr2uCjGl6
315
294
  docs/developer/developer.md,sha256=KLYulqlv9qhOZktrKSU8vZCxHmaJYmT66jG6igXDzQE,1147
316
295
  docs/developer/introduction/concepts.md,sha256=N23ewZjPx97eJtrU6-0Lou2IvPfkfZ6Nw6n9SwASQ74,1721
317
296
  docs/developer/introduction/contributing.md,sha256=ocW5kjBNwD5k_nDkusXUpsW8jJALajrpNSRVJftuF-k,1668
318
- docs/developer/introduction/introduction.md,sha256=860Sw05t1RGW13IUlM5bJwK8DckYhSABPKZykgmwcpA,774
297
+ docs/developer/introduction/introduction.md,sha256=vR732ai0u-NiP8ij2_HJucgT4CDhjyrARbThDMqUc74,788
298
+ docs/developer/introduction/useful_links.md,sha256=ytWRyLTAveU8ELrA0GL9hzTVCBRNBOTV8pRxvPp1huk,1487
319
299
  docs/developer/widget_development/widget_development.md,sha256=wGfDjbt9EonVxUg59keADy7wCLyS-KzCz7m4hY0OV_A,526
320
300
  docs/introduction/introduction.md,sha256=YBEFDhxqHTcbfbNTo76xDflaFUHIqDs-sToA1HRmCnI,1436
321
301
  docs/user/customisation.md,sha256=wCW8fAbqtlgGE3mURvXOrK67Xo0_B-lxfg0sYuQWB40,3186
@@ -349,8 +329,9 @@ docs/user/widgets/positioner_box/positioner_box.md,sha256=voOU_wfwd-qBykk-60PWoO
349
329
  docs/user/widgets/progress_bar/progress_bar.gif,sha256=5jh0Zw2BBGPuNxszV1DBLJCb4_6glIRX-U2ABjnsK2k,5263592
350
330
  docs/user/widgets/progress_bar/ring_progress_bar.md,sha256=F9q2UrwZWwNzbjs1ONfSgP1dqgb5dx8AbOoTZOJGzWA,3705
351
331
  docs/user/widgets/queue/queue.md,sha256=Re37dp_YHTa9N6TTobScO_n3Fniq2_Ca2Ms3DOb0suA,2110
332
+ docs/user/widgets/scan_control/hide_scan_control.png,sha256=juhkTBdz-WnJfPhj6UEkOiiCD6HfTinoETokF20nhsA,21890
352
333
  docs/user/widgets/scan_control/scan_control.gif,sha256=zrVOZgleMbu7Jd8AAIn2fQ08tNAEMSud3g0ZLyNUcjQ,1506739
353
- docs/user/widgets/scan_control/scan_control.md,sha256=FZjpwbL4jFYoU0AoYiwOSMCI1ftTxJbAdhxe9pDO1gM,2559
334
+ docs/user/widgets/scan_control/scan_control.md,sha256=4pMTZJHx9VMYgEVGG_ybiJxwNbdQqAqa_dvM6lz0LMs,3275
354
335
  docs/user/widgets/spinner/spinner.md,sha256=MN7LeAkNOqRZ_A6c4PGv6KsiGbjm7Q-nkGkL5CcxOeE,2465
355
336
  docs/user/widgets/text_box/text_box.md,sha256=u8UoApmnH3LilWUQ73ASd6ts0FQfM6eRqg3GG9iQhOc,2508
356
337
  docs/user/widgets/toggle/toggle.md,sha256=vmhqbTU93R9DUeR0a85gGIRPc07cSl3_vtsVN4r0yO0,2983
@@ -418,8 +399,8 @@ tests/unit_tests/test_configs/config_device_no_entry.yaml,sha256=hdvue9KLc_kfNzG
418
399
  tests/unit_tests/test_configs/config_scan.yaml,sha256=vo484BbWOjA_e-h6bTjSV9k7QaQHrlAvx-z8wtY-P4E,1915
419
400
  tests/unit_tests/test_msgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
420
401
  tests/unit_tests/test_msgs/available_scans_message.py,sha256=m_z97hIrjHXXMa2Ex-UvsPmTxOYXfjxyJaGkIY6StTY,46532
421
- bec_widgets-0.95.0.dist-info/METADATA,sha256=RN9pJSz3DeE3sqmpUsCsmEqKPkzUaCHOZ3m0xoeD7ks,1325
422
- bec_widgets-0.95.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
423
- bec_widgets-0.95.0.dist-info/entry_points.txt,sha256=3otEkCdDB9LZJuBLzG4pFLK5Di0CVybN_12IsZrQ-58,166
424
- bec_widgets-0.95.0.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
425
- bec_widgets-0.95.0.dist-info/RECORD,,
402
+ bec_widgets-0.96.0.dist-info/METADATA,sha256=wPwVfj4xSkopVoH2p_P6HnIWGsIpRruwbtMoyn-TEW0,1325
403
+ bec_widgets-0.96.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
404
+ bec_widgets-0.96.0.dist-info/entry_points.txt,sha256=3otEkCdDB9LZJuBLzG4pFLK5Di0CVybN_12IsZrQ-58,166
405
+ bec_widgets-0.96.0.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
406
+ bec_widgets-0.96.0.dist-info/RECORD,,
@@ -12,4 +12,5 @@ hidden: false
12
12
 
13
13
  concepts/
14
14
  contributing/
15
+ useful_links/
15
16
  ```
@@ -0,0 +1,23 @@
1
+ (developer.useful_links)=
2
+
3
+ # Useful Links
4
+
5
+ If you're new to the Qt framework, here are some helpful resources to get you started. In BEC Widgets, we use Qt
6
+ distributions based on Qt6, specifically PyQt6 and PySide6. However, all code should be written using
7
+ the [`qtpy`](https://pypi.org/project/QtPy/) abstraction layer, which allows compatibility with both. While both PyQt6
8
+ and PySide6 are supported, we prefer PySide6 as it is the official Python binding from the Qt Company. It offers
9
+ advantages like bundling all necessary libraries in a single package with pip installation and staying more up-to-date
10
+ compared to PyQt6.
11
+
12
+ Below is a list of useful links to help you start developing with Qt and QtDesigner:
13
+
14
+ - [Python GUIs](https://www.pythonguis.com): A great resource with tutorials and examples for creating GUIs in Python
15
+ using various frameworks.
16
+ - [PySide6 Quick Start Guide](https://doc.qt.io/qtforpython-6/index.html): The official documentation for PySide6,
17
+ including quick start guides and tutorials.
18
+ - [QtDesigner Official Documentation](https://doc.qt.io/qt-6/qtdesigner-manual.html): Comprehensive documentation for
19
+ QtDesigner.
20
+ - [Simple PyQt Tutorial from RealPython](https://realpython.com/python-pyqt-gui-calculator/): A beginner-friendly
21
+ tutorial on creating your first GUI application with PyQt.
22
+ - [PyQtGraph Documentation](https://pyqtgraph.readthedocs.io/en/latest/): BEC Widgets relies on PyQtGraph for plotting;
23
+ this is the official documentation.
@@ -20,14 +20,22 @@ By default, this widget supports scans that are derived from the following base
20
20
  ```
21
21
 
22
22
  ```{hint}
23
- The full procedure how to design `gui_config` for your custom scan class is described in the [Scan GUI Configuration](https://beamline-experiment-control.readthedocs.io/en/latest/developer/scans/scans.html) tutorial.
23
+ The full procedure how to design `gui_config` for your custom scan class is described in the [Scan GUI Configuration](https://bec.readthedocs.io/en/latest/developer/scans/scan_gui_config.html) tutorial.
24
+ ```
25
+
26
+ ## BECDesigner Customization
27
+ Within the BECDesigner's [property editor](https://doc.qt.io/qt-6/designer-widget-mode.html#the-property-editor/), the `ScanControl` widget can be customized to suit your application's requirements. The widget provides the following customization options:
28
+ - **Hide Scan Control**: Allows you to hide the scan control buttons from the widget interface. This is useful when you want to place the control buttons in a different location.
29
+ - **Hide Scan Selection**: Allows you to hide the scan selection combobox from the widget interface. This is useful when you want to restrict the user to a specific scan type or implement a custom scan selection mechanism.
30
+
31
+ ```{figure} ./hide_scan_control.png
24
32
  ```
25
33
 
26
34
  ````
27
35
 
28
36
  ````{tab} Examples
29
37
 
30
- The `ScanControl` widget can be integrated within a [`BECDockArea`](user.widgets.bec_dock_area) or used as an individual component in your application through `QtDesigner`. Below are examples demonstrating how to create and use the `ScanControl` widget.
38
+ The `ScanControl` widget can be integrated within a [`BECDockArea`](user.widgets.bec_dock_area) or used as an individual component in your application through `BECDesigner`. Below are examples demonstrating how to create and use the `ScanControl` widget.
31
39
 
32
40
  ## Example 1 - Adding Scan Control Widget to BECDockArea
33
41
 
pyproject.toml CHANGED
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "0.95.0"
7
+ version = "0.96.0"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file