///////////////////////////////////////////////////////////////////////////// // Name: wx/qt/evtloop.h // Author: Peter Most, Javier Torres, Mariano Reingart, Sean D'Epagnier // Copyright: (c) 2010 wxWidgets dev team // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_QT_EVTLOOP_H_ #define _WX_QT_EVTLOOP_H_ class wxQtIdleTimer; class QEventLoop; class WXDLLIMPEXP_CORE wxQtEventLoopBase : public wxEventLoopBase { public: wxQtEventLoopBase(); ~wxQtEventLoopBase(); virtual int DoRun() override; virtual void DoStop(int rc) override; virtual bool Pending() const override; virtual bool Dispatch() override; virtual int DispatchTimeout(unsigned long timeout) override; virtual void WakeUp() override; virtual void DoYieldFor(long eventsToProcess) override; void ScheduleIdleCheck(); // Non-blocking Dispatch() version: // Returns true if an event was processed, otherwise returns false. // This function is added to address code like: // // while (evtloop->Pending()) // evtloop->Dispatch(); // // which can simply replaced with: // // while (evtloop->QtDispatch()) // ; bool QtDispatch() const; private: QEventLoop *m_qtEventLoop; wxObjectDataPtr<wxQtIdleTimer> m_qtIdleTimer; wxDECLARE_NO_COPY_CLASS(wxQtEventLoopBase); }; #if wxUSE_GUI class WXDLLIMPEXP_CORE wxGUIEventLoop : public wxQtEventLoopBase { public: wxGUIEventLoop(); }; #endif // wxUSE_GUI #endif // _WX_QT_EVTLOOP_H_