1 /****************************************************************************
2 **
3 ** DQt - D bindings for the Qt Toolkit
4 **
5 ** GNU Lesser General Public License Usage
6 ** This file may be used under the terms of the GNU Lesser
7 ** General Public License version 3 as published by the Free Software
8 ** Foundation and appearing in the file LICENSE.LGPL3 included in the
9 ** packaging of this file. Please review the following information to
10 ** ensure the GNU Lesser General Public License version 3 requirements
11 ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
12 **
13 ****************************************************************************/
14 module qt.core.eventloop;
15 extern(C++):
16 
17 import qt.config;
18 import qt.core.coreevent;
19 import qt.core.flags;
20 import qt.core.object;
21 import qt.core.thread;
22 import qt.helpers;
23 
24 extern(C++, class) struct QEventLoopPrivate;
25 
26 class /+ Q_CORE_EXPORT +/ QEventLoop : QObject
27 {
28     mixin(Q_OBJECT);
29     /+ Q_DECLARE_PRIVATE(QEventLoop) +/
30 
31 public:
32     /+ explicit +/this(QObject parent = null);
33     ~this();
34 
35     enum ProcessEventsFlag {
36         AllEvents = 0x00,
37         ExcludeUserInputEvents = 0x01,
38         ExcludeSocketNotifiers = 0x02,
39         WaitForMoreEvents = 0x04,
40         X11ExcludeTimers = 0x08,
41         EventLoopExec = 0x20,
42         DialogExec = 0x40
43     }
44     /+ Q_DECLARE_FLAGS(ProcessEventsFlags, ProcessEventsFlag) +/
45 alias ProcessEventsFlags = QFlags!(ProcessEventsFlag);
46     final bool processEvents(ProcessEventsFlags flags = ProcessEventsFlag.AllEvents);
47     final void processEvents(ProcessEventsFlags flags, int maximumTime);
48 
49     final int exec(ProcessEventsFlags flags = ProcessEventsFlag.AllEvents);
50     final void exit(int returnCode = 0);
51     final bool isRunning() const;
52 
53     final void wakeUp();
54 
55     override bool event(QEvent event);
56 
57 public /+ Q_SLOTS +/:
58     @QSlot final void quit();
59 }
60 /+pragma(inline, true) QFlags!(QEventLoop.ProcessEventsFlags.enum_type) operator |(QEventLoop.ProcessEventsFlags.enum_type f1, QEventLoop.ProcessEventsFlags.enum_type f2)/+noexcept+/{return QFlags!(QEventLoop.ProcessEventsFlags.enum_type)(f1)|f2;}+/
61 /+pragma(inline, true) QFlags!(QEventLoop.ProcessEventsFlags.enum_type) operator |(QEventLoop.ProcessEventsFlags.enum_type f1, QFlags!(QEventLoop.ProcessEventsFlags.enum_type) f2)/+noexcept+/{return f2|f1;}+/
62 /+pragma(inline, true) QIncompatibleFlag operator |(QEventLoop.ProcessEventsFlags.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/
63 
64 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QEventLoop::ProcessEventsFlags) +/
65 
66 extern(C++, class) struct QEventLoopLockerPrivate;
67 
68 extern(C++, class) struct /+ Q_CORE_EXPORT +/ QEventLoopLocker
69 {
70 public:
71     @disable this();
72     pragma(mangle, defaultConstructorMangling(__traits(identifier, typeof(this))))
73     ref typeof(this) rawConstructor();
74     static typeof(this) create()
75     {
76         typeof(this) r = typeof(this).init;
77         r.rawConstructor();
78         return r;
79     }
80 
81     /+ explicit +/this(QEventLoop loop);
82     /+ explicit +/this(QThread thread);
83     ~this();
84 
85 private:
86     /+ Q_DISABLE_COPY(QEventLoopLocker) +/
87 @disable this(this);
88 /+this(ref const(QEventLoopLocker));+//+ref QEventLoopLocker operator =(ref const(QEventLoopLocker));+/    QEventLoopLockerPrivate* d_ptr;
89 }
90