#define wxTIMER_ONE_SHOT true
class WXDLLIMPEXP_FWD_BASE wxTimerImpl;
+class WXDLLIMPEXP_FWD_BASE wxTimerEvent;
+
+// timer event type
+wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_BASE, wxEVT_TIMER, wxTimerEvent);
// the interface of wxTimer class
class WXDLLIMPEXP_BASE wxTimer : public wxEvtHandler
// timer if it is already running
virtual bool Start(int milliseconds = -1, bool oneShot = false);
+ // start the timer for one iteration only, this is just a simple wrapper
+ // for Start()
+ bool StartOnce(int milliseconds = -1) { return Start(milliseconds, true); }
+
// stop the timer, does nothing if the timer is not running
virtual void Stop();
wxTimerImpl *m_impl;
- DECLARE_NO_COPY_CLASS(wxTimer)
+ wxDECLARE_NO_COPY_CLASS(wxTimer);
};
// ----------------------------------------------------------------------------
private:
wxTimer& m_timer;
- DECLARE_NO_COPY_CLASS(wxTimerRunner)
+ wxDECLARE_NO_COPY_CLASS(wxTimerRunner);
};
// ----------------------------------------------------------------------------
class WXDLLIMPEXP_BASE wxTimerEvent : public wxEvent
{
public:
+ wxTimerEvent()
+ : wxEvent(wxID_ANY, wxEVT_TIMER) { m_timer=NULL; }
+
wxTimerEvent(wxTimer& timer)
: wxEvent(timer.GetId(), wxEVT_TIMER),
- m_timer(timer)
+ m_timer(&timer)
{
SetEventObject(timer.GetOwner());
}
// accessors
- int GetInterval() const { return m_timer.GetInterval(); }
- wxTimer& GetTimer() const { return m_timer; }
+ int GetInterval() const { return m_timer->GetInterval(); }
+ wxTimer& GetTimer() const { return *m_timer; }
// implement the base class pure virtual
virtual wxEvent *Clone() const { return new wxTimerEvent(*this); }
+ virtual wxEventCategory GetEventCategory() const { return wxEVT_CATEGORY_TIMER; }
private:
- wxTimer& m_timer;
+ wxTimer* m_timer;
- DECLARE_ABSTRACT_CLASS(wxTimerEvent)
- DECLARE_NO_ASSIGN_CLASS(wxTimerEvent)
+ DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxTimerEvent)
};
typedef void (wxEvtHandler::*wxTimerEventFunction)(wxTimerEvent&);
#define wxTimerEventHandler(func) \
- (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxTimerEventFunction, &func)
+ wxEVENT_HANDLER_CAST(wxTimerEventFunction, func)
#define EVT_TIMER(timerid, func) \
wx__DECLARE_EVT1(wxEVT_TIMER, timerid, wxTimerEventHandler(func))