#include <iostream>
#include <gtk--/window.h>
#include <gtk--/box.h>
#include <gtk--/button.h>
#include <gtk--/separator.h>
#include <gtk--/main.h>

using SigC::bind;
using SigC::slot;

class HelloWorld : public Gtk::Window
{
  Gtk::HBox m_box1;
  Gtk::Button m_button1, m_button2;

public:
  HelloWorld();
  
  void callback(string data);
  
  gint delete_event_impl(GdkEventAny*)
  { 
    Gtk::Main::quit(); return 0; 
  }
  
};

HelloWorld::HelloWorld() :
  m_button1("Button 1"),
  m_button2("Button 2")
{
  set_title("Hello Buttons!");
  set_border_width(10);

  add(m_box1);

  // connecting signals and passing some data to callback
  m_button1.clicked.connect(bind<string>(slot(this, &HelloWorld::callback), "button 1"));
  m_button2.clicked.connect(bind<string>(slot(this, &HelloWorld::callback), "button 2"));


  m_box1.pack_start(m_button1);

  m_box1.pack_start(*manage(new Gtk::VSeparator())); // no need to take care of deletion

  m_box1.pack_start(m_button2);

  show_all();

}

void HelloWorld::callback(string data)
{
  cout << "Hello World - " << data << " was pressed" << endl;
}

int main (int argc, char *argv[])
{
  Gtk::Main kit(argc, argv);

  HelloWorld helloworld;

  kit.run();
  return 0;
}

next