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

Last change on this file since 5 was 2, checked in by Dmitry A. Kuminov, 16 years ago

Initially imported qt-all-opensource-src-4.5.1 from Trolltech.

File size: 6.8 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4** Contact: Qt Software Information ([email protected])
5**
6** This file is part of the QtGui module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial Usage
10** Licensees holding valid Qt Commercial licenses may use this file in
11** accordance with the Qt Commercial License Agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and Nokia.
14**
15** GNU Lesser General Public License Usage
16** Alternatively, this file may be used under the terms of the GNU Lesser
17** General Public License version 2.1 as published by the Free Software
18** Foundation and appearing in the file LICENSE.LGPL included in the
19** packaging of this file. Please review the following information to
20** ensure the GNU Lesser General Public License version 2.1 requirements
21** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
22**
23** In addition, as a special exception, Nokia gives you certain
24** additional rights. These rights are described in the Nokia Qt LGPL
25** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
26** 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 are unsure which license is appropriate for your use, please
37** contact the sales department 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
93 int anchor() const;
94
95 void insertText(const QString &text);
96 void insertText(const QString &text, const QTextCharFormat &format);
97
98 enum MoveOperation {
99 NoMove,
100
101 Start,
102 Up,
103 StartOfLine,
104 StartOfBlock,
105 StartOfWord,
106 PreviousBlock,
107 PreviousCharacter,
108 PreviousWord,
109 Left,
110 WordLeft,
111
112 End,
113 Down,
114 EndOfLine,
115 EndOfWord,
116 EndOfBlock,
117 NextBlock,
118 NextCharacter,
119 NextWord,
120 Right,
121 WordRight,
122
123 NextCell,
124 PreviousCell,
125 NextRow,
126 PreviousRow
127 };
128
129 bool movePosition(MoveOperation op, MoveMode = MoveAnchor, int n = 1);
130
131 bool visualNavigation() const;
132 void setVisualNavigation(bool b);
133
134 void deleteChar();
135 void deletePreviousChar();
136
137 enum SelectionType {
138 WordUnderCursor,
139 LineUnderCursor,
140 BlockUnderCursor,
141 Document
142 };
143 void select(SelectionType selection);
144
145 bool hasSelection() const;
146 bool hasComplexSelection() const;
147 void removeSelectedText();
148 void clearSelection();
149 int selectionStart() const;
150 int selectionEnd() const;
151
152 QString selectedText() const;
153 QTextDocumentFragment selection() const;
154 void selectedTableCells(int *firstRow, int *numRows, int *firstColumn, int *numColumns) const;
155
156 QTextBlock block() const;
157
158 QTextCharFormat charFormat() const;
159 void setCharFormat(const QTextCharFormat &format);
160 void mergeCharFormat(const QTextCharFormat &modifier);
161
162 QTextBlockFormat blockFormat() const;
163 void setBlockFormat(const QTextBlockFormat &format);
164 void mergeBlockFormat(const QTextBlockFormat &modifier);
165
166 QTextCharFormat blockCharFormat() const;
167 void setBlockCharFormat(const QTextCharFormat &format);
168 void mergeBlockCharFormat(const QTextCharFormat &modifier);
169
170 bool atBlockStart() const;
171 bool atBlockEnd() const;
172 bool atStart() const;
173 bool atEnd() const;
174
175 void insertBlock();
176 void insertBlock(const QTextBlockFormat &format);
177 void insertBlock(const QTextBlockFormat &format, const QTextCharFormat &charFormat);
178
179 QTextList *insertList(const QTextListFormat &format);
180 QTextList *insertList(QTextListFormat::Style style);
181
182 QTextList *createList(const QTextListFormat &format);
183 QTextList *createList(QTextListFormat::Style style);
184 QTextList *currentList() const;
185
186 QTextTable *insertTable(int rows, int cols, const QTextTableFormat &format);
187 QTextTable *insertTable(int rows, int cols);
188 QTextTable *currentTable() const;
189
190 QTextFrame *insertFrame(const QTextFrameFormat &format);
191 QTextFrame *currentFrame() const;
192
193 void insertFragment(const QTextDocumentFragment &fragment);
194
195#ifndef QT_NO_TEXTHTMLPARSER
196 void insertHtml(const QString &html);
197#endif // QT_NO_TEXTHTMLPARSER
198
199 void insertImage(const QTextImageFormat &format, QTextFrameFormat::Position alignment);
200 void insertImage(const QTextImageFormat &format);
201 void insertImage(const QString &name);
202 void insertImage(const QImage &image, const QString &name = QString());
203
204 void beginEditBlock();
205 void joinPreviousEditBlock();
206 void endEditBlock();
207
208 bool operator!=(const QTextCursor &rhs) const;
209 bool operator<(const QTextCursor &rhs) const;
210 bool operator<=(const QTextCursor &rhs) const;
211 bool operator==(const QTextCursor &rhs) const;
212 bool operator>=(const QTextCursor &rhs) const;
213 bool operator>(const QTextCursor &rhs) const;
214
215 bool isCopyOf(const QTextCursor &other) const;
216
217 int blockNumber() const;
218 int columnNumber() const;
219
220 QTextDocument *document() const;
221
222private:
223 QSharedDataPointer<QTextCursorPrivate> d;
224 friend class QTextDocumentFragmentPrivate;
225 friend class QTextCopyHelper;
226};
227
228QT_END_NAMESPACE
229
230QT_END_HEADER
231
232#endif // QTEXTCURSOR_H
Note: See TracBrowser for help on using the repository browser.