so that it can be used like a regular Controllable, bound to MIDI, OSC etc.
*/
-class ProxyControllable : public PBD::Controllable {
-public:
+class LIBARDOUR_API ProxyControllable : public PBD::Controllable {
+ public:
ProxyControllable (const std::string& name, PBD::Controllable::Flag flags,
- boost::function1<void,double> setter,
+ boost::function1<bool,double> setter,
boost::function0<double> getter)
: PBD::Controllable (name, flags)
, _setter (setter)
, _getter (getter)
{}
-
- void set_value (double v) { _setter (v); }
+
+ void set_value (double v, PBD::Controllable::GroupControlDisposition gcd) { if (_setter (v)) { Changed (true, gcd); /* EMIT SIGNAL */ } }
double get_value () const { return _getter (); }
-
-private:
- boost::function1<void,double> _setter;
+
+ std::string get_user_string () const {
+ char theBuf[32]; sprintf( theBuf, "%3.1f dB", accurate_coefficient_to_dB (get_value()));
+ return std::string(theBuf);
+ }
+
+ private:
+ boost::function1<bool,double> _setter;
boost::function0<double> _getter;
};
-
+
} // namespace
#endif /* __libardour_proxy_controllable_h__ */