bec-widgets 2.16.2__py3-none-any.whl → 2.18.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 +88 -0
- PKG-INFO +3 -3
- bec_widgets/applications/launch_window.py +1 -1
- bec_widgets/cli/client.py +24 -0
- bec_widgets/tests/utils.py +15 -3
- bec_widgets/utils/filter_io.py +125 -9
- bec_widgets/widgets/containers/main_window/main_window.py +122 -7
- bec_widgets/widgets/control/device_input/base_classes/device_input_base.py +16 -16
- bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py +22 -12
- bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py +2 -0
- bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.py +9 -5
- bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_setting.py +7 -2
- bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_tree.py +62 -19
- bec_widgets/widgets/plots/waveform/waveform.py +0 -1
- bec_widgets/widgets/progress/bec_progressbar/bec_progressbar.py +135 -21
- bec_widgets/widgets/progress/scan_progressbar/__init__.py +0 -0
- bec_widgets/widgets/progress/scan_progressbar/register_scan_progress_bar.py +17 -0
- bec_widgets/widgets/progress/scan_progressbar/scan_progress_bar.pyproject +1 -0
- bec_widgets/widgets/progress/scan_progressbar/scan_progress_bar_plugin.py +54 -0
- bec_widgets/widgets/progress/scan_progressbar/scan_progressbar.py +320 -0
- bec_widgets/widgets/progress/scan_progressbar/scan_progressbar.ui +141 -0
- bec_widgets/widgets/progress/scan_progressbar/scan_progressbar_one_line.ui +124 -0
- {bec_widgets-2.16.2.dist-info → bec_widgets-2.18.0.dist-info}/METADATA +3 -3
- {bec_widgets-2.16.2.dist-info → bec_widgets-2.18.0.dist-info}/RECORD +28 -21
- pyproject.toml +6 -6
- {bec_widgets-2.16.2.dist-info → bec_widgets-2.18.0.dist-info}/WHEEL +0 -0
- {bec_widgets-2.16.2.dist-info → bec_widgets-2.18.0.dist-info}/entry_points.txt +0 -0
- {bec_widgets-2.16.2.dist-info → bec_widgets-2.18.0.dist-info}/licenses/LICENSE +0 -0
@@ -6,10 +6,10 @@ from bec_lib.device import ComputedSignal, Device, Positioner, ReadoutPriority
|
|
6
6
|
from bec_lib.device import Signal as BECSignal
|
7
7
|
from bec_lib.logger import bec_logger
|
8
8
|
from pydantic import field_validator
|
9
|
-
from qtpy.QtCore import Property, Signal, Slot
|
10
9
|
|
11
10
|
from bec_widgets.utils import ConnectionConfig
|
12
11
|
from bec_widgets.utils.bec_widget import BECWidget
|
12
|
+
from bec_widgets.utils.error_popups import SafeProperty, SafeSlot
|
13
13
|
from bec_widgets.utils.filter_io import FilterIO
|
14
14
|
from bec_widgets.utils.widget_io import WidgetIO
|
15
15
|
|
@@ -100,7 +100,7 @@ class DeviceInputBase(BECWidget):
|
|
100
100
|
|
101
101
|
### QtSlots ###
|
102
102
|
|
103
|
-
@
|
103
|
+
@SafeSlot(str)
|
104
104
|
def set_device(self, device: str):
|
105
105
|
"""
|
106
106
|
Set the device.
|
@@ -114,7 +114,7 @@ class DeviceInputBase(BECWidget):
|
|
114
114
|
else:
|
115
115
|
logger.warning(f"Device {device} is not in the filtered selection.")
|
116
116
|
|
117
|
-
@
|
117
|
+
@SafeSlot()
|
118
118
|
def update_devices_from_filters(self):
|
119
119
|
"""Update the devices based on the current filter selection
|
120
120
|
in self.device_filter and self.readout_filter. If apply_filter is False,
|
@@ -133,7 +133,7 @@ class DeviceInputBase(BECWidget):
|
|
133
133
|
self.devices = [device.name for device in devs]
|
134
134
|
self.set_device(current_device)
|
135
135
|
|
136
|
-
@
|
136
|
+
@SafeSlot(list)
|
137
137
|
def set_available_devices(self, devices: list[str]):
|
138
138
|
"""
|
139
139
|
Set the devices. If a device in the list is not valid, it will not be considered.
|
@@ -146,7 +146,7 @@ class DeviceInputBase(BECWidget):
|
|
146
146
|
|
147
147
|
### QtProperties ###
|
148
148
|
|
149
|
-
@
|
149
|
+
@SafeProperty(
|
150
150
|
"QStringList",
|
151
151
|
doc="List of devices. If updated, it will disable the apply filters property.",
|
152
152
|
)
|
@@ -165,7 +165,7 @@ class DeviceInputBase(BECWidget):
|
|
165
165
|
self.config.devices = value
|
166
166
|
FilterIO.set_selection(widget=self, selection=value)
|
167
167
|
|
168
|
-
@
|
168
|
+
@SafeProperty(str)
|
169
169
|
def default(self):
|
170
170
|
"""Get the default device name. If set through this property, it will update only if the device is within the filtered selection."""
|
171
171
|
return self.config.default
|
@@ -177,7 +177,7 @@ class DeviceInputBase(BECWidget):
|
|
177
177
|
self.config.default = value
|
178
178
|
WidgetIO.set_value(widget=self, value=value)
|
179
179
|
|
180
|
-
@
|
180
|
+
@SafeProperty(bool)
|
181
181
|
def apply_filter(self):
|
182
182
|
"""Apply the filters on the devices."""
|
183
183
|
return self.config.apply_filter
|
@@ -187,7 +187,7 @@ class DeviceInputBase(BECWidget):
|
|
187
187
|
self.config.apply_filter = value
|
188
188
|
self.update_devices_from_filters()
|
189
189
|
|
190
|
-
@
|
190
|
+
@SafeProperty(bool)
|
191
191
|
def filter_to_device(self):
|
192
192
|
"""Include devices in filters."""
|
193
193
|
return BECDeviceFilter.DEVICE in self.device_filter
|
@@ -200,7 +200,7 @@ class DeviceInputBase(BECWidget):
|
|
200
200
|
self._device_filter.remove(BECDeviceFilter.DEVICE)
|
201
201
|
self.update_devices_from_filters()
|
202
202
|
|
203
|
-
@
|
203
|
+
@SafeProperty(bool)
|
204
204
|
def filter_to_positioner(self):
|
205
205
|
"""Include devices of type Positioner in filters."""
|
206
206
|
return BECDeviceFilter.POSITIONER in self.device_filter
|
@@ -213,7 +213,7 @@ class DeviceInputBase(BECWidget):
|
|
213
213
|
self._device_filter.remove(BECDeviceFilter.POSITIONER)
|
214
214
|
self.update_devices_from_filters()
|
215
215
|
|
216
|
-
@
|
216
|
+
@SafeProperty(bool)
|
217
217
|
def filter_to_signal(self):
|
218
218
|
"""Include devices of type Signal in filters."""
|
219
219
|
return BECDeviceFilter.SIGNAL in self.device_filter
|
@@ -226,7 +226,7 @@ class DeviceInputBase(BECWidget):
|
|
226
226
|
self._device_filter.remove(BECDeviceFilter.SIGNAL)
|
227
227
|
self.update_devices_from_filters()
|
228
228
|
|
229
|
-
@
|
229
|
+
@SafeProperty(bool)
|
230
230
|
def filter_to_computed_signal(self):
|
231
231
|
"""Include devices of type ComputedSignal in filters."""
|
232
232
|
return BECDeviceFilter.COMPUTED_SIGNAL in self.device_filter
|
@@ -239,7 +239,7 @@ class DeviceInputBase(BECWidget):
|
|
239
239
|
self._device_filter.remove(BECDeviceFilter.COMPUTED_SIGNAL)
|
240
240
|
self.update_devices_from_filters()
|
241
241
|
|
242
|
-
@
|
242
|
+
@SafeProperty(bool)
|
243
243
|
def readout_monitored(self):
|
244
244
|
"""Include devices with readout priority Monitored in filters."""
|
245
245
|
return ReadoutPriority.MONITORED in self.readout_filter
|
@@ -252,7 +252,7 @@ class DeviceInputBase(BECWidget):
|
|
252
252
|
self._readout_filter.remove(ReadoutPriority.MONITORED)
|
253
253
|
self.update_devices_from_filters()
|
254
254
|
|
255
|
-
@
|
255
|
+
@SafeProperty(bool)
|
256
256
|
def readout_baseline(self):
|
257
257
|
"""Include devices with readout priority Baseline in filters."""
|
258
258
|
return ReadoutPriority.BASELINE in self.readout_filter
|
@@ -265,7 +265,7 @@ class DeviceInputBase(BECWidget):
|
|
265
265
|
self._readout_filter.remove(ReadoutPriority.BASELINE)
|
266
266
|
self.update_devices_from_filters()
|
267
267
|
|
268
|
-
@
|
268
|
+
@SafeProperty(bool)
|
269
269
|
def readout_async(self):
|
270
270
|
"""Include devices with readout priority Async in filters."""
|
271
271
|
return ReadoutPriority.ASYNC in self.readout_filter
|
@@ -278,7 +278,7 @@ class DeviceInputBase(BECWidget):
|
|
278
278
|
self._readout_filter.remove(ReadoutPriority.ASYNC)
|
279
279
|
self.update_devices_from_filters()
|
280
280
|
|
281
|
-
@
|
281
|
+
@SafeProperty(bool)
|
282
282
|
def readout_continuous(self):
|
283
283
|
"""Include devices with readout priority continuous in filters."""
|
284
284
|
return ReadoutPriority.CONTINUOUS in self.readout_filter
|
@@ -291,7 +291,7 @@ class DeviceInputBase(BECWidget):
|
|
291
291
|
self._readout_filter.remove(ReadoutPriority.CONTINUOUS)
|
292
292
|
self.update_devices_from_filters()
|
293
293
|
|
294
|
-
@
|
294
|
+
@SafeProperty(bool)
|
295
295
|
def readout_on_request(self):
|
296
296
|
"""Include devices with readout priority OnRequest in filters."""
|
297
297
|
return ReadoutPriority.ON_REQUEST in self.readout_filter
|
@@ -6,7 +6,7 @@ from qtpy.QtCore import Property
|
|
6
6
|
from bec_widgets.utils import ConnectionConfig
|
7
7
|
from bec_widgets.utils.bec_widget import BECWidget
|
8
8
|
from bec_widgets.utils.error_popups import SafeSlot
|
9
|
-
from bec_widgets.utils.filter_io import FilterIO
|
9
|
+
from bec_widgets.utils.filter_io import FilterIO, LineEditFilterHandler
|
10
10
|
from bec_widgets.utils.ophyd_kind_util import Kind
|
11
11
|
from bec_widgets.utils.widget_io import WidgetIO
|
12
12
|
|
@@ -108,25 +108,32 @@ class DeviceSignalInputBase(BECWidget):
|
|
108
108
|
if not self.validate_device(self._device):
|
109
109
|
self._device = None
|
110
110
|
self.config.device = self._device
|
111
|
+
self._signals = []
|
112
|
+
self._hinted_signals = []
|
113
|
+
self._normal_signals = []
|
114
|
+
self._config_signals = []
|
115
|
+
FilterIO.set_selection(widget=self, selection=self._signals)
|
111
116
|
return
|
112
117
|
device = self.get_device_object(self._device)
|
118
|
+
device_info = device._info.get("signals", {})
|
119
|
+
|
113
120
|
# See above convention for Signals and ComputedSignals
|
114
121
|
if isinstance(device, Signal):
|
115
|
-
self._signals = [self._device]
|
116
|
-
self._hinted_signals = [self._device]
|
122
|
+
self._signals = [(self._device, {})]
|
123
|
+
self._hinted_signals = [(self._device, {})]
|
117
124
|
self._normal_signals = []
|
118
125
|
self._config_signals = []
|
119
126
|
FilterIO.set_selection(widget=self, selection=self._signals)
|
120
127
|
return
|
121
|
-
device_info = device._info.get("signals", {})
|
122
128
|
|
123
129
|
def _update(kind: Kind):
|
124
|
-
return
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
+
return FilterIO.update_with_kind(
|
131
|
+
widget=self,
|
132
|
+
kind=kind,
|
133
|
+
signal_filter=self.signal_filter,
|
134
|
+
device_info=device_info,
|
135
|
+
device_name=self._device,
|
136
|
+
)
|
130
137
|
|
131
138
|
self._hinted_signals = _update(Kind.hinted)
|
132
139
|
self._normal_signals = _update(Kind.normal)
|
@@ -271,8 +278,11 @@ class DeviceSignalInputBase(BECWidget):
|
|
271
278
|
Args:
|
272
279
|
signal(str): Signal to validate.
|
273
280
|
"""
|
274
|
-
|
275
|
-
|
281
|
+
for entry in self.signals:
|
282
|
+
if isinstance(entry, tuple):
|
283
|
+
entry = entry[0]
|
284
|
+
if entry == signal:
|
285
|
+
return True
|
276
286
|
return False
|
277
287
|
|
278
288
|
def _process_config_input(self, config: DeviceSignalInputBaseConfig | dict | None):
|
@@ -34,6 +34,7 @@ class DeviceComboBox(DeviceInputBase, QComboBox):
|
|
34
34
|
PLUGIN = True
|
35
35
|
|
36
36
|
device_selected = Signal(str)
|
37
|
+
device_reset = Signal()
|
37
38
|
device_config_update = Signal()
|
38
39
|
|
39
40
|
def __init__(
|
@@ -147,6 +148,7 @@ class DeviceComboBox(DeviceInputBase, QComboBox):
|
|
147
148
|
self.device_selected.emit(input_text)
|
148
149
|
else:
|
149
150
|
self._is_valid_input = False
|
151
|
+
self.device_reset.emit()
|
150
152
|
self.update()
|
151
153
|
|
152
154
|
def validate_device(self, device: str) -> bool: # type: ignore[override]
|
@@ -90,6 +90,14 @@ class SignalComboBox(DeviceSignalInputBase, QComboBox):
|
|
90
90
|
self.insertItem(0, "Hinted Signals")
|
91
91
|
self.model().item(0).setEnabled(False)
|
92
92
|
|
93
|
+
@SafeSlot()
|
94
|
+
def reset_selection(self):
|
95
|
+
"""Reset the selection of the combobox."""
|
96
|
+
self.clear()
|
97
|
+
self.setItemText(0, "Select a device")
|
98
|
+
self.update_signals_from_filters()
|
99
|
+
self.device_signal_changed.emit("")
|
100
|
+
|
93
101
|
@SafeSlot(str)
|
94
102
|
def on_text_changed(self, text: str):
|
95
103
|
"""Slot for text changed. If a device is selected and the signal is changed and valid it emits a signal.
|
@@ -102,11 +110,7 @@ class SignalComboBox(DeviceSignalInputBase, QComboBox):
|
|
102
110
|
return
|
103
111
|
if self.validate_signal(text) is False:
|
104
112
|
return
|
105
|
-
|
106
|
-
device_signal = self.device
|
107
|
-
else:
|
108
|
-
device_signal = f"{self.device}_{text}"
|
109
|
-
self.device_signal_changed.emit(device_signal)
|
113
|
+
self.device_signal_changed.emit(text)
|
110
114
|
|
111
115
|
|
112
116
|
if __name__ == "__main__": # pragma: no cover
|
@@ -2,6 +2,7 @@ from __future__ import annotations
|
|
2
2
|
|
3
3
|
from typing import TYPE_CHECKING
|
4
4
|
|
5
|
+
from qtpy.QtCore import QSize
|
5
6
|
from qtpy.QtWidgets import (
|
6
7
|
QComboBox,
|
7
8
|
QGroupBox,
|
@@ -35,7 +36,11 @@ class CurveSetting(SettingWidget):
|
|
35
36
|
self._init_x_box()
|
36
37
|
self._init_y_box()
|
37
38
|
|
38
|
-
|
39
|
+
def sizeHint(self) -> QSize:
|
40
|
+
"""
|
41
|
+
Returns the size hint for the settings widget.
|
42
|
+
"""
|
43
|
+
return QSize(800, 500)
|
39
44
|
|
40
45
|
def _init_x_box(self):
|
41
46
|
self.x_axis_box = QGroupBox("X Axis")
|
@@ -97,7 +102,7 @@ class CurveSetting(SettingWidget):
|
|
97
102
|
|
98
103
|
self.layout.addWidget(self.y_axis_box)
|
99
104
|
|
100
|
-
@SafeSlot()
|
105
|
+
@SafeSlot(popup_error=True)
|
101
106
|
def accept_changes(self):
|
102
107
|
"""
|
103
108
|
Accepts the changes made in the settings widget and applies them to the target widget.
|
@@ -5,13 +5,12 @@ from typing import TYPE_CHECKING
|
|
5
5
|
|
6
6
|
from bec_lib.logger import bec_logger
|
7
7
|
from bec_qthemes._icon.material_icons import material_icon
|
8
|
-
from qtpy.
|
8
|
+
from qtpy.QtCore import Qt
|
9
9
|
from qtpy.QtWidgets import (
|
10
|
-
QColorDialog,
|
11
10
|
QComboBox,
|
12
11
|
QHBoxLayout,
|
12
|
+
QHeaderView,
|
13
13
|
QLabel,
|
14
|
-
QLineEdit,
|
15
14
|
QPushButton,
|
16
15
|
QSizePolicy,
|
17
16
|
QSpinBox,
|
@@ -27,9 +26,8 @@ from bec_widgets.utils import ConnectionConfig, EntryValidator
|
|
27
26
|
from bec_widgets.utils.bec_widget import BECWidget
|
28
27
|
from bec_widgets.utils.colors import Colors
|
29
28
|
from bec_widgets.utils.toolbar import MaterialIconAction, ModularToolBar
|
30
|
-
from bec_widgets.widgets.control.device_input.
|
31
|
-
|
32
|
-
)
|
29
|
+
from bec_widgets.widgets.control.device_input.device_combobox.device_combobox import DeviceComboBox
|
30
|
+
from bec_widgets.widgets.control.device_input.signal_combobox.signal_combobox import SignalComboBox
|
33
31
|
from bec_widgets.widgets.dap.dap_combo_box.dap_combo_box import DapComboBox
|
34
32
|
from bec_widgets.widgets.plots.waveform.curve import CurveConfig, DeviceSignal
|
35
33
|
from bec_widgets.widgets.utility.visual.color_button_native.color_button_native import (
|
@@ -125,11 +123,40 @@ class CurveRow(QTreeWidgetItem):
|
|
125
123
|
"""Create columns 1 and 2. For device rows, we have device/entry edits; for dap rows, label/model combo."""
|
126
124
|
if self.source == "device":
|
127
125
|
# Device row: columns 1..2 are device line edits
|
128
|
-
self.device_edit =
|
129
|
-
self.
|
126
|
+
self.device_edit = DeviceComboBox(parent=self.tree)
|
127
|
+
self.device_edit.insertItem(0, "")
|
128
|
+
self.device_edit.setEditable(True)
|
129
|
+
self.entry_edit = SignalComboBox(parent=self.tree)
|
130
|
+
self.entry_edit.include_config_signals = False
|
131
|
+
self.entry_edit.insertItem(0, "")
|
132
|
+
self.entry_edit.setEditable(True)
|
133
|
+
self.device_edit.currentTextChanged.connect(self.entry_edit.set_device)
|
134
|
+
self.device_edit.device_reset.connect(self.entry_edit.reset_selection)
|
130
135
|
if self.config.signal:
|
131
|
-
self.device_edit.
|
132
|
-
|
136
|
+
device_index = self.device_edit.findText(self.config.signal.name or "")
|
137
|
+
if device_index >= 0:
|
138
|
+
self.device_edit.setCurrentIndex(device_index)
|
139
|
+
# Force the entry_edit to update based on the device name
|
140
|
+
self.device_edit.currentTextChanged.emit(self.device_edit.currentText())
|
141
|
+
else:
|
142
|
+
# If the device name is not found, set the first enabled item
|
143
|
+
self.device_edit.setCurrentIndex(0)
|
144
|
+
|
145
|
+
for i in range(self.entry_edit.count()):
|
146
|
+
entry_data = self.entry_edit.itemData(i)
|
147
|
+
if entry_data and entry_data.get("obj_name") == self.config.signal.entry:
|
148
|
+
# If the device name matches an object name, set it
|
149
|
+
self.entry_edit.setCurrentIndex(i)
|
150
|
+
break
|
151
|
+
else:
|
152
|
+
# If no match found, set the first enabled item
|
153
|
+
for i in range(self.entry_edit.count()):
|
154
|
+
model = self.entry_edit.model()
|
155
|
+
if model.flags(model.index(i, 0)) & Qt.ItemIsEnabled:
|
156
|
+
self.entry_edit.setCurrentIndex(i)
|
157
|
+
break
|
158
|
+
else:
|
159
|
+
self.entry_edit.setCurrentIndex(0)
|
133
160
|
|
134
161
|
self.tree.setItemWidget(self, 1, self.device_edit)
|
135
162
|
self.tree.setItemWidget(self, 2, self.entry_edit)
|
@@ -268,13 +295,22 @@ class CurveRow(QTreeWidgetItem):
|
|
268
295
|
# Gather device name/entry
|
269
296
|
device_name = ""
|
270
297
|
device_entry = ""
|
298
|
+
|
299
|
+
## TODO: Move this to itemData
|
271
300
|
if hasattr(self, "device_edit"):
|
272
|
-
device_name = self.device_edit.
|
301
|
+
device_name = self.device_edit.currentText()
|
273
302
|
if hasattr(self, "entry_edit"):
|
274
|
-
device_entry = self.
|
275
|
-
|
276
|
-
|
277
|
-
|
303
|
+
device_entry = self.entry_edit.currentText()
|
304
|
+
index = self.entry_edit.findText(device_entry)
|
305
|
+
if index > -1:
|
306
|
+
device_entry_info = self.entry_edit.itemData(index)
|
307
|
+
if device_entry_info:
|
308
|
+
device_entry = device_entry_info.get("obj_name", device_entry)
|
309
|
+
else:
|
310
|
+
device_entry = self.entry_validator.validate_signal(
|
311
|
+
name=device_name, entry=device_entry
|
312
|
+
)
|
313
|
+
|
278
314
|
self.config.signal = DeviceSignal(name=device_name, entry=device_entry)
|
279
315
|
self.config.source = "device"
|
280
316
|
self.config.label = f"{device_name}-{device_entry}"
|
@@ -390,13 +426,20 @@ class CurveTree(BECWidget, QWidget):
|
|
390
426
|
self.tree = QTreeWidget()
|
391
427
|
self.tree.setColumnCount(7)
|
392
428
|
self.tree.setHeaderLabels(["Actions", "Name", "Entry", "Color", "Style", "Width", "Symbol"])
|
429
|
+
|
430
|
+
header = self.tree.header()
|
431
|
+
for idx in range(self.tree.columnCount()):
|
432
|
+
if idx in (1, 2): # Device name and entry should stretch
|
433
|
+
header.setSectionResizeMode(idx, QHeaderView.Stretch)
|
434
|
+
else:
|
435
|
+
header.setSectionResizeMode(idx, QHeaderView.Fixed)
|
436
|
+
header.setStretchLastSection(False)
|
393
437
|
self.tree.setColumnWidth(0, 90)
|
394
|
-
self.tree.setColumnWidth(1, 100)
|
395
|
-
self.tree.setColumnWidth(2, 100)
|
396
438
|
self.tree.setColumnWidth(3, 70)
|
397
439
|
self.tree.setColumnWidth(4, 80)
|
398
|
-
self.tree.setColumnWidth(5,
|
399
|
-
self.tree.setColumnWidth(6,
|
440
|
+
self.tree.setColumnWidth(5, 50)
|
441
|
+
self.tree.setColumnWidth(6, 50)
|
442
|
+
|
400
443
|
self.layout.addWidget(self.tree)
|
401
444
|
|
402
445
|
def _init_color_buffer(self, size: int):
|
@@ -330,7 +330,6 @@ class Waveform(PlotBase):
|
|
330
330
|
self.curve_settings_dialog = SettingsDialog(
|
331
331
|
self, settings_widget=curve_setting, window_title="Curve Settings", modal=False
|
332
332
|
)
|
333
|
-
self.curve_settings_dialog.setFixedWidth(580)
|
334
333
|
# When the dialog is closed, update the toolbar icon and clear the reference
|
335
334
|
self.curve_settings_dialog.finished.connect(self._curve_settings_closed)
|
336
335
|
self.curve_settings_dialog.show()
|