X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fluainstance.h;h=60bbca7c88335bd2221d8bff63d169eb697cc3f3;hb=aea350c958e2ec8ff545123cee5ae9157ef66fe3;hp=7bb572323e2a650202d66e2257a4c542a84a66a1;hpb=e54c77e642edeed4a9e5f760cfff110ee3012585;p=ardour.git diff --git a/gtk2_ardour/luainstance.h b/gtk2_ardour/luainstance.h index 7bb572323e..60bbca7c88 100644 --- a/gtk2_ardour/luainstance.h +++ b/gtk2_ardour/luainstance.h @@ -3,19 +3,25 @@ #include +#include + #include "pbd/id.h" #include "pbd/signals.h" #include "pbd/xml++.h" #include "ardour/luascripting.h" +#include "ardour/lua_script_params.h" #include "ardour/luabindings.h" #include "ardour/session_handle.h" #include "lua/luastate.h" -#include "LuaBridge/LuaBridge.h" #include "luasignal.h" +namespace luabridge { + class LuaRef; +} + typedef std::bitset ActionHook; class LuaCallback : public ARDOUR::SessionHandlePtr, public sigc::trackable @@ -75,10 +81,15 @@ class LuaInstance : public PBD::ScopedConnectionList, public ARDOUR::SessionHand { public: static LuaInstance* instance(); + static void destroy_instance(); ~LuaInstance(); static void register_classes (lua_State* L); static void register_hooks (lua_State* L); + static void bind_cairo (lua_State* L); + static void bind_dialog (lua_State* L); + + static void render_action_icon (cairo_t* cr, int w, int h, uint32_t c, void* i); void set_session (ARDOUR::Session* s); @@ -90,12 +101,14 @@ public: /* actions */ void call_action (const int); + void render_icon (int i, cairo_t*, int, int, uint32_t); bool set_lua_action (const int, const std::string&, const std::string&, const ARDOUR::LuaScriptParamList&); bool remove_lua_action (const int); bool lua_action_name (const int, std::string&); std::vector lua_action_names (); bool lua_action (const int, std::string&, std::string&, ARDOUR::LuaScriptParamList&); + bool lua_action_has_icon (const int); sigc::signal ActionChanged; /* callbacks */ @@ -107,6 +120,9 @@ public: bool lua_slot (const PBD::ID&, std::string&, std::string&, ActionHook&, ARDOUR::LuaScriptParamList&); sigc::signal SlotChanged; + static PBD::Signal0 LuaTimerDS; // deci-seconds (Timer every .1s) + static PBD::Signal0 SetSession; // emitted when a session is loaded + private: LuaInstance(); static LuaInstance* _instance; @@ -117,6 +133,7 @@ private: LuaState lua; luabridge::LuaRef * _lua_call_action; + luabridge::LuaRef * _lua_render_icon; luabridge::LuaRef * _lua_add_action; luabridge::LuaRef * _lua_del_action; luabridge::LuaRef * _lua_get_action; @@ -127,6 +144,9 @@ private: LuaCallbackMap _callbacks; PBD::ScopedConnectionList _slotcon; + + void every_point_one_seconds (); + sigc::connection point_one_second_connection; }; #endif