bec-widgets 0.118.0__py3-none-any.whl → 1.0.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 +63 -67
- PKG-INFO +1 -1
- bec_widgets/applications/alignment/alignment_1d/alignment_1d.py +33 -89
- bec_widgets/applications/alignment/alignment_1d/alignment_1d.ui +413 -715
- bec_widgets/cli/client.py +22 -0
- bec_widgets/qt_utils/compact_popup.py +68 -23
- bec_widgets/utils/crosshair.py +11 -2
- bec_widgets/widgets/device_line_edit/device_line_edit.py +15 -1
- bec_widgets/widgets/figure/plots/waveform/waveform.py +15 -0
- bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +3 -2
- bec_widgets/widgets/positioner_box/positioner_box.py +10 -4
- bec_widgets/widgets/positioner_group/__init__.py +0 -0
- bec_widgets/widgets/positioner_group/positioner_group.py +170 -0
- bec_widgets/widgets/positioner_group/positioner_group.pyproject +1 -0
- bec_widgets/widgets/positioner_group/positioner_group_plugin.py +57 -0
- bec_widgets/widgets/positioner_group/register_positioner_group.py +15 -0
- bec_widgets/widgets/scan_control/scan_control.py +74 -122
- bec_widgets/widgets/scan_control/scan_group_box.py +66 -11
- bec_widgets/widgets/stop_button/stop_button.py +1 -1
- bec_widgets/widgets/waveform/waveform_widget.py +10 -0
- {bec_widgets-0.118.0.dist-info → bec_widgets-1.0.0.dist-info}/METADATA +1 -1
- {bec_widgets-0.118.0.dist-info → bec_widgets-1.0.0.dist-info}/RECORD +26 -21
- pyproject.toml +1 -1
- {bec_widgets-0.118.0.dist-info → bec_widgets-1.0.0.dist-info}/WHEEL +0 -0
- {bec_widgets-0.118.0.dist-info → bec_widgets-1.0.0.dist-info}/entry_points.txt +0 -0
- {bec_widgets-0.118.0.dist-info → bec_widgets-1.0.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,4 +1,5 @@
|
|
1
1
|
from collections import defaultdict
|
2
|
+
from types import SimpleNamespace
|
2
3
|
from typing import Optional
|
3
4
|
|
4
5
|
from bec_lib.endpoints import MessageEndpoints
|
@@ -7,11 +8,11 @@ from qtpy.QtCore import Property, Signal, Slot
|
|
7
8
|
from qtpy.QtWidgets import (
|
8
9
|
QApplication,
|
9
10
|
QComboBox,
|
10
|
-
QGroupBox,
|
11
11
|
QHBoxLayout,
|
12
12
|
QLabel,
|
13
13
|
QPushButton,
|
14
14
|
QSizePolicy,
|
15
|
+
QSpacerItem,
|
15
16
|
QVBoxLayout,
|
16
17
|
QWidget,
|
17
18
|
)
|
@@ -19,6 +20,7 @@ from qtpy.QtWidgets import (
|
|
19
20
|
from bec_widgets.qt_utils.error_popups import SafeSlot
|
20
21
|
from bec_widgets.utils import ConnectionConfig
|
21
22
|
from bec_widgets.utils.bec_widget import BECWidget
|
23
|
+
from bec_widgets.utils.colors import get_accent_colors
|
22
24
|
from bec_widgets.widgets.scan_control.scan_group_box import ScanGroupBox
|
23
25
|
from bec_widgets.widgets.stop_button.stop_button import StopButton
|
24
26
|
from bec_widgets.widgets.toggle.toggle import ToggleSwitch
|
@@ -42,6 +44,7 @@ class ScanControl(BECWidget, QWidget):
|
|
42
44
|
|
43
45
|
scan_started = Signal()
|
44
46
|
scan_selected = Signal(str)
|
47
|
+
device_selected = Signal(str)
|
45
48
|
scan_axis = Signal(str, float, float)
|
46
49
|
|
47
50
|
def __init__(
|
@@ -61,6 +64,8 @@ class ScanControl(BECWidget, QWidget):
|
|
61
64
|
super().__init__(client=client, gui_id=gui_id, config=config)
|
62
65
|
QWidget.__init__(self, parent=parent)
|
63
66
|
|
67
|
+
self._hide_add_remove_buttons = False
|
68
|
+
|
64
69
|
# Client from BEC + shortcuts to device manager and scans
|
65
70
|
self.get_bec_shortcuts()
|
66
71
|
|
@@ -84,12 +89,54 @@ class ScanControl(BECWidget, QWidget):
|
|
84
89
|
"""
|
85
90
|
Initializes the UI of the scan control widget. Create the top box for scan selection and populate scans to main combobox.
|
86
91
|
"""
|
87
|
-
|
88
|
-
|
89
|
-
|
92
|
+
palette = get_accent_colors()
|
93
|
+
if palette is None:
|
94
|
+
palette = SimpleNamespace(
|
95
|
+
default=QColor("blue"),
|
96
|
+
success=QColor("green"),
|
97
|
+
warning=QColor("orange"),
|
98
|
+
emergency=QColor("red"),
|
99
|
+
)
|
100
|
+
# Scan selection box
|
101
|
+
self.scan_selection_group = QWidget(self)
|
102
|
+
QVBoxLayout(self.scan_selection_group)
|
103
|
+
scan_selection_layout = QHBoxLayout()
|
104
|
+
self.comboBox_scan_selection_label = QLabel("Scan:", self.scan_selection_group)
|
105
|
+
self.comboBox_scan_selection = QComboBox(self.scan_selection_group)
|
106
|
+
scan_selection_layout.addWidget(self.comboBox_scan_selection_label, 0)
|
107
|
+
scan_selection_layout.addWidget(self.comboBox_scan_selection, 1)
|
108
|
+
self.scan_selection_group.layout().addLayout(scan_selection_layout)
|
109
|
+
|
110
|
+
# Label to reload the last scan parameters within scan selection group box
|
111
|
+
self.toggle_layout = QHBoxLayout()
|
112
|
+
self.toggle_layout.addSpacerItem(
|
113
|
+
QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Fixed)
|
114
|
+
)
|
115
|
+
self.last_scan_label = QLabel("Restore last scan parameters", self.scan_selection_group)
|
116
|
+
self.toggle = ToggleSwitch(parent=self.scan_selection_group, checked=False)
|
117
|
+
self.toggle.enabled.connect(self.request_last_executed_scan_parameters)
|
118
|
+
self.toggle_layout.addWidget(self.last_scan_label)
|
119
|
+
self.toggle_layout.addWidget(self.toggle)
|
120
|
+
self.scan_selection_group.layout().addLayout(self.toggle_layout)
|
90
121
|
self.scan_selection_group.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
|
91
122
|
self.layout.addWidget(self.scan_selection_group)
|
92
123
|
|
124
|
+
# Scan control (Run/Stop) buttons
|
125
|
+
self.scan_control_group = QWidget(self)
|
126
|
+
self.scan_control_group.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
|
127
|
+
self.button_layout = QHBoxLayout(self.scan_control_group)
|
128
|
+
self.button_run_scan = QPushButton("Start", self.scan_control_group)
|
129
|
+
self.button_run_scan.setStyleSheet(
|
130
|
+
f"background-color: {palette.success.name()}; color: white"
|
131
|
+
)
|
132
|
+
self.button_stop_scan = StopButton(parent=self.scan_control_group)
|
133
|
+
self.button_stop_scan.setStyleSheet(
|
134
|
+
f"background-color: {palette.emergency.name()}; color: white"
|
135
|
+
)
|
136
|
+
self.button_layout.addWidget(self.button_run_scan)
|
137
|
+
self.button_layout.addWidget(self.button_stop_scan)
|
138
|
+
self.layout.addWidget(self.scan_control_group)
|
139
|
+
|
93
140
|
# Default scan from config
|
94
141
|
if self.config.default_scan is not None:
|
95
142
|
self.comboBox_scan_selection.setCurrentText(self.config.default_scan)
|
@@ -99,67 +146,11 @@ class ScanControl(BECWidget, QWidget):
|
|
99
146
|
self.comboBox_scan_selection.currentIndexChanged.connect(self.on_scan_selection_changed)
|
100
147
|
self.button_run_scan.clicked.connect(self.run_scan)
|
101
148
|
|
102
|
-
# Add bundle button
|
103
|
-
self.button_add_bundle = QPushButton("Add Bundle")
|
104
|
-
self.button_add_bundle.setVisible(False)
|
105
|
-
# Remove bundle button
|
106
|
-
self.button_remove_bundle = QPushButton("Remove Bundle")
|
107
|
-
self.button_remove_bundle.setVisible(False)
|
108
|
-
|
109
|
-
bundle_layout = QHBoxLayout()
|
110
|
-
bundle_layout.addWidget(self.button_add_bundle)
|
111
|
-
bundle_layout.addWidget(self.button_remove_bundle)
|
112
|
-
self.layout.addLayout(bundle_layout)
|
113
|
-
|
114
|
-
self.button_add_bundle.clicked.connect(self.add_arg_bundle)
|
115
|
-
self.button_remove_bundle.clicked.connect(self.remove_arg_bundle)
|
116
|
-
|
117
149
|
self.scan_selected.connect(self.scan_select)
|
118
150
|
|
119
151
|
# Initialize scan selection
|
120
152
|
self.populate_scans()
|
121
153
|
|
122
|
-
def create_scan_selection_group(self) -> QGroupBox:
|
123
|
-
"""
|
124
|
-
Creates the scan selection group box with combobox to select the scan and start/stop button.
|
125
|
-
|
126
|
-
Returns:
|
127
|
-
QGroupBox: Group box containing the scan selection widgets.
|
128
|
-
"""
|
129
|
-
|
130
|
-
scan_selection_group = QGroupBox("Scan Selection", self)
|
131
|
-
self.scan_selection_layout = QVBoxLayout(scan_selection_group)
|
132
|
-
self.comboBox_scan_selection = QComboBox(scan_selection_group)
|
133
|
-
|
134
|
-
# Buttons
|
135
|
-
self.button_layout = QHBoxLayout()
|
136
|
-
## Run button
|
137
|
-
self.button_run_scan = QPushButton("Start", scan_selection_group)
|
138
|
-
self.button_run_scan.setStyleSheet("background-color: #559900; color: white")
|
139
|
-
## Stop button
|
140
|
-
self.button_stop_scan = StopButton(parent=scan_selection_group)
|
141
|
-
## Add buttons to layout
|
142
|
-
self.button_layout.addWidget(self.button_run_scan)
|
143
|
-
self.button_layout.addWidget(self.button_stop_scan)
|
144
|
-
|
145
|
-
# Label to reload the last scan parameters
|
146
|
-
self.toggle_layout = QHBoxLayout()
|
147
|
-
## Label
|
148
|
-
self.last_scan_label = QLabel("Restore last scan parameters", scan_selection_group)
|
149
|
-
## Switch toggle button
|
150
|
-
self.toggle = ToggleSwitch(parent=scan_selection_group, checked=False)
|
151
|
-
self.toggle.enabled.connect(self.request_last_executed_scan_parameters)
|
152
|
-
## Add label and switch to layout
|
153
|
-
self.toggle_layout.addWidget(self.last_scan_label)
|
154
|
-
self.toggle_layout.addWidget(self.toggle)
|
155
|
-
|
156
|
-
# Add widgets to layout
|
157
|
-
self.scan_selection_layout.addWidget(self.comboBox_scan_selection)
|
158
|
-
self.scan_selection_layout.addLayout(self.button_layout)
|
159
|
-
self.scan_selection_layout.addLayout(self.toggle_layout)
|
160
|
-
|
161
|
-
return scan_selection_group
|
162
|
-
|
163
154
|
def populate_scans(self):
|
164
155
|
"""Populates the scan selection combo box with available scans from BEC session."""
|
165
156
|
self.available_scans = self.client.connector.get(
|
@@ -282,29 +273,6 @@ class ScanControl(BECWidget, QWidget):
|
|
282
273
|
for box in self.kwarg_boxes:
|
283
274
|
box.setVisible(not hide)
|
284
275
|
|
285
|
-
@Property(bool)
|
286
|
-
def hide_scan_remember_toggle(self):
|
287
|
-
"""Property to hide the scan remember toggle."""
|
288
|
-
return not self.toggle.isVisible()
|
289
|
-
|
290
|
-
@hide_scan_remember_toggle.setter
|
291
|
-
def hide_scan_remember_toggle(self, hide: bool):
|
292
|
-
"""Setter for the hide_scan_remember_toggle property.
|
293
|
-
|
294
|
-
Args:
|
295
|
-
hide(bool): Hide or show the scan remember toggle.
|
296
|
-
"""
|
297
|
-
self.show_scan_remember_toggle(not hide)
|
298
|
-
|
299
|
-
@Slot(bool)
|
300
|
-
def show_scan_remember_toggle(self, show: bool):
|
301
|
-
"""Shows or hides the scan control buttons."""
|
302
|
-
self.toggle.setVisible(show)
|
303
|
-
self.last_scan_label.setVisible(show)
|
304
|
-
|
305
|
-
show_group = show or self.button_run_scan.isVisible()
|
306
|
-
self.scan_selection_group.setVisible(show_group)
|
307
|
-
|
308
276
|
@Property(bool)
|
309
277
|
def hide_scan_control_buttons(self):
|
310
278
|
"""Property to hide the scan control buttons."""
|
@@ -322,11 +290,7 @@ class ScanControl(BECWidget, QWidget):
|
|
322
290
|
@Slot(bool)
|
323
291
|
def show_scan_control_buttons(self, show: bool):
|
324
292
|
"""Shows or hides the scan control buttons."""
|
325
|
-
self.
|
326
|
-
self.button_stop_scan.setVisible(show)
|
327
|
-
|
328
|
-
show_group = show or self.button_run_scan.isVisible()
|
329
|
-
self.scan_selection_group.setVisible(show_group)
|
293
|
+
self.scan_control_group.setVisible(show)
|
330
294
|
|
331
295
|
@Property(bool)
|
332
296
|
def hide_scan_selection_combobox(self):
|
@@ -345,10 +309,7 @@ class ScanControl(BECWidget, QWidget):
|
|
345
309
|
@Slot(bool)
|
346
310
|
def show_scan_selection_combobox(self, show: bool):
|
347
311
|
"""Shows or hides the scan selection combobox."""
|
348
|
-
self.
|
349
|
-
|
350
|
-
show_group = show or self.button_run_scan.isVisible()
|
351
|
-
self.scan_selection_group.setVisible(show_group)
|
312
|
+
self.scan_selection_group.setVisible(show)
|
352
313
|
|
353
314
|
@Slot(str)
|
354
315
|
def scan_select(self, scan_name: str):
|
@@ -365,11 +326,7 @@ class ScanControl(BECWidget, QWidget):
|
|
365
326
|
self.arg_group = gui_config.get("arg_group", None)
|
366
327
|
self.kwarg_groups = gui_config.get("kwarg_groups", None)
|
367
328
|
|
368
|
-
|
369
|
-
|
370
|
-
self._show_bundle_buttons(show_bundle_buttons)
|
371
|
-
|
372
|
-
if show_bundle_buttons:
|
329
|
+
if bool(self.arg_group["arg_inputs"]):
|
373
330
|
self.add_arg_group(self.arg_group)
|
374
331
|
if len(self.kwarg_groups) > 0:
|
375
332
|
self.add_kwargs_boxes(self.kwarg_groups)
|
@@ -377,28 +334,21 @@ class ScanControl(BECWidget, QWidget):
|
|
377
334
|
self.update()
|
378
335
|
self.adjustSize()
|
379
336
|
|
380
|
-
def _show_bundle_buttons(self, show: bool):
|
381
|
-
"""Shows or hides the bundle buttons based on the show argument.
|
382
|
-
|
383
|
-
Args:
|
384
|
-
show(bool): Show or hide the bundle buttons.
|
385
|
-
"""
|
386
|
-
self.button_add_bundle.setVisible(show)
|
387
|
-
self.button_remove_bundle.setVisible(show)
|
388
|
-
|
389
337
|
@Property(bool)
|
390
|
-
def
|
391
|
-
"""Property to hide the
|
392
|
-
return
|
338
|
+
def hide_add_remove_buttons(self):
|
339
|
+
"""Property to hide the add_remove buttons."""
|
340
|
+
return self._hide_add_remove_buttons
|
393
341
|
|
394
|
-
@
|
395
|
-
def
|
396
|
-
"""Setter for the
|
342
|
+
@hide_add_remove_buttons.setter
|
343
|
+
def hide_add_remove_buttons(self, hide: bool):
|
344
|
+
"""Setter for the hide_add_remove_buttons property.
|
397
345
|
|
398
346
|
Args:
|
399
|
-
hide(bool): Hide or show the
|
347
|
+
hide(bool): Hide or show the add_remove buttons.
|
400
348
|
"""
|
401
|
-
self.
|
349
|
+
self._hide_add_remove_buttons = hide
|
350
|
+
if self.arg_box is not None:
|
351
|
+
self.arg_box.hide_add_remove_buttons = hide
|
402
352
|
|
403
353
|
def add_kwargs_boxes(self, groups: list):
|
404
354
|
"""
|
@@ -420,18 +370,20 @@ class ScanControl(BECWidget, QWidget):
|
|
420
370
|
Args:
|
421
371
|
"""
|
422
372
|
self.arg_box = ScanGroupBox(box_type="args", config=group)
|
373
|
+
self.arg_box.device_selected.connect(self.emit_device_selected)
|
423
374
|
self.arg_box.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
|
375
|
+
self.arg_box.hide_add_remove_buttons = self._hide_add_remove_buttons
|
424
376
|
self.layout.addWidget(self.arg_box)
|
425
377
|
|
426
|
-
@Slot()
|
427
|
-
def
|
428
|
-
"""
|
429
|
-
|
378
|
+
@Slot(str)
|
379
|
+
def emit_device_selected(self, dev_names):
|
380
|
+
"""
|
381
|
+
Emit the signal to inform about selected device(s)
|
430
382
|
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
self.
|
383
|
+
"dev_names" is a string separated by space, in case of multiple devices
|
384
|
+
"""
|
385
|
+
self._selected_devices = dev_names
|
386
|
+
self.device_selected.emit(dev_names)
|
435
387
|
|
436
388
|
def reset_layout(self):
|
437
389
|
"""Clears the scan control layout from GuiGroups and ArgGroups boxes."""
|
@@ -1,7 +1,8 @@
|
|
1
1
|
from typing import Literal
|
2
2
|
|
3
3
|
from bec_lib.logger import bec_logger
|
4
|
-
from
|
4
|
+
from bec_qthemes import material_icon
|
5
|
+
from qtpy.QtCore import Property, Qt, Signal, Slot
|
5
6
|
from qtpy.QtWidgets import (
|
6
7
|
QCheckBox,
|
7
8
|
QComboBox,
|
@@ -11,9 +12,12 @@ from qtpy.QtWidgets import (
|
|
11
12
|
QFormLayout,
|
12
13
|
QGridLayout,
|
13
14
|
QGroupBox,
|
15
|
+
QHBoxLayout,
|
14
16
|
QLabel,
|
15
17
|
QLineEdit,
|
18
|
+
QPushButton,
|
16
19
|
QSpinBox,
|
20
|
+
QVBoxLayout,
|
17
21
|
)
|
18
22
|
|
19
23
|
from bec_widgets.utils.widget_io import WidgetIO
|
@@ -133,6 +137,8 @@ class ScanGroupBox(QGroupBox):
|
|
133
137
|
ScanArgType.LITERALS: QComboBox, # TODO figure out combobox logic
|
134
138
|
}
|
135
139
|
|
140
|
+
device_selected = Signal(str)
|
141
|
+
|
136
142
|
def __init__(
|
137
143
|
self,
|
138
144
|
parent=None,
|
@@ -144,13 +150,36 @@ class ScanGroupBox(QGroupBox):
|
|
144
150
|
super().__init__(parent=parent, *args, **kwargs)
|
145
151
|
self.config = config
|
146
152
|
self.box_type = box_type
|
153
|
+
self._hide_add_remove_buttons = False
|
147
154
|
|
155
|
+
vbox_layout = QVBoxLayout(self)
|
156
|
+
hbox_layout = QHBoxLayout()
|
157
|
+
vbox_layout.addLayout(hbox_layout)
|
148
158
|
self.layout = QGridLayout(self)
|
159
|
+
vbox_layout.addLayout(self.layout)
|
160
|
+
|
161
|
+
# Add bundle button
|
162
|
+
self.button_add_bundle = QPushButton(self)
|
163
|
+
self.button_add_bundle.setIcon(
|
164
|
+
material_icon(icon_name="add", size=(15, 15), convert_to_pixmap=False)
|
165
|
+
)
|
166
|
+
# Remove bundle button
|
167
|
+
self.button_remove_bundle = QPushButton(self)
|
168
|
+
self.button_remove_bundle.setIcon(
|
169
|
+
material_icon(icon_name="remove", size=(15, 15), convert_to_pixmap=False)
|
170
|
+
)
|
171
|
+
hbox_layout.addWidget(self.button_add_bundle)
|
172
|
+
hbox_layout.addWidget(self.button_remove_bundle)
|
173
|
+
|
149
174
|
self.labels = []
|
150
175
|
self.widgets = []
|
176
|
+
self.selected_devices = {}
|
151
177
|
|
152
178
|
self.init_box(self.config)
|
153
179
|
|
180
|
+
self.button_add_bundle.clicked.connect(self.add_widget_bundle)
|
181
|
+
self.button_remove_bundle.clicked.connect(self.remove_widget_bundle)
|
182
|
+
|
154
183
|
def init_box(self, config: dict):
|
155
184
|
box_name = config.get("name", "ScanGroupBox")
|
156
185
|
self.inputs = config.get("inputs", {})
|
@@ -166,6 +195,8 @@ class ScanGroupBox(QGroupBox):
|
|
166
195
|
self.add_input_widgets(self.inputs, i)
|
167
196
|
else:
|
168
197
|
self.add_input_widgets(self.inputs, 1)
|
198
|
+
self.button_add_bundle.setVisible(False)
|
199
|
+
self.button_remove_bundle.setVisible(False)
|
169
200
|
|
170
201
|
def add_input_labels(self, group_inputs: dict, row: int) -> None:
|
171
202
|
"""
|
@@ -192,27 +223,34 @@ class ScanGroupBox(QGroupBox):
|
|
192
223
|
for column_index, item in enumerate(group_inputs):
|
193
224
|
arg_name = item.get("name", None)
|
194
225
|
default = item.get("default", None)
|
195
|
-
|
196
|
-
if
|
226
|
+
widget_class = self.WIDGET_HANDLER.get(item["type"], None)
|
227
|
+
if widget_class is None:
|
197
228
|
logger.error(
|
198
229
|
f"Unsupported annotation '{item['type']}' for parameter '{item['name']}'"
|
199
230
|
)
|
200
231
|
continue
|
201
232
|
if default == "_empty":
|
202
233
|
default = None
|
203
|
-
|
234
|
+
widget = widget_class(arg_name=arg_name, default=default)
|
235
|
+
if isinstance(widget, DeviceLineEdit):
|
236
|
+
self.selected_devices[widget] = ""
|
237
|
+
widget.device_selected.connect(self.emit_device_selected)
|
204
238
|
tooltip = item.get("tooltip", None)
|
205
239
|
if tooltip is not None:
|
206
|
-
|
207
|
-
self.layout.addWidget(
|
208
|
-
self.widgets.append(
|
240
|
+
widget.setToolTip(item["tooltip"])
|
241
|
+
self.layout.addWidget(widget, row, column_index)
|
242
|
+
self.widgets.append(widget)
|
243
|
+
|
244
|
+
@Slot(str)
|
245
|
+
def emit_device_selected(self, device_name):
|
246
|
+
self.selected_devices[self.sender()] = device_name.strip()
|
247
|
+
selected_devices_str = " ".join(self.selected_devices.values())
|
248
|
+
self.device_selected.emit(selected_devices_str)
|
209
249
|
|
210
250
|
def add_widget_bundle(self):
|
211
251
|
"""
|
212
252
|
Adds a new row of widgets to the scan control layout. Only usable for arg_groups.
|
213
253
|
"""
|
214
|
-
if self.box_type != "args":
|
215
|
-
return
|
216
254
|
arg_max = self.config.get("max", None)
|
217
255
|
row = self.layout.rowCount()
|
218
256
|
if arg_max is not None and row >= arg_max:
|
@@ -224,17 +262,34 @@ class ScanGroupBox(QGroupBox):
|
|
224
262
|
"""
|
225
263
|
Removes the last row of widgets from the scan control layout. Only usable for arg_groups.
|
226
264
|
"""
|
227
|
-
if self.box_type != "args":
|
228
|
-
return
|
229
265
|
arg_min = self.config.get("min", None)
|
230
266
|
row = self.count_arg_rows()
|
231
267
|
if arg_min is not None and row <= arg_min:
|
232
268
|
return
|
233
269
|
|
234
270
|
for widget in self.widgets[-len(self.inputs) :]:
|
271
|
+
if isinstance(widget, DeviceLineEdit):
|
272
|
+
self.selected_devices[widget] = ""
|
235
273
|
widget.deleteLater()
|
236
274
|
self.widgets = self.widgets[: -len(self.inputs)]
|
237
275
|
|
276
|
+
selected_devices_str = " ".join(self.selected_devices.values())
|
277
|
+
self.device_selected.emit(selected_devices_str.strip())
|
278
|
+
|
279
|
+
@Property(bool)
|
280
|
+
def hide_add_remove_buttons(self):
|
281
|
+
return self._hide_add_remove_buttons
|
282
|
+
|
283
|
+
@hide_add_remove_buttons.setter
|
284
|
+
def hide_add_remove_buttons(self, hide: bool):
|
285
|
+
self._hide_add_remove_buttons = hide
|
286
|
+
if not hide and self.box_type == "args":
|
287
|
+
self.button_add_bundle.show()
|
288
|
+
self.button_remove_bundle.show()
|
289
|
+
return
|
290
|
+
self.button_add_bundle.hide()
|
291
|
+
self.button_remove_bundle.hide()
|
292
|
+
|
238
293
|
def get_parameters(self, device_object: bool = True):
|
239
294
|
"""
|
240
295
|
Returns the parameters from the widgets in the scan control layout formated to run scan from BEC.
|
@@ -28,7 +28,7 @@ class StopButton(BECWidget, QWidget):
|
|
28
28
|
self.button.setToolTip("Stop the scan queue")
|
29
29
|
else:
|
30
30
|
self.button = QPushButton()
|
31
|
-
self.button.setSizePolicy(QSizePolicy.Policy.
|
31
|
+
self.button.setSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
|
32
32
|
self.button.setText("Stop")
|
33
33
|
self.button.setStyleSheet(
|
34
34
|
f"background-color: #cc181e; color: white; font-weight: bold; font-size: 12px;"
|
@@ -53,6 +53,7 @@ class BECWaveformWidget(BECWidget, QWidget):
|
|
53
53
|
"set_auto_range",
|
54
54
|
"set_grid",
|
55
55
|
"enable_fps_monitor",
|
56
|
+
"enable_scatter",
|
56
57
|
"lock_aspect_ratio",
|
57
58
|
"export",
|
58
59
|
"export_to_matplotlib",
|
@@ -650,6 +651,15 @@ class BECWaveformWidget(BECWidget, QWidget):
|
|
650
651
|
"""
|
651
652
|
self.waveform.set_outer_axes(show)
|
652
653
|
|
654
|
+
def enable_scatter(self, enabled: bool):
|
655
|
+
"""
|
656
|
+
Enable the scatter plot of the plot widget.
|
657
|
+
|
658
|
+
Args:
|
659
|
+
enabled(bool): If True, enable the scatter plot.
|
660
|
+
"""
|
661
|
+
self.waveform.enable_scatter(enabled)
|
662
|
+
|
653
663
|
def lock_aspect_ratio(self, lock: bool):
|
654
664
|
"""
|
655
665
|
Lock the aspect ratio of the plot widget.
|
@@ -2,11 +2,11 @@
|
|
2
2
|
.gitlab-ci.yml,sha256=Dc1iDjsc72UxdUtihx4uSZU0lrTQeR8hZwGx1MQBfKE,8432
|
3
3
|
.pylintrc,sha256=eeY8YwSI74oFfq6IYIbCqnx3Vk8ZncKaatv96n_Y8Rs,18544
|
4
4
|
.readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
|
5
|
-
CHANGELOG.md,sha256=
|
5
|
+
CHANGELOG.md,sha256=ictSVeE4O8eLWY3S9ZZxY1m2qlvUwjy_QnVACNX_UGg,7894
|
6
6
|
LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
7
|
-
PKG-INFO,sha256=
|
7
|
+
PKG-INFO,sha256=93tOXh8unfow7xYaaQz_Mqm52H-jBrCA7bExilinQVA,1332
|
8
8
|
README.md,sha256=Od69x-RS85Hph0-WwWACwal4yUd67XkEn4APEfHhHFw,2649
|
9
|
-
pyproject.toml,sha256=
|
9
|
+
pyproject.toml,sha256=vbHRUs7LIZEFJlGlv16I0rkSq80h2iY0oBNTXMQHsg4,2592
|
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
|
@@ -17,14 +17,14 @@ bec_widgets/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
|
|
17
17
|
bec_widgets/applications/bec_app.py,sha256=PptBknsnhWm5GSE-xBps4EAYP3f9i-q9YmUMROupnqQ,2801
|
18
18
|
bec_widgets/applications/alignment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
19
|
bec_widgets/applications/alignment/alignment_1d/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
|
-
bec_widgets/applications/alignment/alignment_1d/alignment_1d.py,sha256=
|
21
|
-
bec_widgets/applications/alignment/alignment_1d/alignment_1d.ui,sha256=
|
20
|
+
bec_widgets/applications/alignment/alignment_1d/alignment_1d.py,sha256=kGF0grwYDWGwNRhWiI3OUj7wUmMd6PhFOR9Drb0339I,8093
|
21
|
+
bec_widgets/applications/alignment/alignment_1d/alignment_1d.ui,sha256=af3-CytU4h3TAaOvgzq6OHJ60DZSiGVeci7tzNX2fto,18927
|
22
22
|
bec_widgets/assets/app_icons/BEC-General-App.png,sha256=hc2ktly53DZAbl_rE3cb-vdRa5gtdCmBEjfwm2y5P4g,447581
|
23
23
|
bec_widgets/assets/app_icons/alignment_1d.png,sha256=5VouaWieb4lVv3wUBNHaO5ovUW2Fk25aTKYQzOWy0mg,2071069
|
24
24
|
bec_widgets/assets/app_icons/bec_widgets_icon.png,sha256=K8dgGwIjalDh9PRHUsSQBqgdX7a00nM3igZdc20pkYM,1747017
|
25
25
|
bec_widgets/cli/__init__.py,sha256=d0Q6Fn44e7wFfLabDOBxpcJ1DPKWlFunGYDUBmO-4hA,22
|
26
26
|
bec_widgets/cli/auto_updates.py,sha256=DwzRChcFIWPH2kCYvp8H7dXvyYSKGYv6LwCmK2sDR2E,5676
|
27
|
-
bec_widgets/cli/client.py,sha256=
|
27
|
+
bec_widgets/cli/client.py,sha256=iwbdZ2-ruGwLPk1co5-pHXSWm-K99ms6P3wORZwnI1Q,83887
|
28
28
|
bec_widgets/cli/client_utils.py,sha256=EdDfo3uuYAWtZiDGGu3_GPnl94FSLkNG2N_4I9FNfMc,11809
|
29
29
|
bec_widgets/cli/generate_cli.py,sha256=C5SOlUeDzFgEptgpa5vdiF6c-YILLcfILZZtk9jr_H0,6637
|
30
30
|
bec_widgets/cli/rpc_register.py,sha256=QxXUZu5XNg00Yf5O3UHWOXg3-f_pzKjjoZYMOa-MOJc,2216
|
@@ -45,7 +45,7 @@ bec_widgets/examples/plugin_example_pyside/tictactoe.py,sha256=s3rCurXloVcmMdzZi
|
|
45
45
|
bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py,sha256=MFMwONn4EZ3V8DboEG4I3BXpURE9JDbKB7XTzzfZl5w,1978
|
46
46
|
bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py,sha256=V6OVnBTS-60zjQ2FAs88Ldjm1MfoMROfiQZZu6Guav8,2379
|
47
47
|
bec_widgets/qt_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
48
|
-
bec_widgets/qt_utils/compact_popup.py,sha256=
|
48
|
+
bec_widgets/qt_utils/compact_popup.py,sha256=3yeb-GJ1PUla5Q_hT0XDKqvyIEH9yV_eGidf1t8Dbbw,10234
|
49
49
|
bec_widgets/qt_utils/error_popups.py,sha256=y9gKKWaafp468ioHr96nBhf02ZpEgjDc-BAVOTWh-e8,7680
|
50
50
|
bec_widgets/qt_utils/palette_viewer.py,sha256=PGhJ-4XI0f7gNnC1djNgcIHYg6HDO6hPju4pfWj9rvg,6311
|
51
51
|
bec_widgets/qt_utils/redis_message_waiter.py,sha256=fvL_QgC0cTDv_FPJdRyp5AKjf401EJU4z3r38p47ydY,1745
|
@@ -60,7 +60,7 @@ bec_widgets/utils/bec_table.py,sha256=nA2b8ukSeUfquFMAxGrUVOqdrzMoDYD6O_4EYbOG2z
|
|
60
60
|
bec_widgets/utils/bec_widget.py,sha256=1lrHNuvW6uOuPpr-cJBYJNbFekTsqpnQdfTo3P5tbWI,3330
|
61
61
|
bec_widgets/utils/colors.py,sha256=aUQkDMTRjTjS9lQfgO5NrUllU2r4ygDTTSUROtTBX90,12838
|
62
62
|
bec_widgets/utils/container_utils.py,sha256=0wr3ZfuMiAFKCrQHVjxjw-Vuk8wsHdridqcjy2eY840,1531
|
63
|
-
bec_widgets/utils/crosshair.py,sha256=
|
63
|
+
bec_widgets/utils/crosshair.py,sha256=f13tn1v_8FJ6C0WOLyDUXHaG_Nfzj4nMlLVEGqvs5Zc,11838
|
64
64
|
bec_widgets/utils/entry_validator.py,sha256=3skJIsUwTYicT76AMHm_M78RiWtUgyD2zb-Rxo2HdHQ,1313
|
65
65
|
bec_widgets/utils/fps_counter.py,sha256=seuCWwiNP5q2e2OEztloa66pNb3Sygh-0lEHAcYaDfc,2612
|
66
66
|
bec_widgets/utils/generate_designer_plugin.py,sha256=eidqauS8YLgoxkPntPL0oSG_lYqI2D7fSyOZvOtCU_U,5891
|
@@ -149,7 +149,7 @@ bec_widgets/widgets/device_combobox/device_combo_box_plugin.py,sha256=E4kR_EWo2Y
|
|
149
149
|
bec_widgets/widgets/device_combobox/device_combobox.py,sha256=OMtrIn9e9F3S-bJ3xB27LTMShnGIdawBoq_G_E98SV0,2695
|
150
150
|
bec_widgets/widgets/device_combobox/register_device_combo_box.py,sha256=ZCrWVdWOvIjnUJWe3MU7JO021rcXYg2SgA1iSKqbLoY,488
|
151
151
|
bec_widgets/widgets/device_line_edit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
152
|
-
bec_widgets/widgets/device_line_edit/device_line_edit.py,sha256=
|
152
|
+
bec_widgets/widgets/device_line_edit/device_line_edit.py,sha256=v5Pz7fmGzDxYF8uy3OVHy3uCSFQU_SOJ7WdHiFfhnrA,3700
|
153
153
|
bec_widgets/widgets/device_line_edit/device_line_edit.pyproject,sha256=tqAYXRbxsHR41MwqmAxvfq1CFeZ1IRv84whUG67HjjE,41
|
154
154
|
bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py,sha256=KsTa6Ha1hWFvbw5x24KCGstxKqhlTakJfmtphsOouJ0,1433
|
155
155
|
bec_widgets/widgets/device_line_edit/register_device_line_edit.py,sha256=8gEPnC8djYCw-idoZAENNB3bPOxM6pbzEp9A366EAGg,489
|
@@ -172,8 +172,8 @@ bec_widgets/widgets/figure/plots/image/image_processor.py,sha256=GeTtWjbldy6VejM
|
|
172
172
|
bec_widgets/widgets/figure/plots/motor_map/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
173
173
|
bec_widgets/widgets/figure/plots/motor_map/motor_map.py,sha256=AiDq4bmcEoj9PlkRQtHCk-5cwvOFGPBcfxPNNr8E53Y,18399
|
174
174
|
bec_widgets/widgets/figure/plots/waveform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
175
|
-
bec_widgets/widgets/figure/plots/waveform/waveform.py,sha256=
|
176
|
-
bec_widgets/widgets/figure/plots/waveform/waveform_curve.py,sha256=
|
175
|
+
bec_widgets/widgets/figure/plots/waveform/waveform.py,sha256=cIHzi4FntWfoRhuP_tLaVyb86Q3VpcO2tK0MC0tct4w,57232
|
176
|
+
bec_widgets/widgets/figure/plots/waveform/waveform_curve.py,sha256=KduOM3glj3Xq1m63cBDIoauNsIwEzZb8SHcK01_aJfU,8719
|
177
177
|
bec_widgets/widgets/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
178
178
|
bec_widgets/widgets/image/bec_image_widget.pyproject,sha256=PHisdBo5_5UCApd27GkizzqgfdjsDx2bFZa_p9LiSW8,30
|
179
179
|
bec_widgets/widgets/image/bec_image_widget_plugin.py,sha256=3nOHJTukHsEkaCLAivPHIY4qdshAj86LUKb5fYF3C-Y,1369
|
@@ -202,7 +202,7 @@ bec_widgets/widgets/position_indicator/position_indicator.pyproject,sha256=s0JEf
|
|
202
202
|
bec_widgets/widgets/position_indicator/position_indicator_plugin.py,sha256=ehQPpwkjJ7k365i4gdwtmAmCbVmB1tvQLEo60J_ivo4,1413
|
203
203
|
bec_widgets/widgets/position_indicator/register_position_indicator.py,sha256=OZNiMgM_80TPSAXK_0hXAkne4vUh8DGvh_OdpOiMpwI,516
|
204
204
|
bec_widgets/widgets/positioner_box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
205
|
-
bec_widgets/widgets/positioner_box/positioner_box.py,sha256=
|
205
|
+
bec_widgets/widgets/positioner_box/positioner_box.py,sha256=LfF9t6B2L1WN4JHugXWA33L40RufI44nwhMUKAxpUaE,11980
|
206
206
|
bec_widgets/widgets/positioner_box/positioner_box.pyproject,sha256=7966pHdDseaHciaPNEKgdQgbUThSZf5wEDCeAEJh9po,32
|
207
207
|
bec_widgets/widgets/positioner_box/positioner_box.ui,sha256=7LZlM9smIqmkvS2KAIDkBamn04mBAkXeG9T1fpKRQe8,6093
|
208
208
|
bec_widgets/widgets/positioner_box/positioner_box_plugin.py,sha256=kJtQgRFGkJYWbZqJ7K7o0UhdsgAlODUVZL8pKJWwMhs,1413
|
@@ -212,6 +212,11 @@ bec_widgets/widgets/positioner_box/positioner_control_line.ui,sha256=fUq56Bl05jx
|
|
212
212
|
bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py,sha256=ud3KqPoW_jDipe6O7uEbM_X0M7angJgchY9dAjyxNRM,1495
|
213
213
|
bec_widgets/widgets/positioner_box/register_positioner_box.py,sha256=UPOUjXXq6-IgSj0kdV_nJe1rYPMF8aIZxF4eSmWgQAg,483
|
214
214
|
bec_widgets/widgets/positioner_box/register_positioner_control_line.py,sha256=MJ13vKGIwTMQGFhll63tfUGXHyd6bz40Cvr85oYKH3I,525
|
215
|
+
bec_widgets/widgets/positioner_group/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
216
|
+
bec_widgets/widgets/positioner_group/positioner_group.py,sha256=UH7_9TJ5YH6WaU1hEcf7avAZiP_Co7Ppp1TsAvluu1Q,5768
|
217
|
+
bec_widgets/widgets/positioner_group/positioner_group.pyproject,sha256=NV-Hupn3uA4T9KXhxFO3r4MVuUAfdfWaLH4CIm71eqc,35
|
218
|
+
bec_widgets/widgets/positioner_group/positioner_group_plugin.py,sha256=mN1PcOy0SN_mgVLekuvAfC6-vLUYhRYC0Ks95f1Ut1c,1450
|
219
|
+
bec_widgets/widgets/positioner_group/register_positioner_group.py,sha256=1R9FCWeOIPMAhWCnpjMKsW06-Ku79S6pj0O_rB2LM78,491
|
215
220
|
bec_widgets/widgets/ring_progress_bar/__init__.py,sha256=_uoJKnDM2YAeUBfwc5WLbIHSJj7zm_FAurSKP3WRaCw,47
|
216
221
|
bec_widgets/widgets/ring_progress_bar/register_ring_progress_bar.py,sha256=uJrMhkuQi2PdWa0BwFJqjVXSkO-TXoyai4EQYOOe9t4,493
|
217
222
|
bec_widgets/widgets/ring_progress_bar/ring.py,sha256=2pdEzETaJpvx4Dzyosq2YhnvDOEUvFnj_f9GfFKpG5Q,11159
|
@@ -220,10 +225,10 @@ bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject,sha256=ZNYDnKD
|
|
220
225
|
bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py,sha256=-rw9ZSThgAH0Ubbr3X-L5x-ZqMXUGnauyFb4OmfUvD4,1394
|
221
226
|
bec_widgets/widgets/scan_control/__init__.py,sha256=IOfHl15vxb_uC6KN62-PeUzbBha_vQyqkkXbJ2HU674,38
|
222
227
|
bec_widgets/widgets/scan_control/register_scan_control.py,sha256=xUX2yR0-MaIMg9_y9qe50yDDphzsh2x1b5PMrF90yPM,475
|
223
|
-
bec_widgets/widgets/scan_control/scan_control.py,sha256=
|
228
|
+
bec_widgets/widgets/scan_control/scan_control.py,sha256=k1nypTt4cRo4zHI4Oii-P3-YBoUAEDUhQT-kbl9djyk,18126
|
224
229
|
bec_widgets/widgets/scan_control/scan_control.pyproject,sha256=eTgVDFKToIH8_BbJjM2RvbOLr7HnYoidX0SAHx640DM,30
|
225
230
|
bec_widgets/widgets/scan_control/scan_control_plugin.py,sha256=7GaqmaRgbwIPjVoXcyKVDl8UpfqC2weViup-YFfzUsM,1270
|
226
|
-
bec_widgets/widgets/scan_control/scan_group_box.py,sha256
|
231
|
+
bec_widgets/widgets/scan_control/scan_group_box.py,sha256=-d3V-sU-S-IHFymY-c-4BesUZNsG3Hq1exXvVGspXy4,12713
|
227
232
|
bec_widgets/widgets/spinner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
228
233
|
bec_widgets/widgets/spinner/register_spinner_widget.py,sha256=_zCPjLh4M7NTSHP1Atdn6yu33zJ3LJkcBy3KOJ5eSVY,476
|
229
234
|
bec_widgets/widgets/spinner/spinner.py,sha256=5LoRGuRvQmY1hUCt06P3DJjXqOVkFCszbNAXRmPzqlo,2628
|
@@ -231,7 +236,7 @@ bec_widgets/widgets/spinner/spinner_widget.pyproject,sha256=zzLajGB3DTgVnrSqMey2
|
|
231
236
|
bec_widgets/widgets/spinner/spinner_widget_plugin.py,sha256=AZYJJe40olMzqL6Edk6J-X_iNHcXrU-EQN4mCUCp_Fo,1355
|
232
237
|
bec_widgets/widgets/stop_button/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
233
238
|
bec_widgets/widgets/stop_button/register_stop_button.py,sha256=U7r3fEOH-uPhAQI-nTituHXDDXDWR4JQZ7_vD6b_dfM,471
|
234
|
-
bec_widgets/widgets/stop_button/stop_button.py,sha256=
|
239
|
+
bec_widgets/widgets/stop_button/stop_button.py,sha256=mRDJvsM5KqiOhmR_qIeV2hNcBHMkKqe63Kexv6FwA_w,2016
|
235
240
|
bec_widgets/widgets/stop_button/stop_button.pyproject,sha256=Cc_xbv-zfzNVpsdg_1QyzuTlrJaM9_BkIjes70umrx0,29
|
236
241
|
bec_widgets/widgets/stop_button/stop_button_plugin.py,sha256=VT-WVLq89fw7PwML7JDMCF1bqfopLCZIgMA4yetl65M,1365
|
237
242
|
bec_widgets/widgets/text_box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -253,7 +258,7 @@ bec_widgets/widgets/waveform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
|
|
253
258
|
bec_widgets/widgets/waveform/bec_waveform_widget.pyproject,sha256=GLD8GN9dXx9wNbtnevrxqqcwk7vKV-Uv8QYSycdaoaI,33
|
254
259
|
bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py,sha256=qSQTeCzIUn8rgDkjIM47Rr3-fqg1uk8rDf_lCoY9gZw,1402
|
255
260
|
bec_widgets/widgets/waveform/register_bec_waveform_widget.py,sha256=qZHVZH_lP2hvzkG1Ra0EyrXlMeLkRCy0aceH-bfJ1cs,490
|
256
|
-
bec_widgets/widgets/waveform/waveform_widget.py,sha256=
|
261
|
+
bec_widgets/widgets/waveform/waveform_widget.py,sha256=x8OnXsSVTChceTO8l7ySY2oB2rpzHMZfS5PbxYV0LuY,25934
|
257
262
|
bec_widgets/widgets/waveform/waveform_popups/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
258
263
|
bec_widgets/widgets/waveform/waveform_popups/curve_dialog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
259
264
|
bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.py,sha256=VxbAtI_ZLfkrkTXqImQcNPwKDqFRWEj-vI8v6mmVMJ8,13025
|
@@ -265,8 +270,8 @@ bec_widgets/widgets/website/register_website_widget.py,sha256=LIQJpV9uqcBiPR9cEA
|
|
265
270
|
bec_widgets/widgets/website/website.py,sha256=42pncCc_zI2eqeMArIurVmPUukRo5bTxa2h1Skah-io,3012
|
266
271
|
bec_widgets/widgets/website/website_widget.pyproject,sha256=scOiV3cV1_BjbzpPzy2N8rIJL5P2qIZz8ObTJ-Uvdtg,25
|
267
272
|
bec_widgets/widgets/website/website_widget_plugin.py,sha256=pz38_C2cZ0yvPPS02wdIPcmhFo_yiwUhflsASocAPQQ,1341
|
268
|
-
bec_widgets-0.
|
269
|
-
bec_widgets-0.
|
270
|
-
bec_widgets-0.
|
271
|
-
bec_widgets-0.
|
272
|
-
bec_widgets-0.
|
273
|
+
bec_widgets-1.0.0.dist-info/METADATA,sha256=93tOXh8unfow7xYaaQz_Mqm52H-jBrCA7bExilinQVA,1332
|
274
|
+
bec_widgets-1.0.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
275
|
+
bec_widgets-1.0.0.dist-info/entry_points.txt,sha256=dItMzmwA1wizJ1Itx15qnfJ0ZzKVYFLVJ1voxT7K7D4,214
|
276
|
+
bec_widgets-1.0.0.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
277
|
+
bec_widgets-1.0.0.dist-info/RECORD,,
|
pyproject.toml
CHANGED
File without changes
|
File without changes
|
File without changes
|