LibGlademm es una librería que permite utilizar, desde el ejecutable, el archivo que genera Glade (el cual es un archivo XML de extensión .glade). Pero inicialmente muchos de los ejemplos de código que uno encontraba en Internet no compilaban adecuadamente desde Cygwin bajo Windows.#include <libglademm/xml.h>
#include <gtkmm.h>
#include <iostream>
#include <iomanip>
#include <sstream>
#include <sigc++/retype_return.h>
#include "oebeditor.h"
//using namespace std;
oebeditor::oebeditor()
{
Gtk::VBox *vboxMain;
// Tamaño y título de la ventana
set_title("Prueba");
resize(770,500);
// Prepararse para cargar el archivo .glade
try
{
// Nota: Desde Glade, es necesario ponerle la propiedad "visible"
// en falso a la ventana (window) principal del .glade, o sino en
// este punto se mostrarán dos ventanas a la vez.
refXml = Gnome::Glade::Xml::create("oebeditor.glade");
refXml->get_widget("vboxMain", vboxMain);
vboxMain->reparent(*this);
}
catch(const Gnome::Glade::XmlError& ex)
{
std::cerr << ex.what() << std::endl;
}
if(vboxMain)
{
Gtk::MenuItem* pMenuItem = 0;
// ---------------------------------------------------------------
// Se conecta cada opción del menú con un método que será invocado
// cuando el usuario seleccione dicha función
// Abrir proyecto
refXml->get_widget("menu_abrir", pMenuItem);
if(pMenuItem) pMenuItem->signal_activate().connect( sigc::mem_fun(*this, &oebeditor::on_abrir_activate) );
// Salir
refXml->get_widget("menu_salir", pMenuItem);
if(pMenuItem) pMenuItem->signal_activate().connect( sigc::mem_fun(*this, &oebeditor::on_salir_activate) );
}
}
oebeditor::~oebeditor()
{
}
/* ---------------------
CREAR NUEVO PROYECTO
--------------------- */
void oebeditor::on_nuevo_activate()
{
}
/* ---------------------
ABRIR NUEVO PROYECTO
--------------------- */
void oebeditor::on_abrir_activate()
{
// --------------------------------------
// Pregunta al usuario dónde se encuentra
// el proyecto a abrir
// --------------------------------------
abrirproyecto* p = new abrirproyecto();
p->set_transient_for(*this);
p->show_it();
//p->set_transient_for(*this);
}
/* ---------------------
CERRAR PROYECTO
--------------------- */
void oebeditor::on_cerrar_activate()
{
}
/* ---------------------
GUARDAR
--------------------- */
void oebeditor::on_guardar_activate()
{
}
/* ---------------------
GUARDAR COMO
--------------------- */
void oebeditor::on_guardarcomo_activate()
{
}
/* ---------------------
PROPIEDADES
--------------------- */
void oebeditor::on_propiedades_activate()
{
}
/* ---------------------
SALIR
--------------------- */
void oebeditor::on_salir_activate()
{
// TO DO: verificar si el proyecto no ha sido guardado
hide();
}
int main (int argc, char *argv[])
{
// This main function merely instantiates the ogcalc class
// and displays it.
Gtk::Main kit(argc, argv); // Initialise GTK+.
oebeditor window; // Create an ogcalc object.
kit.run(window); // Show window; return when it's closed.
return 0;
}
#include <gtkmm.h>
#include <libglademm.h>
#include "abrirproyecto.h"
class oebeditor : public Gtk::Window
{
public:
oebeditor();
virtual ~oebeditor();
void on_abrir_activate();
void on_salir_activate();
protected:
Glib::RefPtr<Gnome::Glade::Xml> refXml;
//Gtk::Window* pWindow;
// Glade interface description.
Glib::RefPtr<Gnome::Glade::Xml> xml_interface;
};
Creo en un mundo sin pobreza ni desigualdad. Creo que la tecnología debe usarse para construir ese mundo, y no para ampliar las brechas entre unos y otros. Y tú, ¿qué piensas?