From 9b8040a9f4d9094f745a27144e210ca6cbbcb8b3 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 4 Jul 2023 21:06:25 +0200 Subject: [PATCH] Add Lua signal emitted when editor selection changed --- gtk2_ardour/luainstance.cc | 13 +++++++++++++ gtk2_ardour/luainstance.h | 4 ++++ gtk2_ardour/luasignal_syms.h | 3 +++ 3 files changed, 20 insertions(+) diff --git a/gtk2_ardour/luainstance.cc b/gtk2_ardour/luainstance.cc index d54e551ed9..6898428587 100644 --- a/gtk2_ardour/luainstance.cc +++ b/gtk2_ardour/luainstance.cc @@ -539,6 +539,7 @@ using namespace ARDOUR; PBD::Signal0 LuaInstance::LuaTimerS; PBD::Signal0 LuaInstance::LuaTimerDS; PBD::Signal0 LuaInstance::SetSession; +PBD::Signal0 LuaInstance::SelectionChanged; void LuaInstance::register_hooks (lua_State* L) @@ -1346,6 +1347,12 @@ LuaInstance::init () luabridge::push (L, &PublicEditor::instance()); lua_setglobal (L, "Editor"); + + Selection& sel (PublicEditor::instance().get_selection ()); + sel.TimeChanged.connect (sigc::mem_fun (*this, &LuaInstance::selection_changed)); + sel.RegionsChanged.connect (sigc::mem_fun (*this, &LuaInstance::selection_changed)); + sel.TracksChanged.connect (sigc::mem_fun (*this, &LuaInstance::selection_changed)); + sel.MarkersChanged.connect (sigc::mem_fun (*this, &LuaInstance::selection_changed)); } int @@ -1458,6 +1465,12 @@ LuaInstance::every_point_one_seconds () LuaTimerDS (); // emit signal } +void +LuaInstance::selection_changed () +{ + SelectionChanged (); // emit signal +} + int LuaInstance::set_state (const XMLNode& node) { diff --git a/gtk2_ardour/luainstance.h b/gtk2_ardour/luainstance.h index 4b146e7ba0..ba16bf6591 100644 --- a/gtk2_ardour/luainstance.h +++ b/gtk2_ardour/luainstance.h @@ -154,6 +154,7 @@ public: static PBD::Signal0 LuaTimerS; // deci-seconds (Timer every 1s) static PBD::Signal0 LuaTimerDS; // deci-seconds (Timer every .1s) static PBD::Signal0 SetSession; // emitted when a session is loaded + static PBD::Signal0 SelectionChanged; // emitted when editor selection changes private: LuaInstance(); @@ -180,11 +181,14 @@ private: LuaCallbackMap _callbacks; PBD::ScopedConnectionList _slotcon; + void selection_changed (); + void every_second (); sigc::connection second_connection; void every_point_one_seconds (); sigc::connection point_one_second_connection; + }; #endif diff --git a/gtk2_ardour/luasignal_syms.h b/gtk2_ardour/luasignal_syms.h index 0256bcff9b..8f5630c84a 100644 --- a/gtk2_ardour/luasignal_syms.h +++ b/gtk2_ardour/luasignal_syms.h @@ -91,6 +91,9 @@ STATIC(LuaTimerDS, &LuaInstance::LuaTimerDS, 0) // Session load STATIC(SetSession, &LuaInstance::SetSession, 0) +// Editor Selection Changed +STATIC(SelectionChanged, &LuaInstance::SelectionChanged, 0) + // TODO per track/route signals, // TODO per plugin actions / controllables // TODO per region actions