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.
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.
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 */
/* Crea el spin_button */
/* Ajusta las características del spin_button */
spinner_adj = (GtkAdjustment *) gtk_adjustment_new (0.0, -1e300, 1e300, 1, 0.1, 0.1);
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.
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").