1
/****************************************************************************
3
** Copyright (C) 1992-2005 Trolltech AS. All rights reserved.
5
** This file is part of the widgets module of the Qt Toolkit.
7
** This file may be distributed under the terms of the Q Public License
8
** as defined by Trolltech AS of Norway and appearing in the file
9
** LICENSE.QPL included in the packaging of this file.
11
** This file may be distributed and/or modified under the terms of the
12
** GNU General Public License version 2 as published by the Free Software
13
** Foundation and appearing in the file LICENSE.GPL included in the
14
** packaging of this file.
16
** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
17
** information about Qt Commercial License Agreements.
18
** See http://www.trolltech.com/qpl/ for QPL licensing information.
19
** See http://www.trolltech.com/gpl/ for GPL licensing information.
21
** Contact info@trolltech.com if any conditions of this licensing are
24
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
25
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27
****************************************************************************/
32
#include <QtGui/qabstractscrollarea.h>
33
#include <QtGui/qtextdocument.h>
34
#include <QtGui/qtextoption.h>
37
#include <QtGui/qtextcursor.h>
38
#include <QtGui/qtextformat.h>
39
#include <QtGui/qtextobject.h>
40
#include <QtGui/qtextlayout.h>
43
class QTextCharFormat;
47
class QTextBlockFormat;
49
class QTextEditPrivate;
52
class Q_GUI_EXPORT QTextEdit : public QAbstractScrollArea
55
Q_DECLARE_PRIVATE(QTextEdit)
56
Q_FLAGS(AutoFormatting)
58
Q_PROPERTY(AutoFormatting autoFormatting READ autoFormatting WRITE setAutoFormatting)
59
Q_PROPERTY(bool tabChangesFocus READ tabChangesFocus WRITE setTabChangesFocus)
60
Q_PROPERTY(QString documentTitle READ documentTitle WRITE setDocumentTitle)
61
Q_PROPERTY(bool undoRedoEnabled READ isUndoRedoEnabled WRITE setUndoRedoEnabled)
62
Q_PROPERTY(LineWrapMode lineWrapMode READ lineWrapMode WRITE setLineWrapMode)
63
QDOC_PROPERTY(QTextOption::WrapMode wordWrapMode READ wordWrapMode WRITE setWordWrapMode)
64
Q_PROPERTY(int lineWrapColumnOrWidth READ lineWrapColumnOrWidth WRITE setLineWrapColumnOrWidth)
65
Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly)
66
Q_PROPERTY(QString html READ toHtml WRITE setHtml)
75
enum AutoFormattingFlag {
77
AutoBulletList = 0x00000001,
81
Q_DECLARE_FLAGS(AutoFormatting, AutoFormattingFlag)
96
#if defined(QT3_SUPPORT) && !defined(Q_MOC_RUN)
98
MovePgUp = MovePageUp,
99
MovePgDown = MovePageDown
103
explicit QTextEdit(QWidget *parent = 0);
104
explicit QTextEdit(const QString &text, QWidget *parent = 0);
105
virtual ~QTextEdit();
107
void setDocument(QTextDocument *document);
108
QTextDocument *document() const;
110
void setTextCursor(const QTextCursor &cursor);
111
QTextCursor textCursor() const;
113
bool isReadOnly() const;
114
void setReadOnly(bool ro);
116
qreal fontPointSize() const;
117
QString fontFamily() const;
118
int fontWeight() const;
119
bool fontUnderline() const;
120
bool fontItalic() const;
121
QColor textColor() const;
122
QFont currentFont() const;
123
Qt::Alignment alignment() const;
125
void mergeCurrentCharFormat(const QTextCharFormat &modifier);
127
void setCurrentCharFormat(const QTextCharFormat &format);
128
QTextCharFormat currentCharFormat() const;
130
AutoFormatting autoFormatting() const;
131
void setAutoFormatting(AutoFormatting features);
133
bool tabChangesFocus() const;
134
void setTabChangesFocus(bool b);
136
inline void setDocumentTitle(const QString &title)
137
{ document()->setMetaInformation(QTextDocument::DocumentTitle, title); }
138
inline QString documentTitle() const
139
{ return document()->metaInformation(QTextDocument::DocumentTitle); }
141
inline bool isUndoRedoEnabled() const
142
{ return document()->isUndoRedoEnabled(); }
143
inline void setUndoRedoEnabled(bool enable)
144
{ document()->setUndoRedoEnabled(enable); }
146
LineWrapMode lineWrapMode() const;
147
void setLineWrapMode(LineWrapMode mode);
149
int lineWrapColumnOrWidth() const;
150
void setLineWrapColumnOrWidth(int w);
152
QTextOption::WrapMode wordWrapMode() const;
153
void setWordWrapMode(QTextOption::WrapMode policy);
155
bool find(const QString &exp, QTextDocument::FindFlags options = 0);
157
inline QString toPlainText() const
158
{ return document()->toPlainText(); }
159
inline QString toHtml() const
160
{ return document()->toHtml(); }
162
void append(const QString &text);
164
void ensureCursorVisible();
166
virtual QVariant loadResource(int type, const QUrl &name);
168
QMenu *createStandardContextMenu();
170
QTextCursor cursorForPosition(const QPoint &pos) const;
171
QRect cursorRect(const QTextCursor &cursor) const;
172
QRect cursorRect() const;
174
QString anchorAt(const QPoint& pos) const;
177
void setFontPointSize(qreal s);
178
void setFontFamily(const QString &fontFamily);
179
void setFontWeight(int w);
180
void setFontUnderline(bool b);
181
void setFontItalic(bool b);
182
void setTextColor(const QColor &c);
183
void setCurrentFont(const QFont &f);
184
void setAlignment(Qt::Alignment a);
186
void setPlainText(const QString &text);
187
void setHtml(const QString &text);
196
void insertPlainText(const QString &text);
197
void insertHtml(const QString &text);
199
void scrollToAnchor(const QString &name);
201
void zoomIn(int range = 1);
202
void zoomOut(int range = 1);
206
void undoAvailable(bool b);
207
void redoAvailable(bool b);
208
void currentCharFormatChanged(const QTextCharFormat &format);
209
void copyAvailable(bool b);
210
void selectionChanged();
211
void cursorPositionChanged();
214
virtual void timerEvent(QTimerEvent *e);
215
virtual void keyPressEvent(QKeyEvent *e);
216
virtual void resizeEvent(QResizeEvent *);
217
virtual void paintEvent(QPaintEvent *e);
218
virtual void mousePressEvent(QMouseEvent *e);
219
virtual void mouseMoveEvent(QMouseEvent *e);
220
virtual void mouseReleaseEvent(QMouseEvent *e);
221
virtual void mouseDoubleClickEvent(QMouseEvent *e);
222
virtual bool focusNextPrevChild(bool next);
223
virtual void contextMenuEvent(QContextMenuEvent *e);
224
virtual void dragEnterEvent(QDragEnterEvent *e);
225
virtual void dragLeaveEvent(QDragLeaveEvent *e);
226
virtual void dragMoveEvent(QDragMoveEvent *e);
227
virtual void dropEvent(QDropEvent *e);
228
virtual void focusInEvent(QFocusEvent *e);
229
virtual void focusOutEvent(QFocusEvent *e);
230
virtual void showEvent(QShowEvent *);
231
virtual void changeEvent(QEvent *e);
232
virtual void wheelEvent(QWheelEvent *e);
234
virtual QMimeData *createMimeDataFromSelection() const;
235
virtual bool canInsertFromMimeData(const QMimeData *source) const;
236
virtual void insertFromMimeData(const QMimeData *source);
238
virtual void inputMethodEvent(QInputMethodEvent *);
239
QVariant inputMethodQuery(Qt::InputMethodQuery property) const;
241
QTextEdit(QTextEditPrivate &dd, QWidget *parent);
245
QT_MOC_COMPAT void currentFontChanged(const QFont &f);
246
QT_MOC_COMPAT void currentColorChanged(const QColor &c);
249
QT3_SUPPORT_CONSTRUCTOR QTextEdit(QWidget *parent, const char *name);
250
inline QT3_SUPPORT bool find(const QString &exp, bool cs, bool wo)
252
QTextDocument::FindFlags flags = 0;
254
flags |= QTextDocument::FindCaseSensitively;
256
flags |= QTextDocument::FindWholeWords;
257
return find(exp, flags);
260
inline QT3_SUPPORT void sync() {}
262
QT3_SUPPORT void moveCursor(CursorAction action, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor);
264
enum KeyboardAction {
273
QT3_SUPPORT void doKeyboardAction(KeyboardAction action);
275
QT3_SUPPORT void setText(const QString &text);
276
QT3_SUPPORT QString text() const;
277
QT3_SUPPORT void setTextFormat(Qt::TextFormat);
278
QT3_SUPPORT Qt::TextFormat textFormat() const;
280
inline QT3_SUPPORT void setBold(bool b) { setFontWeight(b ? QFont::Bold : QFont::Normal); }
281
inline QT3_SUPPORT void setUnderline(bool b) { setFontUnderline(b); }
282
inline QT3_SUPPORT void setItalic(bool i) { setFontItalic(i); }
283
inline QT3_SUPPORT void setFamily(const QString &family) { setFontFamily(family); }
284
inline QT3_SUPPORT void setPointSize(int size) { setFontPointSize(size); }
286
inline QT3_SUPPORT bool italic() const { return fontItalic(); }
287
inline QT3_SUPPORT bool bold() const { return fontWeight() >= QFont::Bold; }
288
inline QT3_SUPPORT bool underline() const { return fontUnderline(); }
289
inline QT3_SUPPORT QString family() const { return fontFamily(); }
290
inline QT3_SUPPORT int pointSize() const { return (int)(fontPointSize()+0.5); }
292
inline QT3_SUPPORT bool hasSelectedText() const
293
{ return textCursor().hasSelection(); }
294
inline QT3_SUPPORT QString selectedText() const
295
{ return textCursor().selectedText(); }
297
inline QT3_SUPPORT bool isUndoAvailable() const
298
{ return document()->isUndoAvailable(); }
299
inline QT3_SUPPORT bool isRedoAvailable() const
300
{ return document()->isRedoAvailable(); }
302
inline QT3_SUPPORT void insert(const QString &text)
303
{ insertPlainText(text); }
305
inline QT3_SUPPORT bool isModified() const
306
{ return document()->isModified(); }
308
inline QT3_SUPPORT QColor color() const
309
{ return textColor(); }
312
inline QT_MOC_COMPAT void setModified(bool m = true)
313
{ document()->setModified(m); }
314
inline QT_MOC_COMPAT void undo() const
315
{ document()->undo(); }
316
inline QT_MOC_COMPAT void redo() const
317
{ document()->redo(); }
319
inline QT_MOC_COMPAT void setColor(const QColor &c)
325
Q_DISABLE_COPY(QTextEdit)
326
Q_PRIVATE_SLOT(d_func(), void repaintContents(const QRectF &r))
327
Q_PRIVATE_SLOT(d_func(), void updateCurrentCharFormatAndSelection())
328
Q_PRIVATE_SLOT(d_func(), void adjustScrollbars())
329
Q_PRIVATE_SLOT(d_func(), void emitCursorPosChanged(const QTextCursor &))
332
#endif // QTEXTEDIT_H