X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FKeySequence.cpp;h=5a7623b7f626fc86afb4c8f601596091525573f9;hb=105e0dfe2910e0bbd13857dabff84bfadda156c4;hp=fa354003eac3cd46391f34013a8880637aa9eba3;hpb=c4033d401202ffc57b5a04ef9cf83b494b7ddfa0;p=lyx.git diff --git a/src/KeySequence.cpp b/src/KeySequence.cpp index fa354003ea..5a7623b7f6 100644 --- a/src/KeySequence.cpp +++ b/src/KeySequence.cpp @@ -13,16 +13,13 @@ #include #include "KeySequence.h" - -#include "gettext.h" #include "KeyMap.h" -#include "lfuns.h" -#include "frontends/KeySymbol.h" +#include "support/gettext.h" -using std::make_pair; -using std::string; +#include "frontends/KeySymbol.h" +using namespace std; namespace lyx { @@ -40,9 +37,8 @@ FuncRequest const & KeySequence::addkey(KeySymbol const & key, modifiers.push_back(make_pair(mod, nmod)); sequence.push_back(key); - if (curmap) { + if (curmap) return curmap->lookup(key, mod, this); - } static FuncRequest unknown(LFUN_UNKNOWN_ACTION); return unknown; @@ -127,14 +123,32 @@ size_t KeySequence::parse(string const & s) } -docstring const KeySequence::print(bool forgui) const +docstring const KeySequence::print(outputFormat format) const { docstring buf; size_t const length = sequence.size(); for (size_t i = 0; i != length; ++i) { - buf += sequence[i].print(modifiers[i].first, forgui); + switch (format) { + case Portable: + buf += sequence[i].print(modifiers[i].first, false); + break; + case ForGui: + buf += sequence[i].print(modifiers[i].first, true); + break; + case BindFile: + KeyModifier mod = modifiers[i].first; + if (mod & ControlModifier) + buf += "C-"; + if (mod & AltModifier) + buf += "M-"; + if (mod & ShiftModifier) + buf += "S-"; + + buf += from_utf8(sequence[i].getSymbolName()); + break; + } // append a blank if (i + 1 != length) buf += ' '; @@ -145,13 +159,13 @@ docstring const KeySequence::print(bool forgui) const docstring const KeySequence::printOptions(bool forgui) const { - docstring buf = print(forgui); + docstring buf = print(forgui ? ForGui : Portable); if (!curmap) return buf; buf += _(" options: "); - buf += curmap->print(forgui); + buf += curmap->print(forgui ? ForGui : Portable); return buf; } @@ -176,4 +190,13 @@ void KeySequence::clear() } +void KeySequence::removeKey() +{ + if (deleted_) + return; + sequence.pop_back(); + modifiers.pop_back(); +} + + } // namespace lyx