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: """