Decibel Audio Player es un programa liviano, sencillo, no orientado a tener miles de funciones (Amarok, les suena? 😀 ), sino sólo a reproducir música de una lista. La verdad que las capturas de pantalla («everybody loves screenshots!») pintaban prometedoras, y cuando leí que estaba hecho en Python + GTK, bajé el fuente a ver qué onda[1]…
Y la verdad que me está gustando lo que estoy leyendo. La parte de módulos me parece bárbara, da gusto leerla: para hacer un módulo propio (aka ‘plugin’), uno hereda de una clase «Modulo» (también hay un ThreadedModule) y se registra a los eventos que quiere recibir, puede emitir eventos a los demás, etc. Las pantallas están hechas con Glade, el código está bien comentado (y bien identado, es Python! 😀 ), el tamaño del proyecto y del fuente es manejable (al usar Glade, casi no se ve código de manejo de ventanas), usa semáforos, locks, está bien modularizado y orientado a objetos, etc.
Vista de un .glade abierto (con el vim de fondo):
Es resumen, si estás aprendiendo python (o programación, por qué no), leer el código fuente de este programa puede ser muy entretenido, para aprender cómo hacen las cosas los demás (y cómo se hacen las cosas bien hechas, je). Demás está decir que esto se puede hacer gracias a que es Software Libre, que si no… (es más, me gustaría meter algunas features que no me gustan y mandarlas al desarrollador…).
Espero que le pique el «bichito pythónico» a más de uno.
Saludos
Marcelo
[1]: Mentiira! 😀 Como todavía uso Feisty (Decibel ya está en los repos de Gutsy), bajé el .deb de la página y cuando GDebi me dijo que era para la arquitectura i386 (tengo un x86-64), putié y dije «por qué, si es python, viejo! tiene que ser multiplataforma!». Ahí bajé el código.
PD: Guarda: Miren los __init__.py de los subdirectorios, ahí está siempre lo que uno busca. 🙂
Actualización: Envié un pequeño parche, que implementa el «cerrar ventana y no salir» y el «iniciar minimizado», aunque necesita que el módulo cargue siempre el StatusIcon (no estaba así por defecto). Espero que el desarrollador principal lo acepte. 🙂
Deja una respuesta