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.mainwindow; 13 extern(C++): 14 15 import qt.config; 16 import qt.core.bytearray; 17 import qt.core.coreevent; 18 import qt.core.flags; 19 import qt.core.list; 20 import qt.core.namespace; 21 import qt.core.point; 22 import qt.core.size; 23 import qt.core.string; 24 import qt.helpers; 25 import qt.widgets.dockwidget; 26 import qt.widgets.menu; 27 import qt.widgets.menubar; 28 import qt.widgets.statusbar; 29 import qt.widgets.tabwidget; 30 import qt.widgets.toolbar; 31 import qt.widgets.widget; 32 version(QT_NO_CONTEXTMENU){}else 33 import qt.gui.event; 34 35 /+ #if QT_CONFIG(tabwidget) 36 #endif 37 38 QT_REQUIRE_CONFIG(mainwindow); +/ 39 40 41 extern(C++, class) struct QMainWindowPrivate; 42 43 /// Binding for C++ class [QMainWindow](https://doc.qt.io/qt-6/qmainwindow.html). 44 class /+ Q_WIDGETS_EXPORT +/ QMainWindow : QWidget 45 { 46 mixin(Q_OBJECT); 47 48 /+ Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize) 49 Q_PROPERTY(Qt::ToolButtonStyle toolButtonStyle READ toolButtonStyle WRITE setToolButtonStyle) 50 #if QT_CONFIG(dockwidget) 51 Q_PROPERTY(bool animated READ isAnimated WRITE setAnimated) 52 #if QT_CONFIG(tabbar) 53 Q_PROPERTY(bool documentMode READ documentMode WRITE setDocumentMode) 54 #endif // QT_CONFIG(tabbar) 55 #if QT_CONFIG(tabwidget) 56 Q_PROPERTY(QTabWidget::TabShape tabShape READ tabShape WRITE setTabShape) 57 #endif // QT_CONFIG(tabwidget) 58 Q_PROPERTY(bool dockNestingEnabled READ isDockNestingEnabled WRITE setDockNestingEnabled) 59 #endif // QT_CONFIG(dockwidget) 60 Q_PROPERTY(DockOptions dockOptions READ dockOptions WRITE setDockOptions) 61 #if QT_CONFIG(toolbar) 62 Q_PROPERTY(bool unifiedTitleAndToolBarOnMac READ unifiedTitleAndToolBarOnMac 63 WRITE setUnifiedTitleAndToolBarOnMac) 64 #endif +/ 65 66 public: 67 enum DockOption { 68 AnimatedDocks = 0x01, 69 AllowNestedDocks = 0x02, 70 AllowTabbedDocks = 0x04, 71 ForceTabbedDocks = 0x08, // implies AllowTabbedDocks, !AllowNestedDocks 72 VerticalTabs = 0x10, // implies AllowTabbedDocks 73 GroupedDragging = 0x20 // implies AllowTabbedDocks 74 } 75 /+ Q_ENUM(DockOption) +/ 76 /+ Q_DECLARE_FLAGS(DockOptions, DockOption) +/ 77 alias DockOptions = QFlags!(DockOption); /+ Q_FLAG(DockOptions) +/ 78 79 /+ explicit +/this(QWidget parent = null, /+ Qt:: +/qt.core.namespace.WindowFlags flags = /+ Qt:: +/qt.core.namespace.WindowFlags()); 80 ~this(); 81 82 final QSize iconSize() const; 83 final void setIconSize(ref const(QSize) iconSize); 84 85 final /+ Qt:: +/qt.core.namespace.ToolButtonStyle toolButtonStyle() const; 86 final void setToolButtonStyle(/+ Qt:: +/qt.core.namespace.ToolButtonStyle toolButtonStyle); 87 88 /+ #if QT_CONFIG(dockwidget) +/ 89 final bool isAnimated() const; 90 final bool isDockNestingEnabled() const; 91 /+ #endif 92 93 #if QT_CONFIG(tabbar) +/ 94 final bool documentMode() const; 95 final void setDocumentMode(bool enabled); 96 /+ #endif 97 98 #if QT_CONFIG(tabwidget) +/ 99 final QTabWidget.TabShape tabShape() const; 100 final void setTabShape(QTabWidget.TabShape tabShape); 101 final QTabWidget.TabPosition tabPosition(/+ Qt:: +/qt.core.namespace.DockWidgetArea area) const; 102 final void setTabPosition(/+ Qt:: +/qt.core.namespace.DockWidgetAreas areas, QTabWidget.TabPosition tabPosition); 103 /+ #endif +/ // QT_CONFIG(tabwidget) 104 105 final void setDockOptions(DockOptions options); 106 final DockOptions dockOptions() const; 107 108 final bool isSeparator(ref const(QPoint) pos) const; 109 110 /+ #if QT_CONFIG(menubar) +/ 111 final QMenuBar menuBar() const; 112 final void setMenuBar(QMenuBar menubar); 113 114 final QWidget menuWidget() const; 115 final void setMenuWidget(QWidget menubar); 116 /+ #endif 117 118 #if QT_CONFIG(statusbar) +/ 119 final QStatusBar statusBar() const; 120 final void setStatusBar(QStatusBar statusbar); 121 /+ #endif +/ 122 123 final QWidget centralWidget() const; 124 final void setCentralWidget(QWidget widget); 125 126 final QWidget takeCentralWidget(); 127 128 /+ #if QT_CONFIG(dockwidget) +/ 129 final void setCorner(/+ Qt:: +/qt.core.namespace.Corner corner, /+ Qt:: +/qt.core.namespace.DockWidgetArea area); 130 final /+ Qt:: +/qt.core.namespace.DockWidgetArea corner(/+ Qt:: +/qt.core.namespace.Corner corner) const; 131 /+ #endif 132 133 #if QT_CONFIG(toolbar) +/ 134 final void addToolBarBreak(/+ Qt:: +/qt.core.namespace.ToolBarArea area = /+ Qt:: +/qt.core.namespace.ToolBarArea.TopToolBarArea); 135 final void insertToolBarBreak(QToolBar before); 136 137 final void addToolBar(/+ Qt:: +/qt.core.namespace.ToolBarArea area, QToolBar toolbar); 138 final void addToolBar(QToolBar toolbar); 139 final QToolBar addToolBar(ref const(QString) title); 140 final void insertToolBar(QToolBar before, QToolBar toolbar); 141 final void removeToolBar(QToolBar toolbar); 142 final void removeToolBarBreak(QToolBar before); 143 144 final bool unifiedTitleAndToolBarOnMac() const; 145 146 mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{ 147 final /+ Qt:: +/qt.core.namespace.ToolBarArea toolBarArea(const(QToolBar) toolbar) const; 148 })); 149 final bool toolBarBreak(QToolBar toolbar) const; 150 /+ #endif // QT_CONFIG(toolbar) 151 152 #if QT_CONFIG(dockwidget) +/ 153 final void addDockWidget(/+ Qt:: +/qt.core.namespace.DockWidgetArea area, QDockWidget dockwidget); 154 final void addDockWidget(/+ Qt:: +/qt.core.namespace.DockWidgetArea area, QDockWidget dockwidget, 155 /+ Qt:: +/qt.core.namespace.Orientation orientation); 156 final void splitDockWidget(QDockWidget after, QDockWidget dockwidget, 157 /+ Qt:: +/qt.core.namespace.Orientation orientation); 158 /+ #if QT_CONFIG(tabbar) +/ 159 final void tabifyDockWidget(QDockWidget first, QDockWidget second); 160 final QList!(QDockWidget) tabifiedDockWidgets(QDockWidget dockwidget) const; 161 /+ #endif +/ 162 final void removeDockWidget(QDockWidget dockwidget); 163 final bool restoreDockWidget(QDockWidget dockwidget); 164 165 final /+ Qt:: +/qt.core.namespace.DockWidgetArea dockWidgetArea(QDockWidget dockwidget) const; 166 167 final void resizeDocks(ref const(QList!(QDockWidget)) docks, 168 ref const(QList!(int)) sizes, /+ Qt:: +/qt.core.namespace.Orientation orientation); 169 /+ #endif +/ // QT_CONFIG(dockwidget) 170 171 final QByteArray saveState(int version_ = 0) const; 172 final bool restoreState(ref const(QByteArray) state, int version_ = 0); 173 174 /+ #if QT_CONFIG(menu) +/ 175 /+ virtual +/ QMenu createPopupMenu(); 176 /+ #endif +/ 177 178 public /+ Q_SLOTS +/: 179 /+ #if QT_CONFIG(dockwidget) +/ 180 @QSlot final void setAnimated(bool enabled); 181 @QSlot final void setDockNestingEnabled(bool enabled); 182 /+ #endif 183 #if QT_CONFIG(toolbar) +/ 184 @QSlot final void setUnifiedTitleAndToolBarOnMac(bool set); 185 /+ #endif +/ 186 187 /+ Q_SIGNALS +/public: 188 @QSignal final void iconSizeChanged(ref const(QSize) iconSize); 189 @QSignal final void toolButtonStyleChanged(/+ Qt:: +/qt.core.namespace.ToolButtonStyle toolButtonStyle); 190 /+ #if QT_CONFIG(dockwidget) +/ 191 @QSignal final void tabifiedDockWidgetActivated(QDockWidget dockWidget); 192 /+ #endif +/ 193 194 protected: 195 version(QT_NO_CONTEXTMENU){}else 196 { 197 override void contextMenuEvent(QContextMenuEvent event); 198 } 199 override bool event(QEvent event); 200 201 private: 202 /+ Q_DECLARE_PRIVATE(QMainWindow) +/ 203 /+ Q_DISABLE_COPY(QMainWindow) +/ 204 mixin(CREATE_CONVENIENCE_WRAPPERS); 205 } 206 /+pragma(inline, true) QFlags!(QMainWindow.DockOptions.enum_type) operator |(QMainWindow.DockOptions.enum_type f1, QMainWindow.DockOptions.enum_type f2)/+noexcept+/{return QFlags!(QMainWindow.DockOptions.enum_type)(f1)|f2;}+/ 207 /+pragma(inline, true) QFlags!(QMainWindow.DockOptions.enum_type) operator |(QMainWindow.DockOptions.enum_type f1, QFlags!(QMainWindow.DockOptions.enum_type) f2)/+noexcept+/{return f2|f1;}+/ 208 /+pragma(inline, true) QFlags!(QMainWindow.DockOptions.enum_type) operator &(QMainWindow.DockOptions.enum_type f1, QMainWindow.DockOptions.enum_type f2)/+noexcept+/{return QFlags!(QMainWindow.DockOptions.enum_type)(f1)&f2;}+/ 209 /+pragma(inline, true) QFlags!(QMainWindow.DockOptions.enum_type) operator &(QMainWindow.DockOptions.enum_type f1, QFlags!(QMainWindow.DockOptions.enum_type) f2)/+noexcept+/{return f2&f1;}+/ 210 /+pragma(inline, true) void operator +(QMainWindow.DockOptions.enum_type f1, QMainWindow.DockOptions.enum_type f2)/+noexcept+/;+/ 211 /+pragma(inline, true) void operator +(QMainWindow.DockOptions.enum_type f1, QFlags!(QMainWindow.DockOptions.enum_type) f2)/+noexcept+/;+/ 212 /+pragma(inline, true) void operator +(int f1, QFlags!(QMainWindow.DockOptions.enum_type) f2)/+noexcept+/;+/ 213 /+pragma(inline, true) void operator -(QMainWindow.DockOptions.enum_type f1, QMainWindow.DockOptions.enum_type f2)/+noexcept+/;+/ 214 /+pragma(inline, true) void operator -(QMainWindow.DockOptions.enum_type f1, QFlags!(QMainWindow.DockOptions.enum_type) f2)/+noexcept+/;+/ 215 /+pragma(inline, true) void operator -(int f1, QFlags!(QMainWindow.DockOptions.enum_type) f2)/+noexcept+/;+/ 216 /+pragma(inline, true) QIncompatibleFlag operator |(QMainWindow.DockOptions.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/ 217 /+pragma(inline, true) void operator +(int f1, QMainWindow.DockOptions.enum_type f2)/+noexcept+/;+/ 218 /+pragma(inline, true) void operator +(QMainWindow.DockOptions.enum_type f1, int f2)/+noexcept+/;+/ 219 /+pragma(inline, true) void operator -(int f1, QMainWindow.DockOptions.enum_type f2)/+noexcept+/;+/ 220 /+pragma(inline, true) void operator -(QMainWindow.DockOptions.enum_type f1, int f2)/+noexcept+/;+/ 221 222 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QMainWindow::DockOptions) +/