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.splitter;
13 extern(C++):
14 
15 import qt.config;
16 import qt.core.bytearray;
17 import qt.core.coreevent;
18 import qt.core.list;
19 import qt.core.namespace;
20 import qt.core.size;
21 import qt.gui.event;
22 import qt.helpers;
23 import qt.widgets.frame;
24 import qt.widgets.widget;
25 
26 /+ QT_REQUIRE_CONFIG(splitter); +/
27 
28 
29 extern(C++, class) struct QSplitterPrivate;
30 /+ class QTextStream; +/
31 
32 
33 /// Binding for C++ class [QSplitter](https://doc.qt.io/qt-6/qsplitter.html).
34 class /+ Q_WIDGETS_EXPORT +/ QSplitter : QFrame
35 {
36     mixin(Q_OBJECT);
37 
38     /+ Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation)
39     Q_PROPERTY(bool opaqueResize READ opaqueResize WRITE setOpaqueResize)
40     Q_PROPERTY(int handleWidth READ handleWidth WRITE setHandleWidth)
41     Q_PROPERTY(bool childrenCollapsible READ childrenCollapsible WRITE setChildrenCollapsible) +/
42 
43 public:
44     /+ explicit +/this(QWidget parent = null);
45     /+ explicit +/this(/+ Qt:: +/qt.core.namespace.Orientation, QWidget parent = null);
46     ~this();
47 
48     final void addWidget(QWidget widget);
49     final void insertWidget(int index, QWidget widget);
50     final QWidget replaceWidget(int index, QWidget widget);
51 
52     final void setOrientation(/+ Qt:: +/qt.core.namespace.Orientation);
53     final /+ Qt:: +/qt.core.namespace.Orientation orientation() const;
54 
55     final void setChildrenCollapsible(bool);
56     final bool childrenCollapsible() const;
57 
58     final void setCollapsible(int index, bool);
59     final bool isCollapsible(int index) const;
60     final void setOpaqueResize(bool opaque = true);
61     final bool opaqueResize() const;
62     final void refresh();
63 
64     override QSize sizeHint() const;
65     override QSize minimumSizeHint() const;
66 
67     final QList!(int) sizes() const;
68     final void setSizes(ref const(QList!(int)) list);
69 
70     final QByteArray saveState() const;
71     final bool restoreState(ref const(QByteArray) state);
72 
73     final int handleWidth() const;
74     final void setHandleWidth(int);
75 
76     final int indexOf(QWidget w) const;
77     final QWidget widget(int index) const;
78     final int count() const;
79 
80     final void getRange(int index, int* , int* ) const;
81     final QSplitterHandle handle(int index) const;
82 
83     final void setStretchFactor(int index, int stretch);
84 
85 /+ Q_SIGNALS +/public:
86     @QSignal final void splitterMoved(int pos, int index);
87 
88 protected:
89     /+ virtual +/ QSplitterHandle createHandle();
90 
91     override void childEvent(QChildEvent );
92 
93     override bool event(QEvent );
94     override void resizeEvent(QResizeEvent );
95 
96     override void changeEvent(QEvent );
97     final void moveSplitter(int pos, int index);
98     final void setRubberBand(int position);
99     final int closestLegalPosition(int, int);
100 
101 
102 private:
103     /+ Q_DISABLE_COPY(QSplitter) +/
104     /+ Q_DECLARE_PRIVATE(QSplitter) +/
105 private:
106     /+ friend class QSplitterHandle; +/
107     mixin(CREATE_CONVENIENCE_WRAPPERS);
108 }
109 
110 
111 extern(C++, class) struct QSplitterHandlePrivate;
112 /// Binding for C++ class [QSplitterHandle](https://doc.qt.io/qt-6/qsplitterhandle.html).
113 class /+ Q_WIDGETS_EXPORT +/ QSplitterHandle : QWidget
114 {
115     mixin(Q_OBJECT);
116 public:
117     /+ explicit +/this(/+ Qt:: +/qt.core.namespace.Orientation o, QSplitter parent);
118     ~this();
119 
120     final void setOrientation(/+ Qt:: +/qt.core.namespace.Orientation o);
121     final /+ Qt:: +/qt.core.namespace.Orientation orientation() const;
122     final bool opaqueResize() const;
123     final QSplitter splitter() const;
124 
125     override QSize sizeHint() const;
126 
127 protected:
128     override void paintEvent(QPaintEvent );
129     override void mouseMoveEvent(QMouseEvent );
130     override void mousePressEvent(QMouseEvent );
131     override void mouseReleaseEvent(QMouseEvent );
132     override void resizeEvent(QResizeEvent );
133     override bool event(QEvent );
134 
135     final void moveSplitter(int p);
136     final int closestLegalPosition(int p);
137 
138 private:
139     /+ Q_DISABLE_COPY(QSplitterHandle) +/
140     /+ Q_DECLARE_PRIVATE(QSplitterHandle) +/
141     mixin(CREATE_CONVENIENCE_WRAPPERS);
142 }
143