From 57f75bd4d506ca4d8dc982f3051d0d4c29b0d41c Mon Sep 17 00:00:00 2001 From: wyzula-jan Date: Sun, 22 Jun 2025 21:21:37 +0200 Subject: [PATCH] refactor(scan_control): request_last_executed_scan_parameters logic adjusted --- .../control/scan_control/scan_control.py | 55 ++++++++++--------- 1 file changed, 30 insertions(+), 25 deletions(-) diff --git a/bec_widgets/widgets/control/scan_control/scan_control.py b/bec_widgets/widgets/control/scan_control/scan_control.py index c1d25f83..5df272a2 100644 --- a/bec_widgets/widgets/control/scan_control/scan_control.py +++ b/bec_widgets/widgets/control/scan_control/scan_control.py @@ -203,32 +203,37 @@ class ScanControl(BECWidget, QWidget): """ Requests the last executed scan parameters from BEC and restores them to the scan control widget. """ - enabled = self.toggle.checked - current_scan = self.comboBox_scan_selection.currentText() - if enabled: - history = self.client.connector.xread(MessageEndpoints.scan_history(), from_start=True) + self.last_scan_found = False + if not self.toggle.checked: + return - for scan in history: - scan_data = scan.get("data") - if scan_data is None: - continue - scan_name = scan_data.scan_name - if scan_name == current_scan: - args_list = scan_data.request_inputs.get("arg_bundle", []) - if len(args_list) > 1 and self.arg_box is not None: - self.arg_box.set_parameters(args_list) - inputs = scan_data.request_inputs.get("inputs", {}) - kwargs = scan_data.request_inputs.get("kwargs", {}) - kwarg_box_inputs = {**inputs, **kwargs} - if kwarg_box_inputs and self.kwarg_boxes: - for box in self.kwarg_boxes: - box.set_parameters(kwarg_box_inputs) - self.last_scan_found = True - break - else: - self.last_scan_found = False - else: - self.last_scan_found = False + current_scan = self.comboBox_scan_selection.currentText() + history = self.client.connector.xread( + MessageEndpoints.scan_history(), from_start=True, user_id=self.object_name + ) + + for scan in history: + scan_data = scan.get("data") + if not scan_data: + continue + + if scan_data.scan_name != current_scan: + continue + + ri = getattr(scan_data, "request_inputs", {}) or {} + args_list = ri.get("arg_bundle", []) + if args_list and self.arg_box: + self.arg_box.set_parameters(args_list) + + inputs = ri.get("inputs", {}) + kwargs = ri.get("kwargs", {}) + merged = {**inputs, **kwargs} + if merged and self.kwarg_boxes: + for box in self.kwarg_boxes: + box.set_parameters(merged) + + self.last_scan_found = True + break @SafeProperty(str) def current_scan(self):