From 52d67203a10d3223f9f283fb56803b7979a0c2bd Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 25 Apr 2015 20:17:58 +0200 Subject: Trim Automation UI --- gtk2_ardour/route_time_axis.cc | 50 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'gtk2_ardour/route_time_axis.cc') diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index c0dedb895b..d0e116c971 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -112,6 +112,7 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session* sess, ArdourCan , gm (sess, true, 75, 14) , _ignore_set_layer_display (false) , gain_automation_item(NULL) + , trim_automation_item(NULL) , mute_automation_item(NULL) , pan_automation_item(NULL) { @@ -522,6 +523,15 @@ RouteTimeAxisView::build_automation_action_menu (bool for_selection) _main_automation_menu_map[Evoral::Parameter(GainAutomation)] = gain_automation_item; } + if (trim_track) { + items.push_back (CheckMenuElem (_("Trim"), sigc::mem_fun (*this, &RouteTimeAxisView::update_trim_track_visibility))); + trim_automation_item = dynamic_cast (&items.back ()); + trim_automation_item->set_active ((!for_selection || _editor.get_selection().tracks.size() == 1) && + (trim_track && string_is_affirmative (trim_track->gui_property ("visible")))); + + _main_automation_menu_map[Evoral::Parameter(TrimAutomation)] = trim_automation_item; + } + if (mute_track) { items.push_back (CheckMenuElem (_("Mute"), sigc::mem_fun (*this, &RouteTimeAxisView::update_mute_track_visibility))); mute_automation_item = dynamic_cast (&items.back ()); @@ -1896,6 +1906,22 @@ RouteTimeAxisView::update_gain_track_visibility () } } +void +RouteTimeAxisView::update_trim_track_visibility () +{ + bool const showit = trim_automation_item->get_active(); + + if (showit != string_is_affirmative (trim_track->gui_property ("visible"))) { + trim_track->set_marked_for_display (showit); + + /* now trigger a redisplay */ + + if (!no_redraw) { + _route->gui_changed (X_("visible_tracks"), (void *) 0); /* EMIT_SIGNAL */ + } + } +} + void RouteTimeAxisView::update_mute_track_visibility () { @@ -2749,6 +2775,30 @@ RouteTimeAxisView::create_gain_automation_child (const Evoral::Parameter& param, add_automation_child (Evoral::Parameter(GainAutomation), gain_track, show); } +void +RouteTimeAxisView::create_trim_automation_child (const Evoral::Parameter& param, bool show) +{ + boost::shared_ptr c = _route->trim()->gain_control(); + if (!c || ! _route->trim()->active()) { + error << "Route has no trim automation, unable to add automation track view." << endmsg; + return; + } + + trim_track.reset (new AutomationTimeAxisView (_session, + _route, _route->trim(), c, param, + _editor, + *this, + false, + parent_canvas, + _route->trim()->describe_parameter(param))); + + if (_view) { + _view->foreach_regionview (sigc::mem_fun (*trim_track.get(), &TimeAxisView::add_ghost)); + } + + add_automation_child (Evoral::Parameter(TrimAutomation), trim_track, show); +} + void RouteTimeAxisView::create_mute_automation_child (const Evoral::Parameter& param, bool show) { -- cgit v1.2.3