Diseño de interfaces gráficas con GTK y Glade
Continuando con la serie de artículos acerca de GTK, voy a seguir con Glade. Glade es una herramienta que nos permite crear las interfaces gráficas de forma gráfica :)
Esta herramienta es parte oficial de Gnome y se integra bastante bien con Anjuta, aunque esto no viene al caso. Glade genera archivos xml, que después, de forma simple y sencilla podremos cargar en nuestra aplicación. Estos ficheros pueden tener cualquier nombre y/o extensión, aunque tal vez la extensión más usada sea .ui (de User Interface) y será la que yo utilice.
Dado que ya expliqué como se realiza la compilación para GTK en el primer artículo, no lo volveré a explicar. Si alguien tiene dudas puede consultarlo aquí.
¿Qué necesitamos instalar? Evidentemente, Glade:
$ sudo apt-get install glade
Ahora tendremos la herramienta disponible en Aplicaciones > Programación. La abrimos e indicamos que queremos utilizar GtkBuilder y que la versión del catálogo gtk+ es la 2.16. Aquí ya podemos diseñar todo aquello que se nos ocurra, la imaginación es libre.
Para este ejemplo, me voy a conformar con recrear el que hice para el artículo Diseño de interfaces gráficas con GTK. Así que creamos una nueva ventana. Para ello, en la paleta de la izquierda, dentro de 'Niveles superiores', hacemos click sobre 'Ventana'.
Nos aparecerá una ventana nueva, cuyas propiedades podremos modificar en el panel inferior de la parte derecha. Yo he utilizado los siguientes:
- Nombre: ventanaPrincipal
- Título de la ventana: Primer ejemplo GTK - Menudo Problema
- Posición de la ventana: Centrar siempre
- Anchura predeterminada: 400
- Altura predeterminada: 300
Si nos fijamos, son los mismos atributos que utilicé en el primer ejemplo, pero esta vez, se han añadido a través de la interfaz gráfica, por lo que ya no es necesario introducirlos mediante llamadas a funciones. Una vez lista la interfaz, la vamos a guardar en el mismo directorio donde estén nuestros fuentes. En mi caso, la he llamado main.ui, fichero que cargará la aplicación para generar la interfaz.
Y ahora vamos a ver el código correspondiente:
#include <gtk/gtk.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
GtkBuilder *gtkBuilder;
GtkWidget *ventanaPrincipal;
// Inicializamos de GTK
gtk_init(&argc, &argv);
// Inicializamos del constructor de interfaces, GtkBuilder
gtkBuilder= gtk_builder_new();
// Añadimos el fichero con la interfaz gráfica
gtk_builder_add_from_file(gtkBuilder, "main.ui", NULL);
// Recuperamos la ventana
ventanaPrincipal = GTK_WIDGET(gtk_builder_get_object(gtkBuilder, "ventanaPrincipal"));
// Todo esto está definido a través de Glade. Ya no es necesario
//gtk_window_set_default_size(GTK_WINDOW(ventanaPrincipal), 400, 300);
//gtk_window_set_title(GTK_WINDOW(ventanaPrincipal), "Primer ejemplo GTK - Menudo Problema");
//gtk_window_set_position(GTK_WINDOW(ventanaPrincipal), GTK_WIN_POS_CENTER_ALWAYS);
// Conectamos la señal "destroy"
gtk_signal_connect(GTK_OBJECT(ventanaPrincipal), "destroy", G_CALLBACK(gtk_main_quit), NULL);
// Se hace visible la ventana
gtk_widget_show_all(ventanaPrincipal);
// Se inicia el bucle principal de GTK
gtk_main();
return EXIT_SUCCESS;
}
Tags
La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.

