X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Ftool.cpp;h=249259ecae2bb6d5da9a0f80f774ef93bc2dcf15;hb=6a351de12a65e5a005e73bca7e1bba26dbe4288f;hp=ffd6e6b6c5385201a1f5041eab1bbd27a71aafb5;hpb=0c0a16e5f0f41efddb6f3ff920e54a5a11e1841d;p=r2c2.git diff --git a/source/designer/tool.cpp b/source/designer/tool.cpp index ffd6e6b..249259e 100644 --- a/source/designer/tool.cpp +++ b/source/designer/tool.cpp @@ -1,15 +1,21 @@ #include +#include #include "designer.h" #include "tool.h" using namespace Msp; -Tool::Tool(Designer &d, Input::Mouse &mouse): +Tool::Tool(Designer &d, Input::Keyboard &keyboard, Input::Mouse &mouse): designer(d), + shift_held(false), + ctrl_held(false), done(false), accepted(false) { + keyboard.signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Tool::key_press), false)); + keyboard.signal_button_release.connect(sigc::bind_return(sigc::mem_fun(this, &Tool::key_release), false)); mouse.signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Tool::button_press), false)); + mouse.signal_button_release.connect(sigc::bind_return(sigc::mem_fun(this, &Tool::button_release), false)); mouse.signal_axis_motion.connect(sigc::bind_return(sigc::mem_fun(this, &Tool::axis_motion), false)); pointer.x = mouse.get_axis_value(0); @@ -30,6 +36,24 @@ void Tool::set_done(bool a) signal_done.emit(); } +void Tool::key_press(unsigned key) +{ + if(key==Input::KEY_ESC) + set_done(false); + else if(key==Input::KEY_SHIFT_L || key==Input::KEY_SHIFT_R) + shift_held = true; + else if(key==Input::KEY_CTRL_L || key==Input::KEY_CTRL_R) + ctrl_held = true; +} + +void Tool::key_release(unsigned key) +{ + if(key==Input::KEY_SHIFT_L || key==Input::KEY_SHIFT_R) + shift_held = false; + else if(key==Input::KEY_CTRL_L || key==Input::KEY_CTRL_R) + ctrl_held = false; +} + void Tool::button_press(unsigned btn) { if(btn==1)