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.inputdialog;
13 extern(C++):
14 
15 import qt.config;
16 import qt.core.flags;
17 import qt.core.namespace;
18 import qt.core.object;
19 import qt.core.size;
20 import qt.core.string;
21 import qt.core.stringlist;
22 import qt.helpers;
23 import qt.widgets.dialog;
24 import qt.widgets.lineedit;
25 import qt.widgets.widget;
26 
27 /+ QT_REQUIRE_CONFIG(inputdialog); +/
28 
29 
30 extern(C++, class) struct QInputDialogPrivate;
31 
32 /// Binding for C++ class [QInputDialog](https://doc.qt.io/qt-6/qinputdialog.html).
33 class /+ Q_WIDGETS_EXPORT +/ QInputDialog : QDialog
34 {
35     mixin(Q_OBJECT);
36     /+ Q_DECLARE_PRIVATE(QInputDialog) +/
37     /+ QDOC_PROPERTY(InputMode inputMode READ inputMode WRITE setInputMode)
38     QDOC_PROPERTY(QString labelText READ labelText WRITE setLabelText)
39     QDOC_PROPERTY(InputDialogOptions options READ options WRITE setOptions)
40     QDOC_PROPERTY(QString textValue READ textValue WRITE setTextValue NOTIFY textValueChanged)
41     QDOC_PROPERTY(int intValue READ intValue WRITE setIntValue NOTIFY intValueChanged)
42     QDOC_PROPERTY(int doubleValue READ doubleValue WRITE setDoubleValue NOTIFY doubleValueChanged)
43     QDOC_PROPERTY(QLineEdit::EchoMode textEchoMode READ textEchoMode WRITE setTextEchoMode)
44     QDOC_PROPERTY(bool comboBoxEditable READ isComboBoxEditable WRITE setComboBoxEditable)
45     QDOC_PROPERTY(QStringList comboBoxItems READ comboBoxItems WRITE setComboBoxItems)
46     QDOC_PROPERTY(int intMinimum READ intMinimum WRITE setIntMinimum)
47     QDOC_PROPERTY(int intMaximum READ intMaximum WRITE setIntMaximum)
48     QDOC_PROPERTY(int intStep READ intStep WRITE setIntStep)
49     QDOC_PROPERTY(double doubleMinimum READ doubleMinimum WRITE setDoubleMinimum)
50     QDOC_PROPERTY(double doubleMaximum READ doubleMaximum WRITE setDoubleMaximum)
51     QDOC_PROPERTY(int doubleDecimals READ doubleDecimals WRITE setDoubleDecimals)
52     QDOC_PROPERTY(QString okButtonText READ okButtonText WRITE setOkButtonText)
53     QDOC_PROPERTY(QString cancelButtonText READ cancelButtonText WRITE setCancelButtonText)
54     QDOC_PROPERTY(double doubleStep READ doubleStep WRITE setDoubleStep) +/
55 
56 public:
57     enum InputDialogOption {
58         NoButtons                    = 0x00000001,
59         UseListViewForComboBoxItems  = 0x00000002,
60         UsePlainTextEditForTextInput = 0x00000004
61     }
62 
63     /+ Q_DECLARE_FLAGS(InputDialogOptions, InputDialogOption) +/
64 alias InputDialogOptions = QFlags!(InputDialogOption);
65     enum InputMode {
66         TextInput,
67         IntInput,
68         DoubleInput
69     }
70 
71     this(QWidget parent = null, /+ Qt:: +/qt.core.namespace.WindowFlags flags = /+ Qt:: +/qt.core.namespace.WindowFlags());
72     ~this();
73 
74     final void setInputMode(InputMode mode);
75     final InputMode inputMode() const;
76 
77     final void setLabelText(ref const(QString) text);
78     final QString labelText() const;
79 
80     final void setOption(InputDialogOption option, bool on = true);
81     final bool testOption(InputDialogOption option) const;
82     final void setOptions(InputDialogOptions options);
83     final InputDialogOptions options() const;
84 
85     final void setTextValue(ref const(QString) text);
86     final QString textValue() const;
87 
88     final void setTextEchoMode(QLineEdit.EchoMode mode);
89     final QLineEdit.EchoMode textEchoMode() const;
90 
91     final void setComboBoxEditable(bool editable);
92     final bool isComboBoxEditable() const;
93 
94     final void setComboBoxItems(ref const(QStringList) items);
95     final QStringList comboBoxItems() const;
96 
97     final void setIntValue(int value);
98     final int intValue() const;
99 
100     final void setIntMinimum(int min);
101     final int intMinimum() const;
102 
103     final void setIntMaximum(int max);
104     final int intMaximum() const;
105 
106     final void setIntRange(int min, int max);
107 
108     final void setIntStep(int step);
109     final int intStep() const;
110 
111     final void setDoubleValue(double value);
112     final double doubleValue() const;
113 
114     final void setDoubleMinimum(double min);
115     final double doubleMinimum() const;
116 
117     final void setDoubleMaximum(double max);
118     final double doubleMaximum() const;
119 
120     final void setDoubleRange(double min, double max);
121 
122     final void setDoubleDecimals(int decimals);
123     final int doubleDecimals() const;
124 
125     final void setOkButtonText(ref const(QString) text);
126     final QString okButtonText() const;
127 
128     final void setCancelButtonText(ref const(QString) text);
129     final QString cancelButtonText() const;
130 
131     /+ using QDialog::open; +/
132     final void open(QObject receiver, const(char)* member);
133 
134     override QSize minimumSizeHint() const;
135     override QSize sizeHint() const;
136 
137     override void setVisible(bool visible);
138 
139     static QString getText(QWidget parent, ref const(QString) title, ref const(QString) label,
140                                QLineEdit.EchoMode echo = QLineEdit.EchoMode.Normal,
141                                ref const(QString) text = globalInitVar!QString, bool* ok = null,
142                                /+ Qt:: +/qt.core.namespace.WindowFlags flags = /+ Qt:: +/qt.core.namespace.WindowFlags(),
143                                /+ Qt:: +/qt.core.namespace.InputMethodHints inputMethodHints = /+ Qt:: +/qt.core.namespace.InputMethodHint.ImhNone);
144     static QString getMultiLineText(QWidget parent, ref const(QString) title, ref const(QString) label,
145                                         ref const(QString) text = globalInitVar!QString, bool* ok = null,
146                                         /+ Qt:: +/qt.core.namespace.WindowFlags flags = /+ Qt:: +/qt.core.namespace.WindowFlags(),
147                                         /+ Qt:: +/qt.core.namespace.InputMethodHints inputMethodHints = /+ Qt:: +/qt.core.namespace.InputMethodHint.ImhNone);
148     static QString getItem(QWidget parent, ref const(QString) title, ref const(QString) label,
149                                ref const(QStringList) items, int current = 0, bool editable = true,
150                                bool* ok = null, /+ Qt:: +/qt.core.namespace.WindowFlags flags = /+ Qt:: +/qt.core.namespace.WindowFlags(),
151                                /+ Qt:: +/qt.core.namespace.InputMethodHints inputMethodHints = /+ Qt:: +/qt.core.namespace.InputMethodHint.ImhNone);
152 
153     static int getInt(QWidget parent, ref const(QString) title, ref const(QString) label, int value = 0,
154                           int minValue = -2147483647, int maxValue = 2147483647,
155                           int step = 1, bool* ok = null, /+ Qt:: +/qt.core.namespace.WindowFlags flags = /+ Qt:: +/qt.core.namespace.WindowFlags());
156 
157     static double getDouble(QWidget parent, ref const(QString) title, ref const(QString) label, double value = 0,
158                                 double minValue = -2147483647, double maxValue = 2147483647,
159                                 int decimals = 1, bool* ok = null, /+ Qt:: +/qt.core.namespace.WindowFlags flags = /+ Qt:: +/qt.core.namespace.WindowFlags(),
160                                 double step = 1);
161 
162     final void setDoubleStep(double step);
163     final double doubleStep() const;
164 
165 /+ Q_SIGNALS +/public:
166     @QSignal final void textValueChanged(ref const(QString) text);
167     @QSignal final void textValueSelected(ref const(QString) text);
168     @QSignal final void intValueChanged(int value);
169     @QSignal final void intValueSelected(int value);
170     @QSignal final void doubleValueChanged(double value);
171     @QSignal final void doubleValueSelected(double value);
172 
173 public:
174     override void done(int result);
175 
176 private:
177     /+ Q_DISABLE_COPY(QInputDialog) +/
178     /+ Q_PRIVATE_SLOT(d_func(), void _q_textChanged(const QString&))
179     Q_PRIVATE_SLOT(d_func(), void _q_plainTextEditTextChanged())
180     Q_PRIVATE_SLOT(d_func(), void _q_currentRowChanged(const QModelIndex&, const QModelIndex&)) +/
181     mixin(CREATE_CONVENIENCE_WRAPPERS);
182 }
183 /+pragma(inline, true) QFlags!(QInputDialog.InputDialogOptions.enum_type) operator |(QInputDialog.InputDialogOptions.enum_type f1, QInputDialog.InputDialogOptions.enum_type f2)/+noexcept+/{return QFlags!(QInputDialog.InputDialogOptions.enum_type)(f1)|f2;}+/
184 /+pragma(inline, true) QFlags!(QInputDialog.InputDialogOptions.enum_type) operator |(QInputDialog.InputDialogOptions.enum_type f1, QFlags!(QInputDialog.InputDialogOptions.enum_type) f2)/+noexcept+/{return f2|f1;}+/
185 /+pragma(inline, true) QFlags!(QInputDialog.InputDialogOptions.enum_type) operator &(QInputDialog.InputDialogOptions.enum_type f1, QInputDialog.InputDialogOptions.enum_type f2)/+noexcept+/{return QFlags!(QInputDialog.InputDialogOptions.enum_type)(f1)&f2;}+/
186 /+pragma(inline, true) QFlags!(QInputDialog.InputDialogOptions.enum_type) operator &(QInputDialog.InputDialogOptions.enum_type f1, QFlags!(QInputDialog.InputDialogOptions.enum_type) f2)/+noexcept+/{return f2&f1;}+/
187 /+pragma(inline, true) void operator +(QInputDialog.InputDialogOptions.enum_type f1, QInputDialog.InputDialogOptions.enum_type f2)/+noexcept+/;+/
188 /+pragma(inline, true) void operator +(QInputDialog.InputDialogOptions.enum_type f1, QFlags!(QInputDialog.InputDialogOptions.enum_type) f2)/+noexcept+/;+/
189 /+pragma(inline, true) void operator +(int f1, QFlags!(QInputDialog.InputDialogOptions.enum_type) f2)/+noexcept+/;+/
190 /+pragma(inline, true) void operator -(QInputDialog.InputDialogOptions.enum_type f1, QInputDialog.InputDialogOptions.enum_type f2)/+noexcept+/;+/
191 /+pragma(inline, true) void operator -(QInputDialog.InputDialogOptions.enum_type f1, QFlags!(QInputDialog.InputDialogOptions.enum_type) f2)/+noexcept+/;+/
192 /+pragma(inline, true) void operator -(int f1, QFlags!(QInputDialog.InputDialogOptions.enum_type) f2)/+noexcept+/;+/
193 /+pragma(inline, true) QIncompatibleFlag operator |(QInputDialog.InputDialogOptions.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/
194 /+pragma(inline, true) void operator +(int f1, QInputDialog.InputDialogOptions.enum_type f2)/+noexcept+/;+/
195 /+pragma(inline, true) void operator +(QInputDialog.InputDialogOptions.enum_type f1, int f2)/+noexcept+/;+/
196 /+pragma(inline, true) void operator -(int f1, QInputDialog.InputDialogOptions.enum_type f2)/+noexcept+/;+/
197 /+pragma(inline, true) void operator -(QInputDialog.InputDialogOptions.enum_type f1, int f2)/+noexcept+/;+/
198 
199 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QInputDialog::InputDialogOptions) +/