Prefer testing the session instead of using a global variable
[ardour.git] / gtk2_ardour / luainstance.h
index a96cda10d6e5a90d236d04f9bd944bab14828638..9915d6b3067e4a15f938fae93b81e7d2038e77da 100644 (file)
@@ -70,6 +70,9 @@ private:
 
        template <typename T, typename C1, typename C2> void connect_2 (enum LuaSignal::LuaSignal, T, PBD::Signal2<void, C1, C2>*);
        template <typename T, typename C1, typename C2> void proxy_2 (enum LuaSignal::LuaSignal, T, C1, C2);
+
+       template <typename T, typename C1, typename C2, typename C3> void connect_3 (enum LuaSignal::LuaSignal, T, PBD::Signal3<void, C1, C2, C3>*);
+       template <typename T, typename C1, typename C2, typename C3> void proxy_3 (enum LuaSignal::LuaSignal, T, C1, C2, C3);
 };
 
 typedef boost::shared_ptr<LuaCallback> LuaCallbackPtr;
@@ -91,14 +94,15 @@ public:
 
        static void render_action_icon (cairo_t* cr, int w, int h, uint32_t c, void* i);
 
-       static void _lua_print (std::string s);
-
        void set_session (ARDOUR::Session* s);
 
        int set_state (const XMLNode&);
        XMLNode& get_action_state (void);
        XMLNode& get_hook_state (void);
 
+       int load_state ();
+       int save_state ();
+
        bool interactive_add (ARDOUR::LuaScriptInfo::ScriptType, int);
 
        /* actions */
@@ -122,6 +126,7 @@ public:
        bool lua_slot (const PBD::ID&, std::string&, std::string&, ActionHook&, ARDOUR::LuaScriptParamList&);
        sigc::signal<void,PBD::ID,std::string,ActionHook> SlotChanged;
 
+       static PBD::Signal0<void> LuaTimerS; // deci-seconds (Timer every 1s)
        static PBD::Signal0<void> LuaTimerDS; // deci-seconds (Timer every .1s)
        static PBD::Signal0<void> SetSession; // emitted when a session is loaded
 
@@ -130,6 +135,7 @@ private:
        static LuaInstance* _instance;
 
        void init ();
+       void set_dirty ();
        void session_going_away ();
 
        LuaState lua;
@@ -147,6 +153,9 @@ private:
        LuaCallbackMap _callbacks;
        PBD::ScopedConnectionList _slotcon;
 
+       void every_second ();
+       sigc::connection second_connection;
+
        void every_point_one_seconds ();
        sigc::connection point_one_second_connection;
 };