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.gui.guiapplication; 13 extern(C++): 14 15 import qt.config; 16 import qt.core.bytearray; 17 import qt.core.coreapplication; 18 import qt.core.coreevent; 19 import qt.core.global; 20 import qt.core.list; 21 import qt.core.namespace; 22 import qt.core.nativeinterface; 23 import qt.core.object; 24 import qt.core.point; 25 import qt.core.string; 26 import qt.gui.font; 27 import qt.gui.icon; 28 import qt.gui.inputmethod; 29 import qt.gui.palette; 30 import qt.gui.screen; 31 import qt.gui.stylehints; 32 import qt.gui.windowdefs; 33 import qt.helpers; 34 version(QT_NO_CLIPBOARD){}else 35 import qt.gui.clipboard; 36 version(QT_NO_CURSOR){}else 37 import qt.gui.cursor; 38 39 extern(C++, class) struct QSessionManager; 40 extern(C++, class) struct QGuiApplicationPrivate; 41 extern(C++, class) struct QPlatformNativeInterface; 42 extern(C++, class) struct QPlatformIntegration; 43 44 /+ #if defined(qApp) 45 #undef qApp 46 #endif 47 #define qApp (static_cast<QGuiApplication *>(QCoreApplication::instance())) 48 49 #if defined(qGuiApp) 50 #undef qGuiApp 51 #endif 52 #define qGuiApp (static_cast<QGuiApplication *>(QCoreApplication::instance())) +/ 53 54 /// Binding for C++ class [QGuiApplication](https://doc.qt.io/qt-6/qguiapplication.html). 55 class /+ Q_GUI_EXPORT +/ QGuiApplication : QCoreApplication 56 { 57 mixin(Q_OBJECT); 58 /+ Q_PROPERTY(QIcon windowIcon READ windowIcon WRITE setWindowIcon) 59 Q_PROPERTY(QString applicationDisplayName READ applicationDisplayName 60 WRITE setApplicationDisplayName NOTIFY applicationDisplayNameChanged) 61 Q_PROPERTY(QString desktopFileName READ desktopFileName WRITE setDesktopFileName) 62 Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection 63 NOTIFY layoutDirectionChanged) 64 Q_PROPERTY(QString platformName READ platformName STORED false) 65 Q_PROPERTY(bool quitOnLastWindowClosed READ quitOnLastWindowClosed 66 WRITE setQuitOnLastWindowClosed) 67 Q_PROPERTY(QScreen *primaryScreen READ primaryScreen NOTIFY primaryScreenChanged STORED false) +/ 68 69 public: 70 /+ #ifdef Q_QDOC 71 QGuiApplication(int &argc, char **argv); 72 #else +/ 73 this(ref int argc, char** argv, int = ApplicationFlags); 74 /+ #endif +/ 75 ~this(); 76 77 static void setApplicationDisplayName(ref const(QString) name); 78 static QString applicationDisplayName(); 79 80 static void setDesktopFileName(ref const(QString) name); 81 static QString desktopFileName(); 82 83 static QWindowList allWindows(); 84 static QWindowList topLevelWindows(); 85 static QWindow* topLevelAt(ref const(QPoint) pos); 86 87 static void setWindowIcon(ref const(QIcon) icon); 88 static QIcon windowIcon(); 89 90 static QString platformName(); 91 92 static QWindow* modalWindow(); 93 94 static QWindow* focusWindow(); 95 static QObject focusObject(); 96 97 static QScreen primaryScreen(); 98 static QList!(QScreen) screens(); 99 static QScreen screenAt(ref const(QPoint) point); 100 101 final qreal devicePixelRatio() const; 102 103 version(QT_NO_CURSOR){}else 104 { 105 static QCursor* overrideCursor(); 106 static void setOverrideCursor(ref const(QCursor) ); 107 static void changeOverrideCursor(ref const(QCursor) ); 108 static void restoreOverrideCursor(); 109 } 110 111 static QFont font(); 112 static void setFont(ref const(QFont) ); 113 114 version(QT_NO_CLIPBOARD){}else 115 { 116 static QClipboard clipboard(); 117 } 118 119 static QPalette palette(); 120 static void setPalette(ref const(QPalette) pal); 121 122 static /+ Qt:: +/qt.core.namespace.KeyboardModifiers keyboardModifiers(); 123 static /+ Qt:: +/qt.core.namespace.KeyboardModifiers queryKeyboardModifiers(); 124 static /+ Qt:: +/qt.core.namespace.MouseButtons mouseButtons(); 125 126 static void setLayoutDirection(/+ Qt:: +/qt.core.namespace.LayoutDirection direction); 127 static /+ Qt:: +/qt.core.namespace.LayoutDirection layoutDirection(); 128 129 pragma(inline, true) static bool isRightToLeft() { return layoutDirection() == /+ Qt:: +/qt.core.namespace.LayoutDirection.RightToLeft; } 130 pragma(inline, true) static bool isLeftToRight() { return layoutDirection() == /+ Qt:: +/qt.core.namespace.LayoutDirection.LeftToRight; } 131 132 static QStyleHints styleHints(); 133 static void setDesktopSettingsAware(bool on); 134 static bool desktopSettingsAware(); 135 136 static QInputMethod inputMethod(); 137 138 static QPlatformNativeInterface* platformNativeInterface(); 139 140 mixin(mangleWindows("?platformFunction@QGuiApplication@@SAP6AXXZAEBVQByteArray@@@Z", q{ 141 static QFunctionPointer platformFunction(ref const(QByteArray) function_); 142 })); 143 144 static void setQuitOnLastWindowClosed(bool quit); 145 static bool quitOnLastWindowClosed(); 146 147 static /+ Qt:: +/qt.core.namespace.ApplicationState applicationState(); 148 149 static void setHighDpiScaleFactorRoundingPolicy(/+ Qt:: +/qt.core.namespace.HighDpiScaleFactorRoundingPolicy policy); 150 static /+ Qt:: +/qt.core.namespace.HighDpiScaleFactorRoundingPolicy highDpiScaleFactorRoundingPolicy(); 151 152 static int exec(); 153 override bool notify(QObject , QEvent ); 154 155 version(QT_NO_SESSIONMANAGER){}else 156 { 157 // session management 158 final bool isSessionRestored() const; 159 final QString sessionId() const; 160 final QString sessionKey() const; 161 final bool isSavingSession() const; 162 } 163 164 mixin(QT_DECLARE_NATIVE_INTERFACE_ACCESSOR(q{ValueClass!(QGuiApplication)})); 165 166 static void sync(); 167 /+ Q_SIGNALS +/public: 168 @QSignal final void fontDatabaseChanged(); 169 @QSignal final void screenAdded(QScreen screen); 170 @QSignal final void screenRemoved(QScreen screen); 171 @QSignal final void primaryScreenChanged(QScreen screen); 172 @QSignal final void lastWindowClosed(); 173 @QSignal final void focusObjectChanged(QObject focusObject); 174 @QSignal final void focusWindowChanged(QWindow* focusWindow); 175 @QSignal final void applicationStateChanged(/+ Qt:: +/qt.core.namespace.ApplicationState state); 176 @QSignal final void layoutDirectionChanged(/+ Qt:: +/qt.core.namespace.LayoutDirection direction); 177 version(QT_NO_SESSIONMANAGER){}else 178 { 179 @QSignal final void commitDataRequest(ref QSessionManager sessionManager); 180 @QSignal final void saveStateRequest(ref QSessionManager sessionManager); 181 } 182 @QSignal final void applicationDisplayNameChanged(); 183 /+ #if QT_DEPRECATED_SINCE(6, 0) +/ 184 /+ QT_DEPRECATED_VERSION_X_6_0("Handle QEvent::ApplicationPaletteChange instead") +/ @QSignal final void paletteChanged(ref const(QPalette) pal); 185 /+ QT_DEPRECATED_VERSION_X_6_0("Handle QEvent::ApplicationFontChange instead") +/ @QSignal final void fontChanged(ref const(QFont) font); 186 /+ #endif +/ 187 protected: 188 override bool event(QEvent ); 189 override bool compressEvent(QEvent , QObject receiver, QPostEventList* ); 190 191 this(ref QGuiApplicationPrivate p); 192 193 private: 194 /+ Q_DISABLE_COPY(QGuiApplication) +/ 195 /+ Q_DECLARE_PRIVATE(QGuiApplication) +/ 196 197 /+ Q_PRIVATE_SLOT(d_func(), void _q_updateFocusObject(QObject *object)) +/ 198 199 version(QT_NO_GESTURES){}else 200 { 201 /+ friend class QGestureManager; +/ 202 } 203 /+ friend class QFontDatabasePrivate; +/ 204 /+ friend class QPlatformIntegration; +/ 205 version(QT_NO_SESSIONMANAGER){}else 206 { 207 /+ friend class QPlatformSessionManager; +/ 208 } 209 mixin(CREATE_CONVENIENCE_WRAPPERS); 210 } 211