OpenWave 0.1.3 - Nova Estrutura

Nesta versão, o núcleo do projeto foi completamente reestruturado para melhorar a manutenibilidade, testabilidade e separação de conceitos. O antigo arquivo monolítico app.py foi dividido em um pacote estruturado chamado openwave/, composto por 7 novos módulos especializados.

Nova Estrutura de Arquivos e Responsabilidades

Abaixo está a divisão da arquitetura do aplicativo e o papel de cada novo módulo:

Arquivo / Módulo Responsabilidade
app.py Ponto de entrada: Apenas inicializa o GTK e abre a janela principal.
openwave/constants.py Configurações: Centraliza versão, URLs e extensões de áudio suportadas.
openwave/utils.py Funções puras: normalize_text, read_audio_metadata, ensure_dir, parse_version.
openwave/updater.py Atualizações: Verificação de updates e download/restart em background.
openwave/dialogs.py Componentes visuais: Diálogos reutilizáveis como PlaylistDialog e show_about_dialog.
openwave/player.py Core de Áudio: Classe Player que encapsula o pipeline GStreamer com callbacks desacoplados.
openwave/ui_builder.py Design/Estilo: Gerenciamento de CSS e funções puras de UI (build_header, sidebar_section, add_sidebar_row).
openwave/window.py Orquestrador: Classe OpenWave, agora muito menor, focada apenas em coordenar os módulos.

Benefícios Práticos desta Refatoração

  • Testabilidade Isolada: A classe Player agora pode ser testada separadamente e seu backend pode ser substituído (ex: por outro motor de áudio) sem a necessidade de tocar na janela do app.
  • Execução em Background Isolada da UI: O módulo updater.py pode ser importado e testado de forma independente, sem precisar renderizar a interface GTK.
  • Facilidade em Ajustes Visuais: O CSS e os builders da barra lateral (sidebar) ficaram centralizados em ui_builder.py, tornando as modificações estéticas muito mais fáceis de ajustar visualmente.
  • Manutenção Segura: Adicionar um novo diálogo em dialogs.py ficou mais seguro, eliminando o risco de quebrar a lógica principal de reprodução de áudio.