X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Finput.cpp;h=ea4129a9cab1948a9383857ad277aefdcb5bd7fa;hb=eb9c7f5200da4f3f31b41233be8cee397cb6abb9;hp=b0e12515fa92d7d80dc129101e4119ab3570a2c7;hpb=a73b245826e8c1bc1f1394e9aa21618f8f31a6c5;p=r2c2.git diff --git a/source/designer/input.cpp b/source/designer/input.cpp index b0e1251..ea4129a 100644 --- a/source/designer/input.cpp +++ b/source/designer/input.cpp @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of the MSP Märklin suite -Copyright © 2006-2008 Mikkosoft Productions, Mikko Rasa -Distributed under the GPL -*/ - #include #include #include @@ -15,31 +8,27 @@ Distributed under the GPL using namespace std; using namespace Msp; -::Input::Input(Designer &d, const string &title, const string &text): - GLtk::Widget(d.get_ui_resources()), - GLtk::Panel(d.get_ui_resources()), +InputDialog::InputDialog(Designer &d, const string &title, const string &text): designer(d) { set_size(300, 100); GLtk::Label *lbl; - add(*(lbl=new GLtk::Label(res, title))); + add(*(lbl=new GLtk::Label(title))); lbl->set_geometry(GLtk::Geometry(10, geom.h-30, geom.w-20, 20)); - add(*(entry=new GLtk::Entry(res, text))); + add(*(entry=new GLtk::Entry(text))); entry->set_geometry(GLtk::Geometry(10, geom.h-60, geom.w-20, 20)); GLtk::Button *btn; - add(*(btn=new GLtk::Button(res, "Cncl"))); + add_button(*(btn=new GLtk::Button("Cncl")), 0); btn->set_geometry(GLtk::Geometry(geom.w-90, 10, 40, 24)); btn->set_style("red"); - btn->signal_clicked.connect(signal_cancel); - add(*(btn=new GLtk::Button(res, "OK"))); + add_button(*(btn=new GLtk::Button("OK")), 1); btn->set_geometry(GLtk::Geometry(geom.w-50, 10, 40, 24)); btn->set_style("green"); - btn->signal_clicked.connect(signal_accept); designer.get_root().add(*this); const GLtk::Geometry &rgeom=designer.get_root().get_geometry(); @@ -47,17 +36,18 @@ using namespace Msp; entry->set_focus(); } -const string &::Input::get_text() const -{ - return entry->get_text(); -} - -void ::Input::key_press(unsigned key, unsigned mod, wchar_t ch) +void InputDialog::key_press(unsigned key, unsigned mod) { if(key==Msp::Input::KEY_ENTER) - signal_accept.emit(); + response(1); else if(key==Msp::Input::KEY_ESC) - signal_cancel.emit(); + response(0); else - Panel::key_press(key, mod, ch); + Dialog::key_press(key, mod); +} + +void InputDialog::on_response(int code) +{ + if(code) + signal_accept.emit(entry->get_text()); }