#include <boost/shared_ptr.hpp>
#include <glibmm/threads.h>
+#include "pbd/signals.h"
#include "ardour/libardour_visibility.h"
namespace ARDOUR {
Session,
EditorHook,
EditorAction,
+ Snippet,
+ SessionInit,
+ };
+
+ /* binary flags, valid for ActionScripts */
+ enum ScriptSubType {
+ None = 0x00,
+ RouteSetup = 0x01,
+ SessionSetup = 0x02,
};
static std::string type2str (const ScriptType t);
static ScriptType str2type (const std::string& str);
- LuaScriptInfo (ScriptType t, const std::string &n, const std::string &p)
+ 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)
{ }
virtual ~LuaScriptInfo () { }
ScriptType type;
+ uint32_t subtype;
+
std::string name;
std::string path;
+ std::string unique_id;
std::string author;
std::string license;
~LuaScripting ();
LuaScriptList &scripts (LuaScriptInfo::ScriptType);
+ void refresh (bool run_scan = false);
+ PBD::Signal0<void> scripts_changed;
- void refresh ();
- static LuaScriptInfoPtr script_info (const std::string &script ) { return scan_script ("", script); }
+ static LuaScriptInfoPtr script_info (const std::string &script);
static bool try_compile (const std::string&, const LuaScriptParamList&);
- static std::string get_factory_bytecode (const std::string&);
+ static std::string get_factory_bytecode (const std::string&, const std::string& ffn = "factory", const std::string& fp = "f");
+ static std::string user_script_dir ();
private:
static LuaScripting* _instance; // singleton
LuaScripting ();
void scan ();
- void check_scan ();
static LuaScriptInfoPtr scan_script (const std::string &, const std::string & sc = "");
static void lua_print (std::string s);
LuaScriptList *_sl_session;
LuaScriptList *_sl_hook;
LuaScriptList *_sl_action;
+ LuaScriptList *_sl_snippet;
+ LuaScriptList *_sl_setup;
+ LuaScriptList *_sl_tracks;
LuaScriptList _empty_script_info;
Glib::Threads::Mutex _lock;