
Creación de
aplicaciones
gráficas con Glade
Cuando creamos un programa, por
ejemplo en C, tenemos un programa que
se ejecuta en una terminal y que solo muestra texto.
Si queremos crear
una aplicación gráfica, en Windows es fácil con el
Visual
Basic (aunque también tiene sus muchos inconvenientes).
En
GNU/Linux es también muy fácil con Glade o con Glade2
(Glade me da problemas al compilar el código, pero como Glade2
funciona perfectamente...). En
Guadalinex, en el gestor de paquetes, es tan fácil como pinchar
en el paquete para que se instale, o si no directamente en http://glade.gnome.org.
Con Glade lo que hacemos es
crear una ventana, añadirle botones,
añadirle entradas y salidas de datos, menues, etc. A
continuación guardamos los datos y pinchamos para que construya
el código fuente. Ahora compilamos
dicho código fuente y ya tenemos nuestra aplicación
gráfica, que lógicamente no hace nada. Ahora
es cuando tenemos que escribir el código de lo que realmente
hace el
programa... Lo importante es que Glade nos crea la interfaz
gráfica en lenguaje C, por tanto el resultado es un programa
íntegramente escrito en C.
Este estupendo manual escrito por Eddy
Ahmed y traducido por Waldo
Ramírez te
enseñará paso a paso
cómo usar Glade.
Mostrar resultados numéricos
Si quieres que tu programa
muestre un número, aquí tienes
un ejemplo sencillo. El programa calcula el factorial de 10. El
resultado lo muestra a través de una etiqueta.
Primero crea en Glade el
programa. Por ejemplo ponle una etiqueta que
diga lo que hace el programa, otra para mostrar el resultado, un
botón para calcular y otro para salir.
El código que tienes que
poner en la función
on_button1_clicked es:
void
on_button1_clicked (GtkButton *button,
gpointer user_data)
{
/* Creamos un puntero de tipo GtkWidget llamado etiqueta que apunta a label2, que es la etiqueta
por donde saldrá el resultado */
GtkWidget * etiqueta = lookup_widget(GTK_WIDGET(button),"label2");
/* Creamos un vector de tipo cadena para guardar el número como una cadena de caracteres */
gchar eti[50];
/* Código del factorial*/
int i;
double id, x;
x=1;
for (i=1;i<=10;i++) {
id=i;
x=x*id;
}
/* sprintf pasa el número x a la cadena de caracteres eti */
sprintf(eti,"%e\n", x);
/* gtk_label_set_text escribe eti en label2, usando el puntero etiqueta */
gtk_label_set_text(GTK_LABEL(etiqueta),eti);
}
Si lo prefieres aquí
tienes el programa
entero (377,7 Kib).
Ábrelo con Anjuta o si no abre una terminal, entra en el
directorio y teclea make
para compilarlo. En el directorio src
estará el ejecutable.
Obtener números
Si quieres que tu programa lea
un número que introduce el
usuario, lo mejor es usar una entrada numérica, llamada
spin_button. En Glade
2.6.0 no existe ese icono (o al menos yo no lo
encontré), así que hay que
escribir el código manualmente).
Aquí está el
código que tienes que escribir en el
fichero interface.c.
Primero crea tu programa con
Glade, porque si
luego quieres modificar algo, Glade te borra lo que hayas puesto
tú. Escríbe el código en el lugar adecuado
(compara con el código que te creó Glade).
GtkWidget *spin_button1;
GtkAdjustment *spinner_adj;
/* Depende del orden en que lo pongas entre las cajas verticales, irá en un sitio o en otro */
/* Ajusta las características del spin_button */
spinner_adj = (GtkAdjustment *) gtk_adjustment_new (0.0, -1e300, 1e300, 1, 0.1, 0.1);
/* Crea el spin_button */
spin_button1 = gtk_spin_button_new (spinner_adj, 0.001, 6);
gtk_widget_show (spin_button1);
/* Le dice dónde mostrarlo */
gtk_box_pack_start (GTK_BOX (vbox1), spin_button1, TRUE, TRUE, 0);
/* Permite que se pueda llamar mediante lookup_widget() */
GLADE_HOOKUP_OBJECT (window1, spin_button1, "spin_button1");
Ahora para poder usar
el número en callbacks.c
escribe, en la función donde te
haga falta, lo siguiente:
/* Creamos un puntero de tipo GtkWidget llamado entrada_numerica que apunta a spin_button1 */
GtkWidget * entrada_numerica = lookup_widget(GTK_WIDGET(button),"spin_button
gdouble x;
/* Obtenemos el valor del spin_button */
x=gtk_spin_button_get_value(entrada_numerica);
/* Y ya tenemos el número almacenado en la variable x */
Si lo prefieres aquí
tienes el programa
entero (378,4 Kib).
Ábrelo con Anjuta o si
no abre una terminal, entra en el directorio y teclea make para
compilarlo. En el
directorio src
estará el ejecutable.
Un ejemplo un poco más
practico: calcular el factorial de un
número
Ahora resulta muy fácil
hacer un programa que calcule
el factorial de un número que introduzca el usuario. Aquí
tienes el programa
entero (378,5 Kib).
Ábrelo con Anjuta o si
no abre una terminal, entra en el directorio y teclea make para
compilarlo. En el
directorio src
estará el ejecutable.
Puse código de
control para evitar números negativos y para calcular
corrctamente el factorial de cero, pero no para evitar números
reales ni tampoco para avisar de overflow (suele poner "inf").
