1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| #include <gtkmm-2.4/gtkmm.h>
#include <iostream>
#include <string>
Gtk::Window* pWindow = 0;
Gtk::Entry* pInEntry = 0;
Gtk::Entry* pOutEntry = 0;
Gtk::ComboBox* pCombo = 0;
void on_ApplyButton_clicked()
{
std::string sText;
Glib::ustring text;
Gtk::TreeModel::iterator iter = pCombo->get_active();
Gtk::TreeModel::Row row = *iter;
sText = pInEntry->get_text();
row.get_value(0, text);
pOutEntry->set_text(sText+" "+text);
pInEntry->set_text("<Insert Text>");
}
void on_ComboBox_changed()
{
Glib::ustring text;
Gtk::TreeModel::iterator iter = pCombo->get_active();
Gtk::TreeModel::Row row = *iter;
row.get_value(0, text);
std::cout << "ComboBox changed to " << text << std::endl;
}
int main (int argc, char **argv)
{
Gtk::Main kit(argc, argv);
Glib::RefPtr<Gtk::Builder> refBuilder = Gtk::Builder::create();
try
{
refBuilder->add_from_file("foobar.xml");
}
catch(const Gtk::BuilderError& ex)
{
std::cerr << ex.what() << std::endl;
return 1;
}
refBuilder->get_widget("FoobarWindow", pWindow);
refBuilder->get_widget("InEntry", pInEntry);
refBuilder->get_widget("OutEntry", pOutEntry);
refBuilder->get_widget("ComboBox", pCombo);
if(pCombo){
pCombo->signal_changed().connect(sigc::ptr_fun(on_ComboBox_changed));
}
pInEntry->set_text("<Insert Text>");
if(pWindow)
{
Gtk::Button* pButton = 0;
refBuilder->get_widget("ApplyButton", pButton);
if(pButton)
{
pButton->signal_clicked().connect( sigc::ptr_fun(on_ApplyButton_clicked) );
}
kit.run(*pWindow);
}
return 0;
} |