summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-08-18 20:41:35 +0200
committerRobin Gareus <robin@gareus.org>2017-08-18 20:42:55 +0200
commite0a83a758e458b56d55a0e0beceb90129fc02354 (patch)
tree71a03d4965f2d2d2a13b47c457a093d876dedd1b /libs/ardour
parente951e6878097b2d4073cf815e8d9693cafaa5884 (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.h13
-rw-r--r--libs/ardour/luascripting.cc34
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;
}