diff options
author | Robin Gareus <robin@gareus.org> | 2017-02-19 00:07:16 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-02-19 01:29:08 +0100 |
commit | a732c7c9faa316a4a0af908fb3bf8abd28f41b0a (patch) | |
tree | 6ce4ca28d2e6ca6624f6db81b6381cdcb4008d32 /gtk2_ardour/luainstance.cc | |
parent | 32fe5a083e43065e2ca277bcae834b137fce8d66 (diff) |
Allow to un/load Lua Session Scripts in the Script Manager
Diffstat (limited to 'gtk2_ardour/luainstance.cc')
-rw-r--r-- | gtk2_ardour/luainstance.cc | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/gtk2_ardour/luainstance.cc b/gtk2_ardour/luainstance.cc index 966715edc0..bfa72b2907 100644 --- a/gtk2_ardour/luainstance.cc +++ b/gtk2_ardour/luainstance.cc @@ -1101,16 +1101,25 @@ bool LuaInstance::interactive_add (LuaScriptInfo::ScriptType type, int id) { std::string title; + std::string param_function = "action_params"; std::vector<std::string> reg; switch (type) { case LuaScriptInfo::EditorAction: reg = lua_action_names (); - title = "Add Lua Action"; + title = _("Add Lua Action"); break; case LuaScriptInfo::EditorHook: reg = lua_slot_names (); - title = "Add Lua Callback Hook"; + title = _("Add Lua Callback Hook"); + break; + case LuaScriptInfo::Session: + if (!_session) { + return false; + } + reg = _session->registered_lua_functions (); + title = _("Add Lua Session Script"); + param_function = "sess_params"; break; default: return false; @@ -1138,7 +1147,7 @@ LuaInstance::interactive_add (LuaScriptInfo::ScriptType type, int id) return false; } - LuaScriptParamList lsp = LuaScriptParams::script_params (spi, "action_params"); + LuaScriptParamList lsp = LuaScriptParams::script_params (spi, param_function); ScriptParameterDialog spd (_("Set Script Parameters"), spi, reg, lsp); switch (spd.run ()) { @@ -1155,6 +1164,18 @@ LuaInstance::interactive_add (LuaScriptInfo::ScriptType type, int id) case LuaScriptInfo::EditorHook: return register_lua_slot (spd.name(), script, lsp); break; + case LuaScriptInfo::Session: + try { + _session->register_lua_function (spd.name(), script, lsp); + } catch (luabridge::LuaException const& e) { + string msg = string_compose (_("Session script '%1' instantiation failed: %2"), spd.name(), e.what ()); + Gtk::MessageDialog am (msg); + am.run (); + } catch (SessionException e) { + string msg = string_compose (_("Loading Session script '%1' failed: %2"), spd.name(), e.what ()); + Gtk::MessageDialog am (msg); + am.run (); + } default: break; } |