X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finput%2Fcontrol.cpp;h=50601013acacc985ab256c018693a7f4dc6317ae;hb=d6bdc1d1dd8df202608eeee4fb2a99693ee62d56;hp=ffa02932f7db9c3b3159c45ab589d2c2f434ae1e;hpb=daf317db7a79a4c92880042125814ca942c3a6fa;p=libs%2Fgui.git diff --git a/source/input/control.cpp b/source/input/control.cpp index ffa0293..5060101 100644 --- a/source/input/control.cpp +++ b/source/input/control.cpp @@ -1,15 +1,10 @@ -/* $Id$ - -This file is part of libmspgbase -Copyright © 2007 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - -#include +#include #include #include "control.h" #include "device.h" +using namespace std; + namespace Msp { namespace Input { @@ -36,7 +31,7 @@ std::string ControlSource::str() const else if(type==NONE) return "None"; - return lexical_cast(index); + return lexical_cast(index); } @@ -56,18 +51,21 @@ Control::Control(Device &d, ControlSrcType t, unsigned i): connect_signals(); } +Control::~Control() +{ } + void Control::capture(Device &d) { notify_callbacks(); - capture_dev=&d; - capture_dev->signal_button_press.connect(sigc::mem_fun(this, &Control::button_press)); - capture_dev->signal_axis_motion.connect(sigc::mem_fun(this, &Control::axis_motion)); + capture_dev = &d; + capture_dev->signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Control::button_press), false)); + capture_dev->signal_axis_motion.connect(sigc::bind_return(sigc::mem_fun(this, &Control::axis_motion), false)); } void Control::cancel_capture() { notify_callbacks(); - capture_dev=0; + capture_dev = 0; connect_signals(); } @@ -79,7 +77,7 @@ void Control::set_source(Device &d, ControlSrcType t, unsigned i) void Control::set_source(const ControlSource &s) { notify_callbacks(); - src=s; + src = s; connect_signals(); } @@ -90,15 +88,13 @@ void Control::connect_signals() case NONE: break; case BUTTON: - src.dev->signal_button_press.connect(sigc::mem_fun(this, &Control::button_press)); - src.dev->signal_button_release.connect(sigc::mem_fun(this, &Control::button_release)); + src.dev->signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Control::button_press), false)); + src.dev->signal_button_release.connect(sigc::bind_return(sigc::mem_fun(this, &Control::button_release), false)); break; case AXIS_POS: case AXIS_NEG: - src.dev->signal_axis_motion.connect(sigc::mem_fun(this, &Control::axis_motion)); + src.dev->signal_axis_motion.connect(sigc::bind_return(sigc::mem_fun(this, &Control::axis_motion), false)); break; - default: - throw Exception("Invalid source in Control"); } } @@ -106,12 +102,12 @@ void Control::button_press(unsigned i) { if(capture_dev) { - src.dev=capture_dev; - src.type=BUTTON; - src.index=i; + src.dev = capture_dev; + src.type = BUTTON; + src.index = i; notify_callbacks(); - capture_dev=0; + capture_dev = 0; connect_signals(); signal_capture_complete.emit(); } @@ -129,20 +125,20 @@ void Control::axis_motion(unsigned i, float v, float r) { if(capture_dev) { - ControlSrcType type=NONE; + ControlSrcType type = NONE; if(v<-0.9) - type=AXIS_NEG; + type = AXIS_NEG; else if(v>0.9) - type=AXIS_POS; + type = AXIS_POS; if(type!=NONE) { - src.dev=capture_dev; - src.type=type; - src.index=i; + src.dev = capture_dev; + src.type = type; + src.index = i; notify_callbacks(); - capture_dev=0; + capture_dev = 0; connect_signals(); signal_capture_complete.emit(); }