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.tabwidget;
13 extern(C++):
14 
15 import qt.config;
16 import qt.core.coreevent;
17 import qt.core.namespace;
18 import qt.core.size;
19 import qt.core.string;
20 import qt.gui.event;
21 import qt.gui.icon;
22 import qt.helpers;
23 import qt.widgets.styleoption;
24 import qt.widgets.tabbar;
25 import qt.widgets.widget;
26 
27 /+ QT_REQUIRE_CONFIG(tabwidget); +/
28 
29 
30 extern(C++, class) struct QTabWidgetPrivate;
31 
32 /// Binding for C++ class [QTabWidget](https://doc.qt.io/qt-6/qtabwidget.html).
33 class /+ Q_WIDGETS_EXPORT +/ QTabWidget : QWidget
34 {
35     mixin(Q_OBJECT);
36     /+ Q_PROPERTY(TabPosition tabPosition READ tabPosition WRITE setTabPosition)
37     Q_PROPERTY(TabShape tabShape READ tabShape WRITE setTabShape)
38     Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentChanged)
39     Q_PROPERTY(int count READ count)
40     Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize)
41     Q_PROPERTY(Qt::TextElideMode elideMode READ elideMode WRITE setElideMode)
42     Q_PROPERTY(bool usesScrollButtons READ usesScrollButtons WRITE setUsesScrollButtons)
43     Q_PROPERTY(bool documentMode READ documentMode WRITE setDocumentMode)
44     Q_PROPERTY(bool tabsClosable READ tabsClosable WRITE setTabsClosable)
45     Q_PROPERTY(bool movable READ isMovable WRITE setMovable)
46     Q_PROPERTY(bool tabBarAutoHide READ tabBarAutoHide WRITE setTabBarAutoHide) +/
47 
48 public:
49     /+ explicit +/this(QWidget parent = null);
50     ~this();
51 
52     final int addTab(QWidget widget, ref const(QString) );
53     final int addTab(QWidget widget, ref const(QIcon) icon, ref const(QString) label);
54 
55     final int insertTab(int index, QWidget widget, ref const(QString) );
56     final int insertTab(int index, QWidget widget, ref const(QIcon) icon, ref const(QString) label);
57 
58     final void removeTab(int index);
59 
60     final bool isTabEnabled(int index) const;
61     final void setTabEnabled(int index, bool enabled);
62 
63     final bool isTabVisible(int index) const;
64     final void setTabVisible(int index, bool visible);
65 
66     final QString tabText(int index) const;
67     final void setTabText(int index, ref const(QString) text);
68 
69     final QIcon tabIcon(int index) const;
70     final void setTabIcon(int index, ref const(QIcon)  icon);
71 
72 /+ #if QT_CONFIG(tooltip) +/
73     final void setTabToolTip(int index, ref const(QString)  tip);
74     final QString tabToolTip(int index) const;
75 /+ #endif
76 
77 #if QT_CONFIG(whatsthis) +/
78     final void setTabWhatsThis(int index, ref const(QString) text);
79     final QString tabWhatsThis(int index) const;
80 /+ #endif +/
81 
82     final int currentIndex() const;
83     final QWidget currentWidget() const;
84     final QWidget widget(int index) const;
85     mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{
86     final int indexOf(const(QWidget) widget) const;
87     }));
88     final int count() const;
89 
90     enum TabPosition { North, South, West, East }
91     /+ Q_ENUM(TabPosition) +/
92     final TabPosition tabPosition() const;
93     final void setTabPosition(TabPosition position);
94 
95     final bool tabsClosable() const;
96     final void setTabsClosable(bool closeable);
97 
98     final bool isMovable() const;
99     final void setMovable(bool movable);
100 
101     enum TabShape { Rounded, Triangular }
102     /+ Q_ENUM(TabShape) +/
103     final TabShape tabShape() const;
104     final void setTabShape(TabShape s);
105 
106     override QSize sizeHint() const;
107     override QSize minimumSizeHint() const;
108     override int heightForWidth(int width) const;
109     override bool hasHeightForWidth() const;
110 
111     final void setCornerWidget(QWidget  w, /+ Qt:: +/qt.core.namespace.Corner corner = /+ Qt:: +/qt.core.namespace.Corner.TopRightCorner);
112     final QWidget  cornerWidget(/+ Qt:: +/qt.core.namespace.Corner corner = /+ Qt:: +/qt.core.namespace.Corner.TopRightCorner) const;
113 
114     final /+ Qt:: +/qt.core.namespace.TextElideMode elideMode() const;
115     final void setElideMode(/+ Qt:: +/qt.core.namespace.TextElideMode mode);
116 
117     final QSize iconSize() const;
118     final void setIconSize(ref const(QSize) size);
119 
120     final bool usesScrollButtons() const;
121     final void setUsesScrollButtons(bool useButtons);
122 
123     final bool documentMode() const;
124     final void setDocumentMode(bool set);
125 
126     final bool tabBarAutoHide() const;
127     final void setTabBarAutoHide(bool enabled);
128 
129     final void clear();
130 
131     final QTabBar tabBar() const;
132 
133 public /+ Q_SLOTS +/:
134     @QSlot final void setCurrentIndex(int index);
135     @QSlot final void setCurrentWidget(QWidget widget);
136 
137 /+ Q_SIGNALS +/public:
138     @QSignal final void currentChanged(int index);
139     @QSignal final void tabCloseRequested(int index);
140     @QSignal final void tabBarClicked(int index);
141     @QSignal final void tabBarDoubleClicked(int index);
142 
143 protected:
144     /+ virtual +/ void tabInserted(int index);
145     /+ virtual +/ void tabRemoved(int index);
146 
147     override void showEvent(QShowEvent );
148     override void resizeEvent(QResizeEvent );
149     override void keyPressEvent(QKeyEvent );
150     override void paintEvent(QPaintEvent );
151     final void setTabBar(QTabBar );
152     override void changeEvent(QEvent );
153     override bool event(QEvent );
154     /+ virtual +/ void initStyleOption(QStyleOptionTabWidgetFrame* option) const;
155 
156 
157 private:
158     /+ Q_DECLARE_PRIVATE(QTabWidget) +/
159     /+ Q_DISABLE_COPY(QTabWidget) +/
160     /+ Q_PRIVATE_SLOT(d_func(), void _q_showTab(int))
161     Q_PRIVATE_SLOT(d_func(), void _q_removeTab(int))
162     Q_PRIVATE_SLOT(d_func(), void _q_tabMoved(int, int)) +/
163     final void setUpLayout(bool /+ = false +/);
164     mixin(CREATE_CONVENIENCE_WRAPPERS);
165 }
166