martes, 24 de julio de 2012

Primer contacto con Goocanvasmm

      En estos días he estado buscando entre los paquetes de Debian alguno que me sirva para crear objetos visuales e interactivos con Gtkmm sin tener que partirme los huevos con sus maricones canvas intratables. En fin he conseguido uno me que me ha maravillado: Goocanvasmm. Esta biblioteca nos permite crear figuras geométricas e imágenes responsivas a eventos (mouse, teclado, etc) de una forma muy sencilla.

Instalando goocanvasmm

Para instalarlo entra a synaptic (o en el gestor de paquetes de tu distro) y escribes "goocanvasmm". Instala el paquete de desarrollo (-dev) y la documentaci'on (-doc). En Debian se ve así:


Configurando Eclipse para goocanvasmm

Para hacerlo puedes ingresar en esta entrada.



Primer programa

Vamos a hacer un programa simple que muestre un cuadro azul y responda al clickeo con un mensaje en consola.


#include <gtkmm.h>
#include <goocanvasmm.h>
#include <cairomm/cairomm.h>
#include <iostream>

using namespace Goocanvas;
using namespace Glib;
using namespace std;


// ventana principal
class Simple : public Gtk::Window
{
public:
    Simple(){
        // Asigna un tamaño a la plantilla raiz
        lienzoCuadrado.set_size_request(640, 480);

        // Establece la ubicación de la plantilla en la pantalla
        lienzoCuadrado.set_bounds(0, 0, 800, 800);

        // Retorna el item root de la plantilla
        RefPtr<Item> root = lienzoCuadrado.get_root_item();

        // Crea un cuadrado y lo asigna a lienzo, recuerda que
        // el lienzoCuadrado solo es el contenedor
        RefPtr<Rect> cuadrado = Rect::create(100, 100, 450, 450);

        // Agrega el cuadrado a la plantilla
        root->add_child(cuadrado);

        // Asigna el color interno del cuadrado
        cuadrado->property_fill_color().set_value("blue");

        // Asocia la señal de clickeo del cuadrado con el método
        // cuadrado_clicked() del objeto actual
        cuadrado->signal_button_press_event ().connect (sigc::mem_fun (this,
                &Simple::cuadrado_clicked));
        
        // Agrega el lienzo a la ventana actual
        add(lienzoCuadrado);
        show_all_children();
    }
    
    /** Método que se ejecuta cuando se clickea el cuadrado **/ 
    bool cuadrado_clicked(const RefPtr<Item>&, GdkEventButton*){
        cout << "Has clickeado el cuadrado" << endl ;    
        return true ;
    }    
protected:
    // Lienzo contenedor del cuadrado
    Canvas lienzoCuadrado;
};


int main(int argc, char* argv[]){
  Gtk::Main app(&argc, &argv) ;
  
  // Inicializa goocanvas. Es necesario en todo programa que use esta biblioteca 
  Goocanvas::init("Ejemplo simple goocanvasmm", "1.0", argc, argv) ;
  
  Simple ventana ;
  
  Gtk::Main::run(ventana) ;
}

El resultado es este:




Puedes descargar el fichero del ejemplo desde aquí. En el directorio en el cual se instaló la documentación de goocanvasmm (en mi caso "/usr/share/doc/goocanvasmm/examples") encontraras varios ejemplos. También los puedes descargar de aquí. Otros Links útiles: // Referencia de la biblioteca http://developer.gnome.org/goocanvasmm/1.90/

No hay comentarios:

Publicar un comentario