Manual de C/C++: Anjuta

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.

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:
    # apt-get install anjuta
  • abrimos Anjuta, seleccionamos Proyecto nuevo y se nos abrirá el Asistente:

    Anjuta - Asistente nuevo proyecto

  • seleccionamos el tipo de proyecto, en este caso Proyecto GNOME:

    Anjuta - Tipo de proyecto

  • definimos los datos básicos del proyecto: Nombre del proyecto (HolaMundo), Objetivo (holamundo), Autor y Lenguage (C):

    Anjuta - Datos basicos del proyecto

  • nos pedirá una Descripción de nuestro programa (Hello world con Anjuta y Glade):

    Anjuta - Descripcion del proyecto

  • todavía nos pedirá algunos datos más, como Entrada en el menú (HolaMundo), Grupo en el menú (Applications) o Icono:

    Anjuta - Mas opciones del proyecto

  • nos presentará una pantalla Resumen. Si todo está correcto presionamos Aplicar:

    Anjuta - Resumen del proyecto

  • 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:

    Anjuta - Interfaz

  • ahora podemos construir la aplicación seleccionando Construir todo. Una vez terminado podemos ejecutarla seleccionando Ejecutar y obtendremos una ventana vacía:

    Anjuta - Ejecutar

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:

    Glade

  • 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:

    Glade Propiedades

  • 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 vertical

    - Caja horizontal:


    Caja horizontal

    - Tabla:


    Tabla

    Combinando estos controles podemos crear cualquier layout en nuestra ventana:

    Distribucion

  • si la ventana va a ser de tamaño fijo podemos utilizar un layout fijo:


    Tabla

  • luego colocaremos los controles (botones, etiquetas, campos de texto, etc.) y configuraremos sus propiedades desde el panel de Propiedades (Nombre, Tooltip, etc.):

    Controles

    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:

    Arbol de controles

  • 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:

    Eventos

    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:


    About

    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:

    Hello world antes Hello world despues

Distribuir e instalar una 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

Artículos en la categoría "Manual de C/C++"

  1. Manual de C/C++: El compilador GCC
  2. Manual de C/C++: El debugger GDB
  3. Manual de C/C++: El estándar de programación GNU
  4. Manual de C/C++: Anjuta
  5. Manual de C/C++: Kdevelop

7 Comments:

  1. Hola estoy estudiando programacion y he decidido pasarme ha linux hace muy poco, esta web me ha sido realmente util y por eso les agradezco y animo a seguir con esta gran labor. Dicho esto quiero plantear una duda que no se resolver. Cuando ya tengo instalados Anjuta y Glade selecciono crear nuevo proyecto y al seleccionar gnome (tal como se muestra en el tutorial) me aparece el siguiente mensaje:

    Faltan componentes

    Se requieren algunos programas o paquetes de desarrollo importantes que faltan para construir este proyecto. Asegúrese de que están instalados adecuadamente antes de generar el proyecto.

    Faltan paquetes: libgnome-2.0 >= 2.14, libgnomeui-2.0 >= 2.14.

    He mirado en synaptic y al buscar libgenome y libgenomeui aparecen todos los paquetes como instalados.

    ¿Que puedo hacer parra solucionar el problema?

  2. ower, te está diciendo que necesitas los paquetes ‘libgnome-2.0′ y ‘libgnomeui-2.0′ en una versión igual o superior a 2.14
    Comprueba con Synaptic qué versión de esos paquetes tienes instalada y actualiza

  3. Hola de nuevo. Comento como he solucionado el problema por si a alguien le sirve en el futuro. En synaptic al buscar libgnome o libgnomeui todos los paquetes que se mostraban estaban instalados asi que instale desde el terminal los siguientes paquetes:

    sudo apt-get install libgnome-dev
    sudo apt-get install libgnomeui-dev

    Tras esto el mensaje de error ha desaparecido. Gracias por la ayuda.

  4. Aqui estoy otra vez. Ahora que todo funciona me he puesto a trabajar y tengo una duda. Creo que la version actual de glade tiene algunos cambios y no me oriento demasiado bien. Tengo una aplicacion tipo Hola mundo como la del tutorial. De los tres botones (Aceptar salir y about) me funciona salir pero no se como hacer que el boton about produzca la llamada de la ventana about. El archivo callbacks.c no muestra ningun código como el que se indica en el tutorial y creo que es porque en la configuracion de señalesn del boton se selecciona la funcion gtk_main_quit.

    En glade añado el siguiente codigo en clicked donde pone inserte texto aqui:
    gtk_widget_show(create_informacion());

    (Informacion es el nombre de mi ventana about.)

    Pero esto no añade ninguna funcionalidad al boton. Lo que no entiendo es porque el archivo callbacks no muestra ningun código nuevo (solo includes y licencia) nuevo apesar de volver a construir el proyecto. Espero vuestra respuesta.

    Gracias.

  5. saludos a todos los linuxeros… bueno yo tengo una consulta, yo quisiera saber si hay alguna forma de recibir datos por el puerto serial en glade u otro programa para linux y graficar dichos datos. si alguien me pudiera ayudar o mandar un tutorial se los agradeceria mucho…

  6. me pueden ayudar crear una total comander en c bajo linux soy nueva porfa en esto

  7. Creo que llegue tarde a este tutorial, veo ke es desde febrero-marzo del 2009 y ya estoy en el 2011, instale el anjuta en Linux Mint 10 y han cambiado algunas cosas entre las versiones del anjuta, tengo algunas dudas…

    Alguien sabe de un tutorial como este para el anjuta 2.30.1 ???

    Ower, mandame un correo: [email protected]

    salu2 a todos