#include <gtkmm.h>
struct MyWindow : public Gtk::Window
{
    MyWindow();
    Gtk::Button m_ok_button;
    Gtk::Entry   m_edit;
    Gtk::Label  m_labels[2];
    enum { MW_Label1 , MW_Label2 };

    void on_button_ok_clicked();
};

int main(int argc, char**argv)
{
    Gtk::Main main_obj(argc,argv);

    MyWindow window_obj;

    main_obj.run(window_obj);

    return EXIT_SUCCESS;  
}

MyWindow::MyWindow()
: m_ok_button(Gtk::Stock::OK)
{
    set_title("GTKmm example 2");
    Gtk::VBox * vbox = new Gtk::VBox;        
    add(*Gtk::manage(vbox));                  
    vbox->set_homogeneous(true);
    vbox->set_spacing( 10 );
    vbox->set_border_width( 10 );
    vbox->pack_start( m_labels[ MW_Label1 ],true,true);
    Gtk::HBox * hbox = new Gtk::HBox;
    vbox->pack_start( *Gtk::manage( hbox ));  
    hbox->pack_start( m_labels[ MW_Label2 ] );
    hbox->pack_start( m_edit );
    hbox->set_spacing( 15 );
    vbox->pack_start( m_ok_button );  
    m_labels[MW_Label1].set_text("Enter a text and click 'OK'");
    m_labels[MW_Label2].set_text("Enter text: ");
    m_ok_button.signal_clicked()
	    .connect( sigc::mem_fun(*this,&MyWindow::on_button_ok_clicked));  
    show_all();
}

void MyWindow::on_button_ok_clicked()
{
    m_labels[MW_Label1].set_text( m_edit.get_text());
}
