🐛 fix(gui): make UART unavailable notification persistent
- Add dedicated UART warning label that doesn't get overwritten - _show_uart_notification now uses persistent label instead of status display - Warning message stays visible throughout workflow execution
This commit is contained in:
+27
-3
@@ -452,6 +452,19 @@ class MainWindow(ctk.CTk):
|
|||||||
self._status = StatusDisplay(panel)
|
self._status = StatusDisplay(panel)
|
||||||
self._status.pack(fill="x", padx=PADDING, pady=PADDING)
|
self._status.pack(fill="x", padx=PADDING, pady=PADDING)
|
||||||
|
|
||||||
|
# UART warning label (persistent, not overwritten by other status updates)
|
||||||
|
self._uart_warning_label = ctk.CTkLabel(
|
||||||
|
panel,
|
||||||
|
text="",
|
||||||
|
font=FONT_BODY,
|
||||||
|
anchor="w",
|
||||||
|
text_color=WARNING_COLOR,
|
||||||
|
)
|
||||||
|
self._uart_warning_label.pack(
|
||||||
|
fill="x", padx=PADDING, pady=(0, PADDING_SMALL)
|
||||||
|
)
|
||||||
|
self._uart_warning_label.pack_forget() # Hide by default
|
||||||
|
|
||||||
# ── Workflow Steps ─────────────────────────────────────────
|
# ── Workflow Steps ─────────────────────────────────────────
|
||||||
|
|
||||||
def _log_message(self, message: str) -> None:
|
def _log_message(self, message: str) -> None:
|
||||||
@@ -562,13 +575,24 @@ class MainWindow(ctk.CTk):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def _show_uart_notification(self, reason: str) -> None:
|
def _show_uart_notification(self, reason: str) -> None:
|
||||||
"""Show a non-blocking UART unavailable notification in the status panel.
|
"""Show a persistent UART unavailable notification.
|
||||||
|
|
||||||
|
This notification stays visible and is not overwritten by other status updates.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
reason: Why UART is unavailable.
|
reason: Why UART is unavailable.
|
||||||
"""
|
"""
|
||||||
msg = f"UART 不可用 ({reason}),日志分析及检查将禁用"
|
msg = f"⚠ UART 不可用 ({reason}),日志分析及检查将禁用"
|
||||||
self.after(0, lambda: self._status.set_status(msg, "warning"))
|
self.after(0, lambda: self._show_uart_warning(msg))
|
||||||
|
|
||||||
|
def _show_uart_warning(self, msg: str) -> None:
|
||||||
|
"""Display the persistent UART warning message.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
msg: Warning message to display.
|
||||||
|
"""
|
||||||
|
self._uart_warning_label.configure(text=msg)
|
||||||
|
self._uart_warning_label.pack(fill="x", padx=PADDING, pady=(0, PADDING_SMALL))
|
||||||
|
|
||||||
def _run_step_2_program_flash(self) -> bool:
|
def _run_step_2_program_flash(self) -> bool:
|
||||||
"""Step 2: Program and verify Flash."""
|
"""Step 2: Program and verify Flash."""
|
||||||
|
|||||||
Reference in New Issue
Block a user