Creación del Proyecto GTK Básico
Proyecto Genérico c++ con paquetes externos
Una
segunda forma de realizar el proyecto GTKmm básico, es
partiendo de un proyecto C++ Genérico, pero incluyendo la
opciónconfigurar paquetes externos.
Nos aparecerá una ventana adicional para introducir el nombre del paquete:
No
importa mucho, que en ese momento no nos acordemos del nombre de la
librería, lo importante es que Anjuta va a configurar el
proyecto para que al incluir las librerías necesarias, no
obtengamos errores.
Al autogenerar, nos dará un problema (A en el gráfico): no encuentra nuestra librería "noimportamucho".
Entonces
accedemos a la ventana propiedades del Proyecto
[Proyecto->Propiedades], y en la pestaña paquetes podremos
quitar "noimportamucho" y añadir el paquete correcto
[gtkmm-2.4]. Al pulsar añadir paquete encontramos todos los
paquetes disponibles, y la certeza de incluir la versión
correcta.
Una vez realizado esto al autogenerar no habrá problemas.
Vamos a
reeditar el archivo main.cc con el siguiente código: // Incluir la libreria gtkmm.h
#include <gtkmm.h>
// Incluir la librería que nos permite usar GString
#include <glib.h>
int main(int argc, char *argv[])
{
GString * mensaje; //declaración de la cadena mensaje
mensaje = g_string_new( "Hola "); // primera asignación a la cadena mensaje
if (argc>1)
{
g_string_append(mensaje, argv[1]); //si existe un argumento
añade a Hola, el primer argumento.
}else{
g_string_append (mensaje, "DESCONOCIDO");// si no hay argumentos el
mensaje es Hola DESCONOCIDO
}
Gtk::Main programa(argc, argv); // Crear un objeto Main de Gtk, obligatorio en todo proyecto GTKmm
Gtk::Window miventanica;// Crear un objeto Window de Gtk -la ventanica -
miventanica.set_title(mensaje->str);// establece el título
programa.run(miventanica);// Echar a correr nuestra ventana
return 0;
}Al ejecutarlo la salida es igualmente una ventanica (200*200), donde hemos modificado el título de la ventana.
Explicación código
Cuando nosotros escribimos en un terminal:
nombre_programa -p 12 -q 4El sistema ejecuta la función
main con la variable
argc,
de tipo entero, indicando el número de argumentos ( 5 en nuestro
caso). Y cada uno de estos argumentos va como cadenas de
caracteres (aunque se traten de números). Así,
argv[0]= "/directorio/nombre_programa"
argv[1]= "-p"
argv[2]= "12"
argv[3]= "-q"
argv[4]="4"
#include <glib.h>GString * mensaje;C++, no incluye "de serie" el tipo cadena (string) [no podía
ser
perfecto], así que para manipularlas de forma
fácil (sin
preocuparnos por la gestión de memoria) he declarado un objeto GString, definido en glib.h.
Exactamente, declaramos un puntero a un objeto, pero de las variables
puntero hablaremos con mayor extensión en apartados posteriores.
mensaje = g_string_new( "Hola ");if (argc>1) { g_string_append(mensaje, argv[1]); }else{ g_string_append (mensaje, "DESCONOCIDO"); } Inicializamos el objeto GString con la cadena
Hola
y, posteriormente, en función de si existen o no existen
argumentos, añadimos el primer argumento a la cadena anterior o,
en el caso que no existan argumentos "DESCONOCIDO", de tal suerte que
si al ejecutarlo como parámetros añadimos
Pablo, la cadena resultante será
Hola Pablo y si no existen parámetros será
Hola DESCONOCIDOmiventanica.set_title (mensaje->str);Entre
la declaración del objeto Window (Gtk::Window miventanica;) y el
lanzamiento de la aplicación Gtk::Main, hemos incluido el código que configura nuestro interfazEn este caso solo una línea de
código que modifica el título de la ventana.
Esta función, set_title, recibe como
argumento una cadena de caracteres.