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.gui.textdocument; 13 extern(C++): 14 15 import qt.config; 16 import qt.core.flags; 17 import qt.core.global; 18 import qt.core.list; 19 import qt.core.namespace; 20 import qt.core.object; 21 import qt.core.qchar; 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.font; 29 import qt.gui.painter; 30 import qt.gui.textcursor; 31 import qt.gui.textformat; 32 import qt.gui.textobject; 33 import qt.gui.textoption; 34 import qt.helpers; 35 version(QT_NO_PRINTER){}else 36 import qt.gui.pagedpaintdevice; 37 38 extern(C++, class) struct QTextDocumentPrivate; 39 /+ Q_MOC_INCLUDE(<QtGui/qtextcursor.h>) +/ 40 41 42 43 extern(C++, class) struct QTextFormatCollection; 44 45 extern(C++, "Qt") 46 { 47 /+ Q_GUI_EXPORT +/ bool mightBeRichText(ref const(QString)); 48 /+ Q_GUI_EXPORT +/ QString convertFromPlainText(ref const(QString) plain, qt.core.namespace.WhiteSpaceMode mode = qt.core.namespace.WhiteSpaceMode.WhiteSpacePre); 49 } 50 51 abstract class /+ Q_GUI_EXPORT +/ QAbstractUndoItem 52 { 53 public: 54 /+ virtual +//*abstract*/ ~this(){} 55 /+ virtual +/ abstract void undo(); 56 /+ virtual +/ abstract void redo(); 57 mixin(CREATE_CONVENIENCE_WRAPPERS); 58 } 59 60 61 /// Binding for C++ class [QTextDocument](https://doc.qt.io/qt-6/qtextdocument.html). 62 class /+ Q_GUI_EXPORT +/ QTextDocument : QObject 63 { 64 mixin(Q_OBJECT); 65 66 /+ Q_PROPERTY(bool undoRedoEnabled READ isUndoRedoEnabled WRITE setUndoRedoEnabled) 67 Q_PROPERTY(bool modified READ isModified WRITE setModified DESIGNABLE false) 68 Q_PROPERTY(QSizeF pageSize READ pageSize WRITE setPageSize) 69 Q_PROPERTY(QFont defaultFont READ defaultFont WRITE setDefaultFont) 70 Q_PROPERTY(bool useDesignMetrics READ useDesignMetrics WRITE setUseDesignMetrics) 71 Q_PROPERTY(QSizeF size READ size) 72 Q_PROPERTY(qreal textWidth READ textWidth WRITE setTextWidth) 73 Q_PROPERTY(int blockCount READ blockCount) 74 Q_PROPERTY(qreal indentWidth READ indentWidth WRITE setIndentWidth) 75 #ifndef QT_NO_CSSPARSER 76 Q_PROPERTY(QString defaultStyleSheet READ defaultStyleSheet WRITE setDefaultStyleSheet) 77 #endif 78 Q_PROPERTY(int maximumBlockCount READ maximumBlockCount WRITE setMaximumBlockCount) 79 Q_PROPERTY(qreal documentMargin READ documentMargin WRITE setDocumentMargin) 80 QDOC_PROPERTY(QTextOption defaultTextOption READ defaultTextOption WRITE setDefaultTextOption) 81 Q_PROPERTY(QUrl baseUrl READ baseUrl WRITE setBaseUrl NOTIFY baseUrlChanged) +/ 82 83 public: 84 /+ explicit +/this(QObject parent = null); 85 /+ explicit +/this(ref const(QString) text, QObject parent = null); 86 ~this(); 87 88 final QTextDocument clone(QObject parent = null) const; 89 90 final bool isEmpty() const; 91 /+ virtual +/ void clear(); 92 93 final void setUndoRedoEnabled(bool enable); 94 final bool isUndoRedoEnabled() const; 95 96 final bool isUndoAvailable() const; 97 final bool isRedoAvailable() const; 98 99 final int availableUndoSteps() const; 100 final int availableRedoSteps() const; 101 102 final int revision() const; 103 104 final void setDocumentLayout(QAbstractTextDocumentLayout layout); 105 final QAbstractTextDocumentLayout documentLayout() const; 106 107 enum MetaInformation { 108 DocumentTitle, 109 DocumentUrl 110 } 111 final void setMetaInformation(MetaInformation info, ref const(QString) ); 112 final QString metaInformation(MetaInformation info) const; 113 114 /+ #ifndef QT_NO_TEXTHTMLPARSER +/ 115 version(QT_NO_TEXTHTMLPARSER){}else 116 { 117 final QString toHtml() const; 118 final void setHtml(ref const(QString) html); 119 } 120 /+ #endif 121 122 #if QT_CONFIG(textmarkdownwriter) || QT_CONFIG(textmarkdownreader) +/ 123 enum MarkdownFeature { 124 MarkdownNoHTML = 0x0020 | 0x0040, 125 MarkdownDialectCommonMark = 0, 126 MarkdownDialectGitHub = 0x0004 | 0x0008 | 0x0400 | 0x0100 | 0x0200 | 0x0800 | 0x4000 127 } 128 /+ Q_DECLARE_FLAGS(MarkdownFeatures, MarkdownFeature) +/ 129 alias MarkdownFeatures = QFlags!(MarkdownFeature); /+ Q_FLAG(MarkdownFeatures) +/ 130 /+ #endif 131 132 #if QT_CONFIG(textmarkdownwriter) +/ 133 final QString toMarkdown(MarkdownFeatures features = MarkdownFeature.MarkdownDialectGitHub) const; 134 /+ #endif 135 136 #if QT_CONFIG(textmarkdownreader) +/ 137 final void setMarkdown(ref const(QString) markdown, MarkdownFeatures features = MarkdownFeature.MarkdownDialectGitHub); 138 /+ #endif +/ 139 140 final QString toRawText() const; 141 final QString toPlainText() const; 142 final void setPlainText(ref const(QString) text); 143 144 final QChar characterAt(int pos) const; 145 146 enum FindFlag 147 { 148 FindBackward = 0x00001, 149 FindCaseSensitively = 0x00002, 150 FindWholeWords = 0x00004 151 } 152 /+ Q_DECLARE_FLAGS(FindFlags, FindFlag) +/ 153 alias FindFlags = QFlags!(FindFlag); 154 /+ QTextCursor find(const QString &subString, int from = 0, FindFlags options = FindFlags()) const; +/ 155 /+ QTextCursor find(const QString &subString, const QTextCursor &cursor, FindFlags options = FindFlags()) const; +/ 156 157 /+ #if QT_CONFIG(regularexpression) +/ 158 /+ QTextCursor find(const QRegularExpression &expr, int from = 0, FindFlags options = FindFlags()) const; +/ 159 /+ QTextCursor find(const QRegularExpression &expr, const QTextCursor &cursor, FindFlags options = FindFlags()) const; +/ 160 /+ #endif +/ 161 162 final QTextFrame frameAt(int pos) const; 163 final QTextFrame rootFrame() const; 164 165 final QTextObject object(int objectIndex) const; 166 final QTextObject objectForFormat(ref const(QTextFormat) ) const; 167 168 final QTextBlock findBlock(int pos) const; 169 final QTextBlock findBlockByNumber(int blockNumber) const; 170 final QTextBlock findBlockByLineNumber(int blockNumber) const; 171 final QTextBlock begin() const; 172 final QTextBlock end() const; 173 174 final QTextBlock firstBlock() const; 175 final QTextBlock lastBlock() const; 176 177 final void setPageSize(ref const(QSizeF) size); 178 final QSizeF pageSize() const; 179 180 final void setDefaultFont(ref const(QFont) font); 181 final QFont defaultFont() const; 182 183 final void setSuperScriptBaseline(qreal baseline); 184 final qreal superScriptBaseline() const; 185 186 final void setSubScriptBaseline(qreal baseline); 187 final qreal subScriptBaseline() const; 188 189 final void setBaselineOffset(qreal baseline); 190 final qreal baselineOffset() const; 191 192 final int pageCount() const; 193 194 final bool isModified() const; 195 196 version(QT_NO_PRINTER){}else 197 { 198 final void print(QPagedPaintDevice printer) const; 199 } 200 201 enum ResourceType { 202 UnknownResource = 0, 203 HtmlResource = 1, 204 ImageResource = 2, 205 StyleSheetResource = 3, 206 MarkdownResource = 4, 207 208 UserResource = 100 209 } 210 /+ Q_ENUM(ResourceType) +/ 211 212 final QVariant resource(int type, ref const(QUrl) name) const; 213 final void addResource(int type, ref const(QUrl) name, ref const(QVariant) resource); 214 215 //alias ResourceProvider = /+ std:: +/function_!(ExternCPPFunc!(QVariant function(ref const(QUrl)))); 216 217 /*final ResourceProvider resourceProvider() const; 218 final void setResourceProvider(ref const(ResourceProvider) provider); 219 220 static ResourceProvider defaultResourceProvider(); 221 static void setDefaultResourceProvider(ref const(ResourceProvider) provider);*/ 222 223 final QList!(QTextFormat) allFormats() const; 224 225 final void markContentsDirty(int from, int length); 226 227 final void setUseDesignMetrics(bool b); 228 final bool useDesignMetrics() const; 229 230 final void drawContents(QPainter* painter, ref const(QRectF) rect = globalInitVar!QRectF); 231 232 final void setTextWidth(qreal width); 233 final qreal textWidth() const; 234 235 final qreal idealWidth() const; 236 237 final qreal indentWidth() const; 238 final void setIndentWidth(qreal width); 239 240 final qreal documentMargin() const; 241 final void setDocumentMargin(qreal margin); 242 243 final void adjustSize(); 244 final QSizeF size() const; 245 246 final int blockCount() const; 247 final int lineCount() const; 248 final int characterCount() const; 249 250 version(QT_NO_CSSPARSER){}else 251 { 252 final void setDefaultStyleSheet(ref const(QString) sheet); 253 final QString defaultStyleSheet() const; 254 } 255 256 final void undo(QTextCursor* cursor); 257 final void redo(QTextCursor* cursor); 258 259 enum Stacks { 260 UndoStack = 0x01, 261 RedoStack = 0x02, 262 UndoAndRedoStacks = Stacks.UndoStack | Stacks.RedoStack 263 } 264 final void clearUndoRedoStacks(Stacks historyToClear = Stacks.UndoAndRedoStacks); 265 266 final int maximumBlockCount() const; 267 final void setMaximumBlockCount(int maximum); 268 269 final QTextOption defaultTextOption() const; 270 final void setDefaultTextOption(ref const(QTextOption) option); 271 272 final QUrl baseUrl() const; 273 final void setBaseUrl(ref const(QUrl) url); 274 275 final /+ Qt:: +/qt.core.namespace.CursorMoveStyle defaultCursorMoveStyle() const; 276 final void setDefaultCursorMoveStyle(/+ Qt:: +/qt.core.namespace.CursorMoveStyle style); 277 278 /+ Q_SIGNALS +/public: 279 @QSignal final void contentsChange(int from, int charsRemoved, int charsAdded); 280 @QSignal final void contentsChanged(); 281 @QSignal final void undoAvailable(bool); 282 @QSignal final void redoAvailable(bool); 283 @QSignal final void undoCommandAdded(); 284 @QSignal final void modificationChanged(bool m); 285 @QSignal final void cursorPositionChanged(ref const(QTextCursor) cursor); 286 @QSignal final void blockCountChanged(int newBlockCount); 287 @QSignal final void baseUrlChanged(ref const(QUrl) url); 288 @QSignal final void documentLayoutChanged(); 289 290 public /+ Q_SLOTS +/: 291 @QSlot final void undo(); 292 @QSlot final void redo(); 293 @QSlot final void appendUndoItem(QAbstractUndoItem ); 294 @QSlot final void setModified(bool m = true); 295 296 protected: 297 /+ virtual +/ QTextObject createObject(ref const(QTextFormat) f); 298 /+ virtual +/ @QInvokable QVariant loadResource(int type, ref const(QUrl) name); 299 300 this(ref QTextDocumentPrivate dd, QObject parent); 301 private: 302 /+ Q_DISABLE_COPY(QTextDocument) +/ 303 /+ Q_DECLARE_PRIVATE(QTextDocument) +/ 304 /+ friend class QTextObjectPrivate; +/ 305 mixin(CREATE_CONVENIENCE_WRAPPERS); 306 } 307 /+pragma(inline, true) QFlags!(QTextDocument.FindFlags.enum_type) operator |(QTextDocument.FindFlags.enum_type f1, QTextDocument.FindFlags.enum_type f2)/+noexcept+/{return QFlags!(QTextDocument.FindFlags.enum_type)(f1)|f2;}+/ 308 /+pragma(inline, true) QFlags!(QTextDocument.FindFlags.enum_type) operator |(QTextDocument.FindFlags.enum_type f1, QFlags!(QTextDocument.FindFlags.enum_type) f2)/+noexcept+/{return f2|f1;}+/ 309 /+pragma(inline, true) QFlags!(QTextDocument.FindFlags.enum_type) operator &(QTextDocument.FindFlags.enum_type f1, QTextDocument.FindFlags.enum_type f2)/+noexcept+/{return QFlags!(QTextDocument.FindFlags.enum_type)(f1)&f2;}+/ 310 /+pragma(inline, true) QFlags!(QTextDocument.FindFlags.enum_type) operator &(QTextDocument.FindFlags.enum_type f1, QFlags!(QTextDocument.FindFlags.enum_type) f2)/+noexcept+/{return f2&f1;}+/ 311 /+pragma(inline, true) void operator +(QTextDocument.FindFlags.enum_type f1, QTextDocument.FindFlags.enum_type f2)/+noexcept+/;+/ 312 /+pragma(inline, true) void operator +(QTextDocument.FindFlags.enum_type f1, QFlags!(QTextDocument.FindFlags.enum_type) f2)/+noexcept+/;+/ 313 /+pragma(inline, true) void operator +(int f1, QFlags!(QTextDocument.FindFlags.enum_type) f2)/+noexcept+/;+/ 314 /+pragma(inline, true) void operator -(QTextDocument.FindFlags.enum_type f1, QTextDocument.FindFlags.enum_type f2)/+noexcept+/;+/ 315 /+pragma(inline, true) void operator -(QTextDocument.FindFlags.enum_type f1, QFlags!(QTextDocument.FindFlags.enum_type) f2)/+noexcept+/;+/ 316 /+pragma(inline, true) void operator -(int f1, QFlags!(QTextDocument.FindFlags.enum_type) f2)/+noexcept+/;+/ 317 /+pragma(inline, true) QIncompatibleFlag operator |(QTextDocument.FindFlags.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/ 318 /+pragma(inline, true) void operator +(int f1, QTextDocument.FindFlags.enum_type f2)/+noexcept+/;+/ 319 /+pragma(inline, true) void operator +(QTextDocument.FindFlags.enum_type f1, int f2)/+noexcept+/;+/ 320 /+pragma(inline, true) void operator -(int f1, QTextDocument.FindFlags.enum_type f2)/+noexcept+/;+/ 321 /+pragma(inline, true) void operator -(QTextDocument.FindFlags.enum_type f1, int f2)/+noexcept+/;+/ 322 323 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QTextDocument::FindFlags) +/