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.toolbar; 13 extern(C++): 14 15 import qt.config; 16 import qt.core.coreevent; 17 import qt.core.namespace; 18 import qt.core.object; 19 import qt.core.point; 20 import qt.core.rect; 21 import qt.core.size; 22 import qt.core.string; 23 import qt.gui.action; 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(toolbar); +/ 31 32 33 extern(C++, class) struct QToolBarPrivate; 34 35 36 /// Binding for C++ class [QToolBar](https://doc.qt.io/qt-6/qtoolbar.html). 37 class /+ Q_WIDGETS_EXPORT +/ QToolBar : QWidget 38 { 39 mixin(Q_OBJECT); 40 41 /+ Q_PROPERTY(bool movable READ isMovable WRITE setMovable NOTIFY movableChanged) 42 Q_PROPERTY(Qt::ToolBarAreas allowedAreas READ allowedAreas WRITE setAllowedAreas 43 NOTIFY allowedAreasChanged) 44 Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation 45 NOTIFY orientationChanged) 46 Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize NOTIFY iconSizeChanged) 47 Q_PROPERTY(Qt::ToolButtonStyle toolButtonStyle READ toolButtonStyle WRITE setToolButtonStyle 48 NOTIFY toolButtonStyleChanged) 49 Q_PROPERTY(bool floating READ isFloating) 50 Q_PROPERTY(bool floatable READ isFloatable WRITE setFloatable) +/ 51 52 public: 53 /+ explicit +/this(ref const(QString) title, QWidget parent = null); 54 /+ explicit +/this(QWidget parent = null); 55 ~this(); 56 57 final void setMovable(bool movable); 58 final bool isMovable() const; 59 60 final void setAllowedAreas(/+ Qt:: +/qt.core.namespace.ToolBarAreas areas); 61 final /+ Qt:: +/qt.core.namespace.ToolBarAreas allowedAreas() const; 62 63 pragma(inline, true) final bool isAreaAllowed(/+ Qt:: +/qt.core.namespace.ToolBarArea area) const 64 { return (allowedAreas() & area) == area; } 65 66 final void setOrientation(/+ Qt:: +/qt.core.namespace.Orientation orientation); 67 final /+ Qt:: +/qt.core.namespace.Orientation orientation() const; 68 69 final void clear(); 70 71 /+ using QWidget::addAction; +/ 72 final QAction addAction(ref const(QString) text); 73 final QAction addAction(ref const(QIcon) icon, ref const(QString) text); 74 mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{ 75 final QAction addAction(ref const(QString) text, const(QObject) receiver, const(char)* member); 76 })); 77 mixin(changeWindowsMangling(q{mangleClassesTailConst}, q{ 78 final QAction addAction(ref const(QIcon) icon, ref const(QString) text, 79 const(QObject) receiver, const(char)* member); 80 })); 81 /+ #ifdef Q_CLANG_QDOC 82 template<typename Functor> 83 QAction *addAction(const QString &text, Functor functor); 84 template<typename Functor> 85 QAction *addAction(const QString &text, const QObject *context, Functor functor); 86 template<typename Functor> 87 QAction *addAction(const QIcon &icon, const QString &text, Functor functor); 88 template<typename Functor> 89 QAction *addAction(const QIcon &icon, const QString &text, const QObject *context, Functor functor); 90 #else +/ 91 // addAction(QString): Connect to a QObject slot / functor or function pointer (with context) 92 /+ template<class Obj, typename Func1> +/ 93 /+ inline typename std::enable_if<!std::is_same<const char*, Func1>::value 94 && QtPrivate::IsPointerToTypeDerivedFromQObject<Obj*>::Value, QAction *>::type 95 addAction(const QString &text, const Obj *object, Func1 slot) 96 { 97 QAction *result = addAction(text); 98 connect(result, &QAction::triggered, object, std::move(slot)); 99 return result; 100 } +/ 101 // addAction(QString): Connect to a functor or function pointer (without context) 102 /+ template <typename Func1> +/ 103 /+ inline QAction *addAction(const QString &text, Func1 slot) 104 { 105 QAction *result = addAction(text); 106 connect(result, &QAction::triggered, slot); 107 return result; 108 } +/ 109 // addAction(QString): Connect to a QObject slot / functor or function pointer (with context) 110 /+ template<class Obj, typename Func1> +/ 111 /+ inline typename std::enable_if<!std::is_same<const char*, Func1>::value 112 && QtPrivate::IsPointerToTypeDerivedFromQObject<Obj*>::Value, QAction *>::type 113 addAction(const QIcon &actionIcon, const QString &text, const Obj *object, Func1 slot) 114 { 115 QAction *result = addAction(actionIcon, text); 116 connect(result, &QAction::triggered, object, std::move(slot)); 117 return result; 118 } +/ 119 // addAction(QIcon, QString): Connect to a functor or function pointer (without context) 120 /+ template <typename Func1> +/ 121 /+ inline QAction *addAction(const QIcon &actionIcon, const QString &text, Func1 slot) 122 { 123 QAction *result = addAction(actionIcon, text); 124 connect(result, &QAction::triggered, slot); 125 return result; 126 } +/ 127 /+ #endif +/ // !Q_CLANG_QDOC 128 129 final QAction addSeparator(); 130 final QAction insertSeparator(QAction before); 131 132 final QAction addWidget(QWidget widget); 133 final QAction insertWidget(QAction before, QWidget widget); 134 135 final QRect actionGeometry(QAction action) const; 136 final QAction actionAt(ref const(QPoint) p) const; 137 pragma(inline, true) final QAction actionAt(int ax, int ay) const 138 { auto tmp = QPoint(ax, ay); return actionAt(tmp); } 139 140 final QAction toggleViewAction() const; 141 142 final QSize iconSize() const; 143 final /+ Qt:: +/qt.core.namespace.ToolButtonStyle toolButtonStyle() const; 144 145 final QWidget widgetForAction(QAction action) const; 146 147 final bool isFloatable() const; 148 final void setFloatable(bool floatable); 149 final bool isFloating() const; 150 151 public /+ Q_SLOTS +/: 152 @QSlot final void setIconSize(ref const(QSize) iconSize); 153 @QSlot final void setToolButtonStyle(/+ Qt:: +/qt.core.namespace.ToolButtonStyle toolButtonStyle); 154 155 /+ Q_SIGNALS +/public: 156 @QSignal final void actionTriggered(QAction action); 157 @QSignal final void movableChanged(bool movable); 158 @QSignal final void allowedAreasChanged(/+ Qt:: +/qt.core.namespace.ToolBarAreas allowedAreas); 159 @QSignal final void orientationChanged(/+ Qt:: +/qt.core.namespace.Orientation orientation); 160 @QSignal final void iconSizeChanged(ref const(QSize) iconSize); 161 @QSignal final void toolButtonStyleChanged(/+ Qt:: +/qt.core.namespace.ToolButtonStyle toolButtonStyle); 162 @QSignal final void topLevelChanged(bool topLevel); 163 @QSignal final void visibilityChanged(bool visible); 164 165 protected: 166 override void actionEvent(QActionEvent event); 167 override void changeEvent(QEvent event); 168 override void paintEvent(QPaintEvent event); 169 override bool event(QEvent event); 170 /+ virtual +/ void initStyleOption(QStyleOptionToolBar* option) const; 171 172 173 private: 174 /+ Q_DECLARE_PRIVATE(QToolBar) +/ 175 /+ Q_DISABLE_COPY(QToolBar) +/ 176 /+ Q_PRIVATE_SLOT(d_func(), void _q_toggleView(bool)) 177 Q_PRIVATE_SLOT(d_func(), void _q_updateIconSize(const QSize &)) 178 Q_PRIVATE_SLOT(d_func(), void _q_updateToolButtonStyle(Qt::ToolButtonStyle)) +/ 179 180 /+ friend class QMainWindow; +/ 181 /+ friend class QMainWindowLayout; +/ 182 /+ friend class QToolBarLayout; +/ 183 /+ friend class QToolBarAreaLayout; +/ 184 mixin(CREATE_CONVENIENCE_WRAPPERS); 185 } 186