Escape underscores in port matrix menus correctly so that track names etc. with underscores get displayed properly.
git-svn-id: svn://localhost/ardour2/branches/3.0@6491 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
bbb65d07d3
commit
43e8e880dc
@ -35,6 +35,7 @@
|
|||||||
#include "port_matrix_component.h"
|
#include "port_matrix_component.h"
|
||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
#include "gui_thread.h"
|
#include "gui_thread.h"
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace Gtk;
|
using namespace Gtk;
|
||||||
@ -393,7 +394,10 @@ PortMatrix::popup_menu (BundleChannel column, BundleChannel row, uint32_t t)
|
|||||||
|
|
||||||
|
|
||||||
if (can_rename_channels (bc[dim].bundle)) {
|
if (can_rename_channels (bc[dim].bundle)) {
|
||||||
snprintf (buf, sizeof (buf), _("Rename '%s'..."), bc[dim].bundle->channel_name (bc[dim].channel).c_str());
|
snprintf (
|
||||||
|
buf, sizeof (buf), _("Rename '%s'..."),
|
||||||
|
escape_underscores (bc[dim].bundle->channel_name (bc[dim].channel)).c_str()
|
||||||
|
);
|
||||||
sub.push_back (
|
sub.push_back (
|
||||||
MenuElem (
|
MenuElem (
|
||||||
buf,
|
buf,
|
||||||
@ -445,7 +449,7 @@ PortMatrix::popup_menu (BundleChannel column, BundleChannel row, uint32_t t)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
items.push_back (MenuElem (bc[dim].bundle->name().c_str(), *m));
|
items.push_back (MenuElem (escape_underscores (bc[dim].bundle->name()).c_str(), *m));
|
||||||
need_separator = true;
|
need_separator = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -807,7 +811,7 @@ PortMatrix::add_remove_option (Menu_Helpers::MenuList& m, boost::weak_ptr<Bundle
|
|||||||
}
|
}
|
||||||
|
|
||||||
char buf [64];
|
char buf [64];
|
||||||
snprintf (buf, sizeof (buf), _("Remove '%s'"), b->channel_name (c).c_str());
|
snprintf (buf, sizeof (buf), _("Remove '%s'"), escape_underscores (b->channel_name (c)).c_str());
|
||||||
m.push_back (MenuElem (buf, sigc::bind (sigc::mem_fun (*this, &PortMatrix::remove_channel_proxy), w, c)));
|
m.push_back (MenuElem (buf, sigc::bind (sigc::mem_fun (*this, &PortMatrix::remove_channel_proxy), w, c)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -822,6 +826,6 @@ PortMatrix::add_disassociate_option (Menu_Helpers::MenuList& m, boost::weak_ptr<
|
|||||||
}
|
}
|
||||||
|
|
||||||
char buf [64];
|
char buf [64];
|
||||||
snprintf (buf, sizeof (buf), _("%s all from '%s'"), disassociation_verb().c_str(), b->channel_name (c).c_str());
|
snprintf (buf, sizeof (buf), _("%s all from '%s'"), disassociation_verb().c_str(), escape_underscores (b->channel_name (c)).c_str());
|
||||||
m.push_back (MenuElem (buf, sigc::bind (sigc::mem_fun (*this, &PortMatrix::disassociate_all_on_channel), w, c, d)));
|
m.push_back (MenuElem (buf, sigc::bind (sigc::mem_fun (*this, &PortMatrix::disassociate_all_on_channel), w, c, d)));
|
||||||
}
|
}
|
||||||
|
@ -1016,3 +1016,21 @@ pixbuf_from_ustring(const ustring& name, Pango::FontDescription* font, int clip_
|
|||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Replace _ with __ in a string; for use with menu item text to make underscores displayed correctly */
|
||||||
|
string
|
||||||
|
escape_underscores (string const & s)
|
||||||
|
{
|
||||||
|
string o;
|
||||||
|
string::size_type const N = s.length ();
|
||||||
|
|
||||||
|
for (string::size_type i = 0; i < N; ++i) {
|
||||||
|
if (s[i] == '_') {
|
||||||
|
o += "__";
|
||||||
|
} else {
|
||||||
|
o += s[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
@ -95,4 +95,6 @@ Glib::RefPtr<Gdk::Pixbuf> pixbuf_from_ustring (const Glib::ustring& name,
|
|||||||
|
|
||||||
void resize_window_to_proportion_of_monitor (Gtk::Window*, int, int);
|
void resize_window_to_proportion_of_monitor (Gtk::Window*, int, int);
|
||||||
|
|
||||||
|
std::string escape_underscores (std::string const &);
|
||||||
|
|
||||||
#endif /* __ardour_gtk_utils_h__ */
|
#endif /* __ardour_gtk_utils_h__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user