diff options
author | Robin Gareus <robin@gareus.org> | 2015-04-25 20:17:58 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-04-25 21:25:19 +0200 |
commit | 52d67203a10d3223f9f283fb56803b7979a0c2bd (patch) | |
tree | b869dbd39cb87f14846dbfd6c11903e73b422997 /gtk2_ardour/route_time_axis.cc | |
parent | 517467f29747acde8baa6f42ed064e2ed58f5ea5 (diff) |
Trim Automation UI
Diffstat (limited to 'gtk2_ardour/route_time_axis.cc')
-rw-r--r-- | gtk2_ardour/route_time_axis.cc | 50 |
1 files changed, 50 insertions, 0 deletions
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<Gtk::CheckMenuItem*> (&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<Gtk::CheckMenuItem*> (&items.back ()); @@ -1897,6 +1907,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 () { bool const showit = mute_automation_item->get_active(); @@ -2750,6 +2776,30 @@ RouteTimeAxisView::create_gain_automation_child (const Evoral::Parameter& param, } void +RouteTimeAxisView::create_trim_automation_child (const Evoral::Parameter& param, bool show) +{ + boost::shared_ptr<AutomationControl> 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) { boost::shared_ptr<AutomationControl> c = _route->mute_control(); |