Mostrando entradas con la etiqueta goocanvasmm documentation. Mostrar todas las entradas
Mostrando entradas con la etiqueta goocanvasmm documentation. Mostrar todas las entradas

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/