Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > media > main > by-pkgid > ca81b57b553ae75608ba0fc5e7925e4e > files > 634

libgtkmm1.2-devel-1.2.10-1mdk.ppc.rpm

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

// Gtk-- version of the "entry" example from the gtk+ tutorial

class Entry : public Gtk::Window
{
  Gtk::HBox m_hbox;
  Gtk::VBox m_vbox;
  Gtk::Entry m_entry;
  Gtk::Button m_bClose;
  Gtk::CheckButton m_cbEditable, m_cbVisible;

  void toggleEditable() { m_entry.set_editable(m_cbEditable.get_active()); }
  
  void toggleVisibility() { m_entry.set_visibility(m_cbVisible.get_active()); }
  void enterCallback();

  gint delete_event_impl(GdkEventAny*) { 
    Gtk::Main::quit(); return 0; 
  }
  
public:
  Entry();
};

Entry::Entry() :
  m_hbox(false, 0),
  m_vbox(false, 0),
  m_entry(50),
  m_bClose("Close"),
  m_cbEditable("Editable"),
  m_cbVisible("Visible")
{

  set_usize(200, 100);
  set_title("Gtk-- Entry");
  
  add(m_vbox);
  
  m_entry.activate.connect(slot(this, &Entry::enterCallback));
  m_entry.set_text("hello");
  m_entry.append_text(" world");
  m_entry.select_region(0, m_entry.get_text_length());
  m_vbox.pack_start(m_entry);
  
  // Note that add() can also be used instead of pack_xxx()
  m_vbox.add(m_hbox);

  m_hbox.pack_start(m_cbEditable);
  m_cbEditable.toggled.connect(slot(this, &Entry::toggleEditable));
  m_cbEditable.set_active(true);

  m_hbox.pack_start(m_cbVisible);
  m_cbVisible.toggled.connect(slot(this,&Entry::toggleVisibility));
  m_cbVisible.set_active(true);

  m_bClose.clicked.connect(Gtk::Main::quit.slot());
  m_vbox.pack_start(m_bClose);
  m_bClose.set_flags(GTK_CAN_DEFAULT);
  m_bClose.grab_default();
  
  show_all();
}

void
Entry::enterCallback()
{
  cout << "Entry contents : " << m_entry.get_text() << endl;
}

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

  Entry entry;

  myapp.run();
  return 0;
}