[prev in list] [next in list] [prev in thread] [next in thread]
List: ktexteditor-devel
Subject: Spell checking interface
From: Michel Ludwig <michel.ludwig () kdemail ! net>
Date: 2008-04-10 20:56:08
Message-ID: 200804102156.10658.michel.ludwig () kdemail ! net
[Download RAW message or body]
Hi,
in light of the on-the-fly spell checking feature, I'd like to propose a spell
checking interface for documents, which adds the possibility to set different
languages for parts of a document and a function for obtaining document
ranges that should be spell checked.
A first interface proposal is attached.
Michel
["spellcheckinterface.h" (text/x-c++hdr)]
/* This file is part of the KDE libraries
Copyright (C) 2008 Michel Ludwig <michel.ludwig@kdemail.net>
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 KDELIBS_KTEXTEDITOR_SPELLCHECKINTERFACE_H
#define KDELIBS_KTEXTEDITOR_SPELLCHECKINTERFACE_H
#include <ktexteditor/ktexteditor_export.h>
class KConfigGroup;
#include <QtCore/QObject>
namespace KTextEditor
{
/**
* \brief Spell checking extension for the Document.
*
* \ingroup kte_group_document_extensions
*
* \section spellcheck_intro Introduction
*
* The SpellcheckInterface is an extension for Documents which allows access to spell checking
* related functionalities.
*
* \section spellcheck_support Adding Spell Checking Support
*
* To add support for spell checking a KTextEditor implementation has to derive the
* Document class from SpellcheckInterface and reimplement the purely virtual methods defined
* in this interfaces.
*
* \section spellcheck_access Accessing the SpellcheckInterface
*
* The SpellcheckInterface is supposed to be an extension interface for a Document, i.e. the
* Document inherits the interface \e provided that it implements the interface. Use qobject_cast to
* access the implementation:
* \code
* // object is of type KTextEditor::Document*
* KTextEditor::SpellcheckInterface *iface =
* qobject_cast<KTextEditor::SpellcheckInterface*>( object );
*
* if( iface ) {
* // interface is supported
* // do stuff
* }
* \endcode
*
* \since 4.1
* \see KTextEditor::Document, Sonnet::Speller
* \author Michel Ludwig \<michel.ludwig@kdemail.net\>
*/
class KTEXTEDITOR_EXPORT SpellcheckInterface
{
public:
/**
* Constructor.
*/
SpellcheckInterface();
/**
* Virtual destructor.
*/
virtual ~SpellcheckInterface() {}
public:
/**
* Return the sub-ranges that contain text that should be spell checked within a given
* document range.
*
* \param range Document range
* \return Sub-ranges of \p range which contain text that should be spell checked
* \since 4.1
*/
virtual QList<KTextEditor::Range> spellcheckableText(const KTextEditor::Range& range) const = 0;
/**
* Set the default language of the document, which is used when no other language is
* set for a sub-range of the document.
*
* \param language Default language of the document
* \since 4.1
*/
virtual void setDefaultLanguage(const QString& language) = 0;
/**
* Get the default language of the document.
*
* \return Default language of the document
* \since 4.1
*/
virtual void defaultLanguage(const QString& language) const = 0;
/**
* Sets the language for a range in the document. Any existing language settings
* for this range are overridden.
*
* \param range Range of the document for which the language is set
* \param language New language for the given range
* \since 4.1
*/
virtual void changeLanguage(const KTextEditor::Range& range, const QString& language) = 0;
/**
* Sets the languages for specific ranges in the document.
*
* \param list List of range-language pairs; the ranges must be non-overlapping
* \since 4.1
*/
virtual void setDocumentLanguages(const QList<QPair<KTextEditor::SmartRange*, QString> >& list) = 0;
/**
* Clears the languages set for different document ranges.
* \since 4.1
*/
virtual void clearDocumentLanguages() = 0;
/**
* Returns the range-language pairs for the current document.
*
* \return List of range-language pairs
* \since 4.1
*/
virtual QList<QPair<KTextEditor::SmartRange*, QString> > documentLanguages() const = 0;
/**
* Returns the Speller object which is used for the spell checking.
*
* \return Speller object that is used for spell checking
* \since 4.1
**/
virtual Sonnet::Speller speller() const = 0;
/**
* Sets the Speller object that is used for spell checking.
*
* \param speller Speller object that should be used for spell checking
* \since 4.1
*/
virtual void setSpeller(const Sonnet::Speller& speller) = 0;
private:
class SpellcheckInterfacePrivate* const d;
};
}
Q_DECLARE_INTERFACE(KTextEditor::SpellcheckInterface, "org.kde.KTextEditor.SpellcheckInterface")
#endif
// kate: space-indent on; indent-width 2; replace-tabs on;
_______________________________________________
KTextEditor-Devel mailing list
KTextEditor-Devel@kde.org
https://mail.kde.org/mailman/listinfo/ktexteditor-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic