X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=examples%2Fev.cpp;h=cc15e71eb394005ac0a18c1a3acb44fa73187261;hb=971d9f711244232c991d77e09b2d801eba8e6d1a;hp=9ded9c7bb47e07867d59f00ee12143594450b81a;hpb=e8ebbdbe8dbaec58f9e661efa3124118705fcd13;p=libs%2Fgui.git diff --git a/examples/ev.cpp b/examples/ev.cpp index 9ded9c7..cc15e71 100644 --- a/examples/ev.cpp +++ b/examples/ev.cpp @@ -3,6 +3,10 @@ #include #include #include +#include +#include +#include +#include using namespace Msp; @@ -19,8 +23,11 @@ public: private: virtual void tick(); + void got_focus(); + void lost_focus(); void key_press(unsigned); void key_release(unsigned); + void character(StringCodec::unichar); void button_press(unsigned); void button_release(unsigned); void axis_motion(unsigned, float, float); @@ -31,18 +38,33 @@ Ev::Ev(int, char **): keyboard(window), mouse(window) { + window.get_display().signal_got_focus.connect(sigc::mem_fun(this, &Ev::got_focus)); + window.get_display().signal_lost_focus.connect(sigc::mem_fun(this, &Ev::lost_focus)); window.signal_close.connect(sigc::bind(sigc::mem_fun(this, &Ev::exit), 0)); - keyboard.signal_button_press.connect(sigc::mem_fun(this, &Ev::key_press)); - keyboard.signal_button_release.connect(sigc::mem_fun(this, &Ev::key_release)); - mouse.signal_button_press.connect(sigc::mem_fun(this, &Ev::button_press)); - mouse.signal_button_release.connect(sigc::mem_fun(this, &Ev::button_release)); - mouse.signal_axis_motion.connect(sigc::mem_fun(this, &Ev::axis_motion)); + keyboard.signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::key_press), false)); + keyboard.signal_button_release.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::key_release), false)); + keyboard.signal_character.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::character), false)); + mouse.signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::button_press), false)); + mouse.signal_button_release.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::button_release), false)); + mouse.signal_axis_motion.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::axis_motion), false)); + window.set_title("Event tester"); window.show(); } void Ev::tick() { window.tick(); + Time::sleep(Time::msec); +} + +void Ev::got_focus() +{ + IO::print("got_focus\n"); +} + +void Ev::lost_focus() +{ + IO::print("lost_focus\n"); } void Ev::key_press(unsigned key) @@ -55,6 +77,11 @@ void Ev::key_release(unsigned key) IO::print("key_release: %s\n", keyboard.get_button_name(key)); } +void Ev::character(StringCodec::unichar ch) +{ + IO::print("character: %s\n", StringCodec::encode(StringCodec::ustring(1, ch))); +} + void Ev::button_press(unsigned btn) { IO::print("button_press: %s\n", mouse.get_button_name(btn));