X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fsurfaces%2Fcontrol_protocol%2Fcontrol_protocol%2Fcontrol_protocol.h;h=72726600c97f424611aa598dcc88f6193f4e8339;hb=b880a381523b2cfdb7ebd17c27fff1adf90fa028;hp=68a1461c10a30da1d51da8e41753b632cb297171;hpb=62620122a96af73c9714c4de492c43382c5f0297;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 68a1461c10..72726600c9 100644 --- a/libs/surfaces/control_protocol/control_protocol/control_protocol.h +++ b/libs/surfaces/control_protocol/control_protocol/control_protocol.h @@ -30,6 +30,7 @@ #include "pbd/stateful.h" #include "pbd/signals.h" +#include "control_protocol/visibility.h" #include "control_protocol/basic_ui.h" #include "control_protocol/types.h" @@ -39,20 +40,21 @@ class Route; class Session; class Bundle; -class ControlProtocol : virtual public sigc::trackable, public PBD::Stateful, public PBD::ScopedConnectionList, public BasicUI { +class LIBCONTROLCP_API ControlProtocol : public PBD::Stateful, public PBD::ScopedConnectionList, public BasicUI +{ public: - ControlProtocol (Session&, std::string name, PBD::EventLoop* event_loop); + ControlProtocol (Session&, std::string name); virtual ~ControlProtocol(); std::string name() const { return _name; } - virtual int set_active (bool yn) = 0; - bool get_active() const { return _active; } + virtual int set_active (bool yn); + bool active() const { return _active; } virtual int set_feedback (bool /*yn*/) { return 0; } virtual bool get_feedback () const { return false; } - virtual void route_list_changed () {} + virtual void midi_connectivity_established () {} PBD::Signal0 ActiveChanged; @@ -67,14 +69,20 @@ class ControlProtocol : virtual public sigc::trackable, public PBD::Stateful, pu static PBD::Signal0 Undo; static PBD::Signal0 Redo; static PBD::Signal1 ScrollTimeline; - static PBD::Signal1 SelectByRID; - static PBD::Signal0 UnselectTrack; static PBD::Signal1 GotoView; static PBD::Signal0 CloseDialog; static PBD::Signal0 VerticalZoomInAll; static PBD::Signal0 VerticalZoomOutAll; static PBD::Signal0 VerticalZoomInSelected; static PBD::Signal0 VerticalZoomOutSelected; + static PBD::Signal0 StepTracksDown; + static PBD::Signal0 StepTracksUp; + + static PBD::Signal1 AddRouteToSelection; + static PBD::Signal1 SetRouteSelection; + static PBD::Signal1 ToggleRouteSelection; + static PBD::Signal1 RemoveRouteFromSelection; + static PBD::Signal0 ClearRouteSelection; /* signals that one UI (e.g. the GUI) can emit to get all other UI's to respond. Typically this will always be GUI->"others" - the GUI pays @@ -126,24 +134,24 @@ class ControlProtocol : virtual public sigc::trackable, public PBD::Stateful, pu virtual void* get_gui() const { return 0; } virtual void tear_down_gui() { } + XMLNode& get_state (); + static const std::string state_node_name; + protected: - PBD::EventLoop* _event_loop; - bool _own_event_loop; std::vector > route_table; 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 */ + bool _active; }; extern "C" { - struct ControlProtocolDescriptor { + class ControlProtocolDescriptor { + public: const char* name; /* descriptive */ const char* id; /* unique and version-specific */ void* ptr; /* protocol can store a value here */