]> git.tdb.fi Git - r2c2.git/blob - source/designer/input.cpp
Strip Id tags and copyright notices from files
[r2c2.git] / source / designer / input.cpp
1 #include <GL/gl.h>
2 #include <msp/gl/texture.h>
3 #include <msp/gltk/button.h>
4 #include <msp/input/keys.h>
5 #include "designer.h"
6 #include "input.h"
7
8 using namespace std;
9 using namespace Msp;
10
11 InputDialog::InputDialog(Designer &d, const string &title, const string &text):
12         designer(d)
13 {
14         set_size(300, 100);
15
16         GLtk::Label *lbl;
17         add(*(lbl=new GLtk::Label(title)));
18         lbl->set_geometry(GLtk::Geometry(10, geom.h-30, geom.w-20, 20));
19
20         add(*(entry=new GLtk::Entry(text)));
21         entry->set_geometry(GLtk::Geometry(10, geom.h-60, geom.w-20, 20));
22
23         GLtk::Button *btn;
24
25         add_button(*(btn=new GLtk::Button("Cncl")), 0);
26         btn->set_geometry(GLtk::Geometry(geom.w-90, 10, 40, 24));
27         btn->set_style("red");
28
29         add_button(*(btn=new GLtk::Button("OK")), 1);
30         btn->set_geometry(GLtk::Geometry(geom.w-50, 10, 40, 24));
31         btn->set_style("green");
32
33         designer.get_root().add(*this);
34         const GLtk::Geometry &rgeom=designer.get_root().get_geometry();
35         set_position((rgeom.w-geom.w)/2, (rgeom.h-geom.h)/2);
36         entry->set_focus();
37 }
38
39 void InputDialog::key_press(unsigned key, unsigned mod, wchar_t ch)
40 {
41         if(key==Msp::Input::KEY_ENTER)
42                 response(1);
43         else if(key==Msp::Input::KEY_ESC)
44                 response(0);
45         else
46                 Dialog::key_press(key, mod, ch);
47 }
48
49 void InputDialog::on_response(int code)
50 {
51         if(code)
52                 signal_accept.emit(entry->get_text());
53 }