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.dockwidget;
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.string;
20 import qt.gui.event;
21 import qt.helpers;
22 import qt.widgets.styleoption;
23 import qt.widgets.widget;
24 version(QT_NO_ACTION){}else
25     import qt.gui.action;
26 
27 /+ QT_REQUIRE_CONFIG(dockwidget); +/
28 
29 
30 extern(C++, class) struct QDockAreaLayout;
31 extern(C++, class) struct QDockWidgetPrivate;
32 
33 /// Binding for C++ class [QDockWidget](https://doc.qt.io/qt-6/qdockwidget.html).
34 class /+ Q_WIDGETS_EXPORT +/ QDockWidget : QWidget
35 {
36     mixin(Q_OBJECT);
37 
38     /+ Q_PROPERTY(bool floating READ isFloating WRITE setFloating)
39     Q_PROPERTY(DockWidgetFeatures features READ features WRITE setFeatures NOTIFY featuresChanged)
40     Q_PROPERTY(Qt::DockWidgetAreas allowedAreas READ allowedAreas
41                WRITE setAllowedAreas NOTIFY allowedAreasChanged)
42     Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle DESIGNABLE true) +/
43 
44 public:
45     /+ explicit +/this(ref const(QString) title, QWidget parent = null,
46                              /+ Qt:: +/qt.core.namespace.WindowFlags flags = /+ Qt:: +/qt.core.namespace.WindowFlags());
47     /+ explicit +/this(QWidget parent = null, /+ Qt:: +/qt.core.namespace.WindowFlags flags = /+ Qt:: +/qt.core.namespace.WindowFlags());
48     ~this();
49 
50     final QWidget widget() const;
51     final void setWidget(QWidget widget);
52 
53     enum DockWidgetFeature {
54         DockWidgetClosable    = 0x01,
55         DockWidgetMovable     = 0x02,
56         DockWidgetFloatable   = 0x04,
57         DockWidgetVerticalTitleBar = 0x08,
58 
59         DockWidgetFeatureMask = 0x0f,
60         NoDockWidgetFeatures  = 0x00,
61 
62         Reserved              = 0xff
63     }
64     /+ Q_DECLARE_FLAGS(DockWidgetFeatures, DockWidgetFeature) +/
65 alias DockWidgetFeatures = QFlags!(DockWidgetFeature);    /+ Q_FLAG(DockWidgetFeatures) +/
66 
67     final void setFeatures(DockWidgetFeatures features);
68     final DockWidgetFeatures features() const;
69 
70     final void setFloating(bool floating);
71     pragma(inline, true) final bool isFloating() const { return isWindow(); }
72 
73     final void setAllowedAreas(/+ Qt:: +/qt.core.namespace.DockWidgetAreas areas);
74     final /+ Qt:: +/qt.core.namespace.DockWidgetAreas allowedAreas() const;
75 
76     final void setTitleBarWidget(QWidget widget);
77     final QWidget titleBarWidget() const;
78 
79     pragma(inline, true) final bool isAreaAllowed(/+ Qt:: +/qt.core.namespace.DockWidgetArea area) const
80     { return (allowedAreas() & area) == qt.core.namespace.DockWidgetAreas(area); }
81 
82     version(QT_NO_ACTION){}else
83     {
84         final QAction toggleViewAction() const;
85     }
86 
87 /+ Q_SIGNALS +/public:
88     @QSignal final void featuresChanged(DockWidgetFeatures features);
89     @QSignal final void topLevelChanged(bool topLevel);
90     @QSignal final void allowedAreasChanged(/+ Qt:: +/qt.core.namespace.DockWidgetAreas allowedAreas);
91     @QSignal final void visibilityChanged(bool visible);
92     @QSignal final void dockLocationChanged(/+ Qt:: +/qt.core.namespace.DockWidgetArea area);
93 
94 protected:
95     override void changeEvent(QEvent event);
96     override void closeEvent(QCloseEvent event);
97     override void paintEvent(QPaintEvent event);
98     override bool event(QEvent event);
99     /+ virtual +/ void initStyleOption(QStyleOptionDockWidget* option) const;
100 
101 private:
102     /+ Q_DECLARE_PRIVATE(QDockWidget) +/
103     /+ Q_DISABLE_COPY(QDockWidget) +/
104     /+ Q_PRIVATE_SLOT(d_func(), void _q_toggleView(bool))
105     Q_PRIVATE_SLOT(d_func(), void _q_toggleTopLevel()) +/
106     /+ friend class QDockAreaLayout; +/
107     /+ friend class QDockWidgetItem; +/
108     /+ friend class QMainWindowLayout; +/
109     /+ friend class QDockWidgetLayout; +/
110     /+ friend class QDockAreaLayoutInfo; +/
111     mixin(CREATE_CONVENIENCE_WRAPPERS);
112 }
113 /+pragma(inline, true) QFlags!(QDockWidget.DockWidgetFeatures.enum_type) operator |(QDockWidget.DockWidgetFeatures.enum_type f1, QDockWidget.DockWidgetFeatures.enum_type f2)/+noexcept+/{return QFlags!(QDockWidget.DockWidgetFeatures.enum_type)(f1)|f2;}+/
114 /+pragma(inline, true) QFlags!(QDockWidget.DockWidgetFeatures.enum_type) operator |(QDockWidget.DockWidgetFeatures.enum_type f1, QFlags!(QDockWidget.DockWidgetFeatures.enum_type) f2)/+noexcept+/{return f2|f1;}+/
115 /+pragma(inline, true) QFlags!(QDockWidget.DockWidgetFeatures.enum_type) operator &(QDockWidget.DockWidgetFeatures.enum_type f1, QDockWidget.DockWidgetFeatures.enum_type f2)/+noexcept+/{return QFlags!(QDockWidget.DockWidgetFeatures.enum_type)(f1)&f2;}+/
116 /+pragma(inline, true) QFlags!(QDockWidget.DockWidgetFeatures.enum_type) operator &(QDockWidget.DockWidgetFeatures.enum_type f1, QFlags!(QDockWidget.DockWidgetFeatures.enum_type) f2)/+noexcept+/{return f2&f1;}+/
117 /+pragma(inline, true) void operator +(QDockWidget.DockWidgetFeatures.enum_type f1, QDockWidget.DockWidgetFeatures.enum_type f2)/+noexcept+/;+/
118 /+pragma(inline, true) void operator +(QDockWidget.DockWidgetFeatures.enum_type f1, QFlags!(QDockWidget.DockWidgetFeatures.enum_type) f2)/+noexcept+/;+/
119 /+pragma(inline, true) void operator +(int f1, QFlags!(QDockWidget.DockWidgetFeatures.enum_type) f2)/+noexcept+/;+/
120 /+pragma(inline, true) void operator -(QDockWidget.DockWidgetFeatures.enum_type f1, QDockWidget.DockWidgetFeatures.enum_type f2)/+noexcept+/;+/
121 /+pragma(inline, true) void operator -(QDockWidget.DockWidgetFeatures.enum_type f1, QFlags!(QDockWidget.DockWidgetFeatures.enum_type) f2)/+noexcept+/;+/
122 /+pragma(inline, true) void operator -(int f1, QFlags!(QDockWidget.DockWidgetFeatures.enum_type) f2)/+noexcept+/;+/
123 /+pragma(inline, true) QIncompatibleFlag operator |(QDockWidget.DockWidgetFeatures.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/
124 /+pragma(inline, true) void operator +(int f1, QDockWidget.DockWidgetFeatures.enum_type f2)/+noexcept+/;+/
125 /+pragma(inline, true) void operator +(QDockWidget.DockWidgetFeatures.enum_type f1, int f2)/+noexcept+/;+/
126 /+pragma(inline, true) void operator -(int f1, QDockWidget.DockWidgetFeatures.enum_type f2)/+noexcept+/;+/
127 /+pragma(inline, true) void operator -(QDockWidget.DockWidgetFeatures.enum_type f1, int f2)/+noexcept+/;+/
128 
129 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QDockWidget::DockWidgetFeatures) +/