1 /****************************************************************************
3 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
7 ** This file is part of the QtGui module of the Qt Toolkit.
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** GNU Lesser General Public License Usage
11 ** This file may be used under the terms of the GNU Lesser General Public
12 ** License version 2.1 as published by the Free Software Foundation and
13 ** appearing in the file LICENSE.LGPL included in the packaging of this
14 ** file. Please review the following information to ensure the GNU Lesser
15 ** General Public License version 2.1 requirements will be met:
16 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
18 ** In addition, as a special exception, Nokia gives you certain additional
19 ** rights. These rights are described in the Nokia Qt LGPL Exception
20 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
22 ** GNU General Public License Usage
23 ** Alternatively, this file may be used under the terms of the GNU General
24 ** Public License version 3.0 as published by the Free Software Foundation
25 ** and appearing in the file LICENSE.GPL included in the packaging of this
26 ** file. Please review the following information to ensure the GNU General
27 ** Public License version 3.0 requirements will be met:
28 ** http://www.gnu.org/copyleft/gpl.html.
31 ** Alternatively, this file may be used in accordance with the terms and
32 ** conditions contained in a signed written agreement between you and Nokia.
40 ****************************************************************************/
42 #ifndef QTEXTDOCUMENT_H
43 #define QTEXTDOCUMENT_H
45 #include <QtCore/qobject.h>
46 #include <QtCore/qsize.h>
47 #include <QtCore/qrect.h>
48 #include <QtGui/qfont.h>
56 class QTextFormatCollection;
57 class QTextListFormat;
60 class QPagedPaintDevice;
61 class QAbstractTextDocumentLayout;
74 template<typename T> class QVector;
78 enum HitTestAccuracy { ExactHit, FuzzyHit };
83 WhiteSpaceModeUndefined = -1
86 Q_GUI_EXPORT bool mightBeRichText(const QString&);
87 Q_GUI_EXPORT QString escape(const QString& plain);
88 Q_GUI_EXPORT QString convertFromPlainText(const QString &plain, WhiteSpaceMode mode = WhiteSpacePre);
90 #ifndef QT_NO_TEXTCODEC
91 Q_GUI_EXPORT QTextCodec *codecForHtml(const QByteArray &ba);
95 class Q_GUI_EXPORT QAbstractUndoItem
98 virtual ~QAbstractUndoItem() = 0;
99 virtual void undo() = 0;
100 virtual void redo() = 0;
103 inline QAbstractUndoItem::~QAbstractUndoItem()
107 class QTextDocumentPrivate;
109 class Q_GUI_EXPORT QTextDocument : public QObject
113 Q_PROPERTY(bool undoRedoEnabled READ isUndoRedoEnabled WRITE setUndoRedoEnabled)
114 Q_PROPERTY(bool modified READ isModified WRITE setModified DESIGNABLE false)
115 Q_PROPERTY(QSizeF pageSize READ pageSize WRITE setPageSize)
116 Q_PROPERTY(QFont defaultFont READ defaultFont WRITE setDefaultFont)
117 Q_PROPERTY(bool useDesignMetrics READ useDesignMetrics WRITE setUseDesignMetrics)
118 Q_PROPERTY(QSizeF size READ size)
119 Q_PROPERTY(qreal textWidth READ textWidth WRITE setTextWidth)
120 Q_PROPERTY(int blockCount READ blockCount)
121 Q_PROPERTY(qreal indentWidth READ indentWidth WRITE setIndentWidth)
122 #ifndef QT_NO_CSSPARSER
123 Q_PROPERTY(QString defaultStyleSheet READ defaultStyleSheet WRITE setDefaultStyleSheet)
125 Q_PROPERTY(int maximumBlockCount READ maximumBlockCount WRITE setMaximumBlockCount)
126 Q_PROPERTY(qreal documentMargin READ documentMargin WRITE setDocumentMargin)
127 QDOC_PROPERTY(QTextOption defaultTextOption READ defaultTextOption WRITE setDefaultTextOption)
130 explicit QTextDocument(QObject *parent = 0);
131 explicit QTextDocument(const QString &text, QObject *parent = 0);
134 QTextDocument *clone(QObject *parent = 0) const;
136 bool isEmpty() const;
137 virtual void clear();
139 void setUndoRedoEnabled(bool enable);
140 bool isUndoRedoEnabled() const;
142 bool isUndoAvailable() const;
143 bool isRedoAvailable() const;
145 int availableUndoSteps() const;
146 int availableRedoSteps() const;
148 int revision() const;
150 void setDocumentLayout(QAbstractTextDocumentLayout *layout);
151 QAbstractTextDocumentLayout *documentLayout() const;
153 enum MetaInformation {
157 void setMetaInformation(MetaInformation info, const QString &);
158 QString metaInformation(MetaInformation info) const;
160 #ifndef QT_NO_TEXTHTMLPARSER
161 QString toHtml(const QByteArray &encoding = QByteArray()) const;
162 void setHtml(const QString &html);
165 QString toPlainText() const;
166 void setPlainText(const QString &text);
168 QChar characterAt(int pos) const;
172 FindBackward = 0x00001,
173 FindCaseSensitively = 0x00002,
174 FindWholeWords = 0x00004
176 Q_DECLARE_FLAGS(FindFlags, FindFlag)
178 QTextCursor find(const QString &subString, int from = 0, FindFlags options = 0) const;
179 QTextCursor find(const QString &subString, const QTextCursor &from, FindFlags options = 0) const;
181 QTextCursor find(const QRegExp &expr, int from = 0, FindFlags options = 0) const;
182 QTextCursor find(const QRegExp &expr, const QTextCursor &from, FindFlags options = 0) const;
184 QTextFrame *frameAt(int pos) const;
185 QTextFrame *rootFrame() const;
187 QTextObject *object(int objectIndex) const;
188 QTextObject *objectForFormat(const QTextFormat &) const;
190 QTextBlock findBlock(int pos) const;
191 QTextBlock findBlockByNumber(int blockNumber) const;
192 QTextBlock findBlockByLineNumber(int blockNumber) const;
193 QTextBlock begin() const;
194 QTextBlock end() const;
196 QTextBlock firstBlock() const;
197 QTextBlock lastBlock() const;
199 void setPageSize(const QSizeF &size);
200 QSizeF pageSize() const;
202 void setDefaultFont(const QFont &font);
203 QFont defaultFont() const;
205 int pageCount() const;
207 bool isModified() const;
209 void print(QPagedPaintDevice *printer) const;
214 StyleSheetResource = 3,
219 QVariant resource(int type, const QUrl &name) const;
220 void addResource(int type, const QUrl &name, const QVariant &resource);
222 QVector<QTextFormat> allFormats() const;
224 void markContentsDirty(int from, int length);
226 void setUseDesignMetrics(bool b);
227 bool useDesignMetrics() const;
229 void drawContents(QPainter *painter, const QRectF &rect = QRectF());
231 void setTextWidth(qreal width);
232 qreal textWidth() const;
234 qreal idealWidth() const;
236 qreal indentWidth() const;
237 void setIndentWidth(qreal width);
239 qreal documentMargin() const;
240 void setDocumentMargin(qreal margin);
245 int blockCount() const;
246 int lineCount() const;
247 int characterCount() const;
249 #ifndef QT_NO_CSSPARSER
250 void setDefaultStyleSheet(const QString &sheet);
251 QString defaultStyleSheet() const;
254 void undo(QTextCursor *cursor);
255 void redo(QTextCursor *cursor);
260 UndoAndRedoStacks = UndoStack | RedoStack
262 void clearUndoRedoStacks(Stacks historyToClear = UndoAndRedoStacks);
264 int maximumBlockCount() const;
265 void setMaximumBlockCount(int maximum);
267 QTextOption defaultTextOption() const;
268 void setDefaultTextOption(const QTextOption &option);
270 Qt::CursorMoveStyle defaultCursorMoveStyle() const;
271 void setDefaultCursorMoveStyle(Qt::CursorMoveStyle style);
274 void contentsChange(int from, int charsRemoves, int charsAdded);
275 void contentsChanged();
276 void undoAvailable(bool);
277 void redoAvailable(bool);
278 void undoCommandAdded();
279 void modificationChanged(bool m);
280 void cursorPositionChanged(const QTextCursor &cursor);
281 void blockCountChanged(int newBlockCount);
283 void documentLayoutChanged();
288 void appendUndoItem(QAbstractUndoItem *);
289 void setModified(bool m = true);
292 virtual QTextObject *createObject(const QTextFormat &f);
293 virtual QVariant loadResource(int type, const QUrl &name);
295 QTextDocument(QTextDocumentPrivate &dd, QObject *parent);
297 QTextDocumentPrivate *docHandle() const;
299 Q_DISABLE_COPY(QTextDocument)
300 Q_DECLARE_PRIVATE(QTextDocument)
301 friend class QTextObjectPrivate;
304 Q_DECLARE_OPERATORS_FOR_FLAGS(QTextDocument::FindFlags)
310 #endif // QTEXTDOCUMENT_H