From 58a22dea9eaaaa473ad7e7f7cb401184e34f825e Mon Sep 17 00:00:00 2001 From: wyzula-jan Date: Tue, 19 May 2026 15:36:35 +0200 Subject: [PATCH] fix(x_ray_eye): fetch the status of the queue in next event loop --- csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py b/csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py index 8073cf5..eaa17f8 100644 --- a/csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py +++ b/csaxs_bec/bec_widgets/widgets/xray_eye/x_ray_eye.py @@ -172,6 +172,7 @@ class XRayEye(BECWidget, QWidget): self.connect_motors() self.resize(800, 600) + QTimer.singleShot(0, self._init_queue_status) QTimer.singleShot(0, self._init_gui_trigger) def _init_ui(self): @@ -428,6 +429,17 @@ class XRayEye(BECWidget, QWidget): def _release_queue_toggles(self): self._set_queue_toggles_blocked(False) + def _init_queue_status(self): + try: + msg = self.client.connector.get(MessageEndpoints.scan_queue_status()) + except Exception as exc: + logger.warning(f"Failed to fetch initial scan queue status for XRayEye: {exc}") + return + + if msg is None: + return + self._update_queue_toggles_from_busy_state(self._is_queue_busy(msg.content)) + @staticmethod def _is_queue_busy(msg_content: dict) -> bool: queues = msg_content.get("queue", {}) if isinstance(msg_content, dict) else {} @@ -536,6 +548,7 @@ class XRayEye(BECWidget, QWidget): @SafeSlot(dict, dict) def on_queue_status_update(self, data, meta): + _ = meta self._update_queue_toggles_from_busy_state(self._is_queue_busy(data)) @SafeSlot(bool, bool)