| /**************************************************************************** |
| ** |
| ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). |
| ** All rights reserved. |
| ** Contact: Nokia Corporation (qt-info@nokia.com) |
| ** |
| ** This file is part of the QtGui module of the Qt Toolkit. |
| ** |
| ** $QT_BEGIN_LICENSE:LGPL$ |
| ** GNU Lesser General Public License Usage |
| ** This file may be used under the terms of the GNU Lesser General Public |
| ** License version 2.1 as published by the Free Software Foundation and |
| ** appearing in the file LICENSE.LGPL included in the packaging of this |
| ** file. Please review the following information to ensure the GNU Lesser |
| ** General Public License version 2.1 requirements will be met: |
| ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. |
| ** |
| ** In addition, as a special exception, Nokia gives you certain additional |
| ** rights. These rights are described in the Nokia Qt LGPL Exception |
| ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. |
| ** |
| ** GNU General Public License Usage |
| ** Alternatively, this file may be used under the terms of the GNU General |
| ** Public License version 3.0 as published by the Free Software Foundation |
| ** and appearing in the file LICENSE.GPL included in the packaging of this |
| ** file. Please review the following information to ensure the GNU General |
| ** Public License version 3.0 requirements will be met: |
| ** http://www.gnu.org/copyleft/gpl.html. |
| ** |
| ** Other Usage |
| ** Alternatively, this file may be used in accordance with the terms and |
| ** conditions contained in a signed written agreement between you and Nokia. |
| ** |
| ** |
| ** |
| ** |
| ** |
| ** $QT_END_LICENSE$ |
| ** |
| ****************************************************************************/ |
| |
| #ifndef QPLAINTEXTEDIT_H |
| #define QPLAINTEXTEDIT_H |
| |
| #include <QtGui/qtextedit.h> |
| |
| #include <QtGui/qabstractscrollarea.h> |
| #include <QtGui/qtextdocument.h> |
| #include <QtGui/qtextoption.h> |
| #include <QtGui/qtextcursor.h> |
| #include <QtGui/qtextformat.h> |
| #include <QtGui/qabstracttextdocumentlayout.h> |
| |
| #ifndef QT_NO_TEXTEDIT |
| |
| QT_BEGIN_HEADER |
| |
| QT_BEGIN_NAMESPACE |
| |
| QT_MODULE(Gui) |
| |
| class QStyleSheet; |
| class QTextDocument; |
| class QMenu; |
| class QPlainTextEditPrivate; |
| class QMimeData; |
| |
| |
| class Q_GUI_EXPORT QPlainTextEdit : public QAbstractScrollArea |
| { |
| Q_OBJECT |
| Q_DECLARE_PRIVATE(QPlainTextEdit) |
| Q_ENUMS(LineWrapMode) |
| Q_PROPERTY(bool tabChangesFocus READ tabChangesFocus WRITE setTabChangesFocus) |
| Q_PROPERTY(QString documentTitle READ documentTitle WRITE setDocumentTitle) |
| Q_PROPERTY(bool undoRedoEnabled READ isUndoRedoEnabled WRITE setUndoRedoEnabled) |
| Q_PROPERTY(LineWrapMode lineWrapMode READ lineWrapMode WRITE setLineWrapMode) |
| QDOC_PROPERTY(QTextOption::WrapMode wordWrapMode READ wordWrapMode WRITE setWordWrapMode) |
| Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly) |
| Q_PROPERTY(QString plainText READ toPlainText WRITE setPlainText NOTIFY textChanged USER true) |
| Q_PROPERTY(bool overwriteMode READ overwriteMode WRITE setOverwriteMode) |
| Q_PROPERTY(int tabStopWidth READ tabStopWidth WRITE setTabStopWidth) |
| Q_PROPERTY(int cursorWidth READ cursorWidth WRITE setCursorWidth) |
| Q_PROPERTY(Qt::TextInteractionFlags textInteractionFlags READ textInteractionFlags WRITE setTextInteractionFlags) |
| Q_PROPERTY(int blockCount READ blockCount) |
| Q_PROPERTY(int maximumBlockCount READ maximumBlockCount WRITE setMaximumBlockCount) |
| Q_PROPERTY(bool backgroundVisible READ backgroundVisible WRITE setBackgroundVisible) |
| Q_PROPERTY(bool centerOnScroll READ centerOnScroll WRITE setCenterOnScroll) |
| public: |
| enum LineWrapMode { |
| NoWrap, |
| WidgetWidth |
| }; |
| |
| explicit QPlainTextEdit(QWidget *parent = 0); |
| explicit QPlainTextEdit(const QString &text, QWidget *parent = 0); |
| virtual ~QPlainTextEdit(); |
| |
| void setDocument(QTextDocument *document); |
| QTextDocument *document() const; |
| |
| void setTextCursor(const QTextCursor &cursor); |
| QTextCursor textCursor() const; |
| |
| bool isReadOnly() const; |
| void setReadOnly(bool ro); |
| |
| void setTextInteractionFlags(Qt::TextInteractionFlags flags); |
| Qt::TextInteractionFlags textInteractionFlags() const; |
| |
| void mergeCurrentCharFormat(const QTextCharFormat &modifier); |
| void setCurrentCharFormat(const QTextCharFormat &format); |
| QTextCharFormat currentCharFormat() const; |
| |
| bool tabChangesFocus() const; |
| void setTabChangesFocus(bool b); |
| |
| inline void setDocumentTitle(const QString &title) |
| { document()->setMetaInformation(QTextDocument::DocumentTitle, title); } |
| inline QString documentTitle() const |
| { return document()->metaInformation(QTextDocument::DocumentTitle); } |
| |
| inline bool isUndoRedoEnabled() const |
| { return document()->isUndoRedoEnabled(); } |
| inline void setUndoRedoEnabled(bool enable) |
| { document()->setUndoRedoEnabled(enable); } |
| |
| inline void setMaximumBlockCount(int maximum) |
| { document()->setMaximumBlockCount(maximum); } |
| inline int maximumBlockCount() const |
| { return document()->maximumBlockCount(); } |
| |
| |
| LineWrapMode lineWrapMode() const; |
| void setLineWrapMode(LineWrapMode mode); |
| |
| QTextOption::WrapMode wordWrapMode() const; |
| void setWordWrapMode(QTextOption::WrapMode policy); |
| |
| void setBackgroundVisible(bool visible); |
| bool backgroundVisible() const; |
| |
| void setCenterOnScroll(bool enabled); |
| bool centerOnScroll() const; |
| |
| bool find(const QString &exp, QTextDocument::FindFlags options = 0); |
| |
| inline QString toPlainText() const |
| { return document()->toPlainText(); } |
| |
| void ensureCursorVisible(); |
| |
| virtual QVariant loadResource(int type, const QUrl &name); |
| #ifndef QT_NO_CONTEXTMENU |
| QMenu *createStandardContextMenu(); |
| #endif |
| |
| QTextCursor cursorForPosition(const QPoint &pos) const; |
| QRect cursorRect(const QTextCursor &cursor) const; |
| QRect cursorRect() const; |
| |
| QString anchorAt(const QPoint &pos) const; |
| |
| bool overwriteMode() const; |
| void setOverwriteMode(bool overwrite); |
| |
| int tabStopWidth() const; |
| void setTabStopWidth(int width); |
| |
| int cursorWidth() const; |
| void setCursorWidth(int width); |
| |
| void setExtraSelections(const QList<QTextEdit::ExtraSelection> &selections); |
| QList<QTextEdit::ExtraSelection> extraSelections() const; |
| |
| void moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor); |
| |
| bool canPaste() const; |
| |
| #ifndef QT_NO_PRINTER |
| void print(QPrinter *printer) const; |
| #endif |
| |
| int blockCount() const; |
| |
| public Q_SLOTS: |
| |
| void setPlainText(const QString &text); |
| |
| #ifndef QT_NO_CLIPBOARD |
| void cut(); |
| void copy(); |
| void paste(); |
| #endif |
| |
| void undo(); |
| void redo(); |
| |
| void clear(); |
| void selectAll(); |
| |
| void insertPlainText(const QString &text); |
| |
| void appendPlainText(const QString &text); |
| void appendHtml(const QString &html); |
| |
| void centerCursor(); |
| |
| Q_SIGNALS: |
| void textChanged(); |
| void undoAvailable(bool b); |
| void redoAvailable(bool b); |
| void copyAvailable(bool b); |
| void selectionChanged(); |
| void cursorPositionChanged(); |
| |
| void updateRequest(const QRect &rect, int dy); |
| void blockCountChanged(int newBlockCount); |
| void modificationChanged(bool); |
| |
| protected: |
| virtual bool event(QEvent *e); |
| virtual void timerEvent(QTimerEvent *e); |
| virtual void keyPressEvent(QKeyEvent *e); |
| virtual void keyReleaseEvent(QKeyEvent *e); |
| virtual void resizeEvent(QResizeEvent *e); |
| virtual void paintEvent(QPaintEvent *e); |
| virtual void mousePressEvent(QMouseEvent *e); |
| virtual void mouseMoveEvent(QMouseEvent *e); |
| virtual void mouseReleaseEvent(QMouseEvent *e); |
| virtual void mouseDoubleClickEvent(QMouseEvent *e); |
| virtual bool focusNextPrevChild(bool next); |
| #ifndef QT_NO_CONTEXTMENU |
| virtual void contextMenuEvent(QContextMenuEvent *e); |
| #endif |
| #ifndef QT_NO_DRAGANDDROP |
| virtual void dragEnterEvent(QDragEnterEvent *e); |
| virtual void dragLeaveEvent(QDragLeaveEvent *e); |
| virtual void dragMoveEvent(QDragMoveEvent *e); |
| virtual void dropEvent(QDropEvent *e); |
| #endif |
| virtual void focusInEvent(QFocusEvent *e); |
| virtual void focusOutEvent(QFocusEvent *e); |
| virtual void showEvent(QShowEvent *); |
| virtual void changeEvent(QEvent *e); |
| #ifndef QT_NO_WHEELEVENT |
| virtual void wheelEvent(QWheelEvent *e); |
| #endif |
| |
| virtual QMimeData *createMimeDataFromSelection() const; |
| virtual bool canInsertFromMimeData(const QMimeData *source) const; |
| virtual void insertFromMimeData(const QMimeData *source); |
| |
| virtual void inputMethodEvent(QInputMethodEvent *); |
| QVariant inputMethodQuery(Qt::InputMethodQuery property) const; |
| |
| QPlainTextEdit(QPlainTextEditPrivate &dd, QWidget *parent); |
| |
| virtual void scrollContentsBy(int dx, int dy); |
| |
| QTextBlock firstVisibleBlock() const; |
| QPointF contentOffset() const; |
| QRectF blockBoundingRect(const QTextBlock &block) const; |
| QRectF blockBoundingGeometry(const QTextBlock &block) const; |
| QAbstractTextDocumentLayout::PaintContext getPaintContext() const; |
| |
| |
| private: |
| Q_DISABLE_COPY(QPlainTextEdit) |
| Q_PRIVATE_SLOT(d_func(), void _q_repaintContents(const QRectF &r)) |
| Q_PRIVATE_SLOT(d_func(), void _q_adjustScrollbars()) |
| Q_PRIVATE_SLOT(d_func(), void _q_verticalScrollbarActionTriggered(int)) |
| Q_PRIVATE_SLOT(d_func(), void _q_cursorPositionChanged()) |
| |
| friend class QPlainTextEditControl; |
| }; |
| |
| |
| class QPlainTextDocumentLayoutPrivate; |
| class Q_GUI_EXPORT QPlainTextDocumentLayout : public QAbstractTextDocumentLayout |
| { |
| Q_OBJECT |
| Q_DECLARE_PRIVATE(QPlainTextDocumentLayout) |
| Q_PROPERTY(int cursorWidth READ cursorWidth WRITE setCursorWidth) |
| |
| public: |
| QPlainTextDocumentLayout(QTextDocument *document); |
| ~QPlainTextDocumentLayout(); |
| |
| void draw(QPainter *, const PaintContext &); |
| int hitTest(const QPointF &, Qt::HitTestAccuracy ) const; |
| |
| int pageCount() const; |
| QSizeF documentSize() const; |
| |
| QRectF frameBoundingRect(QTextFrame *) const; |
| QRectF blockBoundingRect(const QTextBlock &block) const; |
| |
| void ensureBlockLayout(const QTextBlock &block) const; |
| |
| void setCursorWidth(int width); |
| int cursorWidth() const; |
| |
| void requestUpdate(); |
| |
| protected: |
| void documentChanged(int from, int /*charsRemoved*/, int charsAdded); |
| |
| |
| private: |
| void setTextWidth(qreal newWidth); |
| qreal textWidth() const; |
| void layoutBlock(const QTextBlock &block); |
| qreal blockWidth(const QTextBlock &block); |
| |
| QPlainTextDocumentLayoutPrivate *priv() const; |
| |
| friend class QPlainTextEdit; |
| friend class QPlainTextEditPrivate; |
| }; |
| |
| QT_END_NAMESPACE |
| |
| QT_END_HEADER |
| |
| |
| #endif // QT_NO_TEXTEDIT |
| |
| #endif // QPLAINTEXTEDIT_H |