From f30ab7b164213170591c00ddcae33a54befe8bd5 Mon Sep 17 00:00:00 2001 From: wyzula-jan Date: Thu, 30 Jul 2026 14:16:58 +0200 Subject: [PATCH] fix(scan_control): preserve configured default scan and label filter button --- .../control/scan_control/scan_control.py | 12 +++++++----- tests/unit_tests/test_scan_control.py | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/bec_widgets/widgets/control/scan_control/scan_control.py b/bec_widgets/widgets/control/scan_control/scan_control.py index 1f8dfe6d..2c03c712 100644 --- a/bec_widgets/widgets/control/scan_control/scan_control.py +++ b/bec_widgets/widgets/control/scan_control/scan_control.py @@ -93,7 +93,8 @@ class ScanControl(BECWidget, QWidget): self.previous_scan = None # Widget Default Parameters - self.config.default_scan = default_scan + if default_scan is not None: + self.config.default_scan = default_scan if allowed_scans is not None: self.config.allowed_scans = allowed_scans @@ -140,6 +141,7 @@ class ScanControl(BECWidget, QWidget): material_icon("filter_list", size=(20, 20), convert_to_pixmap=False) ) self.scan_selector_settings_button.setToolTip("Choose scans shown in the selector") + self.scan_selector_settings_button.setAccessibleName("Scan selector settings") scan_selection_layout.addWidget(self.comboBox_scan_selection_label, 0) scan_selection_layout.addWidget(self.comboBox_scan_selection, 1) scan_selection_layout.addWidget(self.scan_info_button, 0) @@ -170,10 +172,6 @@ class ScanControl(BECWidget, QWidget): self.button_layout.addWidget(self.button_stop_scan) self.layout.addWidget(self.scan_control_group) - # Default scan from config - if self.config.default_scan is not None: - self.comboBox_scan_selection.setCurrentText(self.config.default_scan) - # Connect signals self.comboBox_scan_selection.view().pressed.connect(self.save_current_scan_parameters) self.comboBox_scan_selection.currentIndexChanged.connect(self.on_scan_selection_changed) @@ -186,6 +184,10 @@ class ScanControl(BECWidget, QWidget): # Initialize scan selection self.populate_scans() + # Default scan from config; applied after population so the entry exists + if self.config.default_scan is not None: + self.comboBox_scan_selection.setCurrentText(self.config.default_scan) + # Append metadata form self._add_metadata_form() diff --git a/tests/unit_tests/test_scan_control.py b/tests/unit_tests/test_scan_control.py index fa264d51..bc07ef67 100644 --- a/tests/unit_tests/test_scan_control.py +++ b/tests/unit_tests/test_scan_control.py @@ -411,6 +411,23 @@ def test_configured_allowed_scans_are_preserved(qtbot, mocked_client): assert widget.comboBox_scan_selection.currentText() == "grid_scan" +def test_configured_default_scan_is_preserved_and_applied(qtbot, mocked_client): + mocked_client.connector.set_and_publish( + MessageEndpoints.available_scans(), available_scans_message + ) + + widget = ScanControl(client=mocked_client, default_scan="grid_scan") + qtbot.addWidget(widget) + assert widget.comboBox_scan_selection.currentText() == "grid_scan" + + # A default_scan from a passed-in config must not be wiped by the ctor default None + config = ScanControlConfig(widget_class="ScanControl", default_scan="grid_scan") + widget_from_config = ScanControl(client=mocked_client, config=config) + qtbot.addWidget(widget_from_config) + assert widget_from_config.config.default_scan == "grid_scan" + assert widget_from_config.comboBox_scan_selection.currentText() == "grid_scan" + + def test_scan_selector_settings_dialog_applies_checked_scans(scan_control, monkeypatch, qtbot): def select_line_scan(dialog): labels = [dialog.checkbox_for_scan(name).text() for name in ("line_scan", "grid_scan")]