diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-06-20 17:19:23 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-06-20 17:19:31 -0400 |
commit | 10a4de155034ffce6b3bc97d0cf91ba8f8e99812 (patch) | |
tree | 063f8092a0da08b376d02c303609e385673f0ee1 /libs/gtkmm2ext/bindings.cc | |
parent | b5a134d73a41e5d17829e86bf803e243fcdcc4dc (diff) |
some modest improvements in the html rendering of key bindings, plus use of normal modifier names
Diffstat (limited to 'libs/gtkmm2ext/bindings.cc')
-rw-r--r-- | libs/gtkmm2ext/bindings.cc | 105 |
1 files changed, 91 insertions, 14 deletions
diff --git a/libs/gtkmm2ext/bindings.cc b/libs/gtkmm2ext/bindings.cc index d06a3a28c1..3dbc3c0302 100644 --- a/libs/gtkmm2ext/bindings.cc +++ b/libs/gtkmm2ext/bindings.cc @@ -234,6 +234,51 @@ KeyboardKey::name () const return str; } +string +KeyboardKey::native_name () const +{ + int s = state(); + + string str; + + if (s & Keyboard::PrimaryModifier) { + str += Keyboard::primary_modifier_name (); + } + if (s & Keyboard::SecondaryModifier) { + if (!str.empty()) { + str += '-'; + } + str += Keyboard::secondary_modifier_name (); + } + if (s & Keyboard::TertiaryModifier) { + if (!str.empty()) { + str += '-'; + } + str += Keyboard::tertiary_modifier_name (); + } + if (s & Keyboard::Level4Modifier) { + if (!str.empty()) { + str += '-'; + } + str += Keyboard::level4_modifier_name (); + } + + if (!str.empty()) { + str += '-'; + } + + char const *gdk_name = gdk_keyval_name (key()); + + if (gdk_name) { + str += gdk_name; + } else { + /* fail! */ + return string(); + } + + return str; +} + bool KeyboardKey::make_key (const string& str, KeyboardKey& k) { @@ -683,30 +728,66 @@ Bindings::save_all_bindings_as_html (ostream& ostr) return; } - ostr << "<http>\n<head>\n<title>"; + + ostr << "<html>\n<head>\n<title>"; ostr << PROGRAM_NAME; - ostr << "</title>\n</head>\n<body>\n"; + ostr << "</title>\n"; + + + ostr << "<style>\n"; + ostr << ".container {\n\ + -webkit-column-count: 3;\n\ + -moz-column-count: 3;\n\ + column-count: 3;\n\ +\n\ + -webkit-column-gap: 8em;\n\ + -moz-column-gap: 8em;\n\ + column-gap: 8em;\n\ +}"; + ostr << "\n\ +.container dt\n\ +{\n\ + clear: left;\n\ + float: left;\n\ + width: 25%;\n\ + margin: 0;\n\ + padding: 5px;\n\ + font-weight: bold;\n\ +}\n\ +\n\ +.container dd\n\ +{\n\ + float: left;\n\ + width: 65%;\n\ + margin: 0;\n\ + padding: 5px;\n\ + font-weight: normal;\n\ + font-style: italic;\n\ +}"; + ostr << "</style>\n"; + + ostr << "</head>\n<body>\n"; + + ostr << "<div class=\"container\">\n"; for (list<Bindings*>::const_iterator b = bindings.begin(); b != bindings.end(); ++b) { (*b)->save_as_html (ostr); } + ostr << "</div>\n"; ostr << "</body>\n"; - ostr << "</http>\n"; + ostr << "</html>\n"; } void Bindings::save_as_html (ostream& ostr) const { - ostr << "<h1 class=\"binding-set-name\">"; - ostr << name(); - ostr << "</h1>\n"; if (!press_bindings.empty() || !button_press_bindings.empty()) { - ostr << "<h2 class=\"action-title\">"; - ostr << _("Press"); - ostr << "</h2>\n"; + ostr << "<h1 class=\"binding-set-name\">"; + ostr << name(); + ostr << "</h1>\n"; if (!press_bindings.empty()) { @@ -731,7 +812,7 @@ Bindings::save_as_html (ostream& ostr) const continue; } - ostr << "<dt class=\"key-name\">" << k->first.name() << "</dt>\n"; + ostr << "<dt class=\"key-name\">" << k->first.native_name() << "</dt>\n"; ostr << "<dd class=\"key-action\">" << action->get_label() << "</dd>\n"; } @@ -741,10 +822,6 @@ Bindings::save_as_html (ostream& ostr) const if (!release_bindings.empty() || !release_bindings.empty()) { - ostr << "<h2 class=\"action-title\">"; - ostr << _("Release"); - ostr << "</h2>\n"; - if (!release_bindings.empty()) { ostr << "<dl class=\"key-binding\">\n"; |