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.lineedit;
13 extern(C++):
14 
15 import qt.config;
16 import qt.core.coreevent;
17 import qt.core.margins;
18 import qt.core.namespace;
19 import qt.core.point;
20 import qt.core.rect;
21 import qt.core.size;
22 import qt.core.string;
23 import qt.core.variant;
24 import qt.gui.action;
25 import qt.gui.event;
26 import qt.gui.icon;
27 import qt.helpers;
28 import qt.widgets.completer;
29 import qt.widgets.styleoption;
30 import qt.widgets.widget;
31 version(QT_NO_CONTEXTMENU){}else
32     import qt.widgets.menu;
33 version(QT_NO_VALIDATOR){}else
34     import qt.gui.validator;
35 
36 /+ QT_REQUIRE_CONFIG(lineedit); +/
37 
38 extern(C++, class) struct QLineEditPrivate;
39 
40 /// Binding for C++ class [QLineEdit](https://doc.qt.io/qt-6/qlineedit.html).
41 class /+ Q_WIDGETS_EXPORT +/ QLineEdit : QWidget
42 {
43     mixin(Q_OBJECT);
44 
45     /+ Q_PROPERTY(QString inputMask READ inputMask WRITE setInputMask)
46     Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged USER true)
47     Q_PROPERTY(int maxLength READ maxLength WRITE setMaxLength)
48     Q_PROPERTY(bool frame READ hasFrame WRITE setFrame)
49     Q_PROPERTY(EchoMode echoMode READ echoMode WRITE setEchoMode)
50     Q_PROPERTY(QString displayText READ displayText)
51     Q_PROPERTY(int cursorPosition READ cursorPosition WRITE setCursorPosition)
52     Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment)
53     Q_PROPERTY(bool modified READ isModified WRITE setModified DESIGNABLE false)
54     Q_PROPERTY(bool hasSelectedText READ hasSelectedText)
55     Q_PROPERTY(QString selectedText READ selectedText)
56     Q_PROPERTY(bool dragEnabled READ dragEnabled WRITE setDragEnabled)
57     Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly)
58     Q_PROPERTY(bool undoAvailable READ isUndoAvailable)
59     Q_PROPERTY(bool redoAvailable READ isRedoAvailable)
60     Q_PROPERTY(bool acceptableInput READ hasAcceptableInput)
61     Q_PROPERTY(QString placeholderText READ placeholderText WRITE setPlaceholderText)
62     Q_PROPERTY(Qt::CursorMoveStyle cursorMoveStyle READ cursorMoveStyle WRITE setCursorMoveStyle)
63     Q_PROPERTY(bool clearButtonEnabled READ isClearButtonEnabled WRITE setClearButtonEnabled) +/
64 public:
65     enum ActionPosition {
66         LeadingPosition,
67         TrailingPosition
68     }
69     /+ Q_ENUM(ActionPosition) +/
70 
71     /+ explicit +/this(QWidget parent = null);
72     /+ explicit +/this(ref const(QString) , QWidget parent = null);
73     ~this();
74 
75     final QString text() const;
76 
77     final QString displayText() const;
78 
79     final QString placeholderText() const;
80     final void setPlaceholderText(ref const(QString) );
81 
82     final int maxLength() const;
83     final void setMaxLength(int);
84 
85     final void setFrame(bool);
86     final bool hasFrame() const;
87 
88     final void setClearButtonEnabled(bool enable);
89     final bool isClearButtonEnabled() const;
90 
91     enum EchoMode { Normal, NoEcho, Password, PasswordEchoOnEdit }
92     /+ Q_ENUM(EchoMode) +/
93     final EchoMode echoMode() const;
94     final void setEchoMode(EchoMode);
95 
96     final bool isReadOnly() const;
97     final void setReadOnly(bool);
98 
99 /+ #ifndef QT_NO_VALIDATOR +/
100     version(QT_NO_VALIDATOR){}else
101     {
102         mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{
103         final void setValidator(const(QValidator) );
104         }));
105         mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{
106         final const(QValidator)  validator() const;
107         }));
108     }
109 /+ #endif
110 
111 #if QT_CONFIG(completer) +/
112     final void setCompleter(QCompleter completer);
113     final QCompleter completer() const;
114 /+ #endif +/
115 
116     override QSize sizeHint() const;
117     override QSize minimumSizeHint() const;
118 
119     final int cursorPosition() const;
120     final void setCursorPosition(int);
121     final int cursorPositionAt(ref const(QPoint) pos);
122 
123     final void setAlignment(/+ Qt:: +/qt.core.namespace.Alignment flag);
124     final /+ Qt:: +/qt.core.namespace.Alignment alignment() const;
125 
126     final void cursorForward(bool mark, int steps = 1);
127     final void cursorBackward(bool mark, int steps = 1);
128     final void cursorWordForward(bool mark);
129     final void cursorWordBackward(bool mark);
130     final void backspace();
131     final void del();
132     final void home(bool mark);
133     final void end(bool mark);
134 
135     final bool isModified() const;
136     final void setModified(bool);
137 
138     final void setSelection(int, int);
139     final bool hasSelectedText() const;
140     final QString selectedText() const;
141     final int selectionStart() const;
142     final int selectionEnd() const;
143     final int selectionLength() const;
144 
145     final bool isUndoAvailable() const;
146     final bool isRedoAvailable() const;
147 
148     final void setDragEnabled(bool b);
149     final bool dragEnabled() const;
150 
151     final void setCursorMoveStyle(/+ Qt:: +/qt.core.namespace.CursorMoveStyle style);
152     final /+ Qt:: +/qt.core.namespace.CursorMoveStyle cursorMoveStyle() const;
153 
154     final QString inputMask() const;
155     final void setInputMask(ref const(QString) inputMask);
156     final bool hasAcceptableInput() const;
157 
158     final void setTextMargins(int left, int top, int right, int bottom);
159     final void setTextMargins(ref const(QMargins) margins);
160     final QMargins textMargins() const;
161 
162 /+ #if QT_CONFIG(action) +/
163     /+ using QWidget::addAction; +/
164     final void addAction(QAction action, ActionPosition position);
165     final QAction addAction(ref const(QIcon) icon, ActionPosition position);
166 /+ #endif +/
167 
168 public /+ Q_SLOTS +/:
169     @QSlot final void setText(ref const(QString) );
170     @QSlot final void clear();
171     @QSlot final void selectAll();
172     @QSlot final void undo();
173     @QSlot final void redo();
174     version(QT_NO_CLIPBOARD){}else
175     {
176         @QSlot final void cut();
177         /+ void copy() const; +/
178         @QSlot final void paste();
179     }
180 
181 public:
182     final void deselect();
183     final void insert(ref const(QString) );
184     version(QT_NO_CONTEXTMENU){}else
185     {
186         final QMenu createStandardContextMenu();
187     }
188 
189 /+ Q_SIGNALS +/public:
190     @QSignal final void textChanged(ref const(QString) );
191     @QSignal final void textEdited(ref const(QString) );
192     @QSignal final void cursorPositionChanged(int, int);
193     @QSignal final void returnPressed();
194     @QSignal final void editingFinished();
195     @QSignal final void selectionChanged();
196     @QSignal final void inputRejected();
197 
198 protected:
199     override void mousePressEvent(QMouseEvent );
200     override void mouseMoveEvent(QMouseEvent );
201     override void mouseReleaseEvent(QMouseEvent );
202     override void mouseDoubleClickEvent(QMouseEvent );
203     override void keyPressEvent(QKeyEvent );
204     override void keyReleaseEvent(QKeyEvent );
205     override void focusInEvent(QFocusEvent );
206     override void focusOutEvent(QFocusEvent );
207     override void paintEvent(QPaintEvent );
208 /+ #if QT_CONFIG(draganddrop) +/
209     override void dragEnterEvent(QDragEnterEvent );
210     override void dragMoveEvent(QDragMoveEvent e);
211     override void dragLeaveEvent(QDragLeaveEvent e);
212     override void dropEvent(QDropEvent );
213 /+ #endif +/
214     override void changeEvent(QEvent );
215     version(QT_NO_CONTEXTMENU){}else
216     {
217         override void contextMenuEvent(QContextMenuEvent );
218     }
219 
220     override void inputMethodEvent(QInputMethodEvent );
221     /+ virtual +/ void initStyleOption(QStyleOptionFrame* option) const;
222 public:
223     override QVariant inputMethodQuery(/+ Qt:: +/qt.core.namespace.InputMethodQuery) const;
224     @QInvokable final QVariant inputMethodQuery(/+ Qt:: +/qt.core.namespace.InputMethodQuery property, QVariant argument) const;
225     override void timerEvent(QTimerEvent );
226     override bool event(QEvent );
227 protected:
228     final QRect cursorRect() const;
229 
230 public:
231 
232 private:
233     /+ friend class QAbstractSpinBox; +/
234     /+ friend class QAccessibleLineEdit; +/
235     /+ friend class QComboBox; +/
236     version(QT_KEYPAD_NAVIGATION)
237     {
238         /+ friend class QDateTimeEdit; +/
239     }
240     /+ Q_DISABLE_COPY(QLineEdit) +/
241     /+ Q_DECLARE_PRIVATE(QLineEdit) +/
242     /+ Q_PRIVATE_SLOT(d_func(), void _q_handleWindowActivate())
243     Q_PRIVATE_SLOT(d_func(), void _q_textEdited(const QString &))
244     Q_PRIVATE_SLOT(d_func(), void _q_cursorPositionChanged(int, int))
245 #if QT_CONFIG(completer)
246     Q_PRIVATE_SLOT(d_func(), void _q_completionHighlighted(const QString &))
247 #endif
248 #ifdef QT_KEYPAD_NAVIGATION
249     Q_PRIVATE_SLOT(d_func(), void _q_editFocusChange(bool))
250 #endif
251     Q_PRIVATE_SLOT(d_func(), void _q_selectionChanged())
252     Q_PRIVATE_SLOT(d_func(), void _q_updateNeeded(const QRect &))
253     Q_PRIVATE_SLOT(d_func(), void _q_textChanged(const QString &))
254     Q_PRIVATE_SLOT(d_func(), void _q_clearButtonClicked())
255     Q_PRIVATE_SLOT(d_func(), void _q_controlEditingFinished()) +/
256     mixin(CREATE_CONVENIENCE_WRAPPERS);
257 }
258