X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Froute_time_axis.cc;h=94ed2a86f044abc8909cf70b6496e1293a8bc77f;hb=009a06a7734272560d4d61350d98a2d279832ddf;hp=20c98765190ddfaadb49965cbe3ab161c8c8f195;hpb=99054ea415c8a28227024bc27152fdf30379bdf9;p=ardour.git diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index 20c9876519..94ed2a86f0 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -59,6 +59,7 @@ #include "ardour_ui.h" #include "ardour_button.h" +#include "audio_streamview.h" #include "debug.h" #include "global_signals.h" #include "route_time_axis.h" @@ -100,9 +101,9 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session* sess, ArdourCan , parent_canvas (canvas) , no_redraw (false) , button_table (3, 3) - , route_group_button (_("G")) - , playlist_button (_("P")) - , automation_button (_("A")) + , route_group_button (S_("RTAV|G")) + , playlist_button (S_("RTAV|P")) + , automation_button (S_("RTAV|A")) , automation_action_menu (0) , plugins_submenu_item (0) , route_group_menu (0) @@ -112,6 +113,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) { @@ -156,9 +158,6 @@ RouteTimeAxisView::set_route (boost::shared_ptr rt) set_gui_property ("visible", false); } - mute_changed (0); - update_solo_display (); - timestretch_rect = 0; no_redraw = false; @@ -323,6 +322,8 @@ RouteTimeAxisView::set_route (boost::shared_ptr rt) RouteTimeAxisView::~RouteTimeAxisView () { + cleanup_gui_properties (); + for (list::iterator i = processor_automation.begin(); i != processor_automation.end(); ++i) { delete *i; } @@ -523,6 +524,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 ()); @@ -853,12 +863,8 @@ RouteTimeAxisView::build_display_menu () items.push_back (SeparatorElem()); items.push_back (MenuElem (_("Hide"), sigc::bind (sigc::mem_fun(_editor, &PublicEditor::hide_track_in_display), this, true))); - if (!Profile->get_sae()) { - items.push_back (MenuElem (_("Remove"), sigc::bind (sigc::mem_fun(*this, &RouteUI::remove_this_route), true))); - } else { - items.push_front (SeparatorElem()); - items.push_front (MenuElem (_("Delete"), sigc::bind (sigc::mem_fun(*this, &RouteUI::remove_this_route), true))); - } + items.push_front (SeparatorElem()); + items.push_front (MenuElem (_("Remove"), sigc::mem_fun(_editor, &PublicEditor::remove_tracks))); } void @@ -961,7 +967,7 @@ RouteTimeAxisView::show_selection (TimeSelection& ts) } void -RouteTimeAxisView::set_height (uint32_t h) +RouteTimeAxisView::set_height (uint32_t h, TrackHeightMode m) { int gmlen = h - 9; bool height_changed = (height == 0) || (h != height); @@ -972,7 +978,7 @@ RouteTimeAxisView::set_height (uint32_t h) } gm.get_level_meter().setup_meters (gmlen, meter_width); - TimeAxisView::set_height (h); + TimeAxisView::set_height (h, m); if (_view) { _view->set_height ((double) current_height()); @@ -1337,6 +1343,10 @@ RouteTimeAxisView::set_selected_points (PointSelection& points) for (Children::iterator i = children.begin(); i != children.end(); ++i) { (*i)->set_selected_points (points); } + AudioStreamView* asv = dynamic_cast(_view); + if (asv) { + asv->set_selected_points (points); + } } void @@ -1609,6 +1619,7 @@ RouteTimeAxisView::paste (framepos_t pos, const Selection& selection, PasteConte pos += _editor.get_paste_offset(pos, ctx.count, duration); pl->clear_changes (); + pl->clear_owned_changes (); if (Config->get_edit_mode() == Ripple) { std::pair extent = (*p)->get_extent_with_endspace(); framecnt_t amount = extent.second - extent.first; @@ -1901,6 +1912,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 () { @@ -2556,7 +2583,7 @@ RouteTimeAxisView::meter_changed () { ENSURE_GUI_THREAD (*this, &RouteTimeAxisView::meter_changed) reset_meter(); - if (_route && !no_redraw) { + if (_route && !no_redraw && ARDOUR_UI::config()->get_show_track_meters()) { request_redraw (); } // reset peak when meter point changes @@ -2699,19 +2726,19 @@ RouteTimeAxisView::set_button_names () if (Config->get_solo_control_is_listen_control()) { switch (Config->get_listen_position()) { case AfterFaderListen: - solo_button->set_text (_("A")); + solo_button->set_text (S_("AfterFader|A")); ARDOUR_UI::instance()->set_tip (*solo_button, _("After-fade listen (AFL)")); break; case PreFaderListen: - solo_button->set_text (_("P")); + solo_button->set_text (S_("PreFader|P")); ARDOUR_UI::instance()->set_tip (*solo_button, _("Pre-fade listen (PFL)")); break; } } else { - solo_button->set_text (_("S")); + solo_button->set_text (S_("Solo|S")); ARDOUR_UI::instance()->set_tip (*solo_button, _("Solo")); } - mute_button->set_text (_("M")); + mute_button->set_text (S_("Mute|M")); } Gtk::CheckMenuItem* @@ -2754,6 +2781,29 @@ 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()) { + 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) {