X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FCustomizedWidgets.cpp;h=4ae2fe6f94daedb9ac13d2a987edda37239049c0;hb=e029b216b7e56ce3a41ef0b853045c37c7d155d8;hp=65d847742c0f65f193c596d0ce88d5c1fcd5c7a2;hpb=6cf20c52b7a2f4453fe74a65057df97c10046497;p=lyx.git diff --git a/src/frontends/qt4/CustomizedWidgets.cpp b/src/frontends/qt4/CustomizedWidgets.cpp index 65d847742c..4ae2fe6f94 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" @@ -39,22 +42,27 @@ using lyx::toqstr; namespace lyx { namespace frontend { -ShortcutLineEdit::ShortcutLineEdit(QWidget * parent) - : QLineEdit(parent), keysequence_() +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; @@ -67,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) @@ -98,14 +112,16 @@ void ShortcutLineEdit::keyPressEvent(QKeyEvent * e) } -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)); @@ -117,11 +133,11 @@ 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); @@ -131,7 +147,14 @@ void ShortcutLineEdit::appendToSequence(QKeyEvent * e) keysequence_.addkey(sym, mod, lyx::NoModifier); } + +void ShortcutWidget::removeFromSequence() +{ + keysequence_.removeKey(); + setText(toqstr(keysequence_.print(KeySequence::ForGui))); +} + } // namespace frontend } // namespace lyx -#include "CustomizedWidgets_moc.cpp" +#include "moc_CustomizedWidgets.cpp"