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