From 8f7f17187770afc8352dad61ca48ff304c734f68 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 20 Nov 2009 15:26:34 +0000 Subject: make strip-as-GUI-for-send work for metering too ; frame around session summary widget ; tooltip for editor group tabs ; route group dialog name entry is now activatable (return == click on ok) git-svn-id: svn://localhost/ardour2/branches/3.0@6137 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/mixer_strip.cc | 66 +++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 33 deletions(-) (limited to 'gtk2_ardour/mixer_strip.cc') diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 876cf86dfb..3c32439c03 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -334,16 +334,8 @@ MixerStrip::set_route (boost::shared_ptr rt) delete output_selector; output_selector = 0; - boost::shared_ptr send; + revert_to_default_display (); - if (_current_delivery && (send = boost::dynamic_pointer_cast(_current_delivery))) { - send->set_metering (false); - } - - _current_delivery = _route->main_outs (); - - panners.set_panner (rt->main_outs()->panner()); - gpm.set_controls (rt, rt->shared_peak_meter(), rt->amp()); processor_box.set_route (rt); if (set_color_from_route()) { @@ -1640,46 +1632,54 @@ MixerStrip::switch_io (boost::shared_ptr target) return; } - boost::shared_ptr send; + boost::shared_ptr send = _route->internal_send_for (target); - if (_current_delivery && (send = boost::dynamic_pointer_cast(_current_delivery))) { - send->set_metering (false); + if (send) { + show_send (send); + } else { + revert_to_default_display (); } +} - _current_delivery = _route->internal_send_for (target); +void +MixerStrip::drop_send () +{ + boost::shared_ptr current_send; - cerr << "internal send from " << _route->name() << " to " << target->name() << " = " - << _current_delivery << endl; + if (_current_delivery && (current_send = boost::dynamic_pointer_cast(_current_delivery))) { + current_send->set_metering (false); + } + + send_gone_connection.disconnect (); + +} - if (_current_delivery) { - send = boost::dynamic_pointer_cast(_current_delivery); - send->set_metering (true); - _current_delivery->GoingAway.connect (mem_fun (*this, &MixerStrip::revert_to_default_display)); - gain_meter().set_controls (_route, send->meter(), send->amp()); - panner_ui().set_panner (_current_delivery->panner()); +void +MixerStrip::show_send (boost::shared_ptr send) +{ + assert (send != 0); + drop_send (); - } else { - _current_delivery = _route->main_outs (); - gain_meter().set_controls (_route, _route->shared_peak_meter(), _route->amp()); - panner_ui().set_panner (_route->main_outs()->panner()); - } + _current_delivery = send; + send->set_metering (true); + send_gone_connection = _current_delivery->GoingAway.connect (mem_fun (*this, &MixerStrip::revert_to_default_display)); + gain_meter().set_controls (_route, send->meter(), send->amp()); gain_meter().setup_meters (); + + panner_ui().set_panner (_current_delivery->panner()); panner_ui().setup_pan (); } - void MixerStrip::revert_to_default_display () { - show_sends_button->set_active (false); - - boost::shared_ptr send; - - if (_current_delivery && (send = boost::dynamic_pointer_cast(_current_delivery))) { - send->set_metering (false); + if (show_sends_button) { + show_sends_button->set_active (false); } + drop_send (); + _current_delivery = _route->main_outs(); gain_meter().set_controls (_route, _route->shared_peak_meter(), _route->amp()); -- cgit v1.2.3