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