X-Git-Url: http://git.tdb.fi/?p=libs%2Fgltk.git;a=blobdiff_plain;f=examples%2Fwidgetdemo%2Fdialogdemo.cpp;fp=examples%2Fwidgetdemo%2Fdialogdemo.cpp;h=63fb68e5b085bcf7c074e4303a6bea1515648e31;hp=0000000000000000000000000000000000000000;hb=72de2dce79c76da9931e6bc80e59743526cc18fe;hpb=b4d0a86b77fb5146f5a4f6c76690c16204210f1a diff --git a/examples/widgetdemo/dialogdemo.cpp b/examples/widgetdemo/dialogdemo.cpp new file mode 100644 index 0000000..63fb68e --- /dev/null +++ b/examples/widgetdemo/dialogdemo.cpp @@ -0,0 +1,71 @@ +#include +#include +#include +#include +#include "dialogdemo.h" + +using namespace std; +using namespace Msp; + +class PromptDialog: public GLtk::Dialog +{ +public: + sigc::signal signal_text_response; + +private: + GLtk::Entry ent_text; + +public: + PromptDialog(); + +protected: + void on_response(int) override; +}; + + +DialogDemo::DialogDemo() +{ + get_or_create_layout(); + + GLtk::Button *btn_prompt = new GLtk::Button("Enter some text"); + add(*btn_prompt); + btn_prompt->signal_clicked.connect(sigc::mem_fun(this, &DialogDemo::button_clicked)); + + add(lbl_text); + layout->add_constraint(lbl_text, GLtk::Layout::BELOW, *btn_prompt); + layout->set_expand(lbl_text, true, false); +} + +void DialogDemo::button_clicked() +{ + GLtk::Root *root = find_ancestor(); + PromptDialog *dialog = GLtk::AutoDialog::create(); + root->add(*dialog); + root->get_or_create_layout().set_gravity(*dialog, 0, 0); + dialog->signal_text_response.connect(sigc::mem_fun(this, &DialogDemo::got_response)); +} + +void DialogDemo::got_response(const string &text) +{ + lbl_text.set_text(text); +} + + +PromptDialog::PromptDialog() +{ + get_or_create_layout(); + + ent_text.set_edit_size(50, 1); + add(ent_text); + layout->set_expand(ent_text, true, false); + + GLtk::Button *btn_ok = new GLtk::Button("OK"); + add_button(*btn_ok, 1); + layout->add_constraint(*btn_ok, GLtk::Layout::FAR_BELOW, ent_text); + layout->set_gravity(*btn_ok, 1, -1); +} + +void PromptDialog::on_response(int) +{ + signal_text_response.emit(ent_text.get_text()); +}