summaryrefslogtreecommitdiff
path: root/libs/gtkmm2ext/bindings.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-06-20 17:19:23 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-06-20 17:19:31 -0400
commit10a4de155034ffce6b3bc97d0cf91ba8f8e99812 (patch)
tree063f8092a0da08b376d02c303609e385673f0ee1 /libs/gtkmm2ext/bindings.cc
parentb5a134d73a41e5d17829e86bf803e243fcdcc4dc (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.cc105
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";