Crear aplicaciones gráficas en GTK+ o GNOME

Después de buscar durante un rato un programa medianamente sencillo para crearme una aplicación con sus ventanitas, sin tener que aprenderme como funcionan las X11, o sin volverme loco para compilarlo o poder meter mi código cuando pulso el botón que me he diseñado y haga 'X'.
Así que por fin encontré glade, una aplicación con la que te puedes ir diseñando ventanas, con sus etiquetas, sus botones, sus entradas de texto, y más cosillas para hacer una aplicación decentilla.
Empecemos con cómo conseguirla; con un simple:
$ apt-get install glade-2 glade-3
es suficiente. Aunque tienen una última versión que te la puedes descargar desde aquí, y luego instalarla. ¿Cómo? Pues así: descoprimes la carpeta, abres un terminal y haces:
$ cd <carpeta_descomprimida>
$ ./configure
$ make
$ make install
y ya tenemos la última versión instalada. Ahora con ejecutarla desde Aplicaciones -> Programación -> Diseñador de interfaces Glade o:
$ glade-3
se nos abrirá el diseñador de ventanas.

Deberéis jugar durante un ratito para que las ventanas os empiecen a quedar bonitas, y haceros una idea de cómo van las cosas. Un consejillo, antes de empezar a hacer nada, lo primero sería en vuestra cabeza haceros un crokis o en un papel de cómo queréis que sea vuestra ventana, luego dividir la ventana en una cuadricula de NxN, y en cada cuadrícula ir poniendo lo que queráis.
Ahora a lo importante, ¿Cómo demonios hago para que esto funcione? Bien, pues se puede hacer de varias maneras:
- glade-3: por lo que he leído, para esta nueva versión, para compilar tu programa debes usar la librería libglade, y hacer no se qué con phyton,y como yo no conozco ese lenguaje pues me ponía bastantes más trabas de las que yo estaba buscando. Pero por favor, para todo aquel que llegue por aquí y sepa cómo se hace, como crear un programita tonto para empezar (no pido que nadie me enseñe python), pero si me podéis echar una manita, nunca es tarde para aprender.
- glade-2: entonces, visto lo visto, pues me busqué las vueltas, y descubrí que glade-2 (por eso lo puse arriba para que también se os instale), tiene un botoncito maravilloso que te crea el código listo para compilar. Así que los pasos a seguir serían:
* Con glade-3 os creáis las ventanas de vuestro programa, simplemente lo gráfico (en breve paseremos a lo interesante que es meter código). Aunque con un poco de cuidado, por que como luego lo portaremos a glade-2, hay cositas (por ejemplo las ventanas de messagebox) que glade-2 no las entiende y no las introduce en el proyecto.
* Después salvais vuestor proyecto, que será un archivo.glade, y ahora abrís glade-2 y el proyecto que acabáis de salvar. Ahora veréis arriba a la derecha un botón que pone Construir o en su defecto Build. Lo pulsáis y en la carpeta dónde teníais el archivo.glade tendréis un montón de cosas. Lo imporetante es el archivo autogen.sh, que te genera el Makefile para compilar. Entráis en el directorio dónde tenéis todo ésto de lo que os hablo y hacéis:
$ ./autogen.sh
$ make
$ cd src/
* Y en estacarpetas tenemos un Makefile, varios archivos.c y archivos.h. Pues de todos estos archivos, sólo nos interesa tocar callbacks.c y callbacks.h (y sólo tocaremos, debido a que cada vez que cambiemos el aspecto físico, glade nos cambiará estos archivos excepto los que he dicho). En callbacks.h sólo pondremos las cabeceras de las funciones que creemos y en callbacks.c las desarrollaremos.
* Y para terminar hacemos:
$ make
y ya tenemos nuestro ejecutable en la carpeta src/ que funciona.
¿Y cómo hago, por ejemplo, que cuándo pulse el botón cancelar de mi programilla, éste se cierre?
Con glade-3 abierto y tu proyecto, pincha en el botón, y en las propiedades vete a señales, y ahí verás GtkButton la propiedad clicked, pues en la columna del manipulador de clicked, escribes cerrar_ventana. Salvas el proyecto, ejecutas Construir de glade-2, haces el autogen.sh, make y te dará un error de que no encuentra cerrar_ventana. Defines cerrar ventana en callbacks.h, de esta manera:
void cerrar_ventana( GtkButton *button, gpointer user_dat);
y en callbacks.c:
void cerrar_ventana( GtkButton *button, gpointer user_dat)
{
gtk_widget_hide(<nombre de cómo llamaste a tu ventana en glade-3>);
}
Y así poco a poco. No queda otra que ir jugando y ir viendo cómo funciona todo. No os preocupéis cuando no sepáis como leer el valor de un GtkEntry (que viene a ser una línea de entrada de datos por teclado) u otra cosa, por que con la ayuda de Google y poniendo gtk y el nombre de lo que necesitéis lo sacáis rápido. Yo no tenía ni idea de nada, y en un par de días me he hecho una ventanita que hace gráficamente y con botones, lo que el script qué conté el otro día sobre conocer tu IP.
Me está quedando algo así:

Ya está casi 100% terminado, me falta limar algún que otro errorcillo tonto que tengo por ahí.
Así que cualquier duda que tengáis me lo decís y yo os intento ayudar.