62 lines
1.6 KiB
C++
62 lines
1.6 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// 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_
|