From af6941ac3409167cc7e4eb799035fbcdc9e835dd Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 9 Jun 2017 14:48:33 +0200 Subject: Prepare VCA Automation Lanes -- refactor TAV * add an abstract StripableTimeAxisView (Route TAV + VCA TAV) * move common strip-methods into STAV * Add Automation Lanes to VCA TAV * Allow ATAV without Automatable for VCA Controls --- gtk2_ardour/route_time_axis.cc | 189 +++-------------------------------------- 1 file changed, 10 insertions(+), 179 deletions(-) (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 a32f6b27df..b60f35e8b7 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -97,10 +97,8 @@ using std::list; RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session* sess, ArdourCanvas::Canvas& canvas) : RouteUI(sess) - , TimeAxisView(sess,ed,(TimeAxisView*) 0, canvas) + , StripableTimeAxisView(ed, sess, canvas) , _view (0) - , parent_canvas (canvas) - , no_redraw (false) , button_table (3, 3) , route_group_button (S_("RTAV|G")) , playlist_button (S_("RTAV|P")) @@ -113,9 +111,6 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session* sess, ArdourCan , color_mode_menu (0) , 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) { number_label.set_name("tracknumber label"); @@ -141,6 +136,7 @@ void RouteTimeAxisView::set_route (boost::shared_ptr rt) { RouteUI::set_route (rt); + StripableTimeAxisView::set_stripable (rt); CANVAS_DEBUG_NAME (_canvas_display, string_compose ("main for %1", rt->name())); CANVAS_DEBUG_NAME (selection_group, string_compose ("selections for %1", rt->name())); @@ -320,7 +316,6 @@ RouteTimeAxisView::set_route (boost::shared_ptr rt) } - _editor.ZoomChanged.connect (sigc::mem_fun(*this, &RouteTimeAxisView::reset_samples_per_pixel)); UIConfiguration::instance().ColorsChanged.connect (sigc::mem_fun (*this, &RouteTimeAxisView::color_handler)); PropertyList* plist = new PropertyList(); @@ -1092,12 +1087,6 @@ RouteTimeAxisView::route_color_changed () number_label.set_fixed_colors (gdk_color_to_rgba (color()), gdk_color_to_rgba (color())); } -void -RouteTimeAxisView::reset_samples_per_pixel () -{ - set_samples_per_pixel (_editor.get_current_zoom()); -} - void RouteTimeAxisView::set_samples_per_pixel (double fpp) { @@ -1111,7 +1100,7 @@ RouteTimeAxisView::set_samples_per_pixel (double fpp) _view->set_samples_per_pixel (fpp * speed); } - TimeAxisView::set_samples_per_pixel (fpp * speed); + StripableTimeAxisView::set_samples_per_pixel (fpp * speed); } void @@ -1880,79 +1869,6 @@ RouteTimeAxisView::toggle_automation_track (const Evoral::Parameter& param) } } -void -RouteTimeAxisView::automation_track_hidden (Evoral::Parameter param) -{ - boost::shared_ptr track = automation_child (param); - - if (!track) { - return; - } - - Gtk::CheckMenuItem* menu = automation_child_menu_item (param); - - if (menu && !_hidden) { - ignore_toggle = true; - menu->set_active (false); - ignore_toggle = false; - } - - if (_route && !no_redraw) { - request_redraw (); - } -} - -void -RouteTimeAxisView::update_gain_track_visibility () -{ - bool const showit = gain_automation_item->get_active(); - - bool visible; - if (gain_track->get_gui_property ("visible", visible) && visible != showit) { - gain_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_trim_track_visibility () -{ - bool const showit = trim_automation_item->get_active(); - - bool visible; - if (trim_track->get_gui_property ("visible", visible) && visible != showit) { - 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(); - - bool visible; - if (mute_track->get_gui_property ("visible", visible) && visible != showit) { - mute_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_pan_track_visibility () { @@ -2034,18 +1950,7 @@ RouteTimeAxisView::show_all_automation (bool apply_to_selection) } else { no_redraw = true; - /* Show our automation */ - - for (AutomationTracks::iterator i = _automation_tracks.begin(); i != _automation_tracks.end(); ++i) { - i->second->set_marked_for_display (true); - - Gtk::CheckMenuItem* menu = automation_child_menu_item (i->first); - - if (menu) { - menu->set_active(true); - } - } - + StripableTimeAxisView::show_all_automation (); /* Show processor automation */ @@ -2075,21 +1980,9 @@ RouteTimeAxisView::show_existing_automation (bool apply_to_selection) } else { no_redraw = true; - /* Show our automation */ - - for (AutomationTracks::iterator i = _automation_tracks.begin(); i != _automation_tracks.end(); ++i) { - if (i->second->has_automation()) { - i->second->set_marked_for_display (true); - - Gtk::CheckMenuItem* menu = automation_child_menu_item (i->first); - if (menu) { - menu->set_active(true); - } - } - } + StripableTimeAxisView::show_existing_automation (); /* Show processor automation */ - for (list::iterator i = processor_automation.begin(); i != processor_automation.end(); ++i) { for (vector::iterator ii = (*i)->lines.begin(); ii != (*i)->lines.end(); ++ii) { if ((*i)->processor->control((*ii)->what)->list()->size() > 0) { @@ -2099,7 +1992,6 @@ RouteTimeAxisView::show_existing_automation (bool apply_to_selection) } no_redraw = false; - request_redraw (); } } @@ -2111,21 +2003,9 @@ RouteTimeAxisView::hide_all_automation (bool apply_to_selection) _editor.get_selection().tracks.foreach_route_time_axis (boost::bind (&RouteTimeAxisView::hide_all_automation, _1, false)); } else { no_redraw = true; - - /* Hide our automation */ - - for (AutomationTracks::iterator i = _automation_tracks.begin(); i != _automation_tracks.end(); ++i) { - i->second->set_marked_for_display (false); - - Gtk::CheckMenuItem* menu = automation_child_menu_item (i->first); - - if (menu) { - menu->set_active (false); - } - } + StripableTimeAxisView::hide_all_automation (); /* Hide processor automation */ - for (list::iterator i = processor_automation.begin(); i != processor_automation.end(); ++i) { for (vector::iterator ii = (*i)->lines.begin(); ii != (*i)->lines.end(); ++ii) { (*ii)->menu_item->set_active (false); @@ -2137,7 +2017,6 @@ RouteTimeAxisView::hide_all_automation (bool apply_to_selection) } } - void RouteTimeAxisView::region_view_added (RegionView* rv) { @@ -2271,41 +2150,6 @@ RouteTimeAxisView::add_existing_processor_automation_curves (boost::weak_ptr track, bool show) -{ - using namespace Menu_Helpers; - - add_child (track); - - track->Hiding.connect (sigc::bind (sigc::mem_fun (*this, &RouteTimeAxisView::automation_track_hidden), param)); - - _automation_tracks[param] = track; - - /* existing state overrides "show" argument */ - bool visible; - if (track->get_gui_property ("visible", visible)) { - show = visible; - } - - /* this might or might not change the visibility status, so don't rely on it */ - track->set_marked_for_display (show); - - if (show && !no_redraw) { - request_redraw (); - } - - if (!ARDOUR::parameter_is_midi((AutomationType)param.type())) { - /* MIDI-related parameters are always in the menu, there's no - reason to rebuild the menu just because we added a automation - lane for one of them. But if we add a non-MIDI automation - lane, then we need to invalidate the display menu. - */ - delete display_menu; - display_menu = 0; - } -} - void RouteTimeAxisView::add_processor_to_subplugin_menu (boost::weak_ptr p) { @@ -2543,19 +2387,6 @@ RouteTimeAxisView::layer_display () const return Overlaid; } - - -boost::shared_ptr -RouteTimeAxisView::automation_child(Evoral::Parameter param) -{ - AutomationTracks::iterator i = _automation_tracks.find(param); - if (i != _automation_tracks.end()) { - return i->second; - } else { - return boost::shared_ptr(); - } -} - void RouteTimeAxisView::fast_update () { @@ -2761,12 +2592,12 @@ RouteTimeAxisView::set_button_names () Gtk::CheckMenuItem* RouteTimeAxisView::automation_child_menu_item (Evoral::Parameter param) { - ParameterMenuMap::iterator i = _main_automation_menu_map.find (param); - if (i != _main_automation_menu_map.end()) { - return i->second; + Gtk::CheckMenuItem* rv = StripableTimeAxisView::automation_child_menu_item (param); + if (rv) { + return rv; } - i = _subplugin_menu_map.find (param); + ParameterMenuMap::iterator i = _subplugin_menu_map.find (param); if (i != _subplugin_menu_map.end()) { return i->second; } -- cgit v1.2.3