From ce4a32fe52ef09d8f5ff1dd22c001110902b60a2 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: 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 --- kspell2/filter.h | 122 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 kspell2/filter.h (limited to 'kspell2/filter.h') diff --git a/kspell2/filter.h b/kspell2/filter.h new file mode 100644 index 000000000..3c66dc869 --- /dev/null +++ b/kspell2/filter.h @@ -0,0 +1,122 @@ +// -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; -*- +/* + * filter.h + * + * Copyright (C) 2004 Zack Rusin + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA + */ + +#ifndef KSPELL_FILTER_H +#define KSPELL_FILTER_H + +#include +#include + +namespace KSpell2 +{ + class Settings; + + /** + * Structure abstracts the word and its position in the + * parent text. + * + * @author Zack Rusin + * @short struct represents word + */ + struct Word + { + Word() : start( 0 ), end( true ) + {} + + Word( const QString& w, int st, bool e = false ) + : word( w ), start( st ), end( e ) + {} + Word( const Word& other ) + : word( other.word ), start( other.start ), + end( other.end ) + {} + + QString word; + uint start; + bool end; + }; + + /** + * Filter is used to split text into words which + * will be spell checked. + * + * @author Zack Rusin + * @short used to split text into words + */ + class KDE_EXPORT Filter + { + public: + static Filter *defaultFilter(); + public: + Filter(); + virtual ~Filter(); + + static Word end(); + + /** + * Sets the Settings object for this Filter + */ + void setSettings( Settings* ); + + /** + * Returns currently used Settings object + */ + Settings *settings() const; + + bool atEnd() const; + + void setBuffer( const QString& buffer ); + QString buffer() const; + + void restart(); + + virtual Word nextWord() const; + virtual Word previousWord() const; + virtual Word wordAtPosition( unsigned int pos ) const; + + virtual void setCurrentPosition( int ); + virtual int currentPosition() const; + virtual void replace( const Word& w, const QString& newWord ); + + /** + * Should return the sentence containing the current word + */ + virtual QString context() const; + protected: + bool trySkipLinks() const; + bool ignore( const QString& word ) const; + QChar skipToLetter( uint &fromPosition ) const; + bool shouldBeSkipped( bool wordWasUppercase, bool wordWasRunTogether, + const QString& foundWord ) const; + + protected: + QString m_buffer; + mutable uint m_currentPosition; + + private: + class Private; + Private *d; + }; + +} + +#endif -- cgit v1.2.3