martes, 4 de marzo de 2008

AutoGlade: Crear aplicaciones “mágicamente” a partir de formularios .glade

Fuente: UbuntuLife

autoglade1.jpg

Hoy un post un poco mas tecnico y orientado a desarrolladores, espero que me lo sepais perdonar. Pero creo que ya iba tocando alguno que otro. De todas formas tambien puede que os interese a quienes querais crear vuestros propios scripts e interfaces graficas de entrada de datos, de una manera muy sencilla.

Nota: Parte de esta informacion esta extraida de la Guia Ubuntu

Pero empecemos, ¿Que es un formulario .glade?

Pues bien, en el escritorio Gnome, muchas aplicaciones construyen su interface grafico a partir de un fichero XML que tiene extension .glade. Este fichero XML contiene todos los elementos que forman el formulario de la aplicacion, y sus propiedades como pueden ser la posicion del elemento o la etiqueta con su nombre. A partir de este fichero, y en tiempo de ejecucion, la aplicacion muestra los formularios correspondientes.

Ejemplo: a continuacion muestro parte de un fichero .glade con la definicion de un formulario:

<widget class="GtkTable" id="table1">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="n_rows">4</property>
<property name="n_columns">3</property>
<child>
<placeholder/>
</child>


¿Parece complicado?. Pues a primera vista si, pero… y si pudieramos construir estos ficheros mediante un IDE grafico, al estilo de Visual Basic. De manera que arrastrando botones, cajas de texto, etiquetas, etc desde la paleta de componentes, pudieramos ir generando el codigo XML correspondiente. Vaya!! parece que la cosa mejora.

Podemos generar nuestros formularios con extension .glade utilizando herramientas como glade, o la version mas actualizada: glade-3

Para instalar el diseñador grafico de formularios ejecutamos:

$ sudo apt-get install glade-3

Ahora ya podemos iniciarlo con:

$ glade-3

y aparecera la ventana principal del editor. Desde ella ya podremos ir construyendo nuestros formularios, arrastrando los elementos desde la paleta de componentes y definiendo las propiedades de los mismos. Cuando guardemos el proyecto, se guardara con extension .glade.

glade3.jpg

Pero claro, un formulario .glade es solo un fichero XML, que contiene la interfaz pero no es una aplicacion. Deberiamos por tanto, escribir el codigo correspondiente en C++ para manejar esa informacion y mostrar la ventana correspondiente en la pantalla. ¿Y que pasa si no somos programadores, y no entendemos de librerias Gtk, ni llamadas al sistema, por ejemplo?. Pues aqui, nos ayuda autoglade, para hacer ese trabajo “sucio” por nosotros, y sin necesidad de tener que escribir nada de codigo adicional.

autoglade es capaz de procesar los ficheros .glade que vayamos creando y mostrarlos en pantalla. Capturando tambien la informacion de indicamos en esos formularios. Estos valores podran ser luego procesados, por ejemplo, en un shell script.

Para instalar autoglade, nos descargamos el siguiente fichero .deb y lo instalamos:

$ sudo dpkg -i autoglade_0.3-6_all.deb

Si hemos ido creando ya algun formulario .glade podriamos probarlo con: autoglade nombre_fichero.glade

Ejemplo:

Yo con el diseñador grafico, he creado un formulario llamado “mipizza.glade” que se corresponde con la imagen mostrada al principio de este articulo. Cuando lo ejecuto con:

$ autoglade mipizza.glade

Automaticamente muestra la ventana del formulario, y al pulsar el boton Aceptar, recupera los parametros que hayamos seleccionado, mostrandolos por la consola:

quantity='3'
pepperoni='True'
mozzarella='False'
pizza='Barbacoa'


¿Facil, no?. Podriamos usar autoglade para construir interfaces graficas para nuestros propios scripts de Nautilus.

En la siguiente direccion, vas a encontrar un tutorial muy recomendable de como crear un formulario similar al que he utilizado yo. La mejor forma de aprender es probando a crear tus propios formularios.

De todas formas, si tienes problemas en seguir ese tutorial, puedes encontrar los ejemplos de autoglade en el directorio /usr/share/doc/autoglade/examples/tutorial. Bastaria que cargaras en el editor el fichero Pizza_order/pizza-order.glade correspondiente y ya podrias estudiar el codigo del mismo.

Enlace | autoglade tutorial
Enlace | JGlade