From 3055a7e090a7fbd0f51ab0ff3143d477a1565f48 Mon Sep 17 00:00:00 2001 From: wyzula-jan Date: Tue, 12 May 2026 19:48:42 +0200 Subject: [PATCH] wip fix group scan box --- .../widgets/control/scan_control/scan_group_box.py | 14 ++++++++++++-- tests/unit_tests/test_scan_control.py | 5 +++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/bec_widgets/widgets/control/scan_control/scan_group_box.py b/bec_widgets/widgets/control/scan_control/scan_group_box.py index f570fe95..168bf422 100644 --- a/bec_widgets/widgets/control/scan_control/scan_group_box.py +++ b/bec_widgets/widgets/control/scan_control/scan_group_box.py @@ -271,9 +271,19 @@ class ScanGroupBox(QGroupBox): continue if default == "_empty": default = None - widget = widget_class(parent=self.parent(), arg_name=arg_name, default=default) + if widget_class is DeviceComboBox: + widget = widget_class(parent=self.parent(), arg_name=arg_name) + else: + widget = widget_class(parent=self.parent(), arg_name=arg_name, default=default) if isinstance(widget, DeviceComboBox): - widget.set_device_filter(BECDeviceFilter.DEVICE) + 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): diff --git a/tests/unit_tests/test_scan_control.py b/tests/unit_tests/test_scan_control.py index eb84d590..df90921a 100644 --- a/tests/unit_tests/test_scan_control.py +++ b/tests/unit_tests/test_scan_control.py @@ -9,6 +9,7 @@ from qtpy.QtCore import QModelIndex, Qt from bec_widgets.utils.forms_from_types.items import StrFormItem from bec_widgets.utils.widget_io import WidgetIO +from bec_widgets.widgets.control.device_input.device_combobox.device_combobox import DeviceComboBox from bec_widgets.widgets.control.scan_control import ScanControl from .client_mocks import mocked_client @@ -304,6 +305,10 @@ def test_on_scan_selected(scan_control, scan_name): assert widget is not None # Confirm that a widget exists expected_widget_type = scan_control.arg_box.WIDGET_HANDLER.get(arg_value, None) assert isinstance(widget, expected_widget_type) # Confirm the widget type matches + if isinstance(widget, DeviceComboBox): + assert widget.currentText() == "" + assert "samx" in widget.devices + assert "bpm3a" not in widget.devices # Check kwargs boxes kwargs_group = [param for param in expected_scan_info["gui_config"]["kwarg_groups"]]