From f583bb336bb6375f44ce30d1f0cbe392cf1fc793 Mon Sep 17 00:00:00 2001 From: x12sa Date: Tue, 7 Jul 2026 21:13:52 +0200 Subject: [PATCH] feat(bec_widgets): grey out Yes/No in ConsoleButtonsWidget when no message Yes/No start disabled and are enabled only while a message is set; ABORT stays always enabled. Clear visual cue that there's nothing to confirm. --- .../widgets/console_buttons/console_buttons.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/csaxs_bec/bec_widgets/widgets/console_buttons/console_buttons.py b/csaxs_bec/bec_widgets/widgets/console_buttons/console_buttons.py index f36680d..88cb429 100644 --- a/csaxs_bec/bec_widgets/widgets/console_buttons/console_buttons.py +++ b/csaxs_bec/bec_widgets/widgets/console_buttons/console_buttons.py @@ -67,6 +67,16 @@ class ConsoleButtonsWidget(BECWidget, QWidget): self.no_button.clicked.connect(self._on_no) self.abort_button.clicked.connect(self._on_abort) + # Start with Yes/No greyed out: with no message there is nothing to + # respond to, so there should be nothing clickable. ABORT is left + # always enabled -- it's an emergency stop and must work at any time, + # message or not. + self._set_yesno_enabled(False) + + def _set_yesno_enabled(self, enabled: bool): + self.yes_button.setEnabled(enabled) + self.no_button.setEnabled(enabled) + @SafeSlot() def _on_yes(self): self._response = "yes" @@ -88,6 +98,9 @@ class ConsoleButtonsWidget(BECWidget, QWidget): @rpc_timeout(20) def message(self, text: str): self.message_label.setText(text) + # A non-empty message means there's something to respond to, so + # enable Yes/No; an empty message greys them out again. + self._set_yesno_enabled(bool(text)) def response(self) -> str: """