From 7f9befae2ddfa4e815b6bd02c8425fc8df96a025 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 5 Dec 2016 21:53:41 +0100 Subject: Add Lua bindings to manage Groups --- libs/ardour/ardour/session.h | 2 ++ libs/ardour/luabindings.cc | 45 +++++++++++++++++++++++++++++++++++++++++++- libs/ardour/session_state.cc | 19 +++++++++++++++++++ 3 files changed, 65 insertions(+), 1 deletion(-) diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index b2409e3da6..924c7c86bb 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -617,7 +617,9 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop bool _reconfigure_on_delete; }; + RouteGroup* new_route_group (const std::string&); void add_route_group (RouteGroup *); + void remove_route_group (RouteGroup* rg) { if (rg) remove_route_group (*rg); } void remove_route_group (RouteGroup&); void reorder_route_groups (std::list); diff --git a/libs/ardour/luabindings.cc b/libs/ardour/luabindings.cc index f7fdcf4085..42184e3473 100644 --- a/libs/ardour/luabindings.cc +++ b/libs/ardour/luabindings.cc @@ -825,7 +825,38 @@ LuaBindings::common (lua_State* L) .endClass () .beginClass ("RouteGroup") - // stub RouteGroup* is needed for new_audio_track() + .addFunction ("is_active", &RouteGroup::is_active) + .addFunction ("is_relative", &RouteGroup::is_relative) + .addFunction ("is_hidden", &RouteGroup::is_hidden) + .addFunction ("is_gain", &RouteGroup::is_gain) + .addFunction ("is_mute", &RouteGroup::is_mute) + .addFunction ("is_solo", &RouteGroup::is_solo) + .addFunction ("is_recenable", &RouteGroup::is_recenable) + .addFunction ("is_select", &RouteGroup::is_select) + .addFunction ("is_route_active", &RouteGroup::is_route_active) + .addFunction ("is_color", &RouteGroup::is_color) + .addFunction ("is_monitoring", &RouteGroup::is_monitoring) + .addFunction ("group_master_number", &RouteGroup::group_master_number) + .addFunction ("empty", &RouteGroup::empty) + .addFunction ("size", &RouteGroup::size) + .addFunction ("set_active", &RouteGroup::set_active) + .addFunction ("set_relative", &RouteGroup::set_relative) + .addFunction ("set_hidden", &RouteGroup::set_hidden) + .addFunction ("set_gain", &RouteGroup::set_gain) + .addFunction ("set_mute", &RouteGroup::set_mute) + .addFunction ("set_solo", &RouteGroup::set_solo) + .addFunction ("set_recenable", &RouteGroup::set_recenable) + .addFunction ("set_select", &RouteGroup::set_select) + .addFunction ("set_route_active", &RouteGroup::set_route_active) + .addFunction ("set_color", &RouteGroup::set_color) + .addFunction ("set_monitoring", &RouteGroup::set_monitoring) + .addFunction ("add", &RouteGroup::add) + .addFunction ("remove", &RouteGroup::remove) + .addFunction ("clear", &RouteGroup::clear) + .addFunction ("has_subgroup", &RouteGroup::has_subgroup) + .addFunction ("make_subgroup", &RouteGroup::make_subgroup) + .addFunction ("destroy_subgroup", &RouteGroup::destroy_subgroup) + .addFunction ("route_list", &RouteGroup::route_list) .endClass () .deriveClass ("PresentationInfo") @@ -1342,6 +1373,10 @@ LuaBindings::common (lua_State* L) .beginConstStdList > ("WeakRouteList") .endClass () + // RouteList == std::list > + .beginConstStdList ("RouteGroupList") + .endClass () + // typedef std::vector > Region::SourceList .beginStdVector > ("SourceList") .endClass () @@ -1523,6 +1558,11 @@ LuaBindings::common (lua_State* L) .addConst ("MeterCustom", ARDOUR::MeterPoint(MeterCustom)) .endNamespace () + .beginNamespace ("Placement") + .addConst ("PreFader", ARDOUR::Placement(PreFader)) + .addConst ("PostFader", ARDOUR::Placement(PostFader)) + .endNamespace () + .beginNamespace ("NoteMode") .addConst ("Sustained", ARDOUR::NoteMode(Sustained)) .addConst ("Percussive", ARDOUR::NoteMode(Percussive)) @@ -1758,6 +1798,9 @@ LuaBindings::common (lua_State* L) .addFunction ("worst_track_latency", &Session::worst_track_latency) .addFunction ("worst_playback_latency", &Session::worst_playback_latency) .addFunction ("cfg", &Session::cfg) + .addFunction ("route_groups", &Session::route_groups) + .addFunction ("new_route_group", &Session::new_route_group) + .addFunction ("remove_route_group", (void (Session::*)(RouteGroup*))&Session::remove_route_group) .endClass () .beginClass ("RegionFactory") diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index fbfefaec7e..f82212345d 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -2618,6 +2618,25 @@ Session::possible_states () const return possible_states(_path); } +RouteGroup* +Session::new_route_group (const std::string& name) +{ + RouteGroup* rg = NULL; + + for (std::list::const_iterator i = _route_groups.begin (); i != _route_groups.end (); ++i) { + if ((*i)->name () == name) { + rg = *i; + break; + } + } + + if (!rg) { + rg = new RouteGroup (*this, name); + add_route_group (rg); + } + return (rg); +} + void Session::add_route_group (RouteGroup* g) { -- cgit v1.2.3