handled button clicks of Regenerate button, filled in text entry

git-svn-id: svn://anubis/misc/sierpinski-gtk@252 bd8a9e45-a331-0410-811e-c64571078777
This commit is contained in:
josh 2010-10-22 04:29:37 +00:00
parent 94e1600456
commit 4ae50b97c8
3 changed files with 21 additions and 6 deletions

View File

@ -5,14 +5,17 @@
#include <iostream> #include <iostream>
#include <gtkmm/entry.h>
#include <gdkmm/cursor.h> #include <gdkmm/cursor.h>
#include "SierpinskiDA.h" #include "SierpinskiDA.h"
using namespace std; using namespace std;
SierpinskiDA::SierpinskiDA(const Glib::RefPtr<const Gdk::GL::Config> & config) SierpinskiDA::SierpinskiDA(const Glib::RefPtr<const Gdk::GL::Config> & config,
: Gtk::GL::DrawingArea(config) Gtk::Entry & n_points_entry)
: Gtk::GL::DrawingArea(config),
m_n_points_entry(n_points_entry)
{ {
set_gl_capability(config); set_gl_capability(config);
set_events(Gdk::POINTER_MOTION_MASK set_events(Gdk::POINTER_MOTION_MASK
@ -21,6 +24,12 @@ SierpinskiDA::SierpinskiDA(const Glib::RefPtr<const Gdk::GL::Config> & config)
| Gdk::SCROLL_MASK); | Gdk::SCROLL_MASK);
} }
void SierpinskiDA::regenerate_clicked()
{
regenerate(atoi(m_n_points_entry.get_text().c_str()));
queue_draw();
}
void SierpinskiDA::regenerate(int npts) void SierpinskiDA::regenerate(int npts)
{ {
#define deg2rad(x) ((x)/180.0*M_PI) #define deg2rad(x) ((x)/180.0*M_PI)
@ -133,7 +142,7 @@ void SierpinskiDA::on_realize()
gl_end(); gl_end();
regenerate(10); regenerate(10000);
} }
/* /*

View File

@ -7,12 +7,15 @@
class SierpinskiDA : public Gtk::GL::DrawingArea class SierpinskiDA : public Gtk::GL::DrawingArea
{ {
public: public:
SierpinskiDA(const Glib::RefPtr<const Gdk::GL::Config> & config); SierpinskiDA(const Glib::RefPtr<const Gdk::GL::Config> & config,
Gtk::Entry & n_points_entry);
void regenerate(int npts); void regenerate(int npts);
void regenerate_clicked();
protected: protected:
int m_x, m_y; int m_x, m_y;
int m_dl; int m_dl;
Gtk::Entry & m_n_points_entry;
virtual bool draw(); virtual bool draw();
virtual void on_realize(); virtual void on_realize();

View File

@ -44,14 +44,17 @@ int main(int argc, char * argv[])
mw.set_default_size(400, 420); mw.set_default_size(400, 420);
Gtk::VBox vbox; 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); vbox.pack_start(da);
Gtk::HBox hbox; Gtk::HBox hbox;
Gtk::Label lbl("# of points:"); Gtk::Label lbl("# of points:");
hbox.pack_start(lbl, false, false); hbox.pack_start(lbl, false, false);
Gtk::Entry num_points_e;
hbox.pack_start(num_points_e, true, true); hbox.pack_start(num_points_e, true, true);
Gtk::Button regenerate_btn("_Regenerate", 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); hbox.pack_start(regenerate_btn, false, false);
vbox.pack_start(hbox, Gtk::PACK_SHRINK); vbox.pack_start(hbox, Gtk::PACK_SHRINK);