1 #include <msp/gltk/button.h>
2 #include <msp/gltk/dialog.h>
3 #include <msp/gltk/entry.h>
4 #include <msp/gltk/root.h>
5 #include "dialogdemo.h"
10 class PromptDialog: public GLtk::Dialog
13 sigc::signal<void, string> signal_text_response;
22 void on_response(int) override;
26 DialogDemo::DialogDemo()
28 get_or_create_layout();
30 GLtk::Button *btn_prompt = new GLtk::Button("Enter some text");
32 btn_prompt->signal_clicked.connect(sigc::mem_fun(this, &DialogDemo::button_clicked));
35 layout->add_constraint(lbl_text, GLtk::Layout::BELOW, *btn_prompt);
36 layout->set_expand(lbl_text, true, false);
39 void DialogDemo::button_clicked()
41 GLtk::Root *root = find_ancestor<GLtk::Root>();
42 PromptDialog *dialog = GLtk::AutoDialog<PromptDialog>::create();
44 root->get_or_create_layout().set_gravity(*dialog, 0, 0);
45 dialog->signal_text_response.connect(sigc::mem_fun(this, &DialogDemo::got_response));
48 void DialogDemo::got_response(const string &text)
50 lbl_text.set_text(text);
54 PromptDialog::PromptDialog()
56 get_or_create_layout();
58 ent_text.set_edit_size(50, 1);
60 layout->set_expand(ent_text, true, false);
62 GLtk::Button *btn_ok = new GLtk::Button("OK");
63 add_button(*btn_ok, 1);
64 layout->add_constraint(*btn_ok, GLtk::Layout::FAR_BELOW, ent_text);
65 layout->set_gravity(*btn_ok, 1, -1);
68 void PromptDialog::on_response(int)
70 signal_text_response.emit(ent_text.get_text());