from collections import deque, OrderedDict class AppState: def __init__(self): # --- Logs do Sistema --- self.logs = deque(maxlen=1000) # --- Referência ao Watcher --- self.watcher = None # --- Lista de Tarefas (Visualização tipo Árvore/Lista) --- self.tasks = OrderedDict() # --- Variáveis de Estado (Compatibilidade) --- self.current_file = "" self.progress = 0.0 self.status_text = "Aguardando..." def log(self, message): """Adiciona log e printa no console""" print(message) self.logs.append(message) def update_task(self, filename, status, progress=0, label=None): """Atualiza o status de um arquivo na interface""" # Se não existe, cria if filename not in self.tasks: self.tasks[filename] = { 'status': 'pending', 'progress': 0, 'label': label or filename } # Limita a 20 itens para não travar a tela if len(self.tasks) > 20: self.tasks.popitem(last=False) # Remove o mais antigo # Atualiza dados self.tasks[filename]['status'] = status self.tasks[filename]['progress'] = progress if label: self.tasks[filename]['label'] = label def get_logs(self): return list(self.logs) # --- INSTÂNCIA GLOBAL --- # Ao ser importado, isso roda uma vez e cria o objeto. # Todo mundo que fizer 'from core.state import state' vai pegar essa mesma instância. state = AppState()