Add a new API to format midi-note-names with translation: Do Re Mi...
[ardour.git] / libs / ardour / ardour / luascripting.h
index a5a066b2cd57657690cbd0d217f6755db85fb4d1..1e7833fc543002db095cb97a579f36794652a0cd 100644 (file)
@@ -23,6 +23,7 @@
 #include <boost/shared_ptr.hpp>
 #include <glibmm/threads.h>
 
+#include "pbd/signals.h"
 #include "ardour/libardour_visibility.h"
 
 namespace ARDOUR {
@@ -36,15 +37,17 @@ class LIBARDOUR_API LuaScriptInfo {
                Session,
                EditorHook,
                EditorAction,
+               Snippet,
        };
 
        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)
        , name (n)
        , path (p)
+       , unique_id (uid)
        { }
 
        virtual ~LuaScriptInfo () { }
@@ -52,6 +55,7 @@ class LIBARDOUR_API LuaScriptInfo {
        ScriptType type;
        std::string name;
        std::string path;
+       std::string unique_id;
 
        std::string author;
        std::string license;
@@ -98,24 +102,19 @@ public:
        ~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 LuaScriptParamList script_params (LuaScriptInfoPtr, const std::string &);
-       static LuaScriptParamList session_script_params (LuaScriptInfoPtr lsi) {
-               return script_params (lsi, "sess_params");
-       }
-
+       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 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);
 
@@ -123,6 +122,7 @@ private:
        LuaScriptList *_sl_session;
        LuaScriptList *_sl_hook;
        LuaScriptList *_sl_action;
+       LuaScriptList *_sl_snippet;
        LuaScriptList  _empty_script_info;
 
        Glib::Threads::Mutex _lock;