Sunteți pe pagina 1din 8

software Glade

Glade
Arturo Fernndez Montoro

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.

uando nos planteamos el desarrollo de aplicaciones software con interfaz grfica de usuario es importante elegir una herramienta que permita al equipo ser productivo en este aspecto, ya que el diseo y produccin de la interfaz grfica 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 aplicaciones 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 programacin 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 especialmente 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

linux@software.com.pl

Lo que deberas saber...


Conocimientos bsicos de programacin con interfaces de usuario Conocimientos bsicos de programacin en C Conocimientos bsicos de GTK+

42

Linux+ 9/2007

software Glade
sistema de instalacin detectar las dependencias necesarias e instalar los paquetes que proceda de forma automtica. No obstante, si deseamos instalar Glade desde los fuentes podemos hacerlo accediendo al sitio web de Glade, descargarnos los mismos y realizar la compilacin de forma manual. De esta forma podemos elegir la versin que deseemos. En primer lugar deberemos instalar el software del que depende Glade. Si utilizamos 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 software: 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 programadores 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 programadores utilizarn junto a la librera libglade para cargar las interfaces en tiempo de ejecucin. Para la mayora de las distribuciones de Linux existen paquetes binarios para realizar 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: Libreras de GTK+ (mnimo versin 2.10) GLib Pango Atk libxml (mnimo versin 2.4.1)

Figura 1. Iniciando Glade 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 utilizando el popular IDE Anjuta, la ltima versin del mismo integra Glade, de forma que no es necesario que usemos dos programas distintos para escribir nuestras aplicaciones. Dado que la mejor forma de conocer Glade es trabajar con l, comenzaremos viendo cmo instalarlo en nuestro PC.

Este software puede encontrarse tambin como paquetes binarios en nuestra distribucin de Linux. Antes de proceder a instalarlo, podemos comprobar si ya lo tenemos instalado, dado que se trata de libreras 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

Instalacin

Antes 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 diferentes, ya que la versin 3 se ha reescrito partiendo de cero y el cdigo es completamente nuevo. Funcionalmente son muy parecidas # apt-get install glade con la excepcin de que la nueva versin Y en el caso de Ubuntu:

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",

En este artculo aprenders...


Qu es Glade Cmo construir interfaces grficas con Glade A desarrollar aplicaciones para GTK+ con interfaz grfica

$ sudo apt-get install glade

"window1", NULL); 8 glade_xml_signal_ autoconnect(xml); gtk_main(); 11 } return 0;

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

www.lpmagazine.org

43

software Glade
Editor de propiedades: Aqu fijaremos las propiedades de cada elemento de la interfaz y podremos aadir lo necesario 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.

Widgets
Podemos definir un widget como un elemento de la interfaz grfica de usuario. Un botn, una caja de texto, un desplegable y una etiqueta son ejemplos de widgets. GTK+ nos ofrece un rico conjunto de widgets, adems de los mencionados contamos, entre otros, con barras de scroll horizontal y vertical, pestaas de separacin, diferentes tipos de botones, botones de seleccin mltiple y botones de nica seleccin.

Figura 2. Diferentes cuadros de dilogo que podemos crear con Glade


/sources/glade3/3.2/glade33.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

rea de diseo: Es el espacio utilizado para construir la interfaz grfica. A esta rea de trabajo arrastraremos los diferentes elementos de la interfaz. Paleta: Aqu encontramos todos los elementos necesarios para contruir una interfaz grfica que Glade pone a nuestra disposicin, como por ejemplo, distintos tipos de botones, cajas de texto, elementos desplegables (combos), etiquetas y barras de desplazamiento. Inspector: Visualiza informacin sobre los elementos de la interfaz que estamos utilizando en nuestro proyecto.

Contenedores
Por otro lado, GTK+ utiliza tambin el concepto de contenedores que son elementos de interfaz que sirven para agrupar y empaquetar a los widgets. Los contenedores son necesarios en GTK+ porque todos los widget que forman parte de la interfaz deben encontrarse empaquetados. Esta tcnica de empaquetado, permite por ejemplo, que para el programador sea transparente la adaptacin del tamao de los widgets como consecuencia de un redimensionamiento por parte del usuario, ya que, la

Podemos comprobar la correcta instalacin de Glade accediendo a la correspondiente opcin de men de nuestro entorno de escritorio, habitualmente en Grficos en GNOME, o utilizando la lnea de comandos, ejecutando:
$ glade-3

La interfaz

Glade 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 funcionalidades de Glade referentes a los proyectos, ficheros, edicin, tipos de vistas Figura 3. Seleccionando un icono para un botn y ayuda.

44

Linux+ 9/2007

