summaryrefslogtreecommitdiff
path: root/gtk2_ardour/processor_box.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-04-17 21:37:43 +0200
committerRobin Gareus <robin@gareus.org>2016-04-17 21:50:26 +0200
commitccbf56827dbba83d1364c4b888945059aaa7b1c0 (patch)
tree62ae60e3b23b7eaeb43cff67c2c37223936f3c62 /gtk2_ardour/processor_box.cc
parentfa73112f081ee38bc5c9752f900c9c5dccb68141 (diff)
pretty send and sidechain names
Diffstat (limited to 'gtk2_ardour/processor_box.cc')
-rw-r--r--gtk2_ardour/processor_box.cc49
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>&gt; %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;
}