X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fsurfaces%2Fcontrol_protocol%2Fcontrol_protocol%2Fcontrol_protocol.h;h=c80ba9b4b67fb46c0b87864b0ac3d11a0daf2cd9;hb=738387f9a417537e768d56d3fc4afcb9dc82d66b;hp=8be652b9df9d9285b0995b24f1f543716fa29735;hpb=79986643c0c904f6574bb5323e2233a43a9e622e;p=ardour.git diff --git a/libs/surfaces/control_protocol/control_protocol/control_protocol.h b/libs/surfaces/control_protocol/control_protocol/control_protocol.h index 8be652b9df..c80ba9b4b6 100644 --- a/libs/surfaces/control_protocol/control_protocol/control_protocol.h +++ b/libs/surfaces/control_protocol/control_protocol/control_protocol.h @@ -16,7 +16,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef ardour_control_protocols_h @@ -26,16 +25,16 @@ #include #include #include -#include -#include -#include +#include "pbd/stateful.h" +#include "pbd/signals.h" +#include "control_protocol/basic_ui.h" namespace ARDOUR { class Route; class Session; -class ControlProtocol : public sigc::trackable, public Stateful, public BasicUI { +class ControlProtocol : virtual public sigc::trackable, public PBD::Stateful, public PBD::ScopedConnectionList, public BasicUI { public: ControlProtocol (Session&, std::string name); virtual ~ControlProtocol(); @@ -45,17 +44,22 @@ class ControlProtocol : public sigc::trackable, public Stateful, public BasicUI virtual int set_active (bool yn) = 0; bool get_active() const { return _active; } - sigc::signal ActiveChanged; + virtual int set_feedback (bool /*yn*/) { return 0; } + virtual bool get_feedback () const { return false; } + + virtual void route_list_changed () {} + + PBD::Signal0 ActiveChanged; /* signals that a control protocol can emit and other (presumably graphical) user interfaces can respond to */ - static sigc::signal ZoomToSession; - static sigc::signal ZoomIn; - static sigc::signal ZoomOut; - static sigc::signal Enter; - static sigc::signal ScrollTimeline; + static PBD::Signal0 ZoomToSession; + static PBD::Signal0 ZoomIn; + static PBD::Signal0 ZoomOut; + static PBD::Signal0 Enter; + static PBD::Signal1 ScrollTimeline; /* the model here is as follows: @@ -99,8 +103,13 @@ class ControlProtocol : public sigc::trackable, public Stateful, public BasicUI std::string _name; bool _active; + void add_strip (std::list >); + void next_track (uint32_t initial_id); void prev_track (uint32_t initial_id); + + private: + ControlProtocol (const ControlProtocol&); /* noncopyable */ }; extern "C" { @@ -110,6 +119,7 @@ extern "C" { void* ptr; /* protocol can store a value here */ void* module; /* not for public access */ int mandatory; /* if non-zero, always load and do not make optional */ + bool supports_feedback; /* if true, protocol has toggleable feedback mechanism */ bool (*probe)(ControlProtocolDescriptor*); ControlProtocol* (*initialize)(ControlProtocolDescriptor*,Session*); void (*destroy)(ControlProtocolDescriptor*,ControlProtocol*);