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.completer; 13 extern(C++): 14 15 import qt.config; 16 import qt.core.abstractitemmodel; 17 import qt.core.coreevent; 18 import qt.core.namespace; 19 import qt.core.object; 20 import qt.core.rect; 21 import qt.core.string; 22 import qt.core.stringlist; 23 import qt.helpers; 24 import qt.widgets.abstractitemview; 25 import qt.widgets.widget; 26 27 /+ QT_REQUIRE_CONFIG(completer); +/ 28 29 30 extern(C++, class) struct QCompleterPrivate; 31 32 /// Binding for C++ class [QCompleter](https://doc.qt.io/qt-6/qcompleter.html). 33 class /+ Q_WIDGETS_EXPORT +/ QCompleter : QObject 34 { 35 mixin(Q_OBJECT); 36 /+ Q_PROPERTY(QString completionPrefix READ completionPrefix WRITE setCompletionPrefix) 37 Q_PROPERTY(ModelSorting modelSorting READ modelSorting WRITE setModelSorting) 38 Q_PROPERTY(Qt::MatchFlags filterMode READ filterMode WRITE setFilterMode) 39 Q_PROPERTY(CompletionMode completionMode READ completionMode WRITE setCompletionMode) 40 Q_PROPERTY(int completionColumn READ completionColumn WRITE setCompletionColumn) 41 Q_PROPERTY(int completionRole READ completionRole WRITE setCompletionRole) 42 Q_PROPERTY(int maxVisibleItems READ maxVisibleItems WRITE setMaxVisibleItems) 43 Q_PROPERTY(Qt::CaseSensitivity caseSensitivity READ caseSensitivity WRITE setCaseSensitivity) 44 Q_PROPERTY(bool wrapAround READ wrapAround WRITE setWrapAround) +/ 45 46 public: 47 enum CompletionMode { 48 PopupCompletion, 49 UnfilteredPopupCompletion, 50 InlineCompletion 51 } 52 /+ Q_ENUM(CompletionMode) +/ 53 54 enum ModelSorting { 55 UnsortedModel = 0, 56 CaseSensitivelySortedModel, 57 CaseInsensitivelySortedModel 58 } 59 /+ Q_ENUM(ModelSorting) +/ 60 61 this(QObject parent = null); 62 this(QAbstractItemModel model, QObject parent = null); 63 /+ #if QT_CONFIG(stringlistmodel) +/ 64 this(ref const(QStringList) completions, QObject parent = null); 65 /+ #endif +/ 66 ~this(); 67 68 final void setWidget(QWidget widget); 69 final QWidget widget() const; 70 71 final void setModel(QAbstractItemModel c); 72 final QAbstractItemModel model() const; 73 74 final void setCompletionMode(CompletionMode mode); 75 final CompletionMode completionMode() const; 76 77 final void setFilterMode(/+ Qt:: +/qt.core.namespace.MatchFlags filterMode); 78 final /+ Qt:: +/qt.core.namespace.MatchFlags filterMode() const; 79 80 final QAbstractItemView popup() const; 81 final void setPopup(QAbstractItemView popup); 82 83 final void setCaseSensitivity(/+ Qt:: +/qt.core.namespace.CaseSensitivity caseSensitivity); 84 final /+ Qt:: +/qt.core.namespace.CaseSensitivity caseSensitivity() const; 85 86 final void setModelSorting(ModelSorting sorting); 87 final ModelSorting modelSorting() const; 88 89 final void setCompletionColumn(int column); 90 final int completionColumn() const; 91 92 final void setCompletionRole(int role); 93 final int completionRole() const; 94 95 final bool wrapAround() const; 96 97 final int maxVisibleItems() const; 98 final void setMaxVisibleItems(int maxItems); 99 100 final int completionCount() const; 101 final bool setCurrentRow(int row); 102 final int currentRow() const; 103 104 final QModelIndex currentIndex() const; 105 final QString currentCompletion() const; 106 107 final QAbstractItemModel completionModel() const; 108 109 final QString completionPrefix() const; 110 111 public /+ Q_SLOTS +/: 112 @QSlot final void setCompletionPrefix(ref const(QString) prefix); 113 @QSlot final void complete(ref const(QRect) rect = globalInitVar!QRect); 114 @QSlot final void setWrapAround(bool wrap); 115 116 public: 117 /+ virtual +/ QString pathFromIndex(ref const(QModelIndex) index) const; 118 /+ virtual +/ QStringList splitPath(ref const(QString) path) const; 119 120 protected: 121 override bool eventFilter(QObject o, QEvent e); 122 override bool event(QEvent ); 123 124 /+ Q_SIGNALS +/public: 125 @QSignal final void activated(ref const(QString) text); 126 @QSignal final void activated(ref const(QModelIndex) index); 127 @QSignal final void highlighted(ref const(QString) text); 128 @QSignal final void highlighted(ref const(QModelIndex) index); 129 130 private: 131 /+ Q_DISABLE_COPY(QCompleter) +/ 132 /+ Q_DECLARE_PRIVATE(QCompleter) +/ 133 134 /+ Q_PRIVATE_SLOT(d_func(), void _q_complete(QModelIndex)) 135 Q_PRIVATE_SLOT(d_func(), void _q_completionSelected(const QItemSelection&)) 136 Q_PRIVATE_SLOT(d_func(), void _q_autoResizePopup()) 137 Q_PRIVATE_SLOT(d_func(), void _q_fileSystemModelDirectoryLoaded(const QString&)) +/ 138 mixin(CREATE_CONVENIENCE_WRAPPERS); 139 } 140