martedì 3 marzo 2009

Primi passi con Glade e gtkmm

Oggi ho cominciato a fare qualche piccolo esperimento con Anjuta, Glade e GTKmm.
Dopo aver creato una form con due pulsanti, ho creato un gestore di eventi minimale:

struct Gestore
{


Gestore(Glib::RefPtr<Gnome::Glade::Xml> &the_xml)
{

dynamic_cast
<Gtk::Button*>(the_xml->get_widget("button_due"))->signal_clicked().connect( sigc::mem_fun(*this, &Gestore::on_click_due) );

dynamic_cast
<Gtk::Button*>(the_xml->get_widget("button_uno"))->signal_clicked().connect( sigc::mem_fun(*this, &Gestore::on_click_uno) );
}


void
on_click_due()
{

cout << "Click sul bottone DUE!!!" << endl;
}


void
on_click_uno()
{

cout << "Click sul bottone UNO!!!" << endl;
}
};


A questo punto, ecco il main (generato da Anjuta) con l'aggiunta del mio gestore:


int
main (int argc, char *argv[])
{


Gtk::Main kit(argc, argv);
Gestore *gestore;

//Load the Glade file and instiate its widgets:
Glib::RefPtr<Gnome::Glade::Xml> refXml;
try


{

refXml = Gnome::Glade::Xml::create(GLADE_FILE);

gestore = new Gestore(refXml);
}

catch
(const Gnome::Glade::XmlError& ex)
{


std::cerr << ex.what() << std::endl;
return
1;
}


Gtk::Window* main_win = 0;
refXml->get_widget("main_window", main_win);

if
(main_win)
{

kit.run(*main_win);
}

delete
gestore;

return
0;
}

Nessun commento: