inicio
This commit is contained in:
49
app/core/state.py
Normal file
49
app/core/state.py
Normal file
@@ -0,0 +1,49 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user