software Glade
adaptacin es automtica gracias a esta tcnica. 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 widgets a su vez. Como mnimo una aplicacin debe contener una ventana. Caja vertical (Vertical box): Permite agrupar widgets con una orientacin vertical. Es prctico, por ejemplo, cuando queremos colocar una etiqueta y al lado una caja de texto. Caja horizontal (Horizontal box): Similar al anterior pero con orientacin horizontal. Nos permite agrupar elementos uno debajo del otro. mite seleccionar un color de una paleta Barra de herramientas (Tool bar): Permite dada. aadir iconos. Seleccin de ficheros (File Chooser Dialog): Ventana con scroll (Scrolled window): VenSe utiliza para mostrar al usuario el sistetana que permite realizar desplazamienma de ficheros y que el mismo pueda tos (scroll). seleccionar uno o varios ficheros. Seleccin de fuentes (Font Selection Dia- Visualizacin y control (Control and Display) log): A travs del mismo podemos el usuario puede seleccionar una fuente (tipo Botn (Button): Tpico botn dnde pode letra) instalada en el sistema. demos seleccionar, entre otras propiedade, un icono. Existen varios predefeOtros widgets dentro de este grupo son los nidos, como son, por ejemplo, el tick de cuadro de dilogos que permiten seleccionar OK y o la cruz de Cancelar. el dispostivo de entrada (Input Dialog) y crear Botn de comprobacin (Check button): Boun mensaje (Message Dialog). tn que tiene dos estados, marcado y sin marcar. Contenedores (Containers) Botn de seleccin (Radio button): Permite seleccionar una opcin u otra, es mutua Caja horizontal (Horizontal box): Este es mente excluyente. uno de los contenedores principales de Botn de seleccin de ficheros (File ChooGlade que nos permite situar dentro del ser button): Da acceso a un cuadro de dimismo diferentes tipos de widgets horizontalmente. 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 varias 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. logo para seleccionar uno o varios ficheros 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 vertical.

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 usuario.

Tipos de widgets y contenedores


A continuacin veremos una clasificacin de widgets y contenedores basndonos en la organizacin que nos da Glade en la ventana 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 contenedor bsico y representa una ventana tpica de aplicacin. Utilizaremos este contenedor para alojar la mayora de los widgets. Cuadro de dilogo (Dialog box): Contenedor que se utiliza para interactuar con el usuario requiriendo su intervencin. Acerca de (About box): Otro contenedor para crear el tpico mensaje de "Acerca de...". Tambin es posible crear este dilogo utilizando el contenedor anterior, sin embargo, la ventaja del About box es que ya tenemos unos widgets bsicos insertados para crear el mensaje. Seleccin de color (Color Selection Dialog): Este cuadro de dilogo nos per- Figura 4. Conversor

www.lpmagazine.org

45

software Glade
finicin de la interfaz con varios lenguajes de programacin. Actualmente es posible combinar Glade con los siguientes lenguajes: Figura 5. Detalle del rbol de widgets del proyecto de software libre gtkPod, realizado con Glade Desplegable (Combo box): Muestra al usuario un desplegable con varias opciones para que el usuario pueda seleccionar una. Barra de progreso (Progress bar): til para mostrarle al usuario el progreso de una accin. Calendario (Calendar): Muestra un calendario. rea de dibujo (Drawing area): Marca un rea para que el usuario pueda dibujar. 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 elemento 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 manejadores de seales que nos ayuden a reponder 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. 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 tecnologa Mono. Java: El lenguaje orientado a objetos desarrollado por Sun Microsystems. Python: Uno de los lenguajes interpretados 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 objetos y multiplataforma. Perl: Un clsico de la programacin. Schem: Dialecto de LISP.

Otro grupo son los GTK+ obsolete que referencian a widgets obsoletos de versiones anteriores, pero que se muestran para garantizar la compatibilidad con proyectos antiguos que tengamos desarrollados.

Proyectos

Para utilizar un lenguaje diferente a C necesitaremos utilizar un binding, es decir, una librera intermedia que encapsula el acceso a una librera escrita en un lenguaje desde otro. Los lenguajes anteriormente disponibles 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 necesarios para cada binding en funcin del lenguaje, como ejemplo nos ceiremos a la distribucin Debian Etch y a los lenguajes Ruby, Perl y Python:
# apt-get install libgtk2-ruby # apt-get install libgtk2-perl # apt-get install python-gtk2

Glade utiliza el concepto de proyecto para agrupar todos los elementos de la interfaz que estamos diseando y que habitulamente 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 proyectos de forma similar a como trabajan los Lenguajes de programacin IDE's de desarrollo. Desde el men de Gla- Dado que Glade genera un fichero XML con de tenemos acceso a la opcin Proyectos. la descripcin de la interfaz y que gracias a libglade podemos cargar en tiempo de ejeSeales y eventos cucin dicha interfaz, podemos utilizar disGTK+ est orientado a eventos, por lo tan- tintos lenguajes para escribir aplicaciones to es necesario comprender este concepto GTK+. De hecho, podemos reutilizar la de-

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 prctico

