GUI: fixed tell error flashing - hopefully

This commit is contained in:
2026-03-24 09:30:25 +01:00
parent cacc986785
commit ba559c5efa
2 changed files with 18 additions and 7 deletions
+12 -7
View File
@@ -47,6 +47,7 @@ class DAQWorker(QObject):
def __init__(self, base_url: str | None, token: str, parent=None):
super().__init__(parent)
self._active_status_error_key = None
self.__token = token
self.__base_url = base_url
self.__net_manager = QNetworkAccessManager()
@@ -77,6 +78,7 @@ class DAQWorker(QObject):
self._last_error_payloads = deque(maxlen=10)
self._last_tell_connected: bool | None = None
self._last_tell_error: str | None = None
self._last_smargon_connected: bool | None = None
self._server_connected: bool | None = None
self._last_server_error: str | None = None
@@ -244,12 +246,19 @@ class DAQWorker(QObject):
self._server_connected = True
self._last_server_error = None
tell_conn = bool(getattr(parsed_response, "tell_connected", True))
smargon_conn = bool(getattr(parsed_response, "smargon_connected", True))
tell_err = getattr(parsed_response, "tell_error", None)
smargon_err = getattr(parsed_response, "smargon_error", None)
tell_conn = bool(getattr(parsed_response, "tell_connected", True))
tell_err = getattr(parsed_response, "tell_error", None)
tell_err_text = None if tell_err is None else str(tell_err).strip()
tell_changed = (
self._last_tell_connected is None
or self._last_tell_connected != tell_conn
or self._last_tell_error != tell_err_text
)
tell_changed = self._last_tell_connected is not None and self._last_tell_connected != tell_conn
smargon_changed = (
self._last_smargon_connected is not None and self._last_smargon_connected != smargon_conn
)
@@ -449,10 +458,6 @@ class DAQWorker(QObject):
def open_shutter(self):
self.generic_post(f"beamline/shutter?val=true")
@Slot()
def alc_background(self):
self.generic_post("alc/background")
@Slot()
def center_loop(self):
self.generic_post("alc/center_loop")
+6
View File
@@ -11,6 +11,8 @@ class AlertBanner(QFrame):
def __init__(self, parent=None):
super().__init__(parent)
self._current_message: str | None = None
self._clear_timer = QTimer(self)
self._clear_timer.setSingleShot(True)
self._clear_timer.timeout.connect(self.clear_message)
@@ -40,6 +42,9 @@ class AlertBanner(QFrame):
self.clear_message()
return
if msg == self._current_message:
return
if is_error:
decorated = f"🛑 {msg} 🛑"
self.setStyleSheet(
@@ -79,6 +84,7 @@ class AlertBanner(QFrame):
@Slot()
def clear_message(self):
self._current_message = None
self._clear_timer.stop()
self._label.clear()
self.setVisible(False)