From ccbf56827dbba83d1364c4b888945059aaa7b1c0 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 17 Apr 2016 21:37:43 +0200 Subject: pretty send and sidechain names --- gtk2_ardour/processor_box.cc | 49 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 6 deletions(-) (limited to 'gtk2_ardour/processor_box.cc') diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index d40698dac1..97c9024766 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -513,6 +513,10 @@ ProcessorEntry::setup_tooltip () string_compose (_("%1\nThe Plugin is not available on this system\nand has been replaced by a stub."), name (Wide))); return; } + if (boost::dynamic_pointer_cast (_processor) && !boost::dynamic_pointer_cast(_processor)) { + ARDOUR_UI_UTILS::set_tooltip (_button, string_compose ("> %1", _processor->name())); + return; + } } ARDOUR_UI_UTILS::set_tooltip (_button, string_compose ("%1", name (Wide))); } @@ -531,19 +535,52 @@ ProcessorEntry::name (Width w) const !boost::dynamic_pointer_cast(_processor)) { name_display += '>'; + std::string send_name; + bool pretty_ok = true; - /* grab the send name out of its overall name */ + if (send->remove_on_disconnect ()) { + // assume it's a sidechain, find pretty name of connected port(s) + PortSet& ps (send->output ()->ports ()); + for (PortSet::iterator i = ps.begin (); i != ps.end () && pretty_ok; ++i) { + vector connections; + if (i->get_connections (connections)) { + vector::const_iterator ci; + for (ci = connections.begin(); ci != connections.end(); ++ci) { + std::string pn = AudioEngine::instance()->get_pretty_name_by_name (*ci); + if (pn.empty ()) { + continue; + } + if (send_name.empty ()) { + send_name = pn; + } else if (send_name != pn) { + // pretty names don't match + pretty_ok = false; + break; + } + } + } + } + } + + if (!pretty_ok) { + send_name = ""; + } - string::size_type lbracket, rbracket; - lbracket = send->name().find ('['); - rbracket = send->name().find (']'); + /* grab the send name out of its overall name */ + if (send_name.empty()) { + send_name = send->name(); + string::size_type lbracket, rbracket; + lbracket = send_name.find ('['); + rbracket = send_name.find (']'); + send_name = send_name.substr (lbracket+1, lbracket-rbracket-1); + } switch (w) { case Wide: - name_display += send->name().substr (lbracket+1, lbracket-rbracket-1); + name_display += send_name; break; case Narrow: - name_display += PBD::short_version (send->name().substr (lbracket+1, lbracket-rbracket-1), 4); + name_display += PBD::short_version (send_name, 5); break; } -- cgit v1.2.3