diff --git a/libs/ardour/ardour/lua_api.h b/libs/ardour/ardour/lua_api.h index 6d1deeb5aa..fe956c6b43 100644 --- a/libs/ardour/ardour/lua_api.h +++ b/libs/ardour/ardour/lua_api.h @@ -65,6 +65,10 @@ namespace ARDOUR { namespace LuaAPI { */ boost::shared_ptr new_luaproc (ARDOUR::Session *s, const std::string& p); + /** return a PluginInfoList (all plugin) + */ + std::list > list_plugins (); + /** search a Plugin * * @param id Plugin Name, ID or URI diff --git a/libs/ardour/lua_api.cc b/libs/ardour/lua_api.cc index 001ddc11bf..59d2749399 100644 --- a/libs/ardour/lua_api.cc +++ b/libs/ardour/lua_api.cc @@ -103,6 +103,30 @@ ARDOUR::LuaAPI::new_luaproc (Session *s, const string& name) return boost::shared_ptr (new PluginInsert (*s, p)); } +PluginInfoList +ARDOUR::LuaAPI::list_plugins () +{ + PluginManager& manager = PluginManager::instance (); + PluginInfoList all_plugs; + all_plugs.insert (all_plugs.end (), manager.ladspa_plugin_info ().begin (), manager.ladspa_plugin_info ().end ()); + all_plugs.insert (all_plugs.end (), manager.lua_plugin_info ().begin (), manager.lua_plugin_info ().end ()); +#ifdef WINDOWS_VST_SUPPORT + all_plugs.insert (all_plugs.end (), manager.windows_vst_plugin_info ().begin (), manager.windows_vst_plugin_info ().end ()); +#endif +#ifdef LXVST_SUPPORT + all_plugs.insert (all_plugs.end (), manager.lxvst_plugin_info ().begin (), manager.lxvst_plugin_info ().end ()); +#endif +#ifdef AUDIOUNIT_SUPPORT + all_plugs.insert (all_plugs.end (), manager.au_plugin_info ().begin (), manager.au_plugin_info ().end ()); +#endif +#ifdef LV2_SUPPORT + all_plugs.insert (all_plugs.end (), manager.lv2_plugin_info ().begin (), manager.lv2_plugin_info ().end ()); +#endif + all_plugs.insert (all_plugs.end (), manager.lua_plugin_info ().begin (), manager.lua_plugin_info ().end ()); + + return all_plugs; +} + PluginInfoPtr ARDOUR::LuaAPI::new_plugin_info (const string& name, ARDOUR::PluginType type) { diff --git a/libs/ardour/luabindings.cc b/libs/ardour/luabindings.cc index 2dbf5adc84..ac5353da1c 100644 --- a/libs/ardour/luabindings.cc +++ b/libs/ardour/luabindings.cc @@ -199,6 +199,7 @@ CLASSKEYS(ARDOUR::RouteGroup); CLASSKEYS(ARDOUR::ParameterDescriptor); CLASSKEYS(ARDOUR::PeakMeter); CLASSKEYS(ARDOUR::PluginInfo); +CLASSKEYS(ARDOUR::PluginInfo); CLASSKEYS(ARDOUR::Plugin::PresetRecord); CLASSKEYS(ARDOUR::PortEngine); CLASSKEYS(ARDOUR::PortManager); @@ -232,6 +233,7 @@ CLASSKEYS(std::list); CLASSKEYS(std::vector); CLASSKEYS(std::vector >); CLASSKEYS(std::vector >); +CLASSKEYS(std::list >); // PluginInfoList CLASSKEYS(std::list); CLASSKEYS(std::list); @@ -1324,6 +1326,7 @@ LuaBindings::common (lua_State* L) .endClass () .beginStdVector ("PresetVector").endClass () + .beginStdList > ("PluginInfoList").endClass () .deriveClass ("ParameterDescriptor") .addVoidConstructor () @@ -2303,6 +2306,7 @@ LuaBindings::common (lua_State* L) .beginNamespace ("LuaAPI") .addFunction ("nil_proc", ARDOUR::LuaAPI::nil_processor) .addFunction ("new_luaproc", ARDOUR::LuaAPI::new_luaproc) + .addFunction ("list_plugins", ARDOUR::LuaAPI::list_plugins) .addFunction ("new_plugin_info", ARDOUR::LuaAPI::new_plugin_info) .addFunction ("new_plugin", ARDOUR::LuaAPI::new_plugin) .addFunction ("set_processor_param", ARDOUR::LuaAPI::set_processor_param)