diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | ce4a32fe52ef09d8f5ff1dd22c001110902b60a2 (patch) | |
tree | 5ac38a06f3dde268dc7927dc155896926aaf7012 /kdeui/ksyntaxhighlighter.h | |
download | tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.tar.gz tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kdeui/ksyntaxhighlighter.h')
-rw-r--r-- | kdeui/ksyntaxhighlighter.h | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/kdeui/ksyntaxhighlighter.h b/kdeui/ksyntaxhighlighter.h new file mode 100644 index 000000000..ea020afa9 --- /dev/null +++ b/kdeui/ksyntaxhighlighter.h @@ -0,0 +1,184 @@ +/* + ksyntaxhighlighter.cpp + + Copyright (c) 2003 Trolltech AS + Copyright (c) 2003 Scott Wheeler <wheeler@kde.org> + + This file is part of the KDE libraries + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License version 2 as published by the Free Software Foundation. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef KSYNTAXHIGHLIGHTER_H +#define KSYNTAXHIGHLIGHTER_H + +#include <qtextedit.h> +#include <qsyntaxhighlighter.h> +#include <qcolor.h> +#include <qstringlist.h> + +#include <kdelibs_export.h> + +class QAccel; +class QTimer; +class KSpell; +class KSpellConfig; + +/** + * \brief Syntax sensitive text highlighter + */ +class KDEUI_EXPORT KSyntaxHighlighter : public QSyntaxHighlighter +{ +public: + enum SyntaxMode { + PlainTextMode, + RichTextMode + }; + KSyntaxHighlighter( QTextEdit *textEdit, + bool colorQuoting = false, + const QColor& QuoteColor0 = black, + const QColor& QuoteColor1 = QColor( 0x00, 0x80, 0x00 ), + const QColor& QuoteColor2 = QColor( 0x00, 0x80, 0x00 ), + const QColor& QuoteColor3 = QColor( 0x00, 0x80, 0x00 ), + SyntaxMode mode = PlainTextMode ); + ~KSyntaxHighlighter(); + + int highlightParagraph( const QString& text, int endStateOfLastPara ); + +private: + class KSyntaxHighlighterPrivate; + KSyntaxHighlighterPrivate *d; +}; + +class KDEUI_EXPORT KSpellingHighlighter : public KSyntaxHighlighter +{ +public: + KSpellingHighlighter( QTextEdit *textEdit, + const QColor& spellColor = red, + bool colorQuoting = false, + const QColor& QuoteColor0 = black, + const QColor& QuoteColor1 = QColor( 0x00, 0x80, 0x00 ), + const QColor& QuoteColor2 = QColor( 0x00, 0x80, 0x00 ), + const QColor& QuoteColor3 = QColor( 0x00, 0x80, 0x00 ) ); + ~KSpellingHighlighter(); + + virtual int highlightParagraph( const QString &text, + int endStateOfLastPara ); + virtual bool isMisspelled( const QString& word ) = 0; + bool intraWordEditing() const; + void setIntraWordEditing( bool editing ); + static QStringList personalWords(); + +private: + void flushCurrentWord(); + + class KSpellingHighlighterPrivate; + KSpellingHighlighterPrivate *d; +}; + +/** + * \brief Dictionary sensitive text highlighter + */ +class KDEUI_EXPORT KDictSpellingHighlighter : public QObject, public KSpellingHighlighter +{ +Q_OBJECT + +public: + KDictSpellingHighlighter( QTextEdit *textEdit, + bool spellCheckingActive = true, + bool autoEnable = true, + const QColor& spellColor = red, + bool colorQuoting = false, + const QColor& QuoteColor0 = black, + const QColor& QuoteColor1 = QColor( 0x00, 0x80, 0x00 ), + const QColor& QuoteColor2 = QColor( 0x00, 0x70, 0x00 ), + const QColor& QuoteColor3 = QColor( 0x00, 0x60, 0x00 ), + KSpellConfig *spellConfig = 0 ); + ~KDictSpellingHighlighter(); + + virtual bool isMisspelled( const QString &word ); + static void dictionaryChanged(); + void restartBackgroundSpellCheck(); + + /** + * @short Enable/Disable spell checking. + * + * If @p active is true then spell checking is enabled; otherwise it + * is disabled. Note that you have to disable automatic (de)activation + * with @ref setAutomatic() before you change the state of spell checking + * if you want to persistently enable/disable spell checking. + * + * @param active if true, then spell checking is enabled + * + * @see isActive(), setAutomatic() + */ + void setActive( bool active ); + + /** + * Returns the state of spell checking. + * + * @return true if spell checking is active + * + * @see setActive() + */ + bool isActive() const; + + /** + * @short En-/Disable automatic (de)activation in case of too many errors. + * + * If @p automatic is true then spell checking will be deactivated if + * too many words were mispelled and spell checking will be activated + * again if the amount of mispelled words drop below a certain threshold. + * + * @param automatic if true, then automatic (de)activation is enabled + * + * @see automatic() + */ + void setAutomatic( bool automatic ); + + /** + * Returns the state of automatic (de)activation. + * + * @return true if automatic (de)activation is enabled + * + * @see setAutomatic() + */ + bool automatic() const; + +signals: + void activeChanged(const QString &); + void newSuggestions(const QString& originalword, const QStringList& suggestions, + unsigned int pos); + +protected: + QString spellKey(); + bool eventFilter(QObject *o, QEvent *e); + +protected slots: + void slotMisspelling( const QString &originalWord, const QStringList &suggestions, unsigned int pos ); + void slotCorrected( const QString &originalWord, const QString &, unsigned int ); + void slotRehighlight(); + void slotDictionaryChanged(); + void slotSpellReady( KSpell *spell ); + void slotAutoDetection(); + void slotLocalSpellConfigChanged(); + void slotKSpellNotResponding(); + +private: + class KDictSpellingHighlighterPrivate; + KDictSpellingHighlighterPrivate *d; +}; + +#endif |