From: Ben Loftis Date: Tue, 19 Jan 2016 20:00:03 +0000 (-0600) Subject: Add all_tracks_rec actions X-Git-Tag: 4.7~301 X-Git-Url: https://main.carlh.net/gitweb/?p=ardour.git;a=commitdiff_plain;h=5493e20c847c404ea5f349adab77691e2af0b750 Add all_tracks_rec actions --- diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index afc93a9f76..43bd7483fb 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -305,6 +305,8 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop void maybe_enable_record (); void disable_record (bool rt_context, bool force = false); void step_back_from_record (); + + void set_all_tracks_record_enabled(bool); void maybe_write_autosave (); diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 3da7f6c071..8f71ef29ef 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -1832,6 +1832,19 @@ Session::enable_record () } } +void +Session::set_all_tracks_record_enabled (bool enable ) +{ + boost::shared_ptr rl = routes.reader(); + for (RouteList::iterator i = rl->begin(); i != rl->end(); ++i) { + boost::shared_ptr tr = boost::dynamic_pointer_cast (*i); + if (tr) { + tr->set_record_enabled (enable, this); + } + } +} + + void Session::disable_record (bool rt_context, bool force) { diff --git a/libs/surfaces/control_protocol/basic_ui.cc b/libs/surfaces/control_protocol/basic_ui.cc index 13b41ba373..5dc324edc2 100644 --- a/libs/surfaces/control_protocol/basic_ui.cc +++ b/libs/surfaces/control_protocol/basic_ui.cc @@ -211,6 +211,18 @@ BasicUI::rec_enable_toggle () } } +void +BasicUI::all_tracks_rec_in () +{ + session->set_all_tracks_record_enabled (true); +} + +void +BasicUI::all_tracks_rec_out () +{ + session->set_all_tracks_record_enabled (false); +} + void BasicUI::save_state () { diff --git a/libs/surfaces/control_protocol/control_protocol/basic_ui.h b/libs/surfaces/control_protocol/control_protocol/basic_ui.h index 5f15cc3e70..5a676ec5c2 100644 --- a/libs/surfaces/control_protocol/control_protocol/basic_ui.h +++ b/libs/surfaces/control_protocol/control_protocol/basic_ui.h @@ -133,6 +133,9 @@ class LIBCONTROLCP_API BasicUI { void rec_enable_toggle (); void toggle_all_rec_enables (); + void all_tracks_rec_in (); + void all_tracks_rec_out (); + ARDOUR::framecnt_t timecode_frames_per_hour (); void timecode_time (framepos_t where, Timecode::Time&); diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc index 3631a8bc7f..7504cf0cdb 100644 --- a/libs/surfaces/osc/osc.cc +++ b/libs/surfaces/osc/osc.cc @@ -359,6 +359,8 @@ OSC::register_callbacks() REGISTER_CALLBACK (serv, "/ardour/toggle_punch_out", "", toggle_punch_out); REGISTER_CALLBACK (serv, "/ardour/rec_enable_toggle", "", rec_enable_toggle); REGISTER_CALLBACK (serv, "/ardour/toggle_all_rec_enables", "", toggle_all_rec_enables); + REGISTER_CALLBACK (serv, "/ardour/all_tracks_rec_in", "f", all_tracks_rec_in); + REGISTER_CALLBACK (serv, "/ardour/all_tracks_rec_out", "f", all_tracks_rec_out); REGISTER_CALLBACK (serv, "/ardour/remove_marker", "", remove_marker_at_playhead); REGISTER_CALLBACK (serv, "/ardour/jump_bars", "f", jump_by_bars); REGISTER_CALLBACK (serv, "/ardour/jump_seconds", "f", jump_by_seconds); @@ -425,6 +427,8 @@ OSC::register_callbacks() REGISTER_CALLBACK (serv, "/ardour/pushbutton/toggle_punch_out", "f", toggle_punch_out); REGISTER_CALLBACK (serv, "/ardour/pushbutton/rec_enable_toggle", "f", rec_enable_toggle); REGISTER_CALLBACK (serv, "/ardour/pushbutton/toggle_all_rec_enables", "f", toggle_all_rec_enables); + REGISTER_CALLBACK (serv, "/ardour/pushbutton/all_tracks_rec_in", "f", all_tracks_rec_in); + REGISTER_CALLBACK (serv, "/ardour/pushbutton/all_tracks_rec_out", "f", all_tracks_rec_out); REGISTER_CALLBACK (serv, "/ardour/pushbutton/remove_marker", "f", remove_marker_at_playhead); REGISTER_CALLBACK (serv, "/ardour/pushbutton/mark_in", "f", mark_in); REGISTER_CALLBACK (serv, "/ardour/pushbutton/mark_out", "f", mark_out); diff --git a/libs/surfaces/osc/osc.h b/libs/surfaces/osc/osc.h index 3128fe8ecc..a3b83e0365 100644 --- a/libs/surfaces/osc/osc.h +++ b/libs/surfaces/osc/osc.h @@ -191,6 +191,8 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI PATH_CALLBACK(toggle_punch_out); PATH_CALLBACK(rec_enable_toggle); PATH_CALLBACK(toggle_all_rec_enables); + PATH_CALLBACK(all_tracks_rec_in); + PATH_CALLBACK(all_tracks_rec_out); PATH_CALLBACK(remove_marker_at_playhead); PATH_CALLBACK(mark_in); PATH_CALLBACK(mark_out);