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.tabbar;
13 extern(C++):
14 
15 import qt.config;
16 import qt.core.coreevent;
17 import qt.core.namespace;
18 import qt.core.point;
19 import qt.core.rect;
20 import qt.core.size;
21 import qt.core.string;
22 import qt.core.variant;
23 import qt.gui.color;
24 import qt.gui.event;
25 import qt.gui.icon;
26 import qt.helpers;
27 import qt.widgets.styleoption;
28 import qt.widgets.widget;
29 
30 /+ QT_REQUIRE_CONFIG(tabbar); +/
31 
32 
33 extern(C++, class) struct QTabBarPrivate;
34 
35 /// Binding for C++ class [QTabBar](https://doc.qt.io/qt-6/qtabbar.html).
36 class /+ Q_WIDGETS_EXPORT +/ QTabBar: QWidget
37 {
38     mixin(Q_OBJECT);
39 
40     /+ Q_PROPERTY(Shape shape READ shape WRITE setShape)
41     Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentChanged)
42     Q_PROPERTY(int count READ count)
43     Q_PROPERTY(bool drawBase READ drawBase WRITE setDrawBase)
44     Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize)
45     Q_PROPERTY(Qt::TextElideMode elideMode READ elideMode WRITE setElideMode)
46     Q_PROPERTY(bool usesScrollButtons READ usesScrollButtons WRITE setUsesScrollButtons)
47     Q_PROPERTY(bool tabsClosable READ tabsClosable WRITE setTabsClosable)
48     Q_PROPERTY(SelectionBehavior selectionBehaviorOnRemove READ selectionBehaviorOnRemove
49                WRITE setSelectionBehaviorOnRemove)
50     Q_PROPERTY(bool expanding READ expanding WRITE setExpanding)
51     Q_PROPERTY(bool movable READ isMovable WRITE setMovable)
52     Q_PROPERTY(bool documentMode READ documentMode WRITE setDocumentMode)
53     Q_PROPERTY(bool autoHide READ autoHide WRITE setAutoHide)
54     Q_PROPERTY(bool changeCurrentOnDrag READ changeCurrentOnDrag WRITE setChangeCurrentOnDrag) +/
55 
56 public:
57     /+ explicit +/this(QWidget parent = null);
58     ~this();
59 
60     enum Shape { RoundedNorth, RoundedSouth, RoundedWest, RoundedEast,
61                  TriangularNorth, TriangularSouth, TriangularWest, TriangularEast
62     }
63     /+ Q_ENUM(Shape) +/
64 
65     enum ButtonPosition {
66         LeftSide,
67         RightSide
68     }
69 
70     enum SelectionBehavior {
71         SelectLeftTab,
72         SelectRightTab,
73         SelectPreviousTab
74     }
75 
76     final Shape shape() const;
77     final void setShape(Shape shape);
78 
79     final int addTab(ref const(QString) text);
80     final int addTab(ref const(QIcon) icon, ref const(QString) text);
81 
82     final int insertTab(int index, ref const(QString) text);
83     final int insertTab(int index, ref const(QIcon) icon, ref const(QString) text);
84 
85     final void removeTab(int index);
86     final void moveTab(int from, int to);
87 
88     final bool isTabEnabled(int index) const;
89     final void setTabEnabled(int index, bool enabled);
90 
91     final bool isTabVisible(int index) const;
92     final void setTabVisible(int index, bool visible);
93 
94     final QString tabText(int index) const;
95     final void setTabText(int index, ref const(QString) text);
96 
97     final QColor tabTextColor(int index) const;
98     final void setTabTextColor(int index, ref const(QColor) color);
99 
100     final QIcon tabIcon(int index) const;
101     final void setTabIcon(int index, ref const(QIcon) icon);
102 
103     final /+ Qt:: +/qt.core.namespace.TextElideMode elideMode() const;
104     final void setElideMode(/+ Qt:: +/qt.core.namespace.TextElideMode mode);
105 
106 /+ #if QT_CONFIG(tooltip) +/
107     final void setTabToolTip(int index, ref const(QString) tip);
108     final QString tabToolTip(int index) const;
109 /+ #endif
110 
111 #if QT_CONFIG(whatsthis) +/
112     final void setTabWhatsThis(int index, ref const(QString) text);
113     final QString tabWhatsThis(int index) const;
114 /+ #endif +/
115 
116     final void setTabData(int index, ref const(QVariant) data);
117     final QVariant tabData(int index) const;
118 
119     final QRect tabRect(int index) const;
120     final int tabAt(ref const(QPoint) pos) const;
121 
122     final int currentIndex() const;
123     final int count() const;
124 
125     override QSize sizeHint() const;
126     override QSize minimumSizeHint() const;
127 
128     final void setDrawBase(bool drawTheBase);
129     final bool drawBase() const;
130 
131     final QSize iconSize() const;
132     final void setIconSize(ref const(QSize) size);
133 
134     final bool usesScrollButtons() const;
135     final void setUsesScrollButtons(bool useButtons);
136 
137     final bool tabsClosable() const;
138     final void setTabsClosable(bool closable);
139 
140     final void setTabButton(int index, ButtonPosition position, QWidget widget);
141     final QWidget tabButton(int index, ButtonPosition position) const;
142 
143     final SelectionBehavior selectionBehaviorOnRemove() const;
144     final void setSelectionBehaviorOnRemove(SelectionBehavior behavior);
145 
146     final bool expanding() const;
147     final void setExpanding(bool enabled);
148 
149     final bool isMovable() const;
150     final void setMovable(bool movable);
151 
152     final bool documentMode() const;
153     final void setDocumentMode(bool set);
154 
155     final bool autoHide() const;
156     final void setAutoHide(bool hide);
157 
158     final bool changeCurrentOnDrag() const;
159     final void setChangeCurrentOnDrag(bool change);
160 
161     version(QT_NO_ACCESSIBILITY){}else
162     {
163         final QString accessibleTabName(int index) const;
164         final void setAccessibleTabName(int index, ref const(QString) name);
165     }
166 
167 public /+ Q_SLOTS +/:
168     @QSlot final void setCurrentIndex(int index);
169 
170 /+ Q_SIGNALS +/public:
171     @QSignal final void currentChanged(int index);
172     @QSignal final void tabCloseRequested(int index);
173     @QSignal final void tabMoved(int from, int to);
174     @QSignal final void tabBarClicked(int index);
175     @QSignal final void tabBarDoubleClicked(int index);
176 
177 protected:
178     /+ virtual +/ QSize tabSizeHint(int index) const;
179     /+ virtual +/ QSize minimumTabSizeHint(int index) const;
180     /+ virtual +/ void tabInserted(int index);
181     /+ virtual +/ void tabRemoved(int index);
182     /+ virtual +/ void tabLayoutChange();
183 
184     override bool event(QEvent );
185     override void resizeEvent(QResizeEvent );
186     override void showEvent(QShowEvent );
187     override void hideEvent(QHideEvent );
188     override void paintEvent(QPaintEvent );
189     override void mousePressEvent(QMouseEvent );
190     override void mouseMoveEvent(QMouseEvent );
191     override void mouseReleaseEvent(QMouseEvent );
192     override void mouseDoubleClickEvent(QMouseEvent );
193 /+ #if QT_CONFIG(wheelevent) +/
194     override void wheelEvent(QWheelEvent event);
195 /+ #endif +/
196     override void keyPressEvent(QKeyEvent );
197     override void changeEvent(QEvent );
198     override void timerEvent(QTimerEvent event);
199     /+ virtual +/ void initStyleOption(QStyleOptionTab* option, int tabIndex) const;
200 
201     version(QT_NO_ACCESSIBILITY){}else
202     {
203         /+ friend class QAccessibleTabBar; +/
204     }
205 private:
206     /+ Q_DISABLE_COPY(QTabBar) +/
207     /+ Q_DECLARE_PRIVATE(QTabBar) +/
208     /+ Q_PRIVATE_SLOT(d_func(), void _q_scrollTabs())
209     Q_PRIVATE_SLOT(d_func(), void _q_closeTab()) +/
210     mixin(CREATE_CONVENIENCE_WRAPPERS);
211 }
212