X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Faudio_time_axis.cc;h=bf980690aaecf6e1b40f6900a295a5fa6e67bcf6;hb=90ea64d1fc9e64347aca9df8c64ff0aeb674410d;hp=6772f7b9fab008ef678e8e08127f6d939e8188e7;hpb=10cb0a7646ae7da18e5e6f49b940a5e921a73b57;p=ardour.git diff --git a/gtk2_ardour/audio_time_axis.cc b/gtk2_ardour/audio_time_axis.cc index 6772f7b9fa..bf980690aa 100644 --- a/gtk2_ardour/audio_time_axis.cc +++ b/gtk2_ardour/audio_time_axis.cc @@ -36,25 +36,16 @@ #include #include -#include "ardour/amp.h" -#include "ardour/audioplaylist.h" #include "ardour/event_type_map.h" -#include "ardour/location.h" #include "ardour/pannable.h" #include "ardour/panner.h" #include "ardour/panner_shell.h" -#include "ardour/playlist.h" -#include "ardour/processor.h" -#include "ardour/profile.h" -#include "ardour/session.h" -#include "ardour/session_playlist.h" -#include "ardour/utils.h" +#include "ardour_button.h" #include "ardour_ui.h" #include "audio_time_axis.h" #include "automation_line.h" #include "canvas_impl.h" -#include "crossfade_view.h" #include "enums.h" #include "gui_thread.h" #include "automation_time_axis.h" @@ -67,8 +58,6 @@ #include "audio_streamview.h" #include "utils.h" -#include "ardour/audio_track.h" - #include "i18n.h" using namespace std; @@ -86,20 +75,25 @@ AudioTimeAxisView::AudioTimeAxisView (PublicEditor& ed, Session* sess, Canvas& c void AudioTimeAxisView::set_route (boost::shared_ptr rt) { + _route = rt; + + /* RouteTimeAxisView::set_route() sets up some things in the View, + so it must be created before RouteTimeAxis::set_route() is + called. + */ + _view = new AudioStreamView (*this); + RouteTimeAxisView::set_route (rt); + _view->apply_color (color (), StreamView::RegionColor); + // Make sure things are sane... assert(!is_track() || is_audio_track()); subplugin_menu.set_name ("ArdourContextMenu"); - _view = new AudioStreamView (*this); - ignore_toggle = false; - mute_button->set_active (false); - solo_button->set_active (false); - if (is_audio_track()) { controls_ebox.set_name ("AudioTrackControlsBaseUnselected"); } else { // bus @@ -111,7 +105,7 @@ AudioTimeAxisView::set_route (boost::shared_ptr rt) create_automation_child (GainAutomation, false); } - if (_route->panner()) { + if (_route->panner_shell()) { _route->panner_shell()->Changed.connect (*this, invalidator (*this), boost::bind (&AudioTimeAxisView::ensure_pan_views, this, false), gui_context()); } @@ -159,38 +153,21 @@ AudioTimeAxisView::audio_view() guint32 AudioTimeAxisView::show_at (double y, int& nth, Gtk::VBox *parent) { - set_gui_property ("visible", "yes"); + set_gui_property ("visible", true); return TimeAxisView::show_at (y, nth, parent); } void AudioTimeAxisView::hide () { - set_gui_property ("visible", "no"); + set_gui_property ("visible", false); TimeAxisView::hide (); } - -void -AudioTimeAxisView::append_extra_display_menu_items () -{ - using namespace Menu_Helpers; - - MenuList& items = display_menu->items(); - - // crossfade stuff - if (!Profile->get_sae() && is_track ()) { - items.push_back (MenuElem (_("Hide All Crossfades"), sigc::bind (sigc::mem_fun(*this, &AudioTimeAxisView::hide_all_xfades), true))); - items.push_back (MenuElem (_("Show All Crossfades"), sigc::bind (sigc::mem_fun(*this, &AudioTimeAxisView::show_all_xfades), true))); - items.push_back (SeparatorElem ()); - } -} - void AudioTimeAxisView::create_automation_child (const Evoral::Parameter& param, bool show) { if (param.type() == NullAutomation) { - cerr << "WARNING: Attempt to create NullAutomation child, ignoring" << endl; return; } @@ -359,54 +336,6 @@ AudioTimeAxisView::hide_all_automation (bool apply_to_selection) } } -void -AudioTimeAxisView::show_all_xfades (bool apply_to_selection) -{ - if (apply_to_selection) { - _editor.get_selection().tracks.foreach_audio_time_axis (boost::bind (&AudioTimeAxisView::show_all_xfades, _1, false)); - } else { - AudioStreamView* asv = audio_view (); - if (asv) { - asv->show_all_xfades (); - } - } -} - -void -AudioTimeAxisView::hide_all_xfades (bool apply_to_selection) -{ - if (apply_to_selection) { - _editor.get_selection().tracks.foreach_audio_time_axis (boost::bind (&AudioTimeAxisView::hide_all_xfades, _1, false)); - } else { - AudioStreamView* asv = audio_view (); - if (asv) { - asv->hide_all_xfades (); - } - } -} - -void -AudioTimeAxisView::hide_dependent_views (TimeAxisViewItem& tavi) -{ - AudioStreamView* asv = audio_view(); - AudioRegionView* rv; - - if (asv && (rv = dynamic_cast(&tavi)) != 0) { - asv->hide_xfades_involving (*rv); - } -} - -void -AudioTimeAxisView::reveal_dependent_views (TimeAxisViewItem& tavi) -{ - AudioStreamView* asv = audio_view(); - AudioRegionView* rv; - - if (asv && (rv = dynamic_cast(&tavi)) != 0) { - asv->reveal_xfades_involving (*rv); - } -} - void AudioTimeAxisView::route_active_changed () { @@ -460,14 +389,14 @@ AudioTimeAxisView::build_automation_action_menu (bool for_selection) automation_items.push_back (CheckMenuElem (_("Fader"), sigc::mem_fun (*this, &AudioTimeAxisView::update_gain_track_visibility))); gain_automation_item = dynamic_cast (&automation_items.back ()); gain_automation_item->set_active ((!for_selection || _editor.get_selection().tracks.size() == 1) && - string_is_affirmative (gain_track->gui_property ("visible"))); + (gain_track && string_is_affirmative (gain_track->gui_property ("visible")))); _main_automation_menu_map[Evoral::Parameter(GainAutomation)] = gain_automation_item; automation_items.push_back (CheckMenuElem (_("Pan"), sigc::mem_fun (*this, &AudioTimeAxisView::update_pan_track_visibility))); pan_automation_item = dynamic_cast (&automation_items.back ()); pan_automation_item->set_active ((!for_selection || _editor.get_selection().tracks.size() == 1) && - string_is_affirmative (pan_tracks.front()->gui_property ("visible"))); + (!pan_tracks.empty() && string_is_affirmative (pan_tracks.front()->gui_property ("visible")))); set const & params = _route->pannable()->what_can_be_automated (); for (set::iterator p = params.begin(); p != params.end(); ++p) {