X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=examples%2Fwidgetdemo%2Fbuttondemo.cpp;fp=examples%2Fwidgetdemo%2Fbuttondemo.cpp;h=f189056ded2c61353ec6fd86c7a34f61f101ae56;hb=68c6a79c86c595fa2ec5a7109568d5baefc50afd;hp=0000000000000000000000000000000000000000;hpb=4acbe9feda160546d0afd43fbdef3f00db6dcea7;p=libs%2Fgltk.git diff --git a/examples/widgetdemo/buttondemo.cpp b/examples/widgetdemo/buttondemo.cpp new file mode 100644 index 0000000..f189056 --- /dev/null +++ b/examples/widgetdemo/buttondemo.cpp @@ -0,0 +1,52 @@ +#include +#include +#include +#include "buttondemo.h" + +using namespace std; +using namespace Msp; + +ButtonDemo::ButtonDemo() +{ + set_layout(new GLtk::Layout); + + GLtk::Label *lbl_message = new GLtk::Label; + add(*lbl_message); + + vector buttons; + for(unsigned i=0; i<5; ++i) + { + string text = format("Button %d", i+1); + GLtk::Button *btn = new GLtk::Button(text); + btn->signal_clicked.connect(sigc::bind(sigc::mem_fun(lbl_message, &GLtk::Label::set_text), text+" was clicked")); + buttons.push_back(btn); + add(*btn); + if(i>0) + { + layout->add_constraint(*btn, GLtk::Layout::COPY_WIDTH, *buttons[0]); + layout->add_constraint(*btn, GLtk::Layout::COPY_HEIGHT, *buttons[0]); + + if(i>=3) + { + layout->add_constraint(*btn, GLtk::Layout::RIGHT_OF, *buttons[i-1]); + layout->add_constraint(*btn, GLtk::Layout::ALIGN_TOP, *buttons[i-1]); + } + else + { + layout->add_constraint(*btn, GLtk::Layout::BELOW, *buttons[i-1]); + layout->add_constraint(*btn, GLtk::Layout::ALIGN_LEFT, *buttons[i-1]); + } + } + } + + layout->add_constraint(*buttons[0], GLtk::Layout::BELOW, *lbl_message); + + GLtk::Button *btn = new GLtk::Button("A big one"); + btn->signal_clicked.connect(sigc::bind(sigc::mem_fun(lbl_message, &GLtk::Label::set_text), "The big button was clicked")); + buttons.push_back(btn); + add(*btn); + layout->add_constraint(*btn, GLtk::Layout::ALIGN_TOP, *buttons[0]); + layout->add_constraint(*btn, GLtk::Layout::ALIGN_BOTTOM, *buttons[1]); + layout->add_constraint(*btn, GLtk::Layout::ALIGN_LEFT, *buttons[3]); + layout->add_constraint(*btn, GLtk::Layout::ALIGN_RIGHT, *buttons[4]); +}