mirror of
https://github.com/bec-project/bec_widgets.git
synced 2026-05-14 02:25:42 +02:00
wip scan group box enfore
This commit is contained in:
@@ -167,6 +167,8 @@ class DeviceComboBox(BECWidget, QComboBox):
|
||||
|
||||
if default is not None:
|
||||
self.set_device(default)
|
||||
else:
|
||||
self.setCurrentText("")
|
||||
|
||||
self._callback_id = self.bec_dispatcher.client.callbacks.register(
|
||||
EventType.DEVICE_UPDATE, self.on_device_update
|
||||
@@ -346,12 +348,15 @@ class DeviceComboBox(BECWidget, QComboBox):
|
||||
@set_first_element_as_empty.setter
|
||||
def set_first_element_as_empty(self, value: bool) -> None:
|
||||
self._set_first_element_as_empty = value
|
||||
current_text = self.currentText()
|
||||
if value:
|
||||
if self.count() == 0 or self.itemText(0) != "":
|
||||
self.insertItem(0, "")
|
||||
self.setCurrentIndex(0)
|
||||
elif self.count() > 0 and self.itemText(0) == "":
|
||||
self.removeItem(0)
|
||||
if not current_text:
|
||||
self.setCurrentText("")
|
||||
|
||||
@property
|
||||
def device_filter(self) -> list[BECDeviceFilter]:
|
||||
@@ -505,8 +510,7 @@ class DeviceComboBox(BECWidget, QComboBox):
|
||||
replace_combobox_items(self, devices)
|
||||
if self._set_first_element_as_empty:
|
||||
self.insertItem(0, "")
|
||||
if current_text:
|
||||
self.setCurrentText(current_text)
|
||||
self.setCurrentText(current_text)
|
||||
|
||||
def _device_name_from_text(self, text: str) -> str:
|
||||
index = self.findText(text)
|
||||
|
||||
@@ -272,18 +272,20 @@ class ScanGroupBox(QGroupBox):
|
||||
if default == "_empty":
|
||||
default = None
|
||||
if widget_class is DeviceComboBox:
|
||||
widget = widget_class(parent=self.parent(), arg_name=arg_name)
|
||||
device_filter = (
|
||||
BECDeviceFilter.POSITIONER
|
||||
if item["type"] == ScanArgType.DEVICE
|
||||
else BECDeviceFilter.DEVICE
|
||||
)
|
||||
widget = widget_class(
|
||||
parent=self.parent(),
|
||||
arg_name=arg_name,
|
||||
default=default,
|
||||
device_filter=device_filter,
|
||||
)
|
||||
else:
|
||||
widget = widget_class(parent=self.parent(), arg_name=arg_name, default=default)
|
||||
if isinstance(widget, DeviceComboBox):
|
||||
if item["type"] == ScanArgType.DEVICE:
|
||||
widget.set_device_filter(BECDeviceFilter.POSITIONER)
|
||||
else:
|
||||
widget.set_device_filter(BECDeviceFilter.DEVICE)
|
||||
if default is None:
|
||||
widget.set_first_element_as_empty = True
|
||||
else:
|
||||
widget.set_device(default)
|
||||
self.selected_devices[widget] = ""
|
||||
widget.device_selected.connect(self.emit_device_selected)
|
||||
if isinstance(widget, ScanLiteralsComboBox):
|
||||
|
||||
@@ -37,6 +37,8 @@ def test_device_input_combobox_init(device_input_combobox):
|
||||
assert isinstance(device_input_combobox, DeviceComboBox)
|
||||
assert device_input_combobox.config.widget_class == "DeviceComboBox"
|
||||
assert device_input_combobox.isEditable() is True
|
||||
assert device_input_combobox.currentText() == ""
|
||||
assert device_input_combobox.is_valid_input is False
|
||||
assert device_input_combobox.config.device_filter == []
|
||||
assert device_input_combobox.config.readout_filter == [
|
||||
ReadoutPriority.MONITORED.value,
|
||||
|
||||
Reference in New Issue
Block a user