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.layout;
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.object;
20 import qt.core.rect;
21 import qt.core.size;
22 import qt.helpers;
23 import qt.widgets.layoutitem;
24 import qt.widgets.sizepolicy;
25 import qt.widgets.widget;
26 
27 
28 
29 extern(C++, class) struct QLayoutPrivate;
30 
31 /// Binding for C++ class [QLayout](https://doc.qt.io/qt-6/qlayout.html).
32 abstract class /+ Q_WIDGETS_EXPORT +/ QLayout : QObject, QLayoutItemInterface
33 {
34     QLayoutItemFakeInheritance baseQLayoutItem;
35     mixin(Q_OBJECT);
36     /+ Q_DECLARE_PRIVATE(QLayout) +/
37 
38     /+ Q_PROPERTY(int spacing READ spacing WRITE setSpacing)
39     Q_PROPERTY(QMargins contentsMargins READ contentsMargins WRITE setContentsMargins
40                RESET unsetContentsMargins)
41     Q_PROPERTY(SizeConstraint sizeConstraint READ sizeConstraint WRITE setSizeConstraint) +/
42 public:
43     enum SizeConstraint {
44         SetDefaultConstraint,
45         SetNoConstraint,
46         SetMinimumSize,
47         SetFixedSize,
48         SetMaximumSize,
49         SetMinAndMaxSize
50     }
51     /+ Q_ENUM(SizeConstraint) +/
52 
53     mixin(changeItaniumMangling(q{mangleConstructorBaseObject}, q{
54     /+ explicit +/this(QWidget parent = null);
55     }));
56     ~this();
57 
58     /+ virtual +/ int spacing() const;
59     /+ virtual +/ void setSpacing(int);
60 
61     final void setContentsMargins(int left, int top, int right, int bottom);
62     final void setContentsMargins(ref const(QMargins) margins);
63     final void unsetContentsMargins();
64     final void getContentsMargins(int* left, int* top, int* right, int* bottom) const;
65     final QMargins contentsMargins() const;
66     final QRect contentsRect() const;
67 
68     final bool setAlignment(QWidget w, /+ Qt:: +/qt.core.namespace.Alignment alignment);
69     final bool setAlignment(QLayout l, /+ Qt:: +/qt.core.namespace.Alignment alignment);
70     /+ using QLayoutItem::setAlignment; +/
71 
72     final void setSizeConstraint(SizeConstraint);
73     final SizeConstraint sizeConstraint() const;
74     final void setMenuBar(QWidget w);
75     final QWidget menuBar() const;
76 
77     final QWidget parentWidget() const;
78 
79     override void invalidate();
80     override QRect geometry() const;
81     final bool activate();
82     final void update();
83 
84     final void addWidget(QWidget w);
85     /+ virtual +/ abstract void addItem(QLayoutItem );
86 
87     final void removeWidget(QWidget w);
88     final void removeItem(QLayoutItem );
89 
90     override /+ Qt:: +/qt.core.namespace.Orientations expandingDirections() const;
91     override QSize minimumSize() const;
92     override QSize maximumSize() const;
93     /+ virtual +/ override void setGeometry(ref const(QRect));
94     /+ virtual +/ abstract QLayoutItem itemAt(int index) const;
95     /+ virtual +/ abstract QLayoutItem takeAt(int index);
96     mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{
97     /+ virtual +/ int indexOf(const(QWidget) ) const;
98     }));
99     mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{
100     /+ virtual +/ int indexOf(const(QLayoutItem) ) const;
101     }));
102     /+ virtual +/ abstract int count() const;
103     override bool isEmpty() const;
104     override QSizePolicy.ControlTypes controlTypes() const;
105 
106     /+ virtual +/ QLayoutItem replaceWidget(QWidget from, QWidget to,
107                                            /+ Qt:: +/qt.core.namespace.FindChildOptions options = /+ Qt:: +/qt.core.namespace.FindChildOption.FindChildrenRecursively);
108 
109     final int totalMinimumHeightForWidth(int w) const;
110     final int totalHeightForWidth(int w) const;
111     final QSize totalMinimumSize() const;
112     final QSize totalMaximumSize() const;
113     final QSize totalSizeHint() const;
114     override QLayout layout();
115 
116     final void setEnabled(bool);
117     final bool isEnabled() const;
118 
119 
120     mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{
121     static QSize closestAcceptableSize(const(QWidget) w, ref const(QSize) s);
122     }));
123 
124     override QSize sizeHint() const
125     {
126         assert(0);
127     }
128     override bool hasHeightForWidth() const
129     {
130         assert(0);
131     }
132     override int heightForWidth(int w) const
133     {
134         assert(0);
135     }
136     override int minimumHeightForWidth(int w) const
137     {
138         assert(0);
139     }
140     override QWidget widget()
141     {
142         assert(0);
143     }
144     override QSpacerItem spacerItem()
145     {
146         assert(0);
147     }
148 
149 protected:
150     final void widgetEvent(QEvent );
151     override void childEvent(QChildEvent e);
152     final void addChildLayout(QLayout l);
153     final void addChildWidget(QWidget w);
154     final bool adoptLayout(QLayout layout);
155 
156     final QRect alignmentRect(ref const(QRect)) const;
157 protected:
158     mixin(changeItaniumMangling(q{mangleConstructorBaseObject}, q{
159     this(ref QLayoutPrivate d, QLayout, QWidget);
160     }));
161 
162 private:
163     /+ Q_DISABLE_COPY(QLayout) +/
164 
165     static void activateRecursiveHelper(QLayoutItem item);
166 
167     /+ friend class QApplicationPrivate; +/
168     /+ friend class QWidget; +/
169 
170     mixin(CREATE_CONVENIENCE_WRAPPERS);
171 }
172 
173 
174 //### support old includes
175