En general, el proceso de desarrollo de aplicaciones GTK+ utilizando Glade, consta de las siguientes fases:

46

Linux+ 9/2007

software Glade
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. la ventana propiedades de cada uno de estos widgets y escribimos el texto en cuestin. Cada vez que hacemos click sobre un widget se activa la ventana de propiedades correspondiente al mismo. Respecto al empaquetado mantedremos el que viene por defecto, y veremos que ajustando 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 propiedades relativas a las seales para los botones que est relacionado con la lgica de negocio 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:

Acrnominos y abreviaturas
GTK: Gimp ToolKit. IDE: Entorno Integrado de Desarrollo. 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 nuestra 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:

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 conversin de euros a libras esterlinas y viceversa. La interfaz de nuestra aplicacin contendr 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, la pestaa Seales y aadimos la seal #include <glade/glade.h> as pues hacemos click sobre este widget del delete_event. A esta seal le asignaremos static GladeXML *xml; grupo Toplevels de la paleta y vermos cmo el manejador llamado gtk_main_quit. El aparece la ventana en cuestin. El segundo objetivo es que cuando el usuario pulse La ltima lnea es la declaracin de la variacontenedor que agrupar al resto es una caja sobre el botn de cierre, la aplicacin ble que representa a la interfaz. La hemos vertical, cuando pichemos sobre la misma, termine su ejecucin. declarado como global por simplicidad Glade nos preguntar sobre el nmero de En el primer botn aadiremos la seal para poderla utilizar directamente en las columnas, le indicamos que vamos a utilizar clicked y le asociamos el manejador on_ rutinas callbacks. tres. Seguidamente aadiremos otra caja button_clicked. Este ser el nombre de la La funcin principal de nuestro prograhorizontal con dos columnas, dnde una de rutina callback que deberemos escribir ma contendr el siguiente cdigo (Listaellas nos servir para aadir la etiqueta con y que se ejecutar como respuesta al pul do 1). el valor EUR y otra la utilizaremos para sado del botn. En la lnea 6 cargamos el fichero genela caja de texto dnde el usuario introdu- De forma similar al anterior procede- rado por Glade y que contiene la interfaz. cir le importe que desee convertir. En la mos para el otro botn. En este caso Seguidamente utilizamos una funcin paparte central de la ventana aadiremos una cambiaremos el nombre del maneja- ra conectar automtica y directamente las caja vertical que contendr dos botones diferentes, uno para realizar la conversin de Listado 2. Funcin callback que se ejecuta como respuesta al evento que sucede euros a libras y otro para convertir de libras a euros. Ya slo nos queda aadir otra caja cuando se pulsa un botn horizontal con dos columnas con una caja void on_button_clicked(GtkButton *button, gpointer user_data) de texto y una etiqueta de manera similar { a la anterior. GtkWidget *entry1; Resumiendo, tenemos los siguientes GtkWidget *name_entry; widgets: GtkEntry *txt; 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.
GtkEntry *txt2; char *cad = NULL;

En la ventana principal, seleccionamos #include <gtk/gtk.h>

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); }

El siguiente paso es fijar las propiedades de los widgets a travs de la ventana Propiedades. En nuestro ejemplo, slo fijaremos el texto de las etiquetas y el de los botones. Para ello accedemos a la pestaa General de

48

Linux+ 9/2007

software Glade

Sobre el autor
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 internacionales sobre GNU/Linux.

seales con sus correspondientes manejadores. 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 valor de los euros, realizar la conversin a libras 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 libreras de GTK+ y libglade incluyendo sus respectivas libreras dependientes. Adems, es necesario tanto las libreras de desarrollo como 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`

Figura 7. Sitio oficial de Glade

Finalmente, podemos ejecutarlo y ver el resulUna de las claras ventajas de Glade es tado, para ello lo lanzaremos desde la lnea la generacin del fichero XML que permite de comandos: cargar la interfaz grfica en tiempo de ejecucin desde distintos lenguajes de progra$ ./conversor macin. Distintos proyectos de software libre Conclusiones utilizan Glade para generar las interfaces Glade es una herrramienta prctica y pro- de usuario, un ejemplo es gtkPod el popuductiva para escribir interfaces de usuario lar programa que emula al iTunes de Apple utilizando GTK+. La curva de aprendizaje y que permite sincronizar el iPod con nuesno es elevada, gracias a su intuitiva inter- tro PC bajo GNU/Linux. faz. Si a todo esto sumamos que Glade es multiplataforma y que es software libre, estamos ante una complemento ideal para el desarrollo de software con interfaz de usuario, especialmente en GNU/Linux y para la integracin con el entorno de escritorio GNOME.

Referencias en Internet
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

Figura 6. Detalle de la interfaz de gtkPod

www.lpmagazine.org

49

S-ar putea să vă placă și