From: Len Ovens Date: Wed, 17 Oct 2018 22:58:08 +0000 (-0700) Subject: Option to hide send if aux is hidden X-Git-Url: https://main.carlh.net/gitweb/?p=ardour.git;a=commitdiff_plain;h=5e21b6633d45e49162cef84a64ba759293003a2b Option to hide send if aux is hidden --- diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 08d55a8f0e..b7a6d367bf 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -2697,6 +2697,15 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (*_rc_config, &RCConfiguration::get_link_send_and_route_panner), sigc::mem_fun (*_rc_config, &RCConfiguration::set_link_send_and_route_panner) )); + + add_option (_("Mixer"), new OptionEditorHeading (_("Send Controls"))); + add_option (_("Mixer"), + new BoolOption ( + "hiding-aux-hides-connected-sends", + _("When Aux Bus is hidden the sends in the prosessor box that feed it will be hidden"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_hiding_aux_hides_connected_sends), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_hiding_aux_hides_connected_sends) + )); } /* Signal Flow */ diff --git a/libs/ardour/ardour/internal_send.h b/libs/ardour/ardour/internal_send.h index 8547f73b08..20f268e3d0 100644 --- a/libs/ardour/ardour/internal_send.h +++ b/libs/ardour/ardour/internal_send.h @@ -76,6 +76,7 @@ private: void send_from_going_away (); void send_to_going_away (); void send_to_property_changed (const PBD::PropertyChange&); + void send_to_pi_change (const PBD::PropertyChange&); int connect_when_legal (); void init_gain (); int use_target (boost::shared_ptr); diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index 452a0822cc..58aa7e571e 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -142,6 +142,8 @@ CONFIG_VARIABLE (bool, quieten_at_speed, "quieten-at-speed", true) CONFIG_VARIABLE (bool, link_send_and_route_panner, "link-send-and-route-panner", true) CONFIG_VARIABLE (std::string, midi_audition_synth_uri, "midi-audition-synth-uri", "@default@") +CONFIG_VARIABLE (bool, hiding_aux_hides_connected_sends, "hiding-aux-hides-connected-sends", false) + /* click */ CONFIG_VARIABLE (bool, clicking, "clicking", false) diff --git a/libs/ardour/internal_send.cc b/libs/ardour/internal_send.cc index 9749dab760..0292badefa 100644 --- a/libs/ardour/internal_send.cc +++ b/libs/ardour/internal_send.cc @@ -112,6 +112,9 @@ InternalSend::use_target (boost::shared_ptr sendto) _send_to->DropReferences.connect_same_thread (target_connections, boost::bind (&InternalSend::send_to_going_away, this)); _send_to->PropertyChanged.connect_same_thread (target_connections, boost::bind (&InternalSend::send_to_property_changed, this, _1)); _send_to->io_changed.connect_same_thread (target_connections, boost::bind (&InternalSend::target_io_changed, this)); + boost::shared_ptr st_to = boost::dynamic_pointer_cast (_send_to); + st_to->presentation_info().PropertyChanged.connect_same_thread (target_connections, boost::bind (&InternalSend::send_to_pi_change, this, _1)); + send_to_pi_change (Properties::hidden); return 0; } @@ -426,6 +429,20 @@ InternalSend::send_to_property_changed (const PropertyChange& what_changed) } } +void +InternalSend::send_to_pi_change (const PBD::PropertyChange& what_changed) +{ + if (what_changed.contains (Properties::hidden)) { + boost::shared_ptr st_to = boost::dynamic_pointer_cast (_send_to); + if (Config->get_hiding_aux_hides_connected_sends()) { + set_display_to_user (!st_to->is_hidden ()); + } else { + set_display_to_user (true); + } + _send_from->processors_changed (RouteProcessorChange ()); /* EMIT SIGNAL */ + } +} + void InternalSend::set_can_pan (bool yn) { diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc index 24fa6fcdfe..337fefc422 100644 --- a/libs/surfaces/osc/osc.cc +++ b/libs/surfaces/osc/osc.cc @@ -6549,10 +6549,6 @@ OSC::cue_new_send (string rt_name, lo_message msg) boost::shared_ptr loc = rt_send->before_processor_for_placement (PreFader); rt_send->add_aux_send (aux, loc); boost::shared_ptr snd = rt_send->internal_send_for (aux); - if (snd->gain_control() && aux->is_hidden ()) { - snd->set_display_to_user (false); - rt_send->processors_changed (RouteProcessorChange ()); /* EMIT SIGNAL */ - } session->dirty (); return 0; } else { diff --git a/libs/surfaces/osc/osc_cue_observer.cc b/libs/surfaces/osc/osc_cue_observer.cc index 3a76e6fb71..115fb66024 100644 --- a/libs/surfaces/osc/osc_cue_observer.cc +++ b/libs/surfaces/osc/osc_cue_observer.cc @@ -100,7 +100,6 @@ OSCCueObserver::refresh_strip (boost::shared_ptr new_strip, S send_gain_message (0, _strip->gain_control(), true); send_init (); - hidden_changed (); tick_enable = true; tick (); @@ -205,9 +204,6 @@ OSCCueObserver::send_restart () void OSCCueObserver::name_changed (const PBD::PropertyChange& what_changed, uint32_t id) { - if (_hidden != _strip->is_hidden ()) { - hidden_changed (); - } if (!what_changed.contains (ARDOUR::Properties::name)) { return; } @@ -222,20 +218,6 @@ OSCCueObserver::name_changed (const PBD::PropertyChange& what_changed, uint32_t } } -void -OSCCueObserver::hidden_changed () -{ - _hidden = _strip->is_hidden (); - for (uint32_t i = 0; i < sends.size(); i++) { - boost::shared_ptr r = boost::dynamic_pointer_cast (sends[i]); - boost::shared_ptr send = r->internal_send_for (boost::dynamic_pointer_cast (_strip)); - if (_hidden == send->display_to_user ()) { - send->set_display_to_user (!_hidden); - r->processors_changed (RouteProcessorChange ()); /* EMIT SIGNAL */ - } - } -} - void OSCCueObserver::send_change_message (string path, uint32_t id, boost::shared_ptr controllable) { diff --git a/libs/surfaces/osc/osc_cue_observer.h b/libs/surfaces/osc/osc_cue_observer.h index f85eb1e3d9..0863032732 100644 --- a/libs/surfaces/osc/osc_cue_observer.h +++ b/libs/surfaces/osc/osc_cue_observer.h @@ -63,7 +63,6 @@ class OSCCueObserver std::vector _last_gain; void name_changed (const PBD::PropertyChange& what_changed, uint32_t id); - void hidden_changed (void); void send_change_message (std::string path, uint32_t id, boost::shared_ptr controllable); void send_gain_message (uint32_t id, boost::shared_ptr controllable, bool force); void send_enabled_message (std::string path, uint32_t id, boost::shared_ptr proc);