diff --git a/gtk2_ardour/luainstance.cc b/gtk2_ardour/luainstance.cc index 567347f81e..d7bdc117ce 100644 --- a/gtk2_ardour/luainstance.cc +++ b/gtk2_ardour/luainstance.cc @@ -32,6 +32,7 @@ #include "ardour_http.h" #include "ardour_ui.h" +#include "automation_time_axis.h" #include "public_editor.h" #include "region_selection.h" #include "luainstance.h" @@ -39,6 +40,7 @@ #include "marker.h" #include "processor_box.h" #include "time_axis_view.h" +#include "route_time_axis.h" #include "selection.h" #include "script_selector.h" #include "timers.h" @@ -567,14 +569,57 @@ LuaInstance::register_classes (lua_State* L) .addFunction ("_type", &ArdourMarker::type) .endClass () -#if 0 + .beginClass ("RouteUI") + .addFunction ("request_redraw", &RouteUI::request_redraw) + .addFunction ("is_track", &RouteUI::is_track) + .addFunction ("is_audio_track", &RouteUI::is_audio_track) + .addFunction ("is_midi_track", &RouteUI::is_midi_track) + .endClass () + .beginClass ("AxisView") + .addCast ("to_timeaxisview") + .addFunction ("set_marked_for_display", &AxisView::set_marked_for_display) + .addFunction ("gui_property", &AxisView::gui_property) + .addFunction ("marked_for_display", &AxisView::marked_for_display) + .addFunction ("set_marked_for_display", &AxisView::set_marked_for_display) .endClass () + .deriveClass ("TimeAxisView") - .endClass () - .deriveClass ("RouteTimeAxisView") - .endClass () + .addCast ("to_routetimeaxisview") + .addCast ("to_automationtimeaxisview") + .addFunction ("order", &TimeAxisView::order) + .addFunction ("effective_height", &TimeAxisView::effective_height) + .addFunction ("current_height", &TimeAxisView::current_height) + .addFunction ("set_selected", &TimeAxisView::set_selected) +#if 0 + .addFunction ("hide", &TimeAxisView::hide) + .addFunction ("hidden", &TimeAxisView::hidden) #endif + .addFunction ("selectable", &TimeAxisView::selectable) + //.addFunction ("set_height_enum", &TimeAxisView::set_height_enum) + .addFunction ("playlist", &TimeAxisView::playlist) + .endClass () + + .deriveClass ("AutomationTimeAxisView") + .addFunction ("name", &RouteTimeAxisView::name) + .addFunction ("stripable", &AutomationTimeAxisView::stripable) + .addFunction ("presentation_info", &AutomationTimeAxisView::presentation_info) + .endClass () + + .deriveClass ("RouteTimeAxisView") + .addCast ("to_timeaxisview") + .addFunction ("name", &RouteTimeAxisView::name) + .addFunction ("stripable", &RouteTimeAxisView::stripable) + .addFunction ("automation_tav", &RouteTimeAxisView::automation_tav) +#if 0 // needs further bindings + .addFunction ("set_layer_display", &RouteTimeAxisView::set_layer_display) + .addFunction ("automation_tracks", &RouteTimeAxisView::automation_tracks) + .addFunction ("automation_child_menu_item", &RouteTimeAxisView::automation_child_menu_item) +#endif + .endClass () + + .beginConstStdList ("TimeAxisViewList") + .endClass () .beginClass ("RegionSelection") .addFunction ("clear_all", &RegionSelection::clear_all) @@ -595,6 +640,7 @@ LuaInstance::register_classes (lua_State* L) .beginClass ("TrackViewList") .addFunction ("routelist", &TrackViewList::routelist) // XXX check windows binding (libardour) + .addCast > ("timeaxisviewlist") .endClass () .deriveClass ("TrackSelection") @@ -670,13 +716,13 @@ LuaInstance::register_classes (lua_State* L) .addFunction ("get_current_zoom", &PublicEditor::get_current_zoom) .addFunction ("reset_zoom", &PublicEditor::reset_zoom) -#if 0 // These need TimeAxisView* which isn't exposed, yet +#if 0 // These need PlaylistSelector& and ARDOUR::Playlist .addFunction ("playlist_selector", &PublicEditor::playlist_selector) .addFunction ("clear_playlist", &PublicEditor::clear_playlist) +#endif .addFunction ("new_playlists", &PublicEditor::new_playlists) .addFunction ("copy_playlists", &PublicEditor::copy_playlists) .addFunction ("clear_playlists", &PublicEditor::clear_playlists) -#endif .addFunction ("select_all_tracks", &PublicEditor::select_all_tracks) .addFunction ("deselect_all", &PublicEditor::deselect_all) diff --git a/gtk2_ardour/route_time_axis.h b/gtk2_ardour/route_time_axis.h index 3566d6624e..2053119d47 100644 --- a/gtk2_ardour/route_time_axis.h +++ b/gtk2_ardour/route_time_axis.h @@ -135,6 +135,12 @@ public: const AutomationTracks& automation_tracks() const { return _automation_tracks; } boost::shared_ptr automation_child(Evoral::Parameter param); + + AutomationTimeAxisView* automation_tav (Evoral::Parameter param) { + boost::shared_ptr atav = automation_child (param); + return atav ? atav.get() : 0; + } + virtual Gtk::CheckMenuItem* automation_child_menu_item (Evoral::Parameter); StreamView* view() const { return _view; } diff --git a/scripts/s_selection.lua b/scripts/s_selection.lua index 1963ac1ec5..28b2ff0820 100644 --- a/scripts/s_selection.lua +++ b/scripts/s_selection.lua @@ -30,6 +30,24 @@ function factory () return function () print ("Route:", r:name ()) end + -- Track/Bus Selection + -- http://manual.ardour.org/lua-scripting/class_reference/#ArdourUI:TrackViewList + -- http://manual.ardour.org/lua-scripting/class_reference/#ArdourUI:TimeAxisViewList + for tav in sel.tracks:timeaxisviewlist ():iter () do + local rtav = tav:to_routetimeaxisview () + if rtav then + print ("RTAV:", rtav:name()) + local atav = rtav:automation_tav (Evoral.Parameter(ARDOUR.AutomationType.MuteAutomation, 0, 0)) + if atav then + -- XXX doesn't work... we need to access the automation_child_menu_item().. + atav:set_marked_for_display (true) + rtav:request_redraw () + end + -- may assert if the menu hasn't been used + --rtav:toggle_automation_track (Evoral.Parameter(ARDOUR.AutomationType.MuteAutomation, 0, 0)) + end + end + -- Region selection -- http://manual.ardour.org/lua-scripting/class_reference/#ArdourUI:RegionSelection for r in sel.regions:regionlist ():iter () do