// Name: timer.h
// Purpose: interface of wxTimer
// Author: wxWidgets team
-// RCS-ID: $Id$
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
+// generate notifications periodically until the timer is stopped (default)
+#define wxTIMER_CONTINUOUS false
+
+// only send the notification once and then stop the timer
+#define wxTIMER_ONE_SHOT true
+
+wxEventType wxEVT_TIMER;
+
+
/**
@class wxTimer
If non-@NULL this is the event handler which will receive the
timer events (see wxTimerEvent) when the timer is running.
*/
- wxEvtHandler GetOwner() const;
+ wxEvtHandler* GetOwner() const;
/**
- Returns @true if the timer is one shot, i.e. if it will stop after firing
+ Returns @true if the timer is one shot, i.e.\ if it will stop after firing
the first notification automatically.
*/
bool IsOneShot() const;
used and SetOwner() wasn't called.
Perform whatever action which is to be taken periodically here.
+
+ Notice that throwing exceptions from this method is currently not
+ supported, use event-based timer handling approach if an exception can
+ be thrown while handling timer notifications.
*/
virtual void Notify();
To make your code more readable you may also use the following symbolic constants:
- wxTIMER_CONTINUOUS: Start a normal, continuously running, timer
- wxTIMER_ONE_SHOT: Start a one shot timer
+ Alternatively, use StartOnce().
+
If the timer was already running, it will be stopped by this method before
restarting it.
*/
- virtual bool Start(int milliseconds = -1, bool oneShot = false);
+ virtual bool Start(int milliseconds = -1, bool oneShot = wxTIMER_CONTINUOUS);
+
+ /**
+ Starts the timer for a once-only notification.
+
+ This is a simple wrapper for Start() with @c wxTIMER_ONE_SHOT parameter.
+
+ @since 2.9.5
+ */
+ bool StartOnce(int milliseconds = -1);
/**
Stops the timer.
};
+/**
+ @class wxTimerRunner
+
+ Starts the timer in its ctor, stops in the dtor.
+*/
+class wxTimerRunner
+{
+public:
+ wxTimerRunner(wxTimer& timer);
+ wxTimerRunner(wxTimer& timer, int milli, bool oneShot = false);
+ void Start(int milli, bool oneShot = false);
+ ~wxTimerRunner();
+};
/**
@class wxTimerEvent
- wxTimerEvent object is passed to the event handler of timer events.
+ wxTimerEvent object is passed to the event handler of timer events
+ (see wxTimer::SetOwner).
For example:
private:
wxTimer m_timer;
+ wxDECLARE_EVENT_TABLE();
};
- BEGIN_EVENT_TABLE(MyFrame, wxFrame)
+ wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_TIMER(TIMER_ID, MyFrame::OnTimer)
- END_EVENT_TABLE()
+ wxEND_EVENT_TABLE()
MyFrame::MyFrame()
: m_timer(this, TIMER_ID)
class wxTimerEvent : public wxEvent
{
public:
+ wxTimerEvent();
+ wxTimerEvent(wxTimer& timer);
+
/**
Returns the interval of the timer which generated this event.
*/
/**
Returns the timer object which generated this event.
*/
- wxTimer GetTimer() const;
+ wxTimer& GetTimer() const;
};