]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/CustomizedWidgets.cpp
* fix spelling in comments to please John.
[lyx.git] / src / frontends / qt4 / CustomizedWidgets.cpp
index 8b360e43c4906d0af31dde83c5afa129b0d03781..c29feba0e30e8dd82ac96412256478734cf0540e 100644 (file)
@@ -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 <donohoe@kde.org>
        Copyright (C) 2001 Ellis Whitehead <ellis@kde.org>
@@ -26,7 +27,9 @@
 #include "GuiKeySymbol.h"
 
 #include <QApplication>
-#include <QCloseEvent>
+#include <QKeyEvent>
+#include <QMouseEvent>
+#include <QShowEvent>
 
 #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<QKeyEvent *>(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"