X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FCustomizedWidgets.cpp;h=c29feba0e30e8dd82ac96412256478734cf0540e;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=8b360e43c4906d0af31dde83c5afa129b0d03781;hpb=0a554a5216cfe46575e2dbcabab30da96d87b47a;p=lyx.git diff --git a/src/frontends/qt4/CustomizedWidgets.cpp b/src/frontends/qt4/CustomizedWidgets.cpp index 8b360e43c4..c29feba0e3 100644 --- a/src/frontends/qt4/CustomizedWidgets.cpp +++ b/src/frontends/qt4/CustomizedWidgets.cpp @@ -5,12 +5,13 @@ * * \author Bo Peng * \author Edwin Leuven + * \author Jürgen Spitzmüller * * Full author contact details are available in file CREDITS. */ /* - The code for the ShortcutLineEdit class was adapted from + The code for the ShortcutWidget class was adapted from kkeysequencewidget.cpp, which is part of the KDE libraries. Copyright (C) 1998 Mark Donohoe Copyright (C) 2001 Ellis Whitehead @@ -26,7 +27,9 @@ #include "GuiKeySymbol.h" #include -#include +#include +#include +#include #include "support/qstring_helpers.h" @@ -36,22 +39,30 @@ using lyx::KeySequence; using lyx::KeyModifier; using lyx::toqstr; -ShortcutLineEdit::ShortcutLineEdit(QWidget * parent) - : QLineEdit(parent), keysequence_() +namespace lyx { +namespace frontend { + +ShortcutWidget::ShortcutWidget(QWidget * parent) + : QLabel(parent), keysequence_() { QApplication::instance()->installEventFilter(this); has_cursor_ = false; + setFrameShape(QFrame::Panel); + setFrameShadow(QFrame::Raised); + setLineWidth(3); + setFocusPolicy(Qt::StrongFocus); + setAlignment(Qt::AlignCenter); } -void ShortcutLineEdit::reset() +void ShortcutWidget::reset() { clear(); keysequence_ = KeySequence(); } -bool ShortcutLineEdit::eventFilter(QObject * obj, QEvent * e) +bool ShortcutWidget::eventFilter(QObject * obj, QEvent * e) { if (!has_cursor_) return false; @@ -64,18 +75,24 @@ bool ShortcutLineEdit::eventFilter(QObject * obj, QEvent * e) return true; default: break; - } + } return false; } -KeySequence const ShortcutLineEdit::getKeySequence() const +KeySequence const ShortcutWidget::getKeySequence() const { return keysequence_; } -void ShortcutLineEdit::keyPressEvent(QKeyEvent * e) +void ShortcutWidget::setKeySequence(lyx::KeySequence const s) +{ + keysequence_ = s; +} + + +void ShortcutWidget::keyPressEvent(QKeyEvent * e) { int const keyQt = e->key(); if (!keyQt) @@ -90,19 +107,21 @@ void ShortcutLineEdit::keyPressEvent(QKeyEvent * e) break; default: appendToSequence(e); - setText(toqstr(keysequence_.print(KeySequence::BindFile))); + setText(toqstr(keysequence_.print(KeySequence::ForGui))); } } -bool ShortcutLineEdit::event(QEvent * e) +bool ShortcutWidget::event(QEvent * e) { switch (e->type()) { case QEvent::FocusOut: has_cursor_ = false; + setFrameShadow(QFrame::Raised); break; case QEvent::FocusIn: has_cursor_ = true; + setFrameShadow(QFrame::Sunken); break; case QEvent::ShortcutOverride: keyPressEvent(static_cast(e)); @@ -114,45 +133,29 @@ bool ShortcutLineEdit::event(QEvent * e) default: break; } - return QLineEdit::event(e); + return QLabel::event(e); } -void ShortcutLineEdit::appendToSequence(QKeyEvent * e) +void ShortcutWidget::appendToSequence(QKeyEvent * e) { KeySymbol sym; setKeySymbol(&sym, e); - - KeyModifier mod = lyx::NoModifier; - if (e->modifiers() & Qt::SHIFT) - mod |= lyx::ShiftModifier; - if (e->modifiers() & Qt::CTRL) - mod |= lyx::ControlModifier; - if (e->modifiers() & Qt::ALT | e->modifiers() & Qt::META) - mod |= lyx::AltModifier; - keysequence_.addkey(sym, mod, lyx::NoModifier); -} - - -QString const SearchLineEdit::hintMessage() const -{ - return toqstr("Search ..."); -} - - -void SearchLineEdit::focusInEvent(QFocusEvent * e) -{ - if (text() == hintMessage()) - clear(); + if (sym.isOK()) { + KeyModifier mod = lyx::q_key_state(e->modifiers()); + keysequence_.addkey(sym, mod, lyx::NoModifier); + } } -void SearchLineEdit::focusOutEvent(QFocusEvent * e) +void ShortcutWidget::removeFromSequence() { - if (text().isEmpty()) - setText(hintMessage()); + keysequence_.removeKey(); + setText(toqstr(keysequence_.print(KeySequence::ForGui))); } +} // namespace frontend +} // namespace lyx -#include "CustomizedWidgets_moc.cpp" +#include "moc_CustomizedWidgets.cpp"