fix(x_ray_eye): fetch the status of the queue in next event loop

This commit is contained in:
2026-05-19 16:02:33 +02:00
parent 61f385d6dd
commit 58a22dea9e
@@ -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)