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:
+18
-5
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user