Files
pocketsync/ui/status_bar.py
T
2026-02-21 19:22:08 +01:00

62 lines
1.8 KiB
Python

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("-")