gui: show remaining hold duration in the status line

The status bar now appends "(MM:SS remaining)" to a hold step's text,
kept live by recomputing it on every HoldRemaining message (not just
when the step itself changes) - tasks/sud.py already sent this, the
GUI just wasn't tracking/displaying it.
This commit is contained in:
2026-06-21 11:39:40 +02:00
parent b767053c18
commit 8bb402416a
+18 -5
View File
@@ -269,6 +269,8 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow):
self.sud_name = ''
self.sud_schedule = []
self.sud_step_index = None
self.sud_step_descr = None
self.sud_step_type = None
self.sud_hold_remaining = 0.0
# [(t_min, theta), ...] actually measured since the current run
# started - the "already happened" part of the dynamic forecast.
@@ -462,6 +464,8 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow):
self.sud_name = ''
self.sud_schedule = []
self.sud_step_index = None
self.sud_step_descr = None
self.sud_step_type = None
self.sud_hold_remaining = 0.0
self.forecast_history = []
self.set_sud_cooling(False)
@@ -732,17 +736,26 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow):
self.sud_user_message = msg['UserMessage']
elif "Step" in key:
step = msg['Step']
descr = step.get('Descr')
if descr:
self.statusBar().showMessage("Step {}: {}".format(step.get('Index'), descr))
else:
self.statusBar().clearMessage()
self.sud_step_index = step.get('Index')
self.sud_step_descr = step.get('Descr')
self.sud_step_type = step.get('Type')
self.set_sud_cooling(step.get('Cooling', False))
self.update_status_step_label()
elif "HoldRemaining" in key:
self.sud_hold_remaining = msg['HoldRemaining']
self.update_status_step_label()
self.update_sud_actions()
def update_status_step_label(self):
if not self.sud_step_descr:
self.statusBar().clearMessage()
return
text = "Step {}: {}".format(self.sud_step_index, self.sud_step_descr)
if self.sud_step_type == 'hold':
remaining = max(self.sud_hold_remaining, 0.0)
text += " ({:.0f}:{:02.0f} remaining)".format(remaining // 60, remaining % 60)
self.statusBar().showMessage(text)
def update_sud_forecast(self, doc):
try:
name, _, schedule, _, _ = Sud._parse_data(doc)