bec-widgets 0.96.2__py3-none-any.whl → 0.97.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.
- CHANGELOG.md +20 -20
- PKG-INFO +1 -1
- bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +2 -5
- bec_widgets/qt_utils/toolbar.py +13 -9
- bec_widgets/utils/bec_designer.py +15 -0
- bec_widgets/utils/bec_dispatcher.py +21 -1
- bec_widgets/utils/container_utils.py +2 -0
- bec_widgets/widgets/bec_queue/bec_queue.py +2 -0
- bec_widgets/widgets/bec_queue/bec_queue_plugin.py +2 -5
- bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py +2 -5
- bec_widgets/widgets/color_button/color_button_plugin.py +2 -5
- bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py +2 -5
- bec_widgets/widgets/device_browser/device_browser_plugin.py +2 -5
- bec_widgets/widgets/device_combobox/device_combo_box_plugin.py +2 -5
- bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py +2 -5
- bec_widgets/widgets/dock/dock_area_plugin.py +2 -5
- bec_widgets/widgets/image/bec_image_widget_plugin.py +2 -5
- bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py +2 -5
- bec_widgets/widgets/position_indicator/position_indicator_plugin.py +2 -5
- bec_widgets/widgets/positioner_box/positioner_box_plugin.py +2 -5
- bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py +2 -5
- bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py +2 -5
- bec_widgets/widgets/scan_control/scan_control_plugin.py +2 -5
- bec_widgets/widgets/spinner/spinner_widget_plugin.py +2 -5
- bec_widgets/widgets/stop_button/stop_button_plugin.py +2 -5
- bec_widgets/widgets/text_box/text_box_plugin.py +2 -5
- bec_widgets/widgets/toggle/toggle_switch_plugin.py +2 -5
- bec_widgets/widgets/vscode/vs_code_editor_plugin.py +2 -5
- bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py +2 -5
- bec_widgets/widgets/website/website_widget_plugin.py +2 -5
- {bec_widgets-0.96.2.dist-info → bec_widgets-0.97.0.dist-info}/METADATA +1 -1
- {bec_widgets-0.96.2.dist-info → bec_widgets-0.97.0.dist-info}/RECORD +39 -38
- docs/conf.py +1 -1
- docs/developer/widget_development/bec_dispatcher.md +143 -0
- docs/developer/widget_development/widget_development.md +2 -0
- pyproject.toml +1 -1
- {bec_widgets-0.96.2.dist-info → bec_widgets-0.97.0.dist-info}/WHEEL +0 -0
- {bec_widgets-0.96.2.dist-info → bec_widgets-0.97.0.dist-info}/entry_points.txt +0 -0
- {bec_widgets-0.96.2.dist-info → bec_widgets-0.97.0.dist-info}/licenses/LICENSE +0 -0
CHANGELOG.md
CHANGED
@@ -1,5 +1,25 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## v0.97.0 (2024-08-23)
|
4
|
+
|
5
|
+
### Feature
|
6
|
+
|
7
|
+
* feat(designer): added designer icon factory ([`82a55dd`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/82a55ddf3eafb589cb63408db1c0e7e5c9d629da))
|
8
|
+
|
9
|
+
### Fix
|
10
|
+
|
11
|
+
* fix(toolbar icon): fixed material icon toolbar for theme changes ([`3ecbd60`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/3ecbd60627994417c9175364e5909710dbcdceb2))
|
12
|
+
|
13
|
+
## v0.96.3 (2024-08-23)
|
14
|
+
|
15
|
+
### Documentation
|
16
|
+
|
17
|
+
* docs(dispatcher): docs added ([`dd7c71b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/dd7c71bb1e0b7ef5398b1e1a05fc1147c772420a))
|
18
|
+
|
19
|
+
### Fix
|
20
|
+
|
21
|
+
* fix: minor fixes for type annotations ([`8c2e7c8`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/8c2e7c82592ace50e4e1f47e392a0ddc988f57ae))
|
22
|
+
|
3
23
|
## v0.96.2 (2024-08-22)
|
4
24
|
|
5
25
|
### Fix
|
@@ -137,23 +157,3 @@ Terminating client connections has to be done at the application level ([`198c1d
|
|
137
157
|
* fix(image): image is single image mode do not raise popup error when connected twice with the same monitor ([`98b79aa`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/98b79aac7b47b73137f4d582f7f1d552b1d95366))
|
138
158
|
|
139
159
|
## v0.94.1 (2024-08-12)
|
140
|
-
|
141
|
-
### Fix
|
142
|
-
|
143
|
-
* fix: issue #292, wrong key was used to clean _slots internal dictionary ([`93d3977`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/93d397759c756397604ebff5e24f3a580be8620d))
|
144
|
-
|
145
|
-
## v0.94.0 (2024-08-08)
|
146
|
-
|
147
|
-
### Feature
|
148
|
-
|
149
|
-
* feat: add PositionerControlLine ([`c80a7cd`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/c80a7cd1083baa9543a2cee2e3c3a51dfd209b19))
|
150
|
-
|
151
|
-
### Refactor
|
152
|
-
|
153
|
-
* refactor: adjust dimensions ([`0273bf4`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/0273bf485694609325b5b556a3c69fb53c18446e))
|
154
|
-
|
155
|
-
## v0.93.5 (2024-08-08)
|
156
|
-
|
157
|
-
### Fix
|
158
|
-
|
159
|
-
* fix(positioner_box): icons fixed ([`281633d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/281633deff15b6879dac3a4f0770fa6949aaecdc))
|
PKG-INFO
CHANGED
@@ -2,13 +2,12 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
10
8
|
from bec_widgets.examples.plugin_example_pyside.tictactoe import TicTacToe
|
11
9
|
from bec_widgets.examples.plugin_example_pyside.tictactoetaskmenu import TicTacToeTaskMenuFactory
|
10
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
12
11
|
|
13
12
|
DOM_XML = """
|
14
13
|
<ui language='c++'>
|
@@ -47,9 +46,7 @@ class TicTacToePlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
47
46
|
return "Games"
|
48
47
|
|
49
48
|
def icon(self):
|
50
|
-
|
51
|
-
pixmap = material_icon("sports_esports", color=palette.text().color(), filled=True)
|
52
|
-
return QIcon(pixmap)
|
49
|
+
return designer_material_icon("sports_esports")
|
53
50
|
|
54
51
|
def includeFile(self):
|
55
52
|
return "tictactoe"
|
bec_widgets/qt_utils/toolbar.py
CHANGED
@@ -3,9 +3,9 @@ import os
|
|
3
3
|
from abc import ABC, abstractmethod
|
4
4
|
from collections import defaultdict
|
5
5
|
|
6
|
-
from bec_qthemes import material_icon
|
6
|
+
from bec_qthemes._icon.material_icons import material_icon
|
7
7
|
from qtpy.QtCore import QSize
|
8
|
-
from qtpy.QtGui import QAction,
|
8
|
+
from qtpy.QtGui import QAction, QIcon
|
9
9
|
from qtpy.QtWidgets import QHBoxLayout, QLabel, QMenu, QToolBar, QToolButton, QWidget
|
10
10
|
|
11
11
|
import bec_widgets
|
@@ -73,7 +73,7 @@ class IconAction(ToolBarAction):
|
|
73
73
|
|
74
74
|
class MaterialIconAction:
|
75
75
|
"""
|
76
|
-
|
76
|
+
Action with a Material icon for the toolbar.
|
77
77
|
|
78
78
|
Args:
|
79
79
|
icon_path (str, optional): The name of the icon file from `assets/toolbar_icons`. Defaults to None.
|
@@ -88,12 +88,16 @@ class MaterialIconAction:
|
|
88
88
|
self.action = None
|
89
89
|
|
90
90
|
def add_to_toolbar(self, toolbar: QToolBar, target: QWidget):
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
91
|
+
color = {
|
92
|
+
"dark": "#FFFFFF",
|
93
|
+
"light": "#000000",
|
94
|
+
} # FIXME: This should be a theme color but the toolbar doesn't respect the theme atm
|
95
|
+
# once fixed, change it to
|
96
|
+
# palette = QGuiApplication.palette()
|
97
|
+
# palette.toolTipBase().color()
|
98
|
+
|
99
|
+
icon = material_icon(self.icon_name, size=(20, 20), color=color, convert_to_pixmap=False)
|
100
|
+
self.action = QAction(icon, self.tooltip, target)
|
97
101
|
self.action.setCheckable(self.checkable)
|
98
102
|
toolbar.addAction(self.action)
|
99
103
|
|
@@ -6,7 +6,9 @@ import sys
|
|
6
6
|
import sysconfig
|
7
7
|
from pathlib import Path
|
8
8
|
|
9
|
+
from bec_qthemes import material_icon
|
9
10
|
from qtpy import PYSIDE6
|
11
|
+
from qtpy.QtGui import QIcon
|
10
12
|
|
11
13
|
if PYSIDE6:
|
12
14
|
from PySide6.scripts.pyside_tool import (
|
@@ -21,6 +23,19 @@ if PYSIDE6:
|
|
21
23
|
import bec_widgets
|
22
24
|
|
23
25
|
|
26
|
+
def designer_material_icon(icon_name: str) -> QIcon:
|
27
|
+
"""
|
28
|
+
Create a QIcon for the BECDesigner with the given material icon name.
|
29
|
+
|
30
|
+
Args:
|
31
|
+
icon_name (str): The name of the material icon.
|
32
|
+
|
33
|
+
Returns:
|
34
|
+
QIcon: The QIcon for the material icon.
|
35
|
+
"""
|
36
|
+
return QIcon(material_icon(icon_name, filled=True, convert_to_pixmap=True))
|
37
|
+
|
38
|
+
|
24
39
|
def list_editable_packages() -> set[str]:
|
25
40
|
"""
|
26
41
|
List all editable packages in the environment.
|
@@ -125,7 +125,7 @@ class BECDispatcher:
|
|
125
125
|
topics: Union[EndpointInfo, str, list[Union[EndpointInfo, str]]],
|
126
126
|
**kwargs,
|
127
127
|
) -> None:
|
128
|
-
"""Connect widget's
|
128
|
+
"""Connect widget's qt slot, so that it is called on new pub/sub topic message.
|
129
129
|
|
130
130
|
Args:
|
131
131
|
slot (Callable): A slot method/function that accepts two inputs: content and metadata of
|
@@ -138,6 +138,13 @@ class BECDispatcher:
|
|
138
138
|
self._slots[slot].update(set(topics_str))
|
139
139
|
|
140
140
|
def disconnect_slot(self, slot: Callable, topics: Union[str, list]):
|
141
|
+
"""
|
142
|
+
Disconnect a slot from a topic.
|
143
|
+
|
144
|
+
Args:
|
145
|
+
slot(Callable): The slot to disconnect
|
146
|
+
topics(Union[str, list]): The topic(s) to disconnect from
|
147
|
+
"""
|
141
148
|
# find the right slot to disconnect from ;
|
142
149
|
# slot callbacks are wrapped in QtThreadSafeCallback objects,
|
143
150
|
# but the slot we receive here is the original callable
|
@@ -153,6 +160,12 @@ class BECDispatcher:
|
|
153
160
|
del self._slots[connected_slot]
|
154
161
|
|
155
162
|
def disconnect_topics(self, topics: Union[str, list]):
|
163
|
+
"""
|
164
|
+
Disconnect all slots from a topic.
|
165
|
+
|
166
|
+
Args:
|
167
|
+
topics(Union[str, list]): The topic(s) to disconnect from
|
168
|
+
"""
|
156
169
|
self.client.connector.unregister(topics)
|
157
170
|
topics_str, _ = self.client.connector._convert_endpointinfo(topics)
|
158
171
|
for slot in list(self._slots.keys()):
|
@@ -162,4 +175,11 @@ class BECDispatcher:
|
|
162
175
|
del self._slots[slot]
|
163
176
|
|
164
177
|
def disconnect_all(self, *args, **kwargs):
|
178
|
+
"""
|
179
|
+
Disconnect all slots from all topics.
|
180
|
+
|
181
|
+
Args:
|
182
|
+
*args: Arbitrary positional arguments
|
183
|
+
**kwargs: Arbitrary keyword arguments
|
184
|
+
"""
|
165
185
|
self.disconnect_topics(self.client.connector._topics_cb)
|
@@ -2,11 +2,10 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.bec_queue.bec_queue import BECQueue
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -35,9 +34,7 @@ class BECQueuePlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
35
34
|
return "BEC Services"
|
36
35
|
|
37
36
|
def icon(self):
|
38
|
-
|
39
|
-
pixmap = material_icon("edit_note", color=palette.text().color(), filled=True)
|
40
|
-
return QIcon(pixmap)
|
37
|
+
return designer_material_icon("edit_note")
|
41
38
|
|
42
39
|
def includeFile(self):
|
43
40
|
return "bec_queue"
|
@@ -2,11 +2,10 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.bec_status_box.bec_status_box import BECStatusBox
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -35,9 +34,7 @@ class BECStatusBoxPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
35
34
|
return "BEC Services"
|
36
35
|
|
37
36
|
def icon(self):
|
38
|
-
|
39
|
-
pixmap = material_icon("dns", color=palette.text().color(), filled=True)
|
40
|
-
return QIcon(pixmap)
|
37
|
+
return designer_material_icon("dns")
|
41
38
|
|
42
39
|
def includeFile(self):
|
43
40
|
return "bec_status_box"
|
@@ -1,10 +1,9 @@
|
|
1
1
|
import os
|
2
2
|
|
3
|
-
from bec_qthemes import material_icon
|
4
3
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
5
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
6
4
|
|
7
5
|
import bec_widgets
|
6
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
8
7
|
from bec_widgets.widgets.color_button.color_button import ColorButton
|
9
8
|
|
10
9
|
DOM_XML = """
|
@@ -32,9 +31,7 @@ class ColorButtonPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
32
31
|
return "BEC Buttons"
|
33
32
|
|
34
33
|
def icon(self):
|
35
|
-
|
36
|
-
pixmap = material_icon("colors", color=palette.text().color(), filled=True)
|
37
|
-
return QIcon(pixmap)
|
34
|
+
return designer_material_icon("colors")
|
38
35
|
|
39
36
|
def includeFile(self):
|
40
37
|
return "color_button"
|
@@ -2,11 +2,10 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.colormap_selector.colormap_selector import ColormapSelector
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -35,9 +34,7 @@ class ColormapSelectorPlugin(QDesignerCustomWidgetInterface): # pragma: no cove
|
|
35
34
|
return "BEC Buttons"
|
36
35
|
|
37
36
|
def icon(self):
|
38
|
-
|
39
|
-
pixmap = material_icon("palette", color=palette.text().color(), filled=True)
|
40
|
-
return QIcon(pixmap)
|
37
|
+
return designer_material_icon("palette")
|
41
38
|
|
42
39
|
def includeFile(self):
|
43
40
|
return "colormap_selector"
|
@@ -1,10 +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
|
5
4
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
6
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
7
5
|
|
6
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
8
7
|
from bec_widgets.widgets.device_browser.device_browser import DeviceBrowser
|
9
8
|
|
10
9
|
DOM_XML = """
|
@@ -31,9 +30,7 @@ class DeviceBrowserPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
31
30
|
return "BEC Services"
|
32
31
|
|
33
32
|
def icon(self):
|
34
|
-
|
35
|
-
pixmap = material_icon("lists", color=palette.text().color(), filled=True)
|
36
|
-
return QIcon(pixmap)
|
33
|
+
return designer_material_icon("lists")
|
37
34
|
|
38
35
|
def includeFile(self):
|
39
36
|
return "device_browser"
|
@@ -2,11 +2,10 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.device_combobox.device_combobox import DeviceComboBox
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -35,9 +34,7 @@ class DeviceComboBoxPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
35
34
|
return "Device Control"
|
36
35
|
|
37
36
|
def icon(self):
|
38
|
-
|
39
|
-
pixmap = material_icon("list_alt", color=palette.text().color(), filled=True)
|
40
|
-
return QIcon(pixmap)
|
37
|
+
return designer_material_icon("list_alt")
|
41
38
|
|
42
39
|
def includeFile(self):
|
43
40
|
return "device_combobox"
|
@@ -2,11 +2,10 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.device_line_edit.device_line_edit import DeviceLineEdit
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -35,9 +34,7 @@ class DeviceLineEditPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
35
34
|
return "Device Control"
|
36
35
|
|
37
36
|
def icon(self):
|
38
|
-
|
39
|
-
pixmap = material_icon("edit_note", color=palette.text().color(), filled=True)
|
40
|
-
return QIcon(pixmap)
|
37
|
+
return designer_material_icon("edit_note")
|
41
38
|
|
42
39
|
def includeFile(self):
|
43
40
|
return "device_line_edit"
|
@@ -2,11 +2,10 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.dock import BECDockArea
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -35,9 +34,7 @@ class BECDockAreaPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
35
34
|
return "BEC Plots"
|
36
35
|
|
37
36
|
def icon(self):
|
38
|
-
|
39
|
-
pixmap = material_icon("widgets", color=palette.text().color(), filled=True)
|
40
|
-
return QIcon(pixmap)
|
37
|
+
return designer_material_icon("widgets")
|
41
38
|
|
42
39
|
def includeFile(self):
|
43
40
|
return "dock_area"
|
@@ -2,11 +2,10 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.image.image_widget import BECImageWidget
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -35,9 +34,7 @@ class BECImageWidgetPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
35
34
|
return "BEC Plots"
|
36
35
|
|
37
36
|
def icon(self):
|
38
|
-
|
39
|
-
pixmap = material_icon("image", color=palette.text().color(), filled=True)
|
40
|
-
return QIcon(pixmap)
|
37
|
+
return designer_material_icon("image")
|
41
38
|
|
42
39
|
def includeFile(self):
|
43
40
|
return "bec_image_widget"
|
@@ -1,10 +1,9 @@
|
|
1
1
|
import os
|
2
2
|
|
3
|
-
from bec_qthemes import material_icon
|
4
3
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
5
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
6
4
|
|
7
5
|
import bec_widgets
|
6
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
8
7
|
from bec_widgets.widgets.motor_map.motor_map_widget import BECMotorMapWidget
|
9
8
|
|
10
9
|
DOM_XML = """
|
@@ -33,9 +32,7 @@ class BECMotorMapWidgetPlugin(QDesignerCustomWidgetInterface): # pragma: no cov
|
|
33
32
|
return "BEC Plots"
|
34
33
|
|
35
34
|
def icon(self):
|
36
|
-
|
37
|
-
pixmap = material_icon("my_location", color=palette.text().color(), filled=True)
|
38
|
-
return QIcon(pixmap)
|
35
|
+
return designer_material_icon("my_location")
|
39
36
|
|
40
37
|
def includeFile(self):
|
41
38
|
return "bec_motor_map_widget"
|
@@ -2,11 +2,10 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.position_indicator.position_indicator import PositionIndicator
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -35,9 +34,7 @@ class PositionIndicatorPlugin(QDesignerCustomWidgetInterface): # pragma: no cov
|
|
35
34
|
return "BEC Utils"
|
36
35
|
|
37
36
|
def icon(self):
|
38
|
-
|
39
|
-
pixmap = material_icon("horizontal_distribute", color=palette.text().color(), filled=True)
|
40
|
-
return QIcon(pixmap)
|
37
|
+
return designer_material_icon("horizontal_distribute")
|
41
38
|
|
42
39
|
def includeFile(self):
|
43
40
|
return "position_indicator"
|
@@ -3,10 +3,9 @@
|
|
3
3
|
|
4
4
|
import os
|
5
5
|
|
6
|
-
from bec_qthemes import material_icon
|
7
6
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
8
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
9
7
|
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.positioner_box.positioner_box import PositionerBox
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -34,9 +33,7 @@ class PositionerBoxPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
34
33
|
return "Device Control"
|
35
34
|
|
36
35
|
def icon(self):
|
37
|
-
|
38
|
-
pixmap = material_icon("switch_right", color=palette.text().color(), filled=True)
|
39
|
-
return QIcon(pixmap)
|
36
|
+
return designer_material_icon("switch_right")
|
40
37
|
|
41
38
|
def includeFile(self):
|
42
39
|
return "positioner_box"
|
@@ -3,10 +3,9 @@
|
|
3
3
|
|
4
4
|
import os
|
5
5
|
|
6
|
-
from bec_qthemes import material_icon
|
7
6
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
8
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
9
7
|
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.positioner_box.positioner_control_line import PositionerControlLine
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -34,9 +33,7 @@ class PositionerControlLinePlugin(QDesignerCustomWidgetInterface): # pragma: no
|
|
34
33
|
return "Device Control"
|
35
34
|
|
36
35
|
def icon(self):
|
37
|
-
|
38
|
-
pixmap = material_icon("switch_left", color=palette.text().color(), filled=True)
|
39
|
-
return QIcon(pixmap)
|
36
|
+
return designer_material_icon("switch_left")
|
40
37
|
|
41
38
|
def includeFile(self):
|
42
39
|
return "positioner_control_line"
|
@@ -2,11 +2,10 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.ring_progress_bar.ring_progress_bar import RingProgressBar
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -34,9 +33,7 @@ class RingProgressBarPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
34
33
|
return "BEC Utils"
|
35
34
|
|
36
35
|
def icon(self):
|
37
|
-
|
38
|
-
pixmap = material_icon("track_changes", color=palette.text().color(), filled=True)
|
39
|
-
return QIcon(pixmap)
|
36
|
+
return designer_material_icon("track_changes")
|
40
37
|
|
41
38
|
def includeFile(self):
|
42
39
|
return "ring_progress_bar"
|
@@ -2,11 +2,10 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.scan_control.scan_control import ScanControl
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -34,9 +33,7 @@ class ScanControlPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
34
33
|
return "Device Control"
|
35
34
|
|
36
35
|
def icon(self):
|
37
|
-
|
38
|
-
pixmap = material_icon("stacked_line_chart", color=palette.text().color(), filled=True)
|
39
|
-
return QIcon(pixmap)
|
36
|
+
return designer_material_icon("stacked_line_chart")
|
40
37
|
|
41
38
|
def includeFile(self):
|
42
39
|
return "scan_control"
|
@@ -2,11 +2,10 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.spinner.spinner import SpinnerWidget
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -35,9 +34,7 @@ class SpinnerWidgetPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
35
34
|
return "BEC Utils"
|
36
35
|
|
37
36
|
def icon(self):
|
38
|
-
|
39
|
-
pixmap = material_icon("progress_activity", color=palette.text().color(), filled=True)
|
40
|
-
return QIcon(pixmap)
|
37
|
+
return designer_material_icon("progress_activity")
|
41
38
|
|
42
39
|
def includeFile(self):
|
43
40
|
return "spinner_widget"
|
@@ -2,11 +2,10 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.stop_button.stop_button import StopButton
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -35,9 +34,7 @@ class StopButtonPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
35
34
|
return "BEC Utils"
|
36
35
|
|
37
36
|
def icon(self):
|
38
|
-
|
39
|
-
pixmap = material_icon("dangerous", color=palette.text().color(), filled=True)
|
40
|
-
return QIcon(pixmap)
|
37
|
+
return designer_material_icon("dangerous")
|
41
38
|
|
42
39
|
def includeFile(self):
|
43
40
|
return "stop_button"
|
@@ -2,11 +2,10 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.text_box.text_box import TextBox
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -34,9 +33,7 @@ class TextBoxPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
34
33
|
return "BEC Utils"
|
35
34
|
|
36
35
|
def icon(self):
|
37
|
-
|
38
|
-
pixmap = material_icon("chat", color=palette.text().color(), filled=True)
|
39
|
-
return QIcon(pixmap)
|
36
|
+
return designer_material_icon("chat")
|
40
37
|
|
41
38
|
def includeFile(self):
|
42
39
|
return "text_box"
|
@@ -2,11 +2,10 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.toggle.toggle import ToggleSwitch
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -35,9 +34,7 @@ class ToggleSwitchPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
35
34
|
return "BEC Utils"
|
36
35
|
|
37
36
|
def icon(self):
|
38
|
-
|
39
|
-
pixmap = material_icon("toggle_on", color=palette.text().color(), filled=True)
|
40
|
-
return QIcon(pixmap)
|
37
|
+
return designer_material_icon("toggle_on")
|
41
38
|
|
42
39
|
def includeFile(self):
|
43
40
|
return "toggle_switch"
|
@@ -2,11 +2,10 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.vscode.vscode import VSCodeEditor
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -35,9 +34,7 @@ class VSCodeEditorPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
35
34
|
return "BEC Developer"
|
36
35
|
|
37
36
|
def icon(self):
|
38
|
-
|
39
|
-
pixmap = material_icon("developer_mode_tv", color=palette.text().color(), filled=True)
|
40
|
-
return QIcon(pixmap)
|
37
|
+
return designer_material_icon("developer_mode_tv")
|
41
38
|
|
42
39
|
def includeFile(self):
|
43
40
|
return "vs_code_editor"
|
@@ -2,11 +2,10 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.waveform.waveform_widget import BECWaveformWidget
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -35,9 +34,7 @@ class BECWaveformWidgetPlugin(QDesignerCustomWidgetInterface): # pragma: no cov
|
|
35
34
|
return "BEC Plots"
|
36
35
|
|
37
36
|
def icon(self):
|
38
|
-
|
39
|
-
pixmap = material_icon("show_chart", color=palette.text().color(), filled=True)
|
40
|
-
return QIcon(pixmap)
|
37
|
+
return designer_material_icon("show_chart")
|
41
38
|
|
42
39
|
def includeFile(self):
|
43
40
|
return "bec_waveform_widget"
|
@@ -2,11 +2,10 @@
|
|
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
|
6
5
|
from qtpy.QtDesigner import QDesignerCustomWidgetInterface
|
7
|
-
from qtpy.QtGui import QGuiApplication, QIcon
|
8
6
|
|
9
7
|
import bec_widgets
|
8
|
+
from bec_widgets.utils.bec_designer import designer_material_icon
|
10
9
|
from bec_widgets.widgets.website.website import WebsiteWidget
|
11
10
|
|
12
11
|
DOM_XML = """
|
@@ -34,9 +33,7 @@ class WebsiteWidgetPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
|
|
34
33
|
return "BEC Utils"
|
35
34
|
|
36
35
|
def icon(self):
|
37
|
-
|
38
|
-
pixmap = material_icon("travel_explore", color=palette.text().color(), filled=True)
|
39
|
-
return QIcon(pixmap)
|
36
|
+
return designer_material_icon("travel_explore")
|
40
37
|
|
41
38
|
def includeFile(self):
|
42
39
|
return "website_widget"
|
@@ -2,11 +2,11 @@
|
|
2
2
|
.gitlab-ci.yml,sha256=9dZ_EvimZrDzG8MtII0qtBYMM_Nc6xqh2iFRds0rlvE,8370
|
3
3
|
.pylintrc,sha256=eeY8YwSI74oFfq6IYIbCqnx3Vk8ZncKaatv96n_Y8Rs,18544
|
4
4
|
.readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
|
5
|
-
CHANGELOG.md,sha256=
|
5
|
+
CHANGELOG.md,sha256=F5JNzWDV1tskuAnkR8S2x6KB1FPs-J2JUqZeBs7e00g,6733
|
6
6
|
LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
7
|
-
PKG-INFO,sha256=
|
7
|
+
PKG-INFO,sha256=UkwD-_52GWkQgNpQnMa-cDG4Q_h3sMM1jqGYrM4Kjy8,1325
|
8
8
|
README.md,sha256=Od69x-RS85Hph0-WwWACwal4yUd67XkEn4APEfHhHFw,2649
|
9
|
-
pyproject.toml,sha256=
|
9
|
+
pyproject.toml,sha256=5LVT8PiePyXQ2W_r2fJjtBUzN7BRL233-0tjvBG_b_A,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
|
@@ -79,21 +79,21 @@ bec_widgets/examples/plugin_example_pyside/main.py,sha256=zDP5wO7wb3BVsQ15HOCRT1
|
|
79
79
|
bec_widgets/examples/plugin_example_pyside/registertictactoe.py,sha256=cVhBnP0qx5j9Jft-VeKvlTFE-bX58hbP45CX0f4r5pM,535
|
80
80
|
bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject,sha256=O_PSMFJlXxQuf55gIOfkpfZIZGpX8W1SfUVZ-mvtI_E,119
|
81
81
|
bec_widgets/examples/plugin_example_pyside/tictactoe.py,sha256=byR7mTiIXFaA9igPTH04pzm0yfikNB5KgISwvNiRPd8,4940
|
82
|
-
bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py,sha256=
|
82
|
+
bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py,sha256=MFMwONn4EZ3V8DboEG4I3BXpURE9JDbKB7XTzzfZl5w,1978
|
83
83
|
bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py,sha256=V6OVnBTS-60zjQ2FAs88Ldjm1MfoMROfiQZZu6Guav8,2379
|
84
84
|
bec_widgets/qt_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
85
85
|
bec_widgets/qt_utils/error_popups.py,sha256=y9gKKWaafp468ioHr96nBhf02ZpEgjDc-BAVOTWh-e8,7680
|
86
86
|
bec_widgets/qt_utils/redis_message_waiter.py,sha256=fvL_QgC0cTDv_FPJdRyp5AKjf401EJU4z3r38p47ydY,1745
|
87
87
|
bec_widgets/qt_utils/settings_dialog.py,sha256=NhtzTer_xzlB2lLLrGklkI1QYLJEWQpJoZbCz4o5daI,3645
|
88
|
-
bec_widgets/qt_utils/toolbar.py,sha256=
|
88
|
+
bec_widgets/qt_utils/toolbar.py,sha256=3gmwASDgZiE6SFI9dK3VE-dT4LMqwb68laowF7_rv3o,7773
|
89
89
|
bec_widgets/utils/__init__.py,sha256=1930ji1Jj6dVuY81Wd2kYBhHYNV-2R0bN_L4o9zBj1U,533
|
90
90
|
bec_widgets/utils/bec_connector.py,sha256=SivHKXVyNVqeu3kCXYEPpbleTVw8g1cW0FKq1QrQgco,9987
|
91
|
-
bec_widgets/utils/bec_designer.py,sha256=
|
92
|
-
bec_widgets/utils/bec_dispatcher.py,sha256=
|
91
|
+
bec_widgets/utils/bec_designer.py,sha256=Z3MeMju-KmTz8POtm23VQfp4rvtD2sF6eIOKQkl2F7w,4729
|
92
|
+
bec_widgets/utils/bec_dispatcher.py,sha256=NkObWO_gRO9Uobz-fy0gVTZqQsbFRaKj6fbjYZoErFI,6400
|
93
93
|
bec_widgets/utils/bec_table.py,sha256=nA2b8ukSeUfquFMAxGrUVOqdrzMoDYD6O_4EYbOG2zk,717
|
94
94
|
bec_widgets/utils/bec_widget.py,sha256=Bo2v1aP7rgSAQajW8GBJbI3iovTn_hGCsmeFMo7bT10,707
|
95
95
|
bec_widgets/utils/colors.py,sha256=hNIi99EpMv3t3hTJIL2jBe5nzh5f2fuCyEKXEPWSQSc,10501
|
96
|
-
bec_widgets/utils/container_utils.py,sha256=
|
96
|
+
bec_widgets/utils/container_utils.py,sha256=0wr3ZfuMiAFKCrQHVjxjw-Vuk8wsHdridqcjy2eY840,1531
|
97
97
|
bec_widgets/utils/crosshair.py,sha256=ywj4Pr2Xx8tFsD5qrHIocanKlNqDd51ElbEfxenuYM0,11363
|
98
98
|
bec_widgets/utils/entry_validator.py,sha256=3skJIsUwTYicT76AMHm_M78RiWtUgyD2zb-Rxo2HdHQ,1313
|
99
99
|
bec_widgets/utils/generate_designer_plugin.py,sha256=eidqauS8YLgoxkPntPL0oSG_lYqI2D7fSyOZvOtCU_U,5891
|
@@ -112,50 +112,50 @@ bec_widgets/widgets/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKV
|
|
112
112
|
bec_widgets/widgets/base_classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
113
113
|
bec_widgets/widgets/base_classes/device_input_base.py,sha256=thCOHOa9Z0b3-vlNFWK6PT_DdPTANnfj0_DLES_K-eE,3902
|
114
114
|
bec_widgets/widgets/bec_queue/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
115
|
-
bec_widgets/widgets/bec_queue/bec_queue.py,sha256=
|
115
|
+
bec_widgets/widgets/bec_queue/bec_queue.py,sha256=IDZ2Jy0SeuJJ23lyVg8TnkUPJ8vfuGJUg5a9lt5jwPQ,3882
|
116
116
|
bec_widgets/widgets/bec_queue/bec_queue.pyproject,sha256=VhoNmAv1DQUl9dg7dELyf5i4pZ5k65N3GnqOYiSwbQo,27
|
117
|
-
bec_widgets/widgets/bec_queue/bec_queue_plugin.py,sha256=
|
117
|
+
bec_widgets/widgets/bec_queue/bec_queue_plugin.py,sha256=oYlAuWqgvjWHmzQuUvZaR8pHX_c_rM-Ib24z1V3Wg38,1334
|
118
118
|
bec_widgets/widgets/bec_queue/register_bec_queue.py,sha256=XnwtUSa1asK1b80knKWodcyX9qJy4DnKsQL_FoDfZy4,463
|
119
119
|
bec_widgets/widgets/bec_status_box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
120
120
|
bec_widgets/widgets/bec_status_box/bec_status_box.py,sha256=hlo-U9rf1jzSCXpCjx3tthNYT8KImxKSRri5gsCULvw,13108
|
121
121
|
bec_widgets/widgets/bec_status_box/bec_status_box.pyproject,sha256=JWtx3Csfn2h7ODtk10HtyBNLf6tFIqyU6g04rMWOO1U,32
|
122
|
-
bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py,sha256=
|
122
|
+
bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py,sha256=BD58_U68ySD3cHg9mdMK2XsU4A0wTdO5ES7dAJeZDsY,1395
|
123
123
|
bec_widgets/widgets/bec_status_box/register_bec_status_box.py,sha256=EiQITnkNw7IU7hE776wAeXro97eZd9XlsB9essgCebE,481
|
124
124
|
bec_widgets/widgets/bec_status_box/status_item.py,sha256=3aNaa-e64PmkBoAWfItYAmhB1EFhWRiFLzXWWz0dS_8,5317
|
125
125
|
bec_widgets/widgets/color_button/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
126
126
|
bec_widgets/widgets/color_button/color_button.py,sha256=Jx4UAn7ZomLei0OCg7RmTnq395scXW4jmqslQRbEVMI,1203
|
127
127
|
bec_widgets/widgets/color_button/color_button.pyproject,sha256=LUYF4VkDOB4ttVe7YfvLh64K-XZg0-xaVT06BqCT3UA,30
|
128
|
-
bec_widgets/widgets/color_button/color_button_plugin.py,sha256=
|
128
|
+
bec_widgets/widgets/color_button/color_button_plugin.py,sha256=Owaqrq4XcMXYB7vDJSSxiQUZ6nKof10HviEcEFcxFCc,1254
|
129
129
|
bec_widgets/widgets/color_button/register_color_button.py,sha256=ZAx3t7G2VI2S-1qcEof31Xi9O0X8deLeZNgS651L1JI,475
|
130
130
|
bec_widgets/widgets/colormap_selector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
131
131
|
bec_widgets/widgets/colormap_selector/colormap_selector.py,sha256=4BqV11XMZVmcwzHiKgwUVFtg_bg4Nz7CQznkL4hHRYU,3794
|
132
132
|
bec_widgets/widgets/colormap_selector/colormap_selector.pyproject,sha256=lHl9qmlMCB6BKB2orqctKwLcKK3Swc0THsyr-5O_vXM,35
|
133
|
-
bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py,sha256=
|
133
|
+
bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py,sha256=3DjuT36quiMOfLwpCzVxRlV6KhkUr6AMjh73HDIGm6w,1371
|
134
134
|
bec_widgets/widgets/colormap_selector/register_colormap_selector.py,sha256=bfw7RWmTmMLTLxGT-izSwcGtxGLKvL3jdivJw2z8oN4,512
|
135
135
|
bec_widgets/widgets/console/console.py,sha256=NG0cBuqqPX4hC-sHhk_UEkT-nHhhN9Y7karJITPLzyo,17864
|
136
136
|
bec_widgets/widgets/device_browser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
137
137
|
bec_widgets/widgets/device_browser/device_browser.py,sha256=PRpgXuAUc6dCWXddp7m_dxUE9VA6AuSzCJ8t3TYng1w,3517
|
138
138
|
bec_widgets/widgets/device_browser/device_browser.pyproject,sha256=s0vM1xYUwyU6Je68_hSCSBLK8ZPfHB-ftt4flfdpkXY,32
|
139
139
|
bec_widgets/widgets/device_browser/device_browser.ui,sha256=Dy_3oXArScP-_7hRI6nQ7SKKnihuyYAzJfXiRxxJQBE,1077
|
140
|
-
bec_widgets/widgets/device_browser/device_browser_plugin.py,sha256=
|
140
|
+
bec_widgets/widgets/device_browser/device_browser_plugin.py,sha256=VZv5q5Im1p6TOeE6LI0n7plAJ83sMY9MTdWZcynvt0E,1274
|
141
141
|
bec_widgets/widgets/device_browser/register_device_browser.py,sha256=LJ0ckrgUbU5yprhlrOtSQzymztKyb9zksMuFO4BKN6s,483
|
142
142
|
bec_widgets/widgets/device_browser/device_item/__init__.py,sha256=VGY-uNVCnpcY-q-gijteB2N8KxFNgYR-qQ209MVu1QI,36
|
143
143
|
bec_widgets/widgets/device_browser/device_item/device_item.py,sha256=MtiHM8JXalfNzWYwBj12u_SJidkSchbCy7iT1YZouec,1476
|
144
144
|
bec_widgets/widgets/device_combobox/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
145
145
|
bec_widgets/widgets/device_combobox/device_combo_box.pyproject,sha256=wI2eXR5ky_IM9-BCHJnH_9CEqYcZwIuLcgitSEr8OJU,40
|
146
|
-
bec_widgets/widgets/device_combobox/device_combo_box_plugin.py,sha256=
|
146
|
+
bec_widgets/widgets/device_combobox/device_combo_box_plugin.py,sha256=1wJZEj9cQdgNGrdy5btzlJBIKFP7mFUOuiSDG939jwo,1396
|
147
147
|
bec_widgets/widgets/device_combobox/device_combobox.py,sha256=4YohiVtN-R4j9m2mrdwdkRL6IMpIbJ16KJ0SpJC86_g,2667
|
148
148
|
bec_widgets/widgets/device_combobox/register_device_combo_box.py,sha256=ZCrWVdWOvIjnUJWe3MU7JO021rcXYg2SgA1iSKqbLoY,488
|
149
149
|
bec_widgets/widgets/device_line_edit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
150
150
|
bec_widgets/widgets/device_line_edit/device_line_edit.py,sha256=iKK2NrVu4okWP8kxPU5whmo_y5VHtrD7Fd_q3ZgXN1Y,3221
|
151
151
|
bec_widgets/widgets/device_line_edit/device_line_edit.pyproject,sha256=tqAYXRbxsHR41MwqmAxvfq1CFeZ1IRv84whUG67HjjE,41
|
152
|
-
bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py,sha256=
|
152
|
+
bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py,sha256=4ASFaDcpkmyzDPJlPMTV8cCYefFjHz_dv2CchzuTAL4,1420
|
153
153
|
bec_widgets/widgets/device_line_edit/register_device_line_edit.py,sha256=8gEPnC8djYCw-idoZAENNB3bPOxM6pbzEp9A366EAGg,489
|
154
154
|
bec_widgets/widgets/dock/__init__.py,sha256=B7foHt02gnhM7mFksa7GJVwT7n0j_JvYDCt6wc6XR5g,61
|
155
155
|
bec_widgets/widgets/dock/dock.py,sha256=hQw5tpGrRbybjfF-aVEAeGdLTudtH4kFa70flu6_ZA8,10349
|
156
156
|
bec_widgets/widgets/dock/dock_area.py,sha256=VfKyMxKo-r1Ugu2xjSsfGMYZUg3i3xxaokaZCFcCoxA,13579
|
157
157
|
bec_widgets/widgets/dock/dock_area.pyproject,sha256=URW0UrDXCnkzk80rbQmUMgF6Uqay2TjHsq8Dq0g1j-c,37
|
158
|
-
bec_widgets/widgets/dock/dock_area_plugin.py,sha256=
|
158
|
+
bec_widgets/widgets/dock/dock_area_plugin.py,sha256=BqWvXzRm90kZGKgP26APt7f6ARBWzLU839vGAjl7UYM,1308
|
159
159
|
bec_widgets/widgets/dock/register_dock_area.py,sha256=Yqd1mq6CcHwlxHZxX5EHKONy4P44nMm8pso-4X0tvJI,464
|
160
160
|
bec_widgets/widgets/figure/__init__.py,sha256=3hGx_KOV7QHCYAV06aNuUgKq4QIYCjUTad-DrwkUaBM,44
|
161
161
|
bec_widgets/widgets/figure/figure.py,sha256=yujtlDj5NutRJ0gfHMkCVXvBNj5r2z3pb3gwWlUQ92Q,28822
|
@@ -174,14 +174,14 @@ bec_widgets/widgets/figure/plots/waveform/waveform.py,sha256=uW9GQHWiVd3q63-yXjQ
|
|
174
174
|
bec_widgets/widgets/figure/plots/waveform/waveform_curve.py,sha256=ZwRxSfPHbMWEvgUC-mL2orpZvtxR-DcrYAFikkdWEzk,8654
|
175
175
|
bec_widgets/widgets/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
176
176
|
bec_widgets/widgets/image/bec_image_widget.pyproject,sha256=PHisdBo5_5UCApd27GkizzqgfdjsDx2bFZa_p9LiSW8,30
|
177
|
-
bec_widgets/widgets/image/bec_image_widget_plugin.py,sha256=
|
177
|
+
bec_widgets/widgets/image/bec_image_widget_plugin.py,sha256=vU9JnJwz0TTITH4fK6uVGmbTnPdV8kLu2BIJU_LQH4c,1352
|
178
178
|
bec_widgets/widgets/image/image_widget.py,sha256=TCpTF8v94iSMklG9bYxZOjm9SbO60XZB9X0ldEp8lWE,16288
|
179
179
|
bec_widgets/widgets/image/register_bec_image_widget.py,sha256=01YLZQTMSSIXvH1TSL-1AYsRs1a4EbSwKLVAwh9AjeA,478
|
180
180
|
bec_widgets/widgets/jupyter_console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
181
181
|
bec_widgets/widgets/jupyter_console/jupyter_console.py,sha256=-e7HQOECeH5eDrJYh4BFIzRL78LDkooU4otabyN0aX4,2343
|
182
182
|
bec_widgets/widgets/motor_map/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
183
183
|
bec_widgets/widgets/motor_map/bec_motor_map_widget.pyproject,sha256=NAI8s5gRKz80ED4KY7OgD2OgSH5HEsjt2ux2BYp66yg,63
|
184
|
-
bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py,sha256=
|
184
|
+
bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py,sha256=NSUlP06rTB73GKik7KR_sO66Yu-gp5_XA7ApgTbcwJo,1283
|
185
185
|
bec_widgets/widgets/motor_map/motor_map_widget.py,sha256=URcysThbJKGsCZUqQm2lCtVn5FG8t4kT7DaN5EJUexg,7555
|
186
186
|
bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py,sha256=qRG8PtWGjso0pWbvj_DXKnbUfmQzfGqPSrnAozXfM7o,492
|
187
187
|
bec_widgets/widgets/motor_map/motor_map_dialog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -190,17 +190,17 @@ bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui,sha256=nv5v
|
|
190
190
|
bec_widgets/widgets/position_indicator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
191
191
|
bec_widgets/widgets/position_indicator/position_indicator.py,sha256=QVlWvs_RvEJe5IMxGYCpi-CXYF7vFeMqEMFCs6u5NGc,2020
|
192
192
|
bec_widgets/widgets/position_indicator/position_indicator.pyproject,sha256=s0JEf5YkpMag19ddFSYeRZ8erBau7erO3bqw05YrTyg,36
|
193
|
-
bec_widgets/widgets/position_indicator/position_indicator_plugin.py,sha256=
|
193
|
+
bec_widgets/widgets/position_indicator/position_indicator_plugin.py,sha256=5efV6Y5LSvCHgg2wogAs7JfKfDhzv59NFT0uT17cWsk,1409
|
194
194
|
bec_widgets/widgets/position_indicator/register_position_indicator.py,sha256=OZNiMgM_80TPSAXK_0hXAkne4vUh8DGvh_OdpOiMpwI,516
|
195
195
|
bec_widgets/widgets/positioner_box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
196
196
|
bec_widgets/widgets/positioner_box/positioner_box.py,sha256=FyUGskWAb-5m44bdUNVig_AkoDbLRbB0GucI6RRHge8,10839
|
197
197
|
bec_widgets/widgets/positioner_box/positioner_box.pyproject,sha256=7966pHdDseaHciaPNEKgdQgbUThSZf5wEDCeAEJh9po,32
|
198
198
|
bec_widgets/widgets/positioner_box/positioner_box.ui,sha256=Y-Xp0z32okT7X4-rL5r7dF_QH_QpXvPes3f778cC7_k,5633
|
199
|
-
bec_widgets/widgets/positioner_box/positioner_box_plugin.py,sha256=
|
199
|
+
bec_widgets/widgets/positioner_box/positioner_box_plugin.py,sha256=pcZcE0lwgdyWsopwi5ZM1tw32P5uD5QOtEC7sLYQIEc,1404
|
200
200
|
bec_widgets/widgets/positioner_box/positioner_control_line.py,sha256=DWSDakPsOu8SrhTMKh9NR8b1a7npuyrkjVpZVqj1Kb0,915
|
201
201
|
bec_widgets/widgets/positioner_box/positioner_control_line.pyproject,sha256=RGIXDjWq3fNCgOnU-08oeIeBLCcjYbRXgyh26drxB7I,41
|
202
202
|
bec_widgets/widgets/positioner_box/positioner_control_line.ui,sha256=hJ4e3e3A1zZY3WRfQ7yvAZUAtL8tJhCJX2bWbtty_EQ,5625
|
203
|
-
bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py,sha256=
|
203
|
+
bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py,sha256=ieLT4VCx9aza8NYAAioUaYglrywHmAma6JGzcBSMOCo,1477
|
204
204
|
bec_widgets/widgets/positioner_box/register_positioner_box.py,sha256=UPOUjXXq6-IgSj0kdV_nJe1rYPMF8aIZxF4eSmWgQAg,483
|
205
205
|
bec_widgets/widgets/positioner_box/register_positioner_control_line.py,sha256=MJ13vKGIwTMQGFhll63tfUGXHyd6bz40Cvr85oYKH3I,525
|
206
206
|
bec_widgets/widgets/ring_progress_bar/__init__.py,sha256=_uoJKnDM2YAeUBfwc5WLbIHSJj7zm_FAurSKP3WRaCw,47
|
@@ -208,41 +208,41 @@ bec_widgets/widgets/ring_progress_bar/register_ring_progress_bar.py,sha256=uJrMh
|
|
208
208
|
bec_widgets/widgets/ring_progress_bar/ring.py,sha256=2pdEzETaJpvx4Dzyosq2YhnvDOEUvFnj_f9GfFKpG5Q,11159
|
209
209
|
bec_widgets/widgets/ring_progress_bar/ring_progress_bar.py,sha256=F7z6BbY7BYSKivpCus6T8pXIwzqHOsDlaIV5fGRIboQ,24119
|
210
210
|
bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject,sha256=ZNYDnKDu9pixrY2XrulAGdKZg-Ysa7q67O_X2tAA0fc,35
|
211
|
-
bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py,sha256=
|
211
|
+
bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py,sha256=4wYVyxs8osUa1VuJUI5A2KdCCghmZXwsNCEtFQq6pYI,1384
|
212
212
|
bec_widgets/widgets/scan_control/__init__.py,sha256=IOfHl15vxb_uC6KN62-PeUzbBha_vQyqkkXbJ2HU674,38
|
213
213
|
bec_widgets/widgets/scan_control/register_scan_control.py,sha256=xUX2yR0-MaIMg9_y9qe50yDDphzsh2x1b5PMrF90yPM,475
|
214
214
|
bec_widgets/widgets/scan_control/scan_control.py,sha256=30pcaVaBVo6JxJuMH1ul1s-sPuWqCUKsUQ-XfAgzRZ8,9384
|
215
215
|
bec_widgets/widgets/scan_control/scan_control.pyproject,sha256=eTgVDFKToIH8_BbJjM2RvbOLr7HnYoidX0SAHx640DM,30
|
216
|
-
bec_widgets/widgets/scan_control/scan_control_plugin.py,sha256=
|
216
|
+
bec_widgets/widgets/scan_control/scan_control_plugin.py,sha256=Oe0jvKoLa1jvV7IyoExTzd2vvJbKPgUUt4_cdunsVNY,1350
|
217
217
|
bec_widgets/widgets/scan_control/scan_group_box.py,sha256=BpX9ZphqOhdEbQnGzNeNlmuZsMS__U97CkBMical2FY,9300
|
218
218
|
bec_widgets/widgets/spinner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
219
219
|
bec_widgets/widgets/spinner/register_spinner_widget.py,sha256=_zCPjLh4M7NTSHP1Atdn6yu33zJ3LJkcBy3KOJ5eSVY,476
|
220
220
|
bec_widgets/widgets/spinner/spinner.py,sha256=3A-VcX7HLDyqWsMoTUpB4jKHL26YuAbwOk3qonp3dI4,2591
|
221
221
|
bec_widgets/widgets/spinner/spinner_widget.pyproject,sha256=zzLajGB3DTgVnrSqMey2jRpBlxTq9cBXZL9tWJCKe-I,25
|
222
|
-
bec_widgets/widgets/spinner/spinner_widget_plugin.py,sha256=
|
222
|
+
bec_widgets/widgets/spinner/spinner_widget_plugin.py,sha256=VKUWMDN8h-qpbXmO9-dYQazSUs3GQDV4vTrZEP8J86k,1351
|
223
223
|
bec_widgets/widgets/stop_button/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
224
224
|
bec_widgets/widgets/stop_button/register_stop_button.py,sha256=U7r3fEOH-uPhAQI-nTituHXDDXDWR4JQZ7_vD6b_dfM,471
|
225
225
|
bec_widgets/widgets/stop_button/stop_button.py,sha256=XLrRFvVrAhD16_-SPgzvsUhy0ROunsrWlI5BPRyqZOI,832
|
226
226
|
bec_widgets/widgets/stop_button/stop_button.pyproject,sha256=Cc_xbv-zfzNVpsdg_1QyzuTlrJaM9_BkIjes70umrx0,29
|
227
|
-
bec_widgets/widgets/stop_button/stop_button_plugin.py,sha256=
|
227
|
+
bec_widgets/widgets/stop_button/stop_button_plugin.py,sha256=D5YfaGXuEenXDSGyC7VcwBolRqPV1FIikXXwVMVsozI,1354
|
228
228
|
bec_widgets/widgets/text_box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
229
229
|
bec_widgets/widgets/text_box/register_text_box.py,sha256=UwrmCoYjAAtJJK8BwC0P_wSb-lOlOvxPe3-Bemg_9nw,459
|
230
230
|
bec_widgets/widgets/text_box/text_box.py,sha256=3OWC6L3CWsH_uh8X11WnifYjhO8ruDe2FWFhE8cn5lY,4274
|
231
231
|
bec_widgets/widgets/text_box/text_box.pyproject,sha256=XohO1BIe2hrpU-z_KHKRgjcUkXru7jeFte31j2TPbNk,26
|
232
|
-
bec_widgets/widgets/text_box/text_box_plugin.py,sha256=
|
232
|
+
bec_widgets/widgets/text_box/text_box_plugin.py,sha256=UAbDbSgI3s2FniFSrNFe_VVTc3VzEphOS3lI9mRPwmY,1291
|
233
233
|
bec_widgets/widgets/toggle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
234
234
|
bec_widgets/widgets/toggle/register_toggle_switch.py,sha256=8pVtkeEeiDOjV4OPoZq1I30F9JDzl4nQE7e7xoWyWBs,472
|
235
235
|
bec_widgets/widgets/toggle/toggle.py,sha256=JzCGYoyHBrlBWCoyL94QX4zSLyEwWbCNHMegjlnSy2E,4442
|
236
236
|
bec_widgets/widgets/toggle/toggle_switch.pyproject,sha256=Msa-AS5H5XlqW65r8GlX2AxD8FnFnDyDgGnbKcXqKOw,24
|
237
|
-
bec_widgets/widgets/toggle/toggle_switch_plugin.py,sha256=
|
237
|
+
bec_widgets/widgets/toggle/toggle_switch_plugin.py,sha256=NSrk8KkolyOOxkliTwqz2n_l7jNPTjSFfcc9iCuzkiU,1333
|
238
238
|
bec_widgets/widgets/vscode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
239
239
|
bec_widgets/widgets/vscode/register_vs_code_editor.py,sha256=JATKBkTEuReeQ2Jj402xasjgVRMFI8uUOAAwmnFOWRA,473
|
240
240
|
bec_widgets/widgets/vscode/vs_code_editor.pyproject,sha256=bxx0jZlSfBo-Em7p15W1QIJ9lFr9jqTqGynUQG01ocU,24
|
241
|
-
bec_widgets/widgets/vscode/vs_code_editor_plugin.py,sha256=
|
241
|
+
bec_widgets/widgets/vscode/vs_code_editor_plugin.py,sha256=XqHJvMg5U804o2KnoGsKyf8WuLZjlaMRTWB2XkbqWLU,1335
|
242
242
|
bec_widgets/widgets/vscode/vscode.py,sha256=yV1D9PK2IYomq9yYfwqUOrZGIeBwMnNuBfXxBc2M8Qc,2231
|
243
243
|
bec_widgets/widgets/waveform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
244
244
|
bec_widgets/widgets/waveform/bec_waveform_widget.pyproject,sha256=GLD8GN9dXx9wNbtnevrxqqcwk7vKV-Uv8QYSycdaoaI,33
|
245
|
-
bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py,sha256=
|
245
|
+
bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py,sha256=Qt8E5nvk6f5JYwOqVn5UkbIW_JqsXkIMdv3CM41gXsU,1387
|
246
246
|
bec_widgets/widgets/waveform/register_bec_waveform_widget.py,sha256=qZHVZH_lP2hvzkG1Ra0EyrXlMeLkRCy0aceH-bfJ1cs,490
|
247
247
|
bec_widgets/widgets/waveform/waveform_widget.py,sha256=nzRDgo_qfmmp_aSGbXhwy2U7yq5cR0pHdjM0YDCvTKE,20409
|
248
248
|
bec_widgets/widgets/waveform/waveform_popups/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -256,9 +256,9 @@ bec_widgets/widgets/website/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
|
|
256
256
|
bec_widgets/widgets/website/register_website_widget.py,sha256=LIQJpV9uqcBiPR9cEAiDjaUS_l7JroYVdsotnLpD9H0,476
|
257
257
|
bec_widgets/widgets/website/website.py,sha256=vyRJr4jsti1h6cPHzTTtS_0IELJ3kYdS2_HdZCzavl4,1840
|
258
258
|
bec_widgets/widgets/website/website_widget.pyproject,sha256=scOiV3cV1_BjbzpPzy2N8rIJL5P2qIZz8ObTJ-Uvdtg,25
|
259
|
-
bec_widgets/widgets/website/website_widget_plugin.py,sha256=
|
259
|
+
bec_widgets/widgets/website/website_widget_plugin.py,sha256=Tllr4gLLPaouBxZ7-kRiNFFNPhHR4drna8VVRpia9zU,1334
|
260
260
|
docs/Makefile,sha256=i2WHuFlgfyAPEW4ssEP8NY4cOibDJrVjvzSEU8_Ggwc,634
|
261
|
-
docs/conf.py,sha256=
|
261
|
+
docs/conf.py,sha256=xrP_NOgayguXdfhEK6Oag5KlBxzzbHCv0zbitTpUWqM,2519
|
262
262
|
docs/index.md,sha256=h4edya5UA0bx21ReHu40lJudqVBH41tOASjnCjmoYj8,1197
|
263
263
|
docs/make.bat,sha256=vKazJE8RW49Cy8K7hm8QYbletvAd8YkeKsaPA_dWnXs,800
|
264
264
|
docs/requirements.txt,sha256=gMQDaDpz_LSH5TP6dKxKXqI5kupNnT4g-4KJ4fg2o5s,161
|
@@ -296,7 +296,8 @@ docs/developer/introduction/concepts.md,sha256=N23ewZjPx97eJtrU6-0Lou2IvPfkfZ6Nw
|
|
296
296
|
docs/developer/introduction/contributing.md,sha256=ocW5kjBNwD5k_nDkusXUpsW8jJALajrpNSRVJftuF-k,1668
|
297
297
|
docs/developer/introduction/introduction.md,sha256=vR732ai0u-NiP8ij2_HJucgT4CDhjyrARbThDMqUc74,788
|
298
298
|
docs/developer/introduction/useful_links.md,sha256=ytWRyLTAveU8ELrA0GL9hzTVCBRNBOTV8pRxvPp1huk,1487
|
299
|
-
docs/developer/widget_development/
|
299
|
+
docs/developer/widget_development/bec_dispatcher.md,sha256=AX3XVNE_9E1_rawD9q-yY9yvCEaZQiglfWpJpRn5TV0,8018
|
300
|
+
docs/developer/widget_development/widget_development.md,sha256=LE9_o1IeqLBgb1jaoLlXrOlqIUAEJPJpsHs8C3cSQ1k,542
|
300
301
|
docs/introduction/introduction.md,sha256=YBEFDhxqHTcbfbNTo76xDflaFUHIqDs-sToA1HRmCnI,1436
|
301
302
|
docs/user/customisation.md,sha256=wCW8fAbqtlgGE3mURvXOrK67Xo0_B-lxfg0sYuQWB40,3186
|
302
303
|
docs/user/user.md,sha256=FuBog2_wymy-A-p6QhXYf7CYn6tR6ojwK1ZLgV-tF1E,1499
|
@@ -399,8 +400,8 @@ tests/unit_tests/test_configs/config_device_no_entry.yaml,sha256=hdvue9KLc_kfNzG
|
|
399
400
|
tests/unit_tests/test_configs/config_scan.yaml,sha256=vo484BbWOjA_e-h6bTjSV9k7QaQHrlAvx-z8wtY-P4E,1915
|
400
401
|
tests/unit_tests/test_msgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
401
402
|
tests/unit_tests/test_msgs/available_scans_message.py,sha256=m_z97hIrjHXXMa2Ex-UvsPmTxOYXfjxyJaGkIY6StTY,46532
|
402
|
-
bec_widgets-0.
|
403
|
-
bec_widgets-0.
|
404
|
-
bec_widgets-0.
|
405
|
-
bec_widgets-0.
|
406
|
-
bec_widgets-0.
|
403
|
+
bec_widgets-0.97.0.dist-info/METADATA,sha256=UkwD-_52GWkQgNpQnMa-cDG4Q_h3sMM1jqGYrM4Kjy8,1325
|
404
|
+
bec_widgets-0.97.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
405
|
+
bec_widgets-0.97.0.dist-info/entry_points.txt,sha256=3otEkCdDB9LZJuBLzG4pFLK5Di0CVybN_12IsZrQ-58,166
|
406
|
+
bec_widgets-0.97.0.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
407
|
+
bec_widgets-0.97.0.dist-info/RECORD,,
|
docs/conf.py
CHANGED
@@ -65,7 +65,7 @@ add_module_names = False # Remove namespaces from class/method signatures
|
|
65
65
|
autodoc_inherit_docstrings = True # If no docstring, inherit from base class
|
66
66
|
set_type_checking_flag = True # Enable 'expensive' imports for sphinx_autodoc_typehints
|
67
67
|
autoclass_content = "both" # Include both class docstring and __init__
|
68
|
-
autodoc_mock_imports = ["pyqtgraph"]
|
68
|
+
autodoc_mock_imports = ["pyqtgraph", "qtpy", "PySide6"]
|
69
69
|
|
70
70
|
# Add any paths that contain templates here, relative to this directory.
|
71
71
|
templates_path = ["_templates"]
|
@@ -0,0 +1,143 @@
|
|
1
|
+
(developer.bec_dispatcher)=
|
2
|
+
|
3
|
+
# BECDispatcher
|
4
|
+
|
5
|
+
## Overview
|
6
|
+
|
7
|
+
The [`BECDispatcher`](https://bec.readthedocs.io/projects/bec-widgets/en/latest/api_reference/_autosummary/bec_widgets.utils.bec_dispatcher.BECDispatcher.html#bec_widgets.utils.bec_dispatcher.BECDispatcher)
|
8
|
+
is a powerful tool that
|
9
|
+
simplifies the process of connecting Qt slots to message updates from the BEC server. It enables real-time communication
|
10
|
+
between your widget and the BEC server by listening to specific message channels and triggering callbacks when new data
|
11
|
+
is received.
|
12
|
+
|
13
|
+
This tool is especially useful for creating widgets that need to respond to dynamic data, such as device readbacks or
|
14
|
+
scan updates. By
|
15
|
+
using [`BECDispatcher`](https://bec.readthedocs.io/projects/bec-widgets/en/latest/api_reference/_autosummary/bec_widgets.utils.bec_dispatcher.BECDispatcher.html#bec_widgets.utils.bec_dispatcher.BECDispatcher),
|
16
|
+
you
|
17
|
+
can create callback functions that react to incoming messages and update your widget's state or perform other tasks
|
18
|
+
based on the data received.
|
19
|
+
|
20
|
+
## How It Works
|
21
|
+
|
22
|
+
When you create a widget that needs to respond to updates from the BEC server, you can use
|
23
|
+
the [`BECDispatcher`](https://bec.readthedocs.io/projects/bec-widgets/en/latest/api_reference/_autosummary/bec_widgets.utils.bec_dispatcher.BECDispatcher.html#bec_widgets.utils.bec_dispatcher.BECDispatcher)
|
24
|
+
to
|
25
|
+
connect specific Qt slots (callback functions) to message endpoints. These endpoints are defined within the BEC system
|
26
|
+
and represent specific channels of information (
|
27
|
+
e.g., [`device readback`](https://beamline-experiment-control.readthedocs.io/en/latest/api_reference/_autosummary/bec_lib.endpoints.MessageEndpoints.html#bec_lib.endpoints.MessageEndpoints.device_readback),
|
28
|
+
[`scan_segment`](https://beamline-experiment-control.readthedocs.io/en/latest/api_reference/_autosummary/bec_lib.endpoints.MessageEndpoints.html#bec_lib.endpoints.MessageEndpoints.scan_segment),
|
29
|
+
etc.).
|
30
|
+
|
31
|
+
### Step-by-Step Guide
|
32
|
+
|
33
|
+
1. **Create a Callback Function**: Define a function within your widget that will handle the data received from the BEC
|
34
|
+
server. This function should usually accept two parameters: `msg_content` (the message content) and `metadata` (
|
35
|
+
additional
|
36
|
+
information about the message).
|
37
|
+
|
38
|
+
```python
|
39
|
+
# Example for a callback function that updates a widget display based on motor readback data
|
40
|
+
from qtpy.QtCore import Slot
|
41
|
+
|
42
|
+
@Slot(dict, dict)
|
43
|
+
def on_device_readback(self, msg_content, metadata):
|
44
|
+
# Process the incoming data
|
45
|
+
new_value = msg_content["signals"]['motor_x']["value"]
|
46
|
+
# Update the widget's display or perform another action
|
47
|
+
self.update_display(new_value)
|
48
|
+
```
|
49
|
+
|
50
|
+
2. **Connect the Slot to an Endpoint**: Use
|
51
|
+
the [`BECDispatcher`](https://bec.readthedocs.io/projects/bec-widgets/en/latest/api_reference/_autosummary/bec_widgets.utils.bec_dispatcher.BECDispatcher.html#bec_widgets.utils.bec_dispatcher.BECDispatcher)
|
52
|
+
to connect your callback function to a specific
|
53
|
+
endpoint. The endpoint represents the type of data or message you're interested in.
|
54
|
+
|
55
|
+
```python
|
56
|
+
from bec_lib.endpoints import MessageEndpoints
|
57
|
+
|
58
|
+
self.bec_dispatcher.connect_slot(self.on_device_readback, MessageEndpoints.device_readback("motor_x"))
|
59
|
+
```
|
60
|
+
|
61
|
+
3. **Handle Incoming Data**: Your callback function will be triggered automatically whenever a new message is received
|
62
|
+
on the connected endpoint. Use the data in `msg_content` to update your widget or perform other actions.
|
63
|
+
|
64
|
+
4. **Clean Up Connections**: If your widget is being destroyed or you no longer need to listen for updates, make sure to
|
65
|
+
disconnect your slots from
|
66
|
+
the [`BECDispatcher`](https://bec.readthedocs.io/projects/bec-widgets/en/latest/api_reference/_autosummary/bec_widgets.utils.bec_dispatcher.BECDispatcher.html#bec_widgets.utils.bec_dispatcher.BECDispatcher)
|
67
|
+
to avoid memory or thread leaks.
|
68
|
+
|
69
|
+
```python
|
70
|
+
self.bec_dispatcher.disconnect_slot(self.on_device_readback, MessageEndpoints.device_readback("motor_x"))
|
71
|
+
```
|
72
|
+
|
73
|
+
### Example: Motor Map Widget
|
74
|
+
|
75
|
+
The [`BECMotorMap`](https://bec.readthedocs.io/projects/bec-widgets/en/latest/api_reference/_autosummary/bec_widgets.widgets.figure.plots.motor_map.motor_map.BECMotorMap.html#bec-widgets-widgets-figure-plots-motor-map-motor-map-becmotormap)
|
76
|
+
widget is a great example of
|
77
|
+
how [`BECDispatcher`](https://bec.readthedocs.io/projects/bec-widgets/en/latest/api_reference/_autosummary/bec_widgets.utils.bec_dispatcher.BECDispatcher.html#bec_widgets.utils.bec_dispatcher.BECDispatcher)
|
78
|
+
can be used to handle real-time data updates. This
|
79
|
+
widget listens for updates on specific motor positions and dynamically updates the motor map display.
|
80
|
+
|
81
|
+
Here's a breakdown of
|
82
|
+
how [`BECDispatcher`](https://bec.readthedocs.io/projects/bec-widgets/en/latest/api_reference/_autosummary/bec_widgets.utils.bec_dispatcher.BECDispatcher.html#bec_widgets.utils.bec_dispatcher.BECDispatcher)
|
83
|
+
is used in
|
84
|
+
the [`BECMotorMap`](https://bec.readthedocs.io/projects/bec-widgets/en/latest/api_reference/_autosummary/bec_widgets.widgets.figure.plots.motor_map.motor_map.BECMotorMap.html#bec-widgets-widgets-figure-plots-motor-map-motor-map-becmotormap)
|
85
|
+
widget:
|
86
|
+
|
87
|
+
1. **Connecting to Motor Readbacks**:
|
88
|
+
The widget connects to
|
89
|
+
the [`device readback`](https://beamline-experiment-control.readthedocs.io/en/latest/api_reference/_autosummary/bec_lib.endpoints.MessageEndpoints.html#bec_lib.endpoints.MessageEndpoints.device_readback)
|
90
|
+
endpoints using
|
91
|
+
the [`connect_slot`](https://bec.readthedocs.io/projects/bec-widgets/en/latest/api_reference/_autosummary/bec_widgets.utils.bec_dispatcher.BECDispatcher.html#bec_widgets.utils.bec_dispatcher.BECDispatcher.connect_slot)
|
92
|
+
method
|
93
|
+
of [`BECDispatcher`](https://bec.readthedocs.io/projects/bec-widgets/en/latest/api_reference/_autosummary/bec_widgets.utils.bec_dispatcher.BECDispatcher.html#bec_widgets.utils.bec_dispatcher.BECDispatcher).
|
94
|
+
This allows
|
95
|
+
the widget to receive real-time updates about the motor positions.
|
96
|
+
|
97
|
+
```{literalinclude} ../../../bec_widgets/widgets/figure/plots/motor_map/motor_map.py
|
98
|
+
:language: python
|
99
|
+
:pyobject: BECMotorMap._connect_motor_to_slots
|
100
|
+
:dedent: 4
|
101
|
+
```
|
102
|
+
|
103
|
+
2. **Handling Readback Data**:
|
104
|
+
The `on_device_readback` slot is called whenever new data is received from the motor readback. This slot processes
|
105
|
+
the data and updates the motor map plot accordingly.
|
106
|
+
|
107
|
+
```{literalinclude} ../../../bec_widgets/widgets/figure/plots/motor_map/motor_map.py
|
108
|
+
:language: python
|
109
|
+
:pyobject: BECMotorMap.on_device_readback
|
110
|
+
:dedent: 4
|
111
|
+
```
|
112
|
+
|
113
|
+
3. **Updating the Plot**:
|
114
|
+
The motor map plot is updated in response to the new data, providing a real-time visualization of the motor's
|
115
|
+
position.
|
116
|
+
|
117
|
+
```{literalinclude} ../../../bec_widgets/widgets/figure/plots/motor_map/motor_map.py
|
118
|
+
:language: python
|
119
|
+
:pyobject: BECMotorMap._update_plot
|
120
|
+
:dedent: 4
|
121
|
+
```
|
122
|
+
|
123
|
+
4. **Disconnecting When No Longer Needed**:
|
124
|
+
The widget ensures that connections are properly cleaned up when no longer needed.
|
125
|
+
|
126
|
+
```{literalinclude} ../../../bec_widgets/widgets/figure/plots/motor_map/motor_map.py
|
127
|
+
:language: python
|
128
|
+
:pyobject: BECMotorMap._update_plot
|
129
|
+
:dedent: 4
|
130
|
+
```
|
131
|
+
|
132
|
+
## Conclusion
|
133
|
+
|
134
|
+
The [`BECDispatcher`](https://bec.readthedocs.io/projects/bec-widgets/en/latest/api_reference/_autosummary/bec_widgets.utils.bec_dispatcher.BECDispatcher.html#bec_widgets.utils.bec_dispatcher.BECDispatcher)
|
135
|
+
is a key tool for developing interactive and responsive widgets within the BEC framework. By
|
136
|
+
leveraging this tool, you can create widgets that automatically respond to real-time data updates from the BEC server,
|
137
|
+
enhancing the interactivity and functionality of your user interface.
|
138
|
+
|
139
|
+
In next tutorials we will cover how to create a custom widget using the BECDispatcher and BECWidget base class.
|
140
|
+
|
141
|
+
```{note}
|
142
|
+
For more details on specific messages and endpoints, please refer to the [Message Endpoints Documentation](https://beamline-experiment-control.readthedocs.io/en/latest/api_reference/_autosummary/bec_lib.endpoints.MessageEndpoints.html#bec-lib-endpoints-messageendpoints).
|
143
|
+
```
|
pyproject.toml
CHANGED
File without changes
|
File without changes
|
File without changes
|