55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
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 ---
|
|
self.tasks = OrderedDict()
|
|
|
|
# --- Variáveis de Estado ---
|
|
self.current_file = ""
|
|
|
|
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, file_progress=0, speed=''):
|
|
"""
|
|
Atualiza o status de um arquivo.
|
|
progress: Progresso Global da Tarefa (0-100)
|
|
file_progress: Progresso da Conversão do Arquivo (0-100)
|
|
speed: Velocidade de conversão (ex: 8.5x)
|
|
"""
|
|
# Se não existe, cria
|
|
if filename not in self.tasks:
|
|
self.tasks[filename] = {
|
|
'status': 'pending',
|
|
'progress': 0,
|
|
'file_progress': 0,
|
|
'speed': '',
|
|
'label': label or filename
|
|
}
|
|
# Limita a 20 itens
|
|
if len(self.tasks) > 20:
|
|
self.tasks.popitem(last=False)
|
|
|
|
# Atualiza dados
|
|
self.tasks[filename]['status'] = status
|
|
self.tasks[filename]['progress'] = progress
|
|
self.tasks[filename]['file_progress'] = file_progress
|
|
self.tasks[filename]['speed'] = speed
|
|
|
|
if label:
|
|
self.tasks[filename]['label'] = label
|
|
|
|
def get_logs(self):
|
|
return list(self.logs)
|
|
|
|
# --- INSTÂNCIA GLOBAL ---
|
|
state = AppState() |