diff --git a/src/aare/gui/threads/daq_worker.py b/src/aare/gui/threads/daq_worker.py index 90a7f2d6..7bf240cb 100644 --- a/src/aare/gui/threads/daq_worker.py +++ b/src/aare/gui/threads/daq_worker.py @@ -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") diff --git a/src/aare/gui/widgets/alert_banner.py b/src/aare/gui/widgets/alert_banner.py index fe10f4c7..5a440057 100644 --- a/src/aare/gui/widgets/alert_banner.py +++ b/src/aare/gui/widgets/alert_banner.py @@ -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)