source: trunk/src/gui/text/qtextcursor.h@ 858

Last change on this file since 858 was 846, checked in by Dmitry A. Kuminov, 14 years ago

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

File size: 7.0 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the QtGui module of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#ifndef QTEXTCURSOR_H
43#define QTEXTCURSOR_H
44
45#include <QtCore/qstring.h>
46#include <QtCore/qshareddata.h>
47#include <QtGui/qtextformat.h>
48
49QT_BEGIN_HEADER
50
51QT_BEGIN_NAMESPACE
52
53QT_MODULE(Gui)
54
55class QTextDocument;
56class QTextCursorPrivate;
57class QTextDocumentFragment;
58class QTextCharFormat;
59class QTextBlockFormat;
60class QTextListFormat;
61class QTextTableFormat;
62class QTextFrameFormat;
63class QTextImageFormat;
64class QTextDocumentPrivate;
65class QTextList;
66class QTextTable;
67class QTextFrame;
68class QTextBlock;
69
70class Q_GUI_EXPORT QTextCursor
71{
72public:
73 QTextCursor();
74 explicit QTextCursor(QTextDocument *document);
75 QTextCursor(QTextDocumentPrivate *p, int pos);
76 explicit QTextCursor(QTextFrame *frame);
77 explicit QTextCursor(const QTextBlock &block);
78 explicit QTextCursor(QTextCursorPrivate *d);
79 QTextCursor(const QTextCursor &cursor);
80 QTextCursor &operator=(const QTextCursor &other);
81 ~QTextCursor();
82
83 bool isNull() const;
84
85 enum MoveMode {
86 MoveAnchor,
87 KeepAnchor
88 };
89
90 void setPosition(int pos, MoveMode mode = MoveAnchor);
91 int position() const;
92 int positionInBlock() const;
93
94 int anchor() const;
95
96 void insertText(const QString &text);
97 void insertText(const QString &text, const QTextCharFormat &format);
98
99 enum MoveOperation {
100 NoMove,
101
102 Start,
103 Up,
104 StartOfLine,
105 StartOfBlock,
106 StartOfWord,
107 PreviousBlock,
108 PreviousCharacter,
109 PreviousWord,
110 Left,
111 WordLeft,
112
113 End,
114 Down,
115 EndOfLine,
116 EndOfWord,
117 EndOfBlock,
118 NextBlock,
119 NextCharacter,
120 NextWord,
121 Right,
122 WordRight,
123
124 NextCell,
125 PreviousCell,
126 NextRow,
127 PreviousRow
128 };
129
130 bool movePosition(MoveOperation op, MoveMode = MoveAnchor, int n = 1);
131
132 bool visualNavigation() const;
133 void setVisualNavigation(bool b);
134
135 void setVerticalMovementX(int x);
136 int verticalMovementX() const;
137
138 void setKeepPositionOnInsert(bool b);
139 bool keepPositionOnInsert() const;
140
141 void deleteChar();
142 void deletePreviousChar();
143
144 enum SelectionType {
145 WordUnderCursor,
146 LineUnderCursor,
147 BlockUnderCursor,
148 Document
149 };
150 void select(SelectionType selection);
151
152 bool hasSelection() const;
153 bool hasComplexSelection() const;
154 void removeSelectedText();
155 void clearSelection();
156 int selectionStart() const;
157 int selectionEnd() const;
158
159 QString selectedText() const;
160 QTextDocumentFragment selection() const;
161 void selectedTableCells(int *firstRow, int *numRows, int *firstColumn, int *numColumns) const;
162
163 QTextBlock block() const;
164
165 QTextCharFormat charFormat() const;
166 void setCharFormat(const QTextCharFormat &format);
167 void mergeCharFormat(const QTextCharFormat &modifier);
168
169 QTextBlockFormat blockFormat() const;
170 void setBlockFormat(const QTextBlockFormat &format);
171 void mergeBlockFormat(const QTextBlockFormat &modifier);
172
173 QTextCharFormat blockCharFormat() const;
174 void setBlockCharFormat(const QTextCharFormat &format);
175 void mergeBlockCharFormat(const QTextCharFormat &modifier);
176
177 bool atBlockStart() const;
178 bool atBlockEnd() const;
179 bool atStart() const;
180 bool atEnd() const;
181
182 void insertBlock();
183 void insertBlock(const QTextBlockFormat &format);
184 void insertBlock(const QTextBlockFormat &format, const QTextCharFormat &charFormat);
185
186 QTextList *insertList(const QTextListFormat &format);
187 QTextList *insertList(QTextListFormat::Style style);
188
189 QTextList *createList(const QTextListFormat &format);
190 QTextList *createList(QTextListFormat::Style style);
191 QTextList *currentList() const;
192
193 QTextTable *insertTable(int rows, int cols, const QTextTableFormat &format);
194 QTextTable *insertTable(int rows, int cols);
195 QTextTable *currentTable() const;
196
197 QTextFrame *insertFrame(const QTextFrameFormat &format);
198 QTextFrame *currentFrame() const;
199
200 void insertFragment(const QTextDocumentFragment &fragment);
201
202#ifndef QT_NO_TEXTHTMLPARSER
203 void insertHtml(const QString &html);
204#endif // QT_NO_TEXTHTMLPARSER
205
206 void insertImage(const QTextImageFormat &format, QTextFrameFormat::Position alignment);
207 void insertImage(const QTextImageFormat &format);
208 void insertImage(const QString &name);
209 void insertImage(const QImage &image, const QString &name = QString());
210
211 void beginEditBlock();
212 void joinPreviousEditBlock();
213 void endEditBlock();
214
215 bool operator!=(const QTextCursor &rhs) const;
216 bool operator<(const QTextCursor &rhs) const;
217 bool operator<=(const QTextCursor &rhs) const;
218 bool operator==(const QTextCursor &rhs) const;
219 bool operator>=(const QTextCursor &rhs) const;
220 bool operator>(const QTextCursor &rhs) const;
221
222 bool isCopyOf(const QTextCursor &other) const;
223
224 int blockNumber() const;
225 int columnNumber() const;
226
227 QTextDocument *document() const;
228
229private:
230 QSharedDataPointer<QTextCursorPrivate> d;
231 friend class QTextDocumentFragmentPrivate;
232 friend class QTextCopyHelper;
233};
234
235QT_END_NAMESPACE
236
237QT_END_HEADER
238
239#endif // QTEXTCURSOR_H
Note: See TracBrowser for help on using the repository browser.