From 500fa5f5912440de5cc5f1dcb75955f4b09b9e50 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Fri, 26 Mar 2004 15:12:35 +0000 Subject: [PATCH] display key binding in native UI style git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8532 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/ChangeLog | 7 +++++++ src/frontends/LyXKeySym.h | 8 ++++++++ src/frontends/gtk/ChangeLog | 5 +++++ src/frontends/gtk/GLyXKeySym.C | 8 ++++++++ src/frontends/gtk/GLyXKeySym.h | 1 + src/frontends/qt2/ChangeLog | 4 ++++ src/frontends/qt2/QLyXKeySym.C | 17 +++++++++++++++++ src/frontends/qt2/QLyXKeySym.h | 4 ++++ src/frontends/xforms/ChangeLog | 5 +++++ src/frontends/xforms/XLyXKeySym.C | 7 +++++++ src/frontends/xforms/XLyXKeySym.h | 3 +++ src/kbmap.C | 6 +++--- src/kbmap.h | 4 ++-- src/kbsequence.C | 2 +- 14 files changed, 75 insertions(+), 6 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 2acaf85e29..ec916b78c0 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2004-03-26 Jean-Marc Lasgouttes + + * kbsequence.C (print): adjust + + * kbmap.C (printKeySym): rename and change signature + (printKey): use LyXKeySym::print() + 2004-03-26 Martin Vermeer * undo.C: add using std::advance to compile for stlport diff --git a/src/frontends/LyXKeySym.h b/src/frontends/LyXKeySym.h index b027b07f38..12373c156e 100644 --- a/src/frontends/LyXKeySym.h +++ b/src/frontends/LyXKeySym.h @@ -14,6 +14,8 @@ #include +#include "key_state.h" + /** * This is a base class for representing a keypress. * Each frontend has to implement this to provide @@ -47,6 +49,12 @@ public: * This relies on user to use the right encoding. */ virtual char getISOEncoded(std::string const & encoding) const = 0; + + /** + * Return a string describing the KeySym with modifier mod. + * This should use the native UI format when applicable + */ + virtual std::string const print(key_modifier::state mod) const = 0; }; diff --git a/src/frontends/gtk/ChangeLog b/src/frontends/gtk/ChangeLog index 6f7b26a4fb..5e3d9fd408 100644 --- a/src/frontends/gtk/ChangeLog +++ b/src/frontends/gtk/ChangeLog @@ -1,3 +1,8 @@ +2004-03-26 Jean-Marc Lasgouttes + + * GLyXKeySym.C (print): new method; print a keysym using + kb_keymap::printKeySym (should use some native gtk method instead) + 2004-03-24 Angus Leeming * GMenubar.C (submenuDisabled, onSubMenuActivate): compile fixes diff --git a/src/frontends/gtk/GLyXKeySym.C b/src/frontends/gtk/GLyXKeySym.C index bf50a7ab6f..37b5330adc 100644 --- a/src/frontends/gtk/GLyXKeySym.C +++ b/src/frontends/gtk/GLyXKeySym.C @@ -14,6 +14,8 @@ #include #include "GLyXKeySym.h" +#include "kbmap.h" + using std::string; @@ -92,6 +94,12 @@ char GLyXKeySym::getISOEncoded(string const & /*encoding*/) const } +string const GLyXKeySym::print(key_modifier::state mod) const +{ + return kb_keymap::printKeySym(*this, mod); +} + + bool operator==(LyXKeySym const & k1, LyXKeySym const & k2) { return static_cast(k1).getKeyval() diff --git a/src/frontends/gtk/GLyXKeySym.h b/src/frontends/gtk/GLyXKeySym.h index 3ee53bcff0..d4c54c71d4 100644 --- a/src/frontends/gtk/GLyXKeySym.h +++ b/src/frontends/gtk/GLyXKeySym.h @@ -27,6 +27,7 @@ public: virtual bool isModifier() const; virtual std::string getSymbolName() const; virtual char getISOEncoded(std::string const & encoding) const; + virtual std::string const print(key_modifier::state mod) const; private: unsigned int keyval_; }; diff --git a/src/frontends/qt2/ChangeLog b/src/frontends/qt2/ChangeLog index b217d52f64..342f85fde2 100644 --- a/src/frontends/qt2/ChangeLog +++ b/src/frontends/qt2/ChangeLog @@ -1,3 +1,7 @@ +2004-03-25 Jean-Marc Lasgouttes + + * QLyXKeySym.C (print): new method; print a KeySym using Qt syntax + 2004-03-17 Angus Leeming * Dialogs2.C, lyx_gui.C: remove mention of the forks dialog. diff --git a/src/frontends/qt2/QLyXKeySym.C b/src/frontends/qt2/QLyXKeySym.C index bef0f54c32..a7de8ed629 100644 --- a/src/frontends/qt2/QLyXKeySym.C +++ b/src/frontends/qt2/QLyXKeySym.C @@ -16,6 +16,7 @@ #include "qlkey.h" #include "qt_helpers.h" +#include #include #include @@ -167,6 +168,22 @@ char QLyXKeySym::getISOEncoded(string const & encoding) const } +string const QLyXKeySym::print(key_modifier::state mod) const +{ + int tmpkey = key_; + + + if (mod & key_modifier::shift) + tmpkey += Qt::SHIFT; + if (mod & key_modifier::ctrl) + tmpkey += Qt::CTRL; + if (mod & key_modifier::alt) + tmpkey += Qt::ALT; + + return fromqstr(QAccel::keyToString(tmpkey)); +} + + bool QLyXKeySym::isText() const { if (text_.isEmpty()) { diff --git a/src/frontends/qt2/QLyXKeySym.h b/src/frontends/qt2/QLyXKeySym.h index e27cfff3ad..96f359c9d1 100644 --- a/src/frontends/qt2/QLyXKeySym.h +++ b/src/frontends/qt2/QLyXKeySym.h @@ -54,6 +54,10 @@ public: * This relies on user to use the right encoding. */ virtual char getISOEncoded(std::string const & encoding) const; + + /// + virtual std::string const print(key_modifier::state mod) const; + /// int key() const { return key_; diff --git a/src/frontends/xforms/ChangeLog b/src/frontends/xforms/ChangeLog index 517e664cb7..4d8f60dace 100644 --- a/src/frontends/xforms/ChangeLog +++ b/src/frontends/xforms/ChangeLog @@ -1,3 +1,8 @@ +2004-03-26 Jean-Marc Lasgouttes + + * XLyXKeySym.C (print): new method; print a keysym using + kb_keymap::printKeySym. + 2004-03-17 Angus Leeming * Dialogs2.C, FormForks.[Ch], Makefile.am: diff --git a/src/frontends/xforms/XLyXKeySym.C b/src/frontends/xforms/XLyXKeySym.C index c883aec102..5a71008dab 100644 --- a/src/frontends/xforms/XLyXKeySym.C +++ b/src/frontends/xforms/XLyXKeySym.C @@ -13,6 +13,7 @@ #include "XLyXKeySym.h" #include "debug.h" +#include "kbmap.h" #include @@ -100,6 +101,12 @@ char XLyXKeySym::getISOEncoded(string const &) const } +string const XLyXKeySym::print(key_modifier::state mod) const +{ + return kb_keymap::printKeySym(*this, mod); +} + + bool operator==(LyXKeySym const & k1, LyXKeySym const & k2) { return static_cast(k1).keysym() diff --git a/src/frontends/xforms/XLyXKeySym.h b/src/frontends/xforms/XLyXKeySym.h index d1dd7c63c5..93944204a2 100644 --- a/src/frontends/xforms/XLyXKeySym.h +++ b/src/frontends/xforms/XLyXKeySym.h @@ -44,6 +44,9 @@ public: */ virtual char getISOEncoded(std::string const & encoding) const; + /// + virtual std::string const print(key_modifier::state mod) const; + /// unsigned int keysym() const { return keysym_; diff --git a/src/kbmap.C b/src/kbmap.C index 1278af359d..81fb706068 100644 --- a/src/kbmap.C +++ b/src/kbmap.C @@ -30,12 +30,12 @@ using std::endl; using std::string; -string const kb_keymap::printKeysym(LyXKeySymPtr key, +string const kb_keymap::printKeySym(LyXKeySym const & key, key_modifier::state mod) { string buf; - string const s = key->getSymbolName(); + string const s = key.getSymbolName(); if (mod & key_modifier::shift) buf += "S-"; @@ -51,7 +51,7 @@ string const kb_keymap::printKeysym(LyXKeySymPtr key, string const kb_keymap::printKey(kb_key const & key) const { - return printKeysym(key.code, key.mod.first); + return key.code->print(key.mod.first); } diff --git a/src/kbmap.h b/src/kbmap.h index a9da168d31..b8eabff92d 100644 --- a/src/kbmap.h +++ b/src/kbmap.h @@ -64,8 +64,8 @@ public: * @param key the key as a keysym * @param mod the modifiers */ - static std::string const printKeysym(LyXKeySymPtr key, - key_modifier::state mod); + static std::string const printKeySym(LyXKeySym const & key, + key_modifier::state mod); typedef std::pair modifier_pair; diff --git a/src/kbsequence.C b/src/kbsequence.C index 46aa4b8e86..ffe1661c5b 100644 --- a/src/kbsequence.C +++ b/src/kbsequence.C @@ -137,7 +137,7 @@ string const kb_sequence::print() const KeySequence::size_type i, length = sequence.size(); for (i = 0; i < length; ++i) { - buf += kb_keymap::printKeysym(sequence[i], modifiers[i].first); + buf += kb_keymap::printKeySym(*sequence[i], modifiers[i].first); // append a blank if (i + 1 < length) { -- 2.39.2