fix(x_ray_eye): fetch the status of the queue in next event loop
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user