diff options
author | Robin Gareus <robin@gareus.org> | 2016-04-17 21:37:43 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-04-17 21:50:26 +0200 |
commit | ccbf56827dbba83d1364c4b888945059aaa7b1c0 (patch) | |
tree | 62ae60e3b23b7eaeb43cff67c2c37223936f3c62 /gtk2_ardour/processor_box.cc | |
parent | fa73112f081ee38bc5c9752f900c9c5dccb68141 (diff) |
pretty send and sidechain names
Diffstat (limited to 'gtk2_ardour/processor_box.cc')
-rw-r--r-- | gtk2_ardour/processor_box.cc | 49 |
1 files changed, 43 insertions, 6 deletions
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 (_("<b>%1</b>\nThe Plugin is not available on this system\nand has been replaced by a stub."), name (Wide))); return; } + if (boost::dynamic_pointer_cast<Send> (_processor) && !boost::dynamic_pointer_cast<InternalSend>(_processor)) { + ARDOUR_UI_UTILS::set_tooltip (_button, string_compose ("<b>> %1</b>", _processor->name())); + return; + } } ARDOUR_UI_UTILS::set_tooltip (_button, string_compose ("<b>%1</b>", name (Wide))); } @@ -531,19 +535,52 @@ ProcessorEntry::name (Width w) const !boost::dynamic_pointer_cast<InternalSend>(_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<string> connections; + if (i->get_connections (connections)) { + vector<string>::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; } |