1 /* 2 * DQt - D bindings for the Qt Toolkit 3 * 4 * GNU Lesser General Public License Usage 5 * This file may be used under the terms of the GNU Lesser 6 * General Public License version 3 as published by the Free Software 7 * Foundation and appearing in the file LICENSE.LGPL3 included in the 8 * packaging of this file. Please review the following information to 9 * ensure the GNU Lesser General Public License version 3 requirements 10 * will be met: https://www.gnu.org/licenses/lgpl-3.0.html. 11 */ 12 module qt.widgets.plaintextedit; 13 extern(C++): 14 15 import qt.config; 16 import qt.core.coreevent; 17 import qt.core.global; 18 import qt.core.list; 19 import qt.core.mimedata; 20 import qt.core.namespace; 21 import qt.core.point; 22 import qt.core.rect; 23 import qt.core.size; 24 import qt.core.string; 25 import qt.core.url; 26 import qt.core.variant; 27 import qt.gui.abstracttextdocumentlayout; 28 import qt.gui.event; 29 import qt.gui.pagedpaintdevice; 30 import qt.gui.painter; 31 import qt.gui.textcursor; 32 import qt.gui.textdocument; 33 import qt.gui.textformat; 34 import qt.gui.textobject; 35 import qt.gui.textoption; 36 import qt.helpers; 37 import qt.widgets.abstractscrollarea; 38 import qt.widgets.textedit; 39 import qt.widgets.widget; 40 version(QT_NO_CONTEXTMENU){}else 41 import qt.widgets.menu; 42 43 /+ QT_REQUIRE_CONFIG(textedit); +/ 44 45 46 extern(C++, class) struct QPlainTextEditPrivate; 47 48 /// Binding for C++ class [QPlainTextEdit](https://doc.qt.io/qt-6/qplaintextedit.html). 49 class /+ Q_WIDGETS_EXPORT +/ QPlainTextEdit : QAbstractScrollArea 50 { 51 mixin(Q_OBJECT); 52 /+ Q_DECLARE_PRIVATE(QPlainTextEdit) +/ 53 /+ Q_PROPERTY(bool tabChangesFocus READ tabChangesFocus WRITE setTabChangesFocus) 54 Q_PROPERTY(QString documentTitle READ documentTitle WRITE setDocumentTitle) 55 Q_PROPERTY(bool undoRedoEnabled READ isUndoRedoEnabled WRITE setUndoRedoEnabled) 56 Q_PROPERTY(LineWrapMode lineWrapMode READ lineWrapMode WRITE setLineWrapMode) 57 QDOC_PROPERTY(QTextOption::WrapMode wordWrapMode READ wordWrapMode WRITE setWordWrapMode) 58 Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly) 59 Q_PROPERTY(QString plainText READ toPlainText WRITE setPlainText NOTIFY textChanged USER true) 60 Q_PROPERTY(bool overwriteMode READ overwriteMode WRITE setOverwriteMode) 61 Q_PROPERTY(qreal tabStopDistance READ tabStopDistance WRITE setTabStopDistance) 62 Q_PROPERTY(int cursorWidth READ cursorWidth WRITE setCursorWidth) 63 Q_PROPERTY(Qt::TextInteractionFlags textInteractionFlags READ textInteractionFlags 64 WRITE setTextInteractionFlags) 65 Q_PROPERTY(int blockCount READ blockCount) 66 Q_PROPERTY(int maximumBlockCount READ maximumBlockCount WRITE setMaximumBlockCount) 67 Q_PROPERTY(bool backgroundVisible READ backgroundVisible WRITE setBackgroundVisible) 68 Q_PROPERTY(bool centerOnScroll READ centerOnScroll WRITE setCenterOnScroll) 69 Q_PROPERTY(QString placeholderText READ placeholderText WRITE setPlaceholderText) +/ 70 public: 71 enum LineWrapMode { 72 NoWrap, 73 WidgetWidth 74 } 75 /+ Q_ENUM(LineWrapMode) +/ 76 77 /+ explicit +/this(QWidget parent = null); 78 /+ explicit +/this(ref const(QString) text, QWidget parent = null); 79 /+ virtual +/~this(); 80 81 final void setDocument(QTextDocument document); 82 final QTextDocument document() const; 83 84 final void setPlaceholderText(ref const(QString) placeholderText); 85 final QString placeholderText() const; 86 87 final void setTextCursor(ref const(QTextCursor) cursor); 88 final QTextCursor textCursor() const; 89 90 final bool isReadOnly() const; 91 final void setReadOnly(bool ro); 92 93 final void setTextInteractionFlags(/+ Qt:: +/qt.core.namespace.TextInteractionFlags flags); 94 final /+ Qt:: +/qt.core.namespace.TextInteractionFlags textInteractionFlags() const; 95 96 final void mergeCurrentCharFormat(ref const(QTextCharFormat) modifier); 97 final void setCurrentCharFormat(ref const(QTextCharFormat) format); 98 final QTextCharFormat currentCharFormat() const; 99 100 final bool tabChangesFocus() const; 101 final void setTabChangesFocus(bool b); 102 103 pragma(inline, true) final void setDocumentTitle(ref const(QString) title) 104 { document().setMetaInformation(QTextDocument.MetaInformation.DocumentTitle, title); } 105 pragma(inline, true) final QString documentTitle() const 106 { return document().metaInformation(QTextDocument.MetaInformation.DocumentTitle); } 107 108 pragma(inline, true) final bool isUndoRedoEnabled() const 109 { return document().isUndoRedoEnabled(); } 110 pragma(inline, true) final void setUndoRedoEnabled(bool enable) 111 { document().setUndoRedoEnabled(enable); } 112 113 pragma(inline, true) final void setMaximumBlockCount(int maximum) 114 { document().setMaximumBlockCount(maximum); } 115 pragma(inline, true) final int maximumBlockCount() const 116 { return document().maximumBlockCount(); } 117 118 119 final LineWrapMode lineWrapMode() const; 120 final void setLineWrapMode(LineWrapMode mode); 121 122 final QTextOption.WrapMode wordWrapMode() const; 123 final void setWordWrapMode(QTextOption.WrapMode policy); 124 125 final void setBackgroundVisible(bool visible); 126 final bool backgroundVisible() const; 127 128 final void setCenterOnScroll(bool enabled); 129 final bool centerOnScroll() const; 130 131 /+ bool find(const QString &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags()); +/ 132 /+ #if QT_CONFIG(regularexpression) +/ 133 /+ bool find(const QRegularExpression &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags()); +/ 134 /+ #endif +/ 135 136 pragma(inline, true) final QString toPlainText() const 137 { return document().toPlainText(); } 138 139 final void ensureCursorVisible(); 140 141 /+ virtual +/ QVariant loadResource(int type, ref const(QUrl) name); 142 version(QT_NO_CONTEXTMENU){}else 143 { 144 final QMenu createStandardContextMenu(); 145 final QMenu createStandardContextMenu(ref const(QPoint) position); 146 } 147 148 final QTextCursor cursorForPosition(ref const(QPoint) pos) const; 149 final QRect cursorRect(ref const(QTextCursor) cursor) const; 150 final QRect cursorRect() const; 151 152 final QString anchorAt(ref const(QPoint) pos) const; 153 154 final bool overwriteMode() const; 155 final void setOverwriteMode(bool overwrite); 156 157 final qreal tabStopDistance() const; 158 final void setTabStopDistance(qreal distance); 159 160 final int cursorWidth() const; 161 final void setCursorWidth(int width); 162 163 final void setExtraSelections(ref const(QList!(QTextEdit.ExtraSelection)) selections); 164 final QList!(QTextEdit.ExtraSelection) extraSelections() const; 165 166 final void moveCursor(QTextCursor.MoveOperation operation, QTextCursor.MoveMode mode = QTextCursor.MoveMode.MoveAnchor); 167 168 final bool canPaste() const; 169 170 final void print(QPagedPaintDevice printer) const; 171 172 final int blockCount() const; 173 override QVariant inputMethodQuery(/+ Qt:: +/qt.core.namespace.InputMethodQuery property) const; 174 @QInvokable final QVariant inputMethodQuery(/+ Qt:: +/qt.core.namespace.InputMethodQuery query, QVariant argument) const; 175 176 public /+ Q_SLOTS +/: 177 178 @QSlot final void setPlainText(ref const(QString) text); 179 180 version(QT_NO_CLIPBOARD){}else 181 { 182 @QSlot final void cut(); 183 /+ void copy(); +/ 184 @QSlot final void paste(); 185 } 186 187 @QSlot final void undo(); 188 @QSlot final void redo(); 189 190 @QSlot final void clear(); 191 @QSlot final void selectAll(); 192 193 @QSlot final void insertPlainText(ref const(QString) text); 194 195 @QSlot final void appendPlainText(ref const(QString) text); 196 @QSlot final void appendHtml(ref const(QString) html); 197 198 @QSlot final void centerCursor(); 199 200 @QSlot final void zoomIn(int range = 1); 201 @QSlot final void zoomOut(int range = 1); 202 203 /+ Q_SIGNALS +/public: 204 @QSignal final void textChanged(); 205 @QSignal final void undoAvailable(bool b); 206 @QSignal final void redoAvailable(bool b); 207 @QSignal final void copyAvailable(bool b); 208 @QSignal final void selectionChanged(); 209 @QSignal final void cursorPositionChanged(); 210 211 @QSignal final void updateRequest(ref const(QRect) rect, int dy); 212 @QSignal final void blockCountChanged(int newBlockCount); 213 @QSignal final void modificationChanged(bool); 214 215 protected: 216 /+ virtual +/ override bool event(QEvent e); 217 /+ virtual +/ override void timerEvent(QTimerEvent e); 218 /+ virtual +/ override void keyPressEvent(QKeyEvent e); 219 /+ virtual +/ override void keyReleaseEvent(QKeyEvent e); 220 /+ virtual +/ override void resizeEvent(QResizeEvent e); 221 /+ virtual +/ override void paintEvent(QPaintEvent e); 222 /+ virtual +/ override void mousePressEvent(QMouseEvent e); 223 /+ virtual +/ override void mouseMoveEvent(QMouseEvent e); 224 /+ virtual +/ override void mouseReleaseEvent(QMouseEvent e); 225 /+ virtual +/ override void mouseDoubleClickEvent(QMouseEvent e); 226 /+ virtual +/ override bool focusNextPrevChild(bool next); 227 /+ #ifndef QT_NO_CONTEXTMENU +/ 228 version(QT_NO_CONTEXTMENU){}else 229 { 230 /+ virtual +/ override void contextMenuEvent(QContextMenuEvent e); 231 } 232 /+ #endif 233 #if QT_CONFIG(draganddrop) +/ 234 /+ virtual +/ override void dragEnterEvent(QDragEnterEvent e); 235 /+ virtual +/ override void dragLeaveEvent(QDragLeaveEvent e); 236 /+ virtual +/ override void dragMoveEvent(QDragMoveEvent e); 237 /+ virtual +/ override void dropEvent(QDropEvent e); 238 /+ #endif +/ 239 /+ virtual +/ override void focusInEvent(QFocusEvent e); 240 /+ virtual +/ override void focusOutEvent(QFocusEvent e); 241 /+ virtual +/ override void showEvent(QShowEvent ); 242 /+ virtual +/ override void changeEvent(QEvent e); 243 /+ #if QT_CONFIG(wheelevent) +/ 244 /+ virtual +/ override void wheelEvent(QWheelEvent e); 245 /+ #endif +/ 246 247 /+ virtual +/ QMimeData createMimeDataFromSelection() const; 248 mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{ 249 /+ virtual +/ bool canInsertFromMimeData(const(QMimeData) source) const; 250 })); 251 mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{ 252 /+ virtual +/ void insertFromMimeData(const(QMimeData) source); 253 })); 254 255 /+ virtual +/ override void inputMethodEvent(QInputMethodEvent ); 256 257 this(ref QPlainTextEditPrivate dd, QWidget parent); 258 259 /+ virtual +/ override void scrollContentsBy(int dx, int dy); 260 /+ virtual +/ void doSetTextCursor(ref const(QTextCursor) cursor); 261 262 final QTextBlock firstVisibleBlock() const; 263 final QPointF contentOffset() const; 264 final QRectF blockBoundingRect(ref const(QTextBlock) block) const; 265 final QRectF blockBoundingGeometry(ref const(QTextBlock) block) const; 266 final QAbstractTextDocumentLayout.PaintContext getPaintContext() const; 267 268 final void zoomInF(float range); 269 270 private: 271 /+ Q_DISABLE_COPY(QPlainTextEdit) +/ 272 /+ Q_PRIVATE_SLOT(d_func(), void _q_repaintContents(const QRectF &r)) 273 Q_PRIVATE_SLOT(d_func(), void _q_textChanged()) 274 Q_PRIVATE_SLOT(d_func(), void _q_adjustScrollbars()) 275 Q_PRIVATE_SLOT(d_func(), void _q_verticalScrollbarActionTriggered(int)) 276 Q_PRIVATE_SLOT(d_func(), void _q_cursorPositionChanged()) +/ 277 278 /+ friend class QPlainTextEditControl; +/ 279 mixin(CREATE_CONVENIENCE_WRAPPERS); 280 } 281 282 283 extern(C++, class) struct QPlainTextDocumentLayoutPrivate; 284 /// Binding for C++ class [QPlainTextDocumentLayout](https://doc.qt.io/qt-6/qplaintextdocumentlayout.html). 285 class /+ Q_WIDGETS_EXPORT +/ QPlainTextDocumentLayout : QAbstractTextDocumentLayout 286 { 287 mixin(Q_OBJECT); 288 /+ Q_DECLARE_PRIVATE(QPlainTextDocumentLayout) +/ 289 /+ Q_PROPERTY(int cursorWidth READ cursorWidth WRITE setCursorWidth) +/ 290 291 public: 292 this(QTextDocument document); 293 ~this(); 294 295 override void draw(QPainter* , ref const(PaintContext) ); 296 override int hitTest(ref const(QPointF) , /+ Qt:: +/qt.core.namespace.HitTestAccuracy ) const; 297 298 override int pageCount() const; 299 override QSizeF documentSize() const; 300 301 override QRectF frameBoundingRect(QTextFrame ) const; 302 override QRectF blockBoundingRect(ref const(QTextBlock) block) const; 303 304 final void ensureBlockLayout(ref const(QTextBlock) block) const; 305 306 final void setCursorWidth(int width); 307 final int cursorWidth() const; 308 309 final void requestUpdate(); 310 311 protected: 312 override void documentChanged(int from, int /*charsRemoved*/, int charsAdded); 313 314 315 private: 316 final void setTextWidth(qreal newWidth); 317 final qreal textWidth() const; 318 final void layoutBlock(ref const(QTextBlock) block); 319 final qreal blockWidth(ref const(QTextBlock) block); 320 321 final QPlainTextDocumentLayoutPrivate* priv() const; 322 323 /+ friend class QPlainTextEdit; +/ 324 /+ friend class QPlainTextEditPrivate; +/ 325 mixin(CREATE_CONVENIENCE_WRAPPERS); 326 } 327