#include "GLyXKeySym.h"
#include "kbmap.h"
+#include "support/lstrings.h"
+
#include <gtkmm.h>
#include <gdk/gdkkeysyms.h>
}
+//Produce a human readable version (eg "Ctrl+N")
string const GLyXKeySym::print(key_modifier::state mod) const
{
- return kb_keymap::printKeySym(*this, mod);
+ string buf;
+
+ if (mod & key_modifier::ctrl)
+ buf += "Ctrl+";
+ if (mod & key_modifier::shift)
+ buf += "Shift+";
+ if (mod & key_modifier::alt)
+ buf += "Alt+";
+
+ //Uppercase the first letter, for Ctrl+N rather than Ctrl+n,
+ //and for Ctrl+Greater rather than Ctrl+GREATER
+ string symname = getSymbolName();
+ if (!symname.empty()) {
+ symname[0] = lyx::support::uppercase(symname[0]);
+ buf += symname;
+ }
+
+ return buf;
}
break;
case MenuItem::Command:
{
-#ifdef WITH_WARNINGS
-#warning Bindings are not inserted into the menu labels here. (Lgb)
-#endif
FuncStatus const flag =
view_->getLyXFunc().getStatus(i->func());
bool on = flag.onoff(true);
gmenu->items().back());
citem.set_active(on);
} else {
- gmenu->items().push_back(
- Gtk::Menu_Helpers::MenuElem(
- labelTrans(i->label(),
- i->shortcut())));
+ //This is necessary because add_accel_label is protected,
+ //and even if you subclass Gtk::MenuItem then add_accel_label
+ //doesn't do what you'd expect.
+ Gtk::MenuItem * item = Gtk::manage(new Gtk::MenuItem);
+ Gtk::HBox * hbox = Gtk::manage(new Gtk::HBox);
+ Gtk::Label * label1 = Gtk::manage(new Gtk::Label(
+ labelTrans(i->label(), i->shortcut()), true));
+ Gtk::Label * label2 = Gtk::manage(new Gtk::Label(
+ " " + i->binding(), false));
+ hbox->pack_start(*label1, false, false, 0);
+ hbox->pack_end(*label2, false, false, 0);
+ item->add(*hbox);
+
+ gmenu->append(*item);
+ item->show_all();
}
Gtk::MenuItem & item = gmenu->items().back();
item.signal_activate().connect(