glade.pdf
TRANSCRIPT
-
softwareGlade
42 Linux+ 9/2007
softwareGlade
43www.lpmagazine.org
linux
@so
ftwar
e.co
m.p
l
Cuando nos planteamos el desarrollo de apli-
caciones software con interfaz grfica de usu-
ario es importante elegir una herramienta que
permita al equipo ser productivo en este as-
pecto, ya que el diseo y produccin de la interfaz gr-
fica lleva un tiempo elevado de trabajo. Habitualmente
la eleccin de esta herramienta est condicionada por
varios factores como son el lenguaje de programacin, la
experiencia del equipo con ciertas herramientas, el toolkit
grfico que utilizar la aplicacin o la disponibilidad de
herramientas en funcin de la plataforma de desarrollo
y de produccin.
En GNU/Linux contamos con una herramienta muy
prctica para el desarrollo de software que requiera de
interfaz grfica como son hoy en da muchas aplicacio-
nes standalone y/o cliente-servidor. Esta herramienta nos
va a permitir, por ejemplo, ser productivos debido a su
facilidad de uso, elegir entre distintos lenguajes de pro-
gramacin y desarrollar y correr en distintas plataformas.
Su nombre es Glade, es software libre y utiliza el toolkit
grfico GTK+. La funcionalidad que diferencia a Glade
de otras herramientas similares es el hecho de que genera
cdigo XML con la definicin de toda la interfaz grfica
que crea el diseador. Los datos de este fichero se cargan
dinmicamente cuando la aplicacin se ejecuta, lo que
nos permite tener claramente separada la interfaz grfica
de la lgica de negocio. Adems, podemos utilizar la
misma interfaz con distintos lenguajes de programacin
sin cambiar nada. Quiz este aspecto nos resulte espe-
cialmente prctico si necesitamos desarrollar la misma
aplicacin en dos lenguajes diferentes o si con el tiempo
decidimos cambiar de lenguaje por alguna necesidad
especfica.
La perfecta integracin con el entorno de escritorio
GNOME es otra de las razones para utilizar Glade si
desarrollamos aplicaciones que deban correr en este
GladeArturo Fernndez Montoro
Conocimientos bsicos de programacin con inter-faces de usuario
Conocimientos bsicos de programacin en C Conocimientos bsicos de GTK+
Lo que deberas saber...
Glade es una intuitva aplicacin que nos permite desarrollar, a golpe de ratn, interfaces grficas de usuario para el toolkit grfico de GTK+, el cual se integra a la perfeccin con el entorno de escritorio GNOME. Posteriormente podemos utilizar estas interfaces con lenguajes de programacin como C/C++, Ruby, Python y Java, entre otros.
-
softwareGlade
42 Linux+ 9/2007
softwareGlade
43www.lpmagazine.org
escritorio. No obstante, las aplicaciones
basadas en Glade slo necesitan GTK+ con
independencia del entorno de escritorio, es
decir, cualquier aplicacin desarrollada con
Glade puede correr, por ejemplo, en KDE,
WindowMaker o XFCE, siempre y cuando
tengamos instaladas las libreras necesarias
de GTK+.
Si programamos en C/C++ en Linux uti-
lizando el popular IDE Anjuta, la ltima ver-
sin del mismo integra Glade, de forma que
no es necesario que usemos dos programas
distintos para escribir nuestras aplicacio-
nes.
Dado que la mejor forma de conocer
Glade es trabajar con l, comenzaremos
viendo cmo instalarlo en nuestro PC.
InstalacinAntes de realizar la instalacin debemos
decidir con qu versin de Glade vamos a
trabajar. Actualmente existen dos versiones
diferenciadas listas para produccin: Glade2
y Glade3. A nivel interno son muy diferen-
tes, ya que la versin 3 se ha reescrito par-
tiendo de cero y el cdigo es completamente
nuevo. Funcionalmente son muy parecidas
con la excepcin de que la nueva versin
ya no genera cdigo, slo la definicin en
XML de la interfaz. En versiones anteriores
era posible generar directamente cdigo en
el lenguaje seleccionado, que los progra-
madores utilizaban para escribir el resto
de la aplicacin. Sin embargo, en la nueva
versin slo es posible generar la definicin
en XML, que posteriormente los programa-
dores utilizarn junto a la librera libglade
para cargar las interfaces en tiempo de ejecu-
cin.
Para la mayora de las distribuciones de
Linux existen paquetes binarios para reali-
zar la instalacin de la versin 2 de Glade,
sin embargo, no es tan comn encontrar
paquetes de la versin 3. Por ejemplo, la
ltima versin estable liberada de Debian
(4.0 alias Etch) no dispone de paquetes para
Glade 3, tampoco los incluye la versin
Edgy de Ubuntu. Para realizar la instalacin
desde estos paquetes binarios podemos
utilizar la interfaz grfica de aplicaciones
como Sypnatic o la lnea de comandos. Por
ejemplo, en el caso de Debian ejecutaramos
como usuario root:
# apt-get install glade
Y en el caso de Ubuntu:
$ sudo apt-get install glade
Tambin encontramos paquetes para otras
distribuciones como Fedora o SUSE. Por
ejemplo, la distro Fedora Core 6, incluye por
defecto la versin 2 de Glade. La instalacin
desde los binarios tiene la ventaja de que el
sistema de instalacin detectar las depen-
dencias necesarias e instalar los paquetes
que proceda de forma automtica.
No obstante, si deseamos instalar Glade
desde los fuentes podemos hacerlo acce-
diendo al sitio web de Glade, descargarnos
los mismos y realizar la compilacin de for-
ma manual. De esta forma podemos elegir
la versin que deseemos.
En primer lugar deberemos instalar el
software del que depende Glade. Si utili-
zamos GNOME podemos obviar este paso,
ya que tendremos instalado prcticamente
todo, como mucho deberemos instalar las
libreras de desarrollo necesarias para la
compilacin. Glade require el siguiente soft-
ware:
Libreras de GTK+ (mnimo versin 2.10)
GLib
Pango
Atk
libxml (mnimo versin 2.4.1)
Este software puede encontrarse tambin
como paquetes binarios en nuestra distri-
bucin de Linux. Antes de proceder a ins-
talarlo, podemos comprobar si ya lo tene-
mos instalado, dado que se trata de libre-
ras comunmente utilizadas por muchas
de las aplicaciones ms populares para
Linux.
A continuacin veremos cmo instalar
la versin 3.2 de Glade que es la ltima
estable liberada hasta el momento y es la
que utilizaremos para ilustrar los ejemplos
de este artculo.
En primer lugar nos descargaremos el
cdigo fuente:
$ wget http://ftp.gnome.org/pub/GNOME
Listado 1. Programa en C que genera la interfaz grfica desarrollada
previamente con Glade
1 int main(int argc, char *argv[])
{
gtk_init(&argc, &argv);
glade_init();
6 xml = glade_xml_
new("hello.glade",
"window1", NULL);
8 glade_xml_signal_
autoconnect(xml);
gtk_main();
return 0;
11 }
Figura 1. Iniciando Glade
Qu es Glade Cmo construir interfaces grficas con
Glade A desarrollar aplicaciones para GTK+
con interfaz grfica
En este artculo aprenders...
-
44
softwareGlade
Linux+ 9/2007 45
softwareGlade
www.lpmagazine.org
/sources/glade3/3.2/glade3-
3.2.0.tar.gz
Seguidamente descromprimiremos el fichero
tarball descargado:
$ tar -zxvf glade3-3.2.0.tar.gz
$ cd glade3-3.2.0
Por ltimo pasaremos a compilar e instalar:
$ ./configure
$ make
# make install
Podemos comprobar la correcta instalacin
de Glade accediendo a la correspondiente
opcin de men de nuestro entorno de es-
critorio, habitualmente en Grficos en GNO-
ME, o utilizando la lnea de comandos,
ejecutando:
$ glade-3
La interfazGlade presenta una interfaz muy intuitiva
y fcil de usar gracias a su sistema de drag
& drop (arrastrar y soltar) que nos permite
directamente seleccionar un componente
y posicionarlo en la rea de trabajo.
La interfaz grfica de Glade se encuentra
divida en las siguientes reas:
Men: Nos da acceso a las funcionali-
dades de Glade referentes a los pro-
yectos, ficheros, edicin, tipos de vistas
y ayuda.
rea de diseo: Es el espacio utilizado
para construir la interfaz grfica. A esta
rea de trabajo arrastraremos los dife-
rentes elementos de la interfaz.
Paleta: Aqu encontramos todos los
elementos necesarios para contruir
una interfaz grfica que Glade pone
a nuestra disposicin, como por ejem-
plo, distintos tipos de botones, cajas
de texto, elementos desplegables (com-
bos), etiquetas y barras de desplaza-
miento.
Inspector: Visualiza informacin sobre
los elementos de la interfaz que esta-
mos utilizando en nuestro proyecto.
Editor de propiedades: Aqu fijaremos
las propiedades de cada elemento de
la interfaz y podremos aadir lo necesa-
rio para realizar la conexin a travs de
eventos.
Para trabajar con Glade es necesario que nos
familiaricemos con una serie de conceptos de
GTK+ que debemos tener en cuenta a la hora
del desarrollo de interfaces. A continuacin
veremos dichos conceptos.
WidgetsPodemos definir un widget como un elemento
de la interfaz grfica de usuario. Un botn,
una caja de texto, un desplegable y una eti-
queta son ejemplos de widgets.
GTK+ nos ofrece un rico conjunto de wid-
gets, adems de los mencionados contamos,
entre otros, con barras de scroll horizontal
y vertical, pestaas de separacin, diferentes
tipos de botones, botones de seleccin mlti-
ple y botones de nica seleccin.
ContenedoresPor otro lado, GTK+ utiliza tambin el
concepto de contenedores que son elemen-
tos de interfaz que sirven para agrupar
y empaquetar a los widgets. Los contenedo-
res son necesarios en GTK+ porque todos
los widget que forman parte de la interfaz
deben encontrarse empaquetados. Esta tc-
nica de empaquetado, permite por ejemplo,
que para el programador sea transparente
la adaptacin del tamao de los widgets
como consecuencia de un redimensiona-
miento por parte del usuario, ya que, la
Figura 2. Diferentes cuadros de dilogo que podemos crear con Glade
Figura 3. Seleccionando un icono para un botn
-
44
softwareGlade
Linux+ 9/2007 45
softwareGlade
www.lpmagazine.org
adaptacin es automtica gracias a esta tc-
nica.
Bsicamente, tenemos tres tipos de conte-
nedores en GTK+:
Ventanas: Son parte fundamental de
una aplicacin. Es el marco donde se
situan otros contenedores y otros wid-
gets a su vez. Como mnimo una apli-
cacin debe contener una ventana.
Caja vertical (Vertical box): Permite
agrupar widgets con una orientacin
vertical. Es prctico, por ejemplo, cuan-
do queremos colocar una etiqueta y al
lado una caja de texto.
Caja horizontal (Horizontal box): Similar
al anterior pero con orientacin hori-
zontal. Nos permite agrupar elementos
uno debajo del otro.
Debemos tener en cuenta que cuando un
widget se sita en un contenedor, el widget
ocupa todo el espacio que le hemos dado al
contenedor.
Utilizando diferentes combinaciones
entre contenedores podemos llegar a crear
una compleja y completa interfaz de usua-
rio.
Tipos de widgets y contenedoresA continuacin veremos una clasificacin
de widgets y contenedores basndonos en la
organizacin que nos da Glade en la venta-
na Paleta, dando una pequea descripcin
sobre los mismos. Nos ceiremos a los ms
habituales, aunque como podremos com-
probar en la interfaz de Glade, existen otros
a nuestra disposicin.
Alto nivel (Top level)
Ventana (Window): Se trata del conte-
nedor bsico y representa una ventana
tpica de aplicacin. Utilizaremos este
contenedor para alojar la mayora de
los widgets.
Cuadro de dilogo (Dialog box): Con-
tenedor que se utiliza para interactuar
con el usuario requiriendo su interven-
cin.
Acerca de (About box): Otro contenedor
para crear el tpico mensaje de "Acerca
de...". Tambin es posible crear este
dilogo utilizando el contenedor ante-
rior, sin embargo, la ventaja del About
box es que ya tenemos unos widgets
bsicos insertados para crear el mensaje.
Seleccin de color (Color Selection Dia-
log): Este cuadro de dilogo nos per-
mite seleccionar un color de una paleta
dada.
Seleccin de ficheros (File Chooser Dialog):
Se utiliza para mostrar al usuario el siste-
ma de ficheros y que el mismo pueda
seleccionar uno o varios ficheros.
Seleccin de fuentes (Font Selection Dia-
log): A travs del mismo podemos el usu-
ario puede seleccionar una fuente (tipo
de letra) instalada en el sistema.
Otros widgets dentro de este grupo son los
cuadro de dilogos que permiten seleccionar
el dispostivo de entrada (Input Dialog) y crear
un mensaje (Message Dialog).
Contenedores (Containers)
Caja horizontal (Horizontal box): Este es
uno de los contenedores principales de
Glade que nos permite situar dentro del
mismo diferentes tipos de widgets hori-
zontalmente.
Caja vertical (Vertical box): Al igual que el
anterior tambin es un contenedor bsico
que nos permite la colocacin vertical de
los widgets.
Tabla (Table): Contenedor que crea filas
y columnas. Se puede utilizar teniendo
en cuenta que es una combinacin de los
dos anteriores.
Cuaderno (Notebook): Permite crear va-
rias pestaas dentro de una ventana.
Frame: Tipo de contenedor que nos da la
opcin de asociarle una etiqueta.
Barra de men (Menu Bar): Tpica barra
de men de aplicacin.
Barra de herramientas (Tool bar): Permite
aadir iconos.
Ventana con scroll (Scrolled window): Ven-
tana que permite realizar desplazamien-
tos (scroll).
Visualizacin y control (Control and Display)
Botn (Button): Tpico botn dnde po-
demos seleccionar, entre otras propie-
dade, un icono. Existen varios predefe-
nidos, como son, por ejemplo, el tick de
OK y o la cruz de Cancelar.
Botn de comprobacin (Check button): Bo-
tn que tiene dos estados, marcado y sin
marcar.
Botn de seleccin (Radio button): Permite
seleccionar una opcin u otra, es mutua-
mente excluyente.
Botn de seleccin de ficheros (File Choo-
ser button): Da acceso a un cuadro de di-
logo para seleccionar uno o varios fiche-
ros del sistema.
Imagen (Image): Permite insertar una
imagen desde un fichero.
Etiqueta (Label): Posibilita la insercin de
texto en tiempo de diseo. Se utiliza para
textos que el usuario no pueda modificar.
Caja de texto (Text entry): Da la opcin
de insertar texto al usuario, sirve como
entrada de datos.
Barra horizontal de scroll (Horizontal
scrollball): Barra que permite realizar
scroll horizontal.
Barra vertical de scroll (Vertical scrollball):
Similar a la anterior pero para scroll ver-
tical.
Figura 4. Conversor
-
46
softwareGlade
Linux+ 9/2007
Desplegable (Combo box): Muestra al
usuario un desplegable con varias opcio-
nes para que el usuario pueda seleccio-
nar una.
Barra de progreso (Progress bar): til
para mostrarle al usuario el progreso de
una accin.
Calendario (Calendar): Muestra un calen-
dario.
rea de dibujo (Drawing area): Marca
un rea para que el usuario pueda dibujar.
Otro grupo son los GTK+ obsolete que re-
ferencian a widgets obsoletos de versiones
anteriores, pero que se muestran para ga-
rantizar la compatibilidad con proyectos
antiguos que tengamos desarrollados.
ProyectosGlade utiliza el concepto de proyecto para
agrupar todos los elementos de la interfaz
que estamos diseando y que habitulamen-
te corresponde a un programa. Adems, se
genera un fichero XML por proyecto. Para
comenzar a trabajar el primer paso es crear
un proyecto.
Podemos guardar, borrar y editar pro-
yectos de forma similar a como trabajan los
IDE's de desarrollo. Desde el men de Gla-
de tenemos acceso a la opcin Proyectos.
Seales y eventosGTK+ est orientado a eventos, por lo tan-
to es necesario comprender este concepto
para utilizar Glade. Una aplicacin GTK+
siempre estar esperando que un evento
ocurra. Un evento es la consecuencia de
una accin que se realiza sobre un elemen-
to de la interfaz y suele ser el usuario quin
provoca un dicha accin.
Las seales son mensajes que emite un
elemento de la interfaz cuando ocurre un
evento. Por ejemplo, si un usuario pulsa un
botn se producir el evento botn_pulsado
y l mismo emitir la seal click.
Bien, ya tenemos seales y eventos pero
nos queda responder a los mismos para
lograr la interaccin entre la aplicacin
y el usuario. Para ello necesitaremos mane-
jadores de seales que nos ayuden a repon-
der a los mismos. Estos se caracterizan por
utilizar una funcin o mtodo callback, que
contiene una serie de instrucciones que se
ejecutarn para responder al evento.
En GTK+, para responder a un evento
es necesario indicar que seales lanzar un
widget y que funcin o mtodo callback debe
ejecutarse como respuesta. Este callback ser
indicado por el correspondiente manejador
de seales.
Lenguajes de programacinDado que Glade genera un fichero XML con
la descripcin de la interfaz y que gracias
a libglade podemos cargar en tiempo de eje-
cucin dicha interfaz, podemos utilizar dis-
tintos lenguajes para escribir aplicaciones
GTK+. De hecho, podemos reutilizar la de-
finicin de la interfaz con varios lenguajes
de programacin.
Actualmente es posible combinar Glade
con los siguientes lenguajes:
C: GTK+ est escrito en C, as pues, ste
es el lenguaje nativo.
C++: Existen bindings para este lenguaje,
la librera oficial se llama gtkmm.
C#: En GNU/Linux utilizando la tecno-
loga Mono.
Java: El lenguaje orientado a objetos de-
sarrollado por Sun Microsystems.
Python: Uno de los lenguajes interpreta-
dos estrella.
Pike: Lenguaje interpretado de sintaxis
muy similar a C.
Ruby: Famoso por el framework web Ruby
on Rails.
Haskell: Se caracteriza por su puramente
funcional.
Objective Caml: Lenguaje orientado a ob-
jetos y multiplataforma.
Perl: Un clsico de la programacin.
Schem: Dialecto de LISP.
Para utilizar un lenguaje diferente a C nece-
sitaremos utilizar un binding, es decir, una
librera intermedia que encapsula el acceso
a una librera escrita en un lenguaje desde
otro. Los lenguajes anteriormente disponi-
bles disponen de estos bindings que suelen
ser libreras, las cuales podemos encontrar
empaquetadas en formato binario para la
mayora de las distribuciones de Linux. Por
ejemplo, en el caso de Python contamos con
PyGTK, en el caso de Ruby disponemos de
Ruby GNOME 2.
A continuacin veremos cmo instalar,
por lnea de comando, los paquetes necesa-
rios para cada binding en funcin del len-
guaje, como ejemplo nos ceiremos a la dis-
tribucin Debian Etch y a los lenguajes Ru-
by, Perl y Python:
# apt-get install libgtk2-ruby
# apt-get install libgtk2-perl
# apt-get install python-gtk2
La eleccin de un lenguaje u otro depender
de nuestras necesidades, aunque debemos
tener en cuenta que C es el lenguaje nativo
y por lo tanto la integracin ser mayor y no
es necesario instalar bindings.
Un ejemplo prcticoEn general, el proceso de desarrollo de aplica-
ciones GTK+ utilizando Glade, consta de las
siguientes fases:
Figura 5. Detalle del rbol de widgets del proyecto de software libre gtkPod, realizado con Glade
-
48
softwareGlade
Linux+ 9/2007 49
softwareGlade
www.lpmagazine.org
Diseo de la interfaz de usuario con
Glade.
Generacin del XML con la definicin de
la interfaz.
Desarrollo del cdigo de la aplicacin
con la lgica de negocio.
Desarrollo del cdigo de la aplicacin
que interacta con la interfaz grfica.
Si el lenguaje es distinto a C, no olvidemos
que necesitamos las libreras que hacen de
binding.
Vamos a ver un sencillo ejemplo para
disear una aplicacin que realiza una con-
versin de euros a libras esterlinas y vice-
versa. La interfaz de nuestra aplicacin con-
tendr dos etiquetas, dos botones y dos cajas
de textos dnde el usuario podr poner los
importes para la conversin.
En primer lugar debemos seleccionar los
contenedores que vamos a utilizar, en nuestro
caso el primer contenedor ser una ventana,
as pues hacemos click sobre este widget del
grupo Toplevels de la paleta y vermos cmo
aparece la ventana en cuestin. El segundo
contenedor que agrupar al resto es una caja
vertical, cuando pichemos sobre la misma,
Glade nos preguntar sobre el nmero de
columnas, le indicamos que vamos a utilizar
tres. Seguidamente aadiremos otra caja
horizontal con dos columnas, dnde una de
ellas nos servir para aadir la etiqueta con
el valor EUR y otra la utilizaremos para
la caja de texto dnde el usuario introdu-
cir le importe que desee convertir. En la
parte central de la ventana aadiremos una
caja vertical que contendr dos botones di-
ferentes, uno para realizar la conversin de
euros a libras y otro para convertir de libras
a euros. Ya slo nos queda aadir otra caja
horizontal con dos columnas con una caja
de texto y una etiqueta de manera similar
a la anterior.
Resumiendo, tenemos los siguientes
widgets:
Una ventana utilizada como contenedor
principal.
Una caja horizontal con tres columnas.
Dos cajas horizontales con una etiqueta
y una caja de texto cada una.
Una caja vertical con dos filas, cada una
con un botn.
El siguiente paso es fijar las propiedades
de los widgets a travs de la ventana Pro-
piedades. En nuestro ejemplo, slo fijaremos
el texto de las etiquetas y el de los botones.
Para ello accedemos a la pestaa General de
la ventana propiedades de cada uno de es-
tos widgets y escribimos el texto en cuestin.
Cada vez que hacemos click sobre un widget
se activa la ventana de propiedades corres-
pondiente al mismo.
Respecto al empaquetado mantedremos el
que viene por defecto, y veremos que ajus-
tando el tamao de la ventana lograremos
ver los widgets de forma proporcional.
El resultado final puede verse en la
Figura 4.
Ya slo nos queda fijar las propieda-
des relativas a las seales para los botones
que est relacionado con la lgica de nego-
cio de la aplicacin y escribir la parte que
interacta con la interfaz en el lenguaje
que hayamos elegido. En nuestro ejemplo
del conversor fijaremos tres seales en la
interfaz:
En la ventana principal, seleccionamos
la pestaa Seales y aadimos la seal
delete_event. A esta seal le asignaremos
el manejador llamado gtk_main_quit. El
objetivo es que cuando el usuario pulse
sobre el botn de cierre, la aplicacin
termine su ejecucin.
En el primer botn aadiremos la seal
clicked y le asociamos el manejador on_
button_clicked. Este ser el nombre de la
rutina callback que deberemos escribir
y que se ejecutar como respuesta al pul
sado del botn.
De forma similar al anterior procede-
mos para el otro botn. En este caso
cambiaremos el nombre del maneja-
dor, puesto que ste ser diferente.
Por ejemplo, escribimos el nombre
on_button2_clicked.
En este punto estamos en disposicin de
escribir el cdigo que interacta con nues-
tra interfaz creada con Glade. A modo de
ejemplo, utilizaremos el lenguaje C por ser
el nativo de GTK+ y la librera libglade que
nos permite cargar en tiempo de ejecucin
los elementos de nuestra interfaz.
En primer lugar debemos incluir las
siguientes lneas en nuestro programa:
#include
#include
static GladeXML *xml;
La ltima lnea es la declaracin de la varia-
ble que representa a la interfaz. La hemos
declarado como global por simplicidad
para poderla utilizar directamente en las
rutinas callbacks.
La funcin principal de nuestro progra-
ma contendr el siguiente cdigo (Lista-
do 1).
En la lnea 6 cargamos el fichero gene-
rado por Glade y que contiene la interfaz.
Seguidamente utilizamos una funcin pa-
ra conectar automtica y directamente las
Listado 2. Funcin callback que se ejecuta como respuesta al evento que sucede
cuando se pulsa un botn
void on_button_clicked(GtkButton *button, gpointer user_data)
{
GtkWidget *entry1;
GtkWidget *name_entry;
GtkEntry *txt;
GtkEntry *txt2;
char *cad = NULL;
txt = (GtkEntry *) glade_xml_get_widget(xml, "entry1");
cad = gtk_entry_get_text (txt);
/*
Obviamos la transformacin de euros a libras.
El lector interesado puede realizar la implementacin
en este punto.
*/
txt2 = (GtkEntry *) glade_xml_get_widget(xml, "entry2");
gtk_entry_set_text (txt2, cad);
}
GTK: Gimp ToolKit. IDE: Entorno Integrado de Desarrollo.
Acrnominos y abreviaturas
-
48
softwareGlade
Linux+ 9/2007 49
softwareGlade
www.lpmagazine.org
seales con sus correspondientes maneja-
dores.
Ahora debemos escribir las funciones
callback, como ejemplo mostraremos slo
una, que ser la encargada de leer el valor
de la caja de texto dnde se introduce el va-
lor de los euros, realizar la conversin a li-
bras y mostrar el correspondiente valor en la
otra caja de texto. El cdigo correspondiente
sera el siguiente (Listado 2).
Obviamente debemos tener instaladas
las correspondientes libreras para poder
realizar la compilacin y ejecucin de este
ejemplo. En concreto necesitamos las librer-
as de GTK+ y libglade incluyendo sus res-
pectivas libreras dependientes. Adems, es
necesario tanto las libreras de desarrollo co-
mo las de ejecucin (runtime). Superado este
paso ya slo nos queda compilar nuestro
programa ejemplo:
$ gcc -export-dynamic
-o conversor conversor.c
`pkg-config --cflags --libs
libglade-2.0`
Finalmente, podemos ejecutarlo y ver el resul-
tado, para ello lo lanzaremos desde la lnea
de comandos:
$ ./conversor
ConclusionesGlade es una herrramienta prctica y pro-
ductiva para escribir interfaces de usuario
utilizando GTK+. La curva de aprendizaje
no es elevada, gracias a su intuitiva inter-
faz.
Una de las claras ventajas de Glade es
la generacin del fichero XML que permite
cargar la interfaz grfica en tiempo de eje-
cucin desde distintos lenguajes de progra-
macin.
Distintos proyectos de software libre
utilizan Glade para generar las interfaces
de usuario, un ejemplo es gtkPod el popu-
lar programa que emula al iTunes de Apple
y que permite sincronizar el iPod con nues-
tro PC bajo GNU/Linux.
Si a todo esto sumamos que Glade es
multiplataforma y que es software libre, es-
tamos ante una complemento ideal para el
desarrollo de software con interfaz de usua-
rio, especialmente en GNU/Linux y para
la integracin con el entorno de escritorio
GNOME.
Figura 6. Detalle de la interfaz de gtkPod
Sitio oficial de Glade http://glade.gnome.org Sitio web de GTK+ http://www.gtk.org El popular gestor de escritorio
GNOME http://www.gnome.org Librera binding para C++
de GTK+ http://www.gtkmm.org Sitio web de PyGTK http://www.pygtk.org Ruby y GTK+ http://ruby-gnome2.sourceforge.jp
Referencias en Internet
Arturo Fernndez Montoro es Ingeniero Tcnico en Informtica de Gestin. Est especializado en desarrollo web y software libre. Colabora como autor freelance en varias revistas nacionales e internaciona-les sobre GNU/Linux.
Sobre el autor
Figura 7. Sitio oficial de Glade