From 4ae50b97c8d230b15baec721d6636016156e92e3 Mon Sep 17 00:00:00 2001 From: josh Date: Fri, 22 Oct 2010 04:29:37 +0000 Subject: [PATCH] handled button clicks of Regenerate button, filled in text entry git-svn-id: svn://anubis/misc/sierpinski-gtk@252 bd8a9e45-a331-0410-811e-c64571078777 --- SierpinskiDA.cc | 15 ++++++++++++--- SierpinskiDA.h | 5 ++++- sierpinski-gtk.cc | 7 +++++-- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/SierpinskiDA.cc b/SierpinskiDA.cc index 9313b14..371ea4d 100644 --- a/SierpinskiDA.cc +++ b/SierpinskiDA.cc @@ -5,14 +5,17 @@ #include +#include #include #include "SierpinskiDA.h" using namespace std; -SierpinskiDA::SierpinskiDA(const Glib::RefPtr & config) - : Gtk::GL::DrawingArea(config) +SierpinskiDA::SierpinskiDA(const Glib::RefPtr & config, + Gtk::Entry & n_points_entry) + : Gtk::GL::DrawingArea(config), + m_n_points_entry(n_points_entry) { set_gl_capability(config); set_events(Gdk::POINTER_MOTION_MASK @@ -21,6 +24,12 @@ SierpinskiDA::SierpinskiDA(const Glib::RefPtr & config) | Gdk::SCROLL_MASK); } +void SierpinskiDA::regenerate_clicked() +{ + regenerate(atoi(m_n_points_entry.get_text().c_str())); + queue_draw(); +} + void SierpinskiDA::regenerate(int npts) { #define deg2rad(x) ((x)/180.0*M_PI) @@ -133,7 +142,7 @@ void SierpinskiDA::on_realize() gl_end(); - regenerate(10); + regenerate(10000); } /* diff --git a/SierpinskiDA.h b/SierpinskiDA.h index cea2d53..a0322cc 100644 --- a/SierpinskiDA.h +++ b/SierpinskiDA.h @@ -7,12 +7,15 @@ class SierpinskiDA : public Gtk::GL::DrawingArea { public: - SierpinskiDA(const Glib::RefPtr & config); + SierpinskiDA(const Glib::RefPtr & config, + Gtk::Entry & n_points_entry); void regenerate(int npts); + void regenerate_clicked(); protected: int m_x, m_y; int m_dl; + Gtk::Entry & m_n_points_entry; virtual bool draw(); virtual void on_realize(); diff --git a/sierpinski-gtk.cc b/sierpinski-gtk.cc index b0c21f7..709df90 100644 --- a/sierpinski-gtk.cc +++ b/sierpinski-gtk.cc @@ -44,14 +44,17 @@ int main(int argc, char * argv[]) mw.set_default_size(400, 420); Gtk::VBox vbox; - SierpinskiDA da(glconfig); + Gtk::Entry num_points_e; + num_points_e.set_text("10000"); + SierpinskiDA da(glconfig, num_points_e); vbox.pack_start(da); Gtk::HBox hbox; Gtk::Label lbl("# of points:"); hbox.pack_start(lbl, false, false); - Gtk::Entry num_points_e; hbox.pack_start(num_points_e, true, true); Gtk::Button regenerate_btn("_Regenerate", true); + regenerate_btn.signal_clicked().connect( + sigc::mem_fun(da, &SierpinskiDA::regenerate_clicked)); hbox.pack_start(regenerate_btn, false, false); vbox.pack_start(hbox, Gtk::PACK_SHRINK);