C y C++ son sin duda los lenguajes de programación más extendidos:
- C:
"el lenguaje", creado para programar Sistemas Operativos, permite hacer todo tipo de cosas.
- C++:
C con objetos, un superconjunto de C.
Vamos a ver una pequeña introducción a Anjuta, uno de los IDEs más utilizados para desarrollar aplicaciones
en C/C++.
Anjuta
(anjuta.org) es un IDE (Integrated Development Environment,
Entorno integrado de desarrollo) para programar en C/C++ en Linux, que utiliza las librerías
GTK
(gtk.org, las del escritorio GNOME). Está perfectamente integrado con
Glade
(glade.gnome.org) un diseñador de interfaces gráficas
que también utiliza GTK y que puede generar código fuente o un archivo XML.
1.- Instalar Anjuta y crear un proyecto
Veamos cómo instalar Anjuta y crear un proyecto:
- instalamos Anjuta (paquete anjuta) y se instalará Glade por dependencias:
- abrimos Anjuta, seleccionamos Proyecto nuevo y se nos abrirá el Asistente:
- seleccionamos el tipo de proyecto, en este caso Proyecto GNOME:
- definimos los datos básicos del proyecto: Nombre del proyecto (HolaMundo),
Objetivo (holamundo), Autor y Lenguage (C):
- nos pedirá una Descripción de nuestro programa (Hello world con Anjuta y Glade):
- todavía nos pedirá algunos datos más, como Entrada en el menú
(HolaMundo), Grupo en el menú (Applications) o Icono:
- nos presentará una pantalla Resumen. Si todo está correcto presionamos Aplicar:
- Anjuta creará el proyecto y guardará los archivos en el directorio
~/Projects/HolaMundo. Veremos los archivos de código fuente en el panel
Proyecto, podremos editarlos en el Editor y veremos los mensajes en el panel
Mensajes:
- ahora podemos construir la aplicación seleccionando Construir todo. Una vez terminado
podemos ejecutarla seleccionando Ejecutar y obtendremos una ventana vacía:
2.- Crear la interfaz gráfica con Glade
Veamos cómo crear la interfaz gráfica con Glade (se guarda en interface.c):
- ahora vamos con la interfaz gráfica de la aplicación. Seleccionamos
Editar GUI de la aplicación y arrancará Glade. Vemos que
sólo existe una ventana (window1) y que está vacía:
- desde el panel Propiedades podremos cambiar las propiedades de todos los objetos de la GUI.
Por ejemplo, cambiemos el Título de la ventana window1:
- si el tamaño de la ventana va a ser modificable por el usuario usaremos un layout
a base de cajas colocando un control en cada celda, de manera que los controles se recoloquen al
modificar el tamaño de la ventana. Disponemos para ello de tres controles:
- Caja vertical:
- Caja horizontal:
- Tabla:
Combinando estos controles podemos crear cualquier layout en nuestra ventana:
- si la ventana va a ser de tamaño fijo podemos utilizar un layout fijo:
- luego colocaremos los controles (botones, etiquetas, campos de texto, etc.) y configuraremos
sus propiedades desde el panel de Propiedades (Nombre, Tooltip, etc.):
Nota
Conviene dar a los controles nombres descriptivos: Exit_button mejor que button5.
- el panel Árbol de controles muestra todos los objetos de nuestra ventana:
- en este punto tenemos el GUI terminado pero todavía no hace nada. Para ello, asignaremos
código a los eventos de los controles (se guardan en callbacks.c). Por ejemplo,
vamos a hacer que cuando clickemos en el botón Exit_button la aplicación
se cierre. En el panel de Propiedades de Exit_button añadimos el evento
(señal) clicked:
Ahora, si abrimos callbacks.c en el editor de Anjuta veremos que se ha añadido
la siguiente función (manejador):
void on_Exit_button_clicked (GtkButton *button, gpointer user_data) {
}
Sólo nos queda añadir (a mano) lo que queremos que haga la aplicación
al clickar en el botón Exit_button (queremos que la aplicación se cierre):
void on_Exit_button_clicked (GtkButton *button, gpointer user_data) {
gtk_main_quit();
}
Añadiremos el resto de eventos:
- evento destroy del objeto window1 (si nos olvidamos este evento,
cuando hagamos click en el botón Cerrar de la ventana ésta se cerrará
pero la aplicación no terminará ¡seguirá ejecutándose!):
void on_window1_destroy (GtkObject *object, gpointer user_data) {
gtk_main_quit();
}
- evento clicked del objeto Aceptar_button (esta es la parte que hace algo,
aunque no mucho):
void on_Aceptar_button_clicked(GtkButton *button, gpointer user_data) {
GtkWidget *label = lookup_widget(GTK_WIDGET(button), "Nombre_label");
GtkWidget *entry = lookup_widget(GTK_WIDGET(button), "Nombre_entry");
gchar output[50]="Hello ";
strcat(output,gtk_entry_get_text(GTK_ENTRY(entry)));
gtk_label_set_text(GTK_LABEL(label),output);
}
- para añadir a nuestro proyecto una ventana About insertaremos un control
Diálogo Acerca de:
Y añadiremos el evento clicked del objeto About_button
(llamamos a la función create_aboutdialog1 de interface.c):
void on_About_button_clicked (GtkButton *button, gpointer user_data) {
gtk_widget_show(create_aboutdialog1());
}
- una vez terminada la GUI en Glade seleccionamos Construir y salimos guardando los cambios.
- volvemos a Anjuta y compilamos seleccionando Construir todo. Una vez que termine
ejecutamos la aplicación seleccionando Ejecutar:
3.- Distribuir e instalar nuestra aplicación
Veamos cómo distribuir e instalar nuestra aplicación:
- para instalar la aplicación en nuestra máquina seleccionaremos Instalar.
- para generar el archivo HolaMundo-0.1.tar.gz listo para distribuir (contiene
código fuente) seleccionaremos Construir distribución.
- para instalar nuestra aplicación en otra máquina realizaremos los mismos pasos que
con cualquier otro tar.gz de código fuente:
# ./configure
# make
# make install