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.dialogbuttonbox;
13 extern(C++):
14 
15 import qt.config;
16 import qt.core.coreevent;
17 import qt.core.flags;
18 import qt.core.list;
19 import qt.core.namespace;
20 import qt.core.string;
21 import qt.helpers;
22 import qt.widgets.abstractbutton;
23 import qt.widgets.pushbutton;
24 import qt.widgets.widget;
25 
26 /+ QT_REQUIRE_CONFIG(dialogbuttonbox); +/
27 
28 
29 
30 extern(C++, class) struct QDialogButtonBoxPrivate;
31 
32 /// Binding for C++ class [QDialogButtonBox](https://doc.qt.io/qt-6/qdialogbuttonbox.html).
33 class /+ Q_WIDGETS_EXPORT +/ QDialogButtonBox : QWidget
34 {
35     mixin(Q_OBJECT);
36     /+ Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation)
37     Q_PROPERTY(StandardButtons standardButtons READ standardButtons WRITE setStandardButtons)
38     Q_PROPERTY(bool centerButtons READ centerButtons WRITE setCenterButtons) +/
39 
40 public:
41     enum ButtonRole {
42         // keep this in sync with QMessageBox::ButtonRole and QPlatformDialogHelper::ButtonRole
43         InvalidRole = -1,
44         AcceptRole,
45         RejectRole,
46         DestructiveRole,
47         ActionRole,
48         HelpRole,
49         YesRole,
50         NoRole,
51         ResetRole,
52         ApplyRole,
53 
54         NRoles
55     }
56 
57     enum StandardButton {
58         // keep this in sync with QMessageBox::StandardButton and QPlatformDialogHelper::StandardButton
59         NoButton           = 0x00000000,
60         Ok                 = 0x00000400,
61         Save               = 0x00000800,
62         SaveAll            = 0x00001000,
63         Open               = 0x00002000,
64         Yes                = 0x00004000,
65         YesToAll           = 0x00008000,
66         No                 = 0x00010000,
67         NoToAll            = 0x00020000,
68         Abort              = 0x00040000,
69         Retry              = 0x00080000,
70         Ignore             = 0x00100000,
71         Close              = 0x00200000,
72         Cancel             = 0x00400000,
73         Discard            = 0x00800000,
74         Help               = 0x01000000,
75         Apply              = 0x02000000,
76         Reset              = 0x04000000,
77         RestoreDefaults    = 0x08000000,
78 
79 /+ #ifndef Q_MOC_RUN +/
80         FirstButton        = StandardButton.Ok,
81         LastButton         = StandardButton.RestoreDefaults
82 /+ #endif +/
83     }
84 
85     /+ Q_DECLARE_FLAGS(StandardButtons, StandardButton) +/
86 alias StandardButtons = QFlags!(StandardButton);    /+ Q_FLAG(StandardButtons) +/
87 
88     enum ButtonLayout {
89         // keep this in sync with QPlatformDialogHelper::ButtonLayout
90         WinLayout,
91         MacLayout,
92         KdeLayout,
93         GnomeLayout,
94         AndroidLayout
95     }
96 
97     this(QWidget parent = null);
98     this(/+ Qt:: +/qt.core.namespace.Orientation orientation, QWidget parent = null);
99     /+ explicit +/this(StandardButtons buttons, QWidget parent = null);
100     this(StandardButtons buttons, /+ Qt:: +/qt.core.namespace.Orientation orientation,
101                          QWidget parent = null);
102     ~this();
103 
104     final void setOrientation(/+ Qt:: +/qt.core.namespace.Orientation orientation);
105     final /+ Qt:: +/qt.core.namespace.Orientation orientation() const;
106 
107     final void addButton(QAbstractButton button, ButtonRole role);
108     final QPushButton addButton(ref const(QString) text, ButtonRole role);
109     final QPushButton addButton(StandardButton button);
110     final void removeButton(QAbstractButton button);
111     final void clear();
112 
113     final QList!(QAbstractButton) buttons() const;
114     final ButtonRole buttonRole(QAbstractButton button) const;
115 
116     final void setStandardButtons(StandardButtons buttons);
117     final StandardButtons standardButtons() const;
118     final StandardButton standardButton(QAbstractButton button) const;
119     final QPushButton button(StandardButton which) const;
120 
121     final void setCenterButtons(bool center);
122     final bool centerButtons() const;
123 
124 /+ Q_SIGNALS +/public:
125     @QSignal final void clicked(QAbstractButton button);
126     @QSignal final void accepted();
127     @QSignal final void helpRequested();
128     @QSignal final void rejected();
129 
130 protected:
131     override void changeEvent(QEvent event);
132     override bool event(QEvent event);
133 
134 private:
135     /+ Q_DISABLE_COPY(QDialogButtonBox) +/
136     /+ Q_DECLARE_PRIVATE(QDialogButtonBox) +/
137     /+ Q_PRIVATE_SLOT(d_func(), void _q_handleButtonClicked())
138     Q_PRIVATE_SLOT(d_func(), void _q_handleButtonDestroyed()) +/
139     mixin(CREATE_CONVENIENCE_WRAPPERS);
140 }
141 /+pragma(inline, true) QFlags!(QDialogButtonBox.StandardButtons.enum_type) operator |(QDialogButtonBox.StandardButtons.enum_type f1, QDialogButtonBox.StandardButtons.enum_type f2)/+noexcept+/{return QFlags!(QDialogButtonBox.StandardButtons.enum_type)(f1)|f2;}+/
142 /+pragma(inline, true) QFlags!(QDialogButtonBox.StandardButtons.enum_type) operator |(QDialogButtonBox.StandardButtons.enum_type f1, QFlags!(QDialogButtonBox.StandardButtons.enum_type) f2)/+noexcept+/{return f2|f1;}+/
143 /+pragma(inline, true) QFlags!(QDialogButtonBox.StandardButtons.enum_type) operator &(QDialogButtonBox.StandardButtons.enum_type f1, QDialogButtonBox.StandardButtons.enum_type f2)/+noexcept+/{return QFlags!(QDialogButtonBox.StandardButtons.enum_type)(f1)&f2;}+/
144 /+pragma(inline, true) QFlags!(QDialogButtonBox.StandardButtons.enum_type) operator &(QDialogButtonBox.StandardButtons.enum_type f1, QFlags!(QDialogButtonBox.StandardButtons.enum_type) f2)/+noexcept+/{return f2&f1;}+/
145 /+pragma(inline, true) void operator +(QDialogButtonBox.StandardButtons.enum_type f1, QDialogButtonBox.StandardButtons.enum_type f2)/+noexcept+/;+/
146 /+pragma(inline, true) void operator +(QDialogButtonBox.StandardButtons.enum_type f1, QFlags!(QDialogButtonBox.StandardButtons.enum_type) f2)/+noexcept+/;+/
147 /+pragma(inline, true) void operator +(int f1, QFlags!(QDialogButtonBox.StandardButtons.enum_type) f2)/+noexcept+/;+/
148 /+pragma(inline, true) void operator -(QDialogButtonBox.StandardButtons.enum_type f1, QDialogButtonBox.StandardButtons.enum_type f2)/+noexcept+/;+/
149 /+pragma(inline, true) void operator -(QDialogButtonBox.StandardButtons.enum_type f1, QFlags!(QDialogButtonBox.StandardButtons.enum_type) f2)/+noexcept+/;+/
150 /+pragma(inline, true) void operator -(int f1, QFlags!(QDialogButtonBox.StandardButtons.enum_type) f2)/+noexcept+/;+/
151 /+pragma(inline, true) QIncompatibleFlag operator |(QDialogButtonBox.StandardButtons.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/
152 /+pragma(inline, true) void operator +(int f1, QDialogButtonBox.StandardButtons.enum_type f2)/+noexcept+/;+/
153 /+pragma(inline, true) void operator +(QDialogButtonBox.StandardButtons.enum_type f1, int f2)/+noexcept+/;+/
154 /+pragma(inline, true) void operator -(int f1, QDialogButtonBox.StandardButtons.enum_type f2)/+noexcept+/;+/
155 /+pragma(inline, true) void operator -(QDialogButtonBox.StandardButtons.enum_type f1, int f2)/+noexcept+/;+/
156 
157 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QDialogButtonBox::StandardButtons) +/