From 6b44828be3a7ec096537c2182720a945104a1a8a Mon Sep 17 00:00:00 2001 From: buliabyak Date: Wed, 12 Apr 2006 19:58:46 +0000 Subject: [PATCH] change XML vocabulary for keys, make keys parsing a bit more relaxed --- share/keys/default.xml | 482 ++++++++++++++++++++--------------------- src/shortcuts.cpp | 33 +-- 2 files changed, 261 insertions(+), 254 deletions(-) diff --git a/share/keys/default.xml b/share/keys/default.xml index a273f8660..3c6568b5c 100644 --- a/share/keys/default.xml +++ b/share/keys/default.xml @@ -1,242 +1,242 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/shortcuts.cpp b/src/shortcuts.cpp index 7061df77a..ffd5aa948 100644 --- a/src/shortcuts.cpp +++ b/src/shortcuts.cpp @@ -92,29 +92,36 @@ static void read_shortcuts_file(char const *filename) { } XML::Node const *root=doc->root(); - g_return_if_fail(!strcmp(root->name(), "keybindings")); + g_return_if_fail(!strcmp(root->name(), "keys")); XML::NodeConstSiblingIterator iter=root->firstChild(); for ( ; iter ; ++iter ) { bool is_primary; - if (!strcmp(iter->name(), "primary")) { - is_primary = true; - } else if (!strcmp(iter->name(), "secondary")) { - is_primary = false; + if (!strcmp(iter->name(), "bind")) { + if (iter->attribute("display") && strcmp(iter->attribute("display"), "false") && strcmp(iter->attribute("display"), "0")) { + is_primary = true; + } else { + is_primary = false; + } } else { - g_warning("Unknown key binding type %s", iter->name()); + // some unknown element, do not complain continue; } - gchar const *verb_name=iter->attribute("verb"); + gchar const *verb_name=iter->attribute("action"); if (!verb_name) { - g_warning("Missing verb name for shortcut"); + g_warning("Missing verb name (action= attribute) for shortcut"); + continue; + } + + if (Inkscape::Verb::getbyid(verb_name) == NULL) { + g_warning("Unknown verb name: %s", verb_name); continue; } - gchar const *keyval_name=iter->attribute("keyval"); + gchar const *keyval_name=iter->attribute("key"); if (!keyval_name) { - g_warning("Missing keyval for %s", verb_name); + // that's ok, it's just listed for reference without assignment, skip it continue; } guint keyval=gdk_keyval_from_name(keyval_name); @@ -131,11 +138,11 @@ static void read_shortcuts_file(char const *filename) { while (*iter) { size_t length=strcspn(iter, ","); gchar *mod=g_strndup(iter, length); - if (!strcmp(mod, "control")) { + if (!strcmp(mod, "Control") || !strcmp(mod, "Ctrl")) { modifiers |= SP_SHORTCUT_CONTROL_MASK; - } else if (!strcmp(mod, "shift")) { + } else if (!strcmp(mod, "Shift")) { modifiers |= SP_SHORTCUT_SHIFT_MASK; - } else if (!strcmp(mod, "alt")) { + } else if (!strcmp(mod, "Alt")) { modifiers |= SP_SHORTCUT_ALT_MASK; } else { g_warning("Unknown modifier %s for %s", mod, verb_name); -- 2.30.2