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.colordialog;
13 extern(C++):
14 
15 import qt.config;
16 import qt.core.coreevent;
17 import qt.core.flags;
18 import qt.core.namespace;
19 import qt.core.object;
20 import qt.core.string;
21 import qt.gui.color;
22 import qt.helpers;
23 import qt.widgets.dialog;
24 import qt.widgets.widget;
25 
26 /+ QT_REQUIRE_CONFIG(colordialog); +/
27 
28 
29 extern(C++, class) struct QColorDialogPrivate;
30 
31 /// Binding for C++ class [QColorDialog](https://doc.qt.io/qt-6/qcolordialog.html).
32 class /+ Q_WIDGETS_EXPORT +/ QColorDialog : QDialog
33 {
34     mixin(Q_OBJECT);
35     /+ Q_DECLARE_PRIVATE(QColorDialog) +/
36     /+ Q_PROPERTY(QColor currentColor READ currentColor WRITE setCurrentColor
37                NOTIFY currentColorChanged)
38     Q_PROPERTY(ColorDialogOptions options READ options WRITE setOptions) +/
39 
40 public:
41     enum ColorDialogOption {
42         ShowAlphaChannel    = 0x00000001,
43         NoButtons           = 0x00000002,
44         DontUseNativeDialog = 0x00000004
45     }
46     /+ Q_ENUM(ColorDialogOption) +/
47 
48     /+ Q_DECLARE_FLAGS(ColorDialogOptions, ColorDialogOption) +/
49 alias ColorDialogOptions = QFlags!(ColorDialogOption);
50     /+ explicit +/this(QWidget parent = null);
51     /+ explicit +/this(ref const(QColor) initial, QWidget parent = null);
52     ~this();
53 
54     final void setCurrentColor(ref const(QColor) color);
55     final QColor currentColor() const;
56 
57     final QColor selectedColor() const;
58 
59     final void setOption(ColorDialogOption option, bool on = true);
60     final bool testOption(ColorDialogOption option) const;
61     final void setOptions(ColorDialogOptions options);
62     final ColorDialogOptions options() const;
63 
64     /+ using QDialog::open; +/
65     final void open(QObject receiver, const(char)* member);
66 
67     override void setVisible(bool visible);
68 
69     static QColor getColor(ref const(QColor) initial /+ = Qt::white +/,
70                                QWidget parent = null,
71                                ref const(QString) title = globalInitVar!QString,
72                                ColorDialogOptions options = ColorDialogOptions());
73 
74     static int customCount();
75     static QColor customColor(int index);
76     static void setCustomColor(int index, QColor color);
77     static QColor standardColor(int index);
78     static void setStandardColor(int index, QColor color);
79 
80 /+ Q_SIGNALS +/public:
81     @QSignal final void currentColorChanged(ref const(QColor) color);
82     @QSignal final void colorSelected(ref const(QColor) color);
83 
84 protected:
85     override void changeEvent(QEvent event);
86     override void done(int result);
87 
88 private:
89     /+ Q_DISABLE_COPY(QColorDialog) +/
90 
91     /+ Q_PRIVATE_SLOT(d_func(), void _q_addCustom())
92     Q_PRIVATE_SLOT(d_func(), void _q_newHsv(int h, int s, int v))
93     Q_PRIVATE_SLOT(d_func(), void _q_newColorTypedIn(QRgb rgb))
94     Q_PRIVATE_SLOT(d_func(), void _q_nextCustom(int, int))
95     Q_PRIVATE_SLOT(d_func(), void _q_newCustom(int, int))
96     Q_PRIVATE_SLOT(d_func(), void _q_newStandard(int, int))
97     Q_PRIVATE_SLOT(d_func(), void _q_pickScreenColor())
98     Q_PRIVATE_SLOT(d_func(), void _q_updateColorPicking()) +/
99     mixin(CREATE_CONVENIENCE_WRAPPERS);
100 }
101 /+pragma(inline, true) QFlags!(QColorDialog.ColorDialogOptions.enum_type) operator |(QColorDialog.ColorDialogOptions.enum_type f1, QColorDialog.ColorDialogOptions.enum_type f2)/+noexcept+/{return QFlags!(QColorDialog.ColorDialogOptions.enum_type)(f1)|f2;}+/
102 /+pragma(inline, true) QFlags!(QColorDialog.ColorDialogOptions.enum_type) operator |(QColorDialog.ColorDialogOptions.enum_type f1, QFlags!(QColorDialog.ColorDialogOptions.enum_type) f2)/+noexcept+/{return f2|f1;}+/
103 /+pragma(inline, true) QFlags!(QColorDialog.ColorDialogOptions.enum_type) operator &(QColorDialog.ColorDialogOptions.enum_type f1, QColorDialog.ColorDialogOptions.enum_type f2)/+noexcept+/{return QFlags!(QColorDialog.ColorDialogOptions.enum_type)(f1)&f2;}+/
104 /+pragma(inline, true) QFlags!(QColorDialog.ColorDialogOptions.enum_type) operator &(QColorDialog.ColorDialogOptions.enum_type f1, QFlags!(QColorDialog.ColorDialogOptions.enum_type) f2)/+noexcept+/{return f2&f1;}+/
105 /+pragma(inline, true) void operator +(QColorDialog.ColorDialogOptions.enum_type f1, QColorDialog.ColorDialogOptions.enum_type f2)/+noexcept+/;+/
106 /+pragma(inline, true) void operator +(QColorDialog.ColorDialogOptions.enum_type f1, QFlags!(QColorDialog.ColorDialogOptions.enum_type) f2)/+noexcept+/;+/
107 /+pragma(inline, true) void operator +(int f1, QFlags!(QColorDialog.ColorDialogOptions.enum_type) f2)/+noexcept+/;+/
108 /+pragma(inline, true) void operator -(QColorDialog.ColorDialogOptions.enum_type f1, QColorDialog.ColorDialogOptions.enum_type f2)/+noexcept+/;+/
109 /+pragma(inline, true) void operator -(QColorDialog.ColorDialogOptions.enum_type f1, QFlags!(QColorDialog.ColorDialogOptions.enum_type) f2)/+noexcept+/;+/
110 /+pragma(inline, true) void operator -(int f1, QFlags!(QColorDialog.ColorDialogOptions.enum_type) f2)/+noexcept+/;+/
111 /+pragma(inline, true) QIncompatibleFlag operator |(QColorDialog.ColorDialogOptions.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/
112 /+pragma(inline, true) void operator +(int f1, QColorDialog.ColorDialogOptions.enum_type f2)/+noexcept+/;+/
113 /+pragma(inline, true) void operator +(QColorDialog.ColorDialogOptions.enum_type f1, int f2)/+noexcept+/;+/
114 /+pragma(inline, true) void operator -(int f1, QColorDialog.ColorDialogOptions.enum_type f2)/+noexcept+/;+/
115 /+pragma(inline, true) void operator -(QColorDialog.ColorDialogOptions.enum_type f1, int f2)/+noexcept+/;+/
116 
117 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QColorDialog::ColorDialogOptions) +/