Salte la navegación

Category Archives: Diseño

Animado por el primer boceto de pytweetclin y los comentarios de David, me bajé Pencil (no el de animar, el otro) e hice un esquema de la interfaz de la ventana principal. Aunque pensándolo un poco, podría haber hecho directamente un prototipo en python, total, si hacer una ventana con pyGTK es un ratillo.

Boceto de la ventana principal

De hecho, ya se puede descargar desde la forja, en el paquete sandbox. Ahí iré subiendo pruebas y chorradillas que no tendrán que ver con el código final.

Para ejecutarlo son necesarios python, pygtk y python-gdl. Y ahí quería llegar.

GDL es una biblioteca de widgets que se pueden reordenar y despegar de una ventana a voluntad del usuario, lo que da lugar a interfaces muy versátiles y cómodas. La pega es que el wrapper para python usa una nomenclatura un tanto… peculiar, la documentación es muy escasa y los programas de ejemplo… no funcionan.

Sin embargo, tras corregir uno de los ejemplos y hacerme a la idea de cómo funciona al menos la clase DockItem, escribir el prototipo fue bastante fácil. Miento, la verdad es que fue un auténtico calvario conseguir que el programita se ejecutase sin escupir bonitos mensajes de error al salir. como éste:

(gui_prototype.py:17778): Gdl-CRITICAL **: gdl_dock_master_get_controller: assertion `master != NULL' failed
Segmentation fault

¿Violación de segmento? ¿En mi python? Eso sí que no, ¿eh?

Vídeo de la criatura en acción:

Comento un poco la funcionalidad que tiene: puedes arrastrar los widgets de un lado a otro y si lo haces fuera de la ventana principal, flotan, creándose su propia ventana. También puedes redimensionarlos, minimizarlos (pasan ser un botón en una barra a la izquierda de la ventana) y cerrarlos.

Al salir del programa, se guarda un fichero layout.xml con la disposición de los widgets, así que cuando vuelves a ejecutarlo, la ventana (tamaños de widgets aparte) se queda como estaba. Si quieres volver a dejar los widgets como estaban por defecto, basta con borrar layout.xml. No es una opción demasiado limpia pero es un prototipo, en la versión final no creo que haya problemas porque siempre podrás usar el menú Ver para volver a activar los widgets que has cerrado.

GDL se me resistió tanto en python que estuve a punto de cambiar el lenguaje de programación a Vala. Pero eso da para otra entrada…