1 #ifndef __pbd_controllable_h__
2 #define __pbd_controllable_h__
6 #include <sigc++/trackable.h>
7 #include <sigc++/signal.h>
9 #include <pbd/statefuldestructible.h>
15 class Controllable : public PBD::StatefulDestructible {
17 Controllable (std::string name);
18 virtual ~Controllable() { Destroyed (this); }
20 virtual void set_value (float) = 0;
21 virtual float get_value (void) const = 0;
23 virtual bool can_send_feedback() const { return true; }
25 sigc::signal<void> LearningFinished;
27 static sigc::signal<bool,PBD::Controllable*> StartLearning;
28 static sigc::signal<void,PBD::Controllable*> StopLearning;
30 static sigc::signal<void,Controllable*> Destroyed;
32 sigc::signal<void> Changed;
34 int set_state (const XMLNode&);
35 XMLNode& get_state ();
37 std::string name() const { return _name; }
45 #endif /* __pbd_controllable_h__ */