import tkinter as tk from ui import styles _MAX_FILE_LEN = 80 class StatusBar(tk.Frame): """Barra de estado con tres labels: sistema, fase y archivo actual.""" def __init__(self, parent, **kwargs): super().__init__(parent, bg=styles.STATUS_BG, relief="sunken", bd=2, **kwargs) self._label_system = tk.Label( self, text="Sistema: -", font=styles.FONT_LABEL + ("bold",) if isinstance(styles.FONT_LABEL, tuple) else styles.FONT_LABEL, bg=styles.STATUS_BG, fg=styles.STATUS_SYSTEM_FG, anchor="w", ) self._label_system.pack(fill="x", padx=10, pady=3) self._label_phase = tk.Label( self, text="Fase: -", font=styles.FONT_LABEL, bg=styles.STATUS_BG, fg=styles.STATUS_PHASE_FG, anchor="w", ) self._label_phase.pack(fill="x", padx=10, pady=3) self._label_file = tk.Label( self, text="Archivo: -", font=styles.FONT_SMALL, bg=styles.STATUS_BG, fg=styles.STATUS_FILE_FG, anchor="w", ) self._label_file.pack(fill="x", padx=10, pady=3) def set_system(self, text: str) -> None: self._label_system.config(text=text) self._label_system.update_idletasks() def set_phase(self, text: str) -> None: self._label_phase.config(text=text) self._label_phase.update_idletasks() def set_file(self, text: str) -> None: if len(text) > _MAX_FILE_LEN: text = "..." + text[-(_MAX_FILE_LEN - 3):] self._label_file.config(text=f"Archivo: {text}") self._label_file.update_idletasks() def reset(self) -> None: self.set_system("Sistema: ✅ COMPLETADO") self.set_phase("Fase: -") self.set_file("-")