diff options
author | Robin Gareus <robin@gareus.org> | 2017-08-18 20:41:35 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-08-18 20:42:55 +0200 |
commit | e0a83a758e458b56d55a0e0beceb90129fc02354 (patch) | |
tree | 71a03d4965f2d2d2a13b47c457a093d876dedd1b /libs/ardour | |
parent | e951e6878097b2d4073cf815e8d9693cafaa5884 (diff) |
Redesign Session+Route Template Meta Script API
Remove special-cased script types. Allow Action-Scripts to be re-used
for session-setup or route-templates.
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/luascripting.h | 13 | ||||
-rw-r--r-- | libs/ardour/luascripting.cc | 34 |
2 files changed, 33 insertions, 14 deletions
diff --git a/libs/ardour/ardour/luascripting.h b/libs/ardour/ardour/luascripting.h index 7ea26a339a..a184c4058b 100644 --- a/libs/ardour/ardour/luascripting.h +++ b/libs/ardour/ardour/luascripting.h @@ -38,8 +38,14 @@ class LIBARDOUR_API LuaScriptInfo { EditorHook, EditorAction, Snippet, - SessionSetup, - TrackSetup, + SessionInit, + }; + + /* binary flags, valid for ActionScripts */ + enum ScriptSubType { + None = 0x00, + RouteSetup = 0x01, + SessionSetup = 0x02, }; static std::string type2str (const ScriptType t); @@ -47,6 +53,7 @@ class LIBARDOUR_API LuaScriptInfo { LuaScriptInfo (ScriptType t, const std::string &n, const std::string &p, const std::string &uid) : type (t) + , subtype (0) , name (n) , path (p) , unique_id (uid) @@ -55,6 +62,8 @@ class LIBARDOUR_API LuaScriptInfo { virtual ~LuaScriptInfo () { } ScriptType type; + uint32_t subtype; + std::string name; std::string path; std::string unique_id; diff --git a/libs/ardour/luascripting.cc b/libs/ardour/luascripting.cc index 31437fcf6e..e2fc9d49f1 100644 --- a/libs/ardour/luascripting.cc +++ b/libs/ardour/luascripting.cc @@ -158,12 +158,9 @@ LuaScripting::scan () case LuaScriptInfo::Snippet: _sl_snippet->push_back(lsi); break; - case LuaScriptInfo::SessionSetup: + case LuaScriptInfo::SessionInit: _sl_setup->push_back(lsi); break; - case LuaScriptInfo::TrackSetup: - _sl_tracks->push_back(lsi); - break; default: break; } @@ -286,6 +283,24 @@ LuaScripting::scan_script (const std::string &fn, const std::string &sc) if (key == "description") { lsi->description = val; } if (key == "category") { lsi->category = val; } } + + + if (type == LuaScriptInfo::EditorAction) { + + luabridge::LuaRef lua_rs = luabridge::getGlobal (L, "route_setup"); + if (lua_rs.isFunction ()) { + lsi->subtype |= LuaScriptInfo::RouteSetup; + } + + luabridge::LuaRef lua_ss = luabridge::getGlobal (L, "session_setup"); + if (lua_ss.isFunction ()) { + if (lua_ss () == true) { + lsi->subtype |= LuaScriptInfo::SessionSetup; + } + } + + } + return lsi; } @@ -312,12 +327,9 @@ LuaScripting::scripts (LuaScriptInfo::ScriptType type) { case LuaScriptInfo::Snippet: return *_sl_snippet; break; - case LuaScriptInfo::SessionSetup: + case LuaScriptInfo::SessionInit: return *_sl_setup; break; - case LuaScriptInfo::TrackSetup: - return *_sl_tracks; - break; default: break; } @@ -333,8 +345,7 @@ LuaScriptInfo::type2str (const ScriptType t) { case LuaScriptInfo::EditorHook: return "EditorHook"; case LuaScriptInfo::EditorAction: return "EditorAction"; case LuaScriptInfo::Snippet: return "Snippet"; - case LuaScriptInfo::SessionSetup: return "SessionSetup"; - case LuaScriptInfo::TrackSetup: return "TrackSetup"; + case LuaScriptInfo::SessionInit: return "SessionInit"; default: return "Invalid"; } } @@ -347,8 +358,7 @@ LuaScriptInfo::str2type (const std::string& str) { if (!strcasecmp (type, "EditorHook")) {return LuaScriptInfo::EditorHook;} if (!strcasecmp (type, "EditorAction")) {return LuaScriptInfo::EditorAction;} if (!strcasecmp (type, "Snippet")) {return LuaScriptInfo::Snippet;} - if (!strcasecmp (type, "SessionSetup")) {return LuaScriptInfo::SessionSetup;} - if (!strcasecmp (type, "TrackSetup")) {return LuaScriptInfo::TrackSetup;} + if (!strcasecmp (type, "SessionInit")) {return LuaScriptInfo::SessionInit;} return LuaScriptInfo::Invalid; } |