--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: timer.h
+// Purpose: documentation for wxTimer class
+// Author: wxWidgets team
+// RCS-ID: $Id$
+// Licence: wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+/**
+ @class wxTimer
+ @wxheader{timer.h}
+
+ The wxTimer class allows you to execute code at specified intervals. Its
+ precision is platform-dependent, but in general will not be better than 1ms nor
+ worse than 1s.
+
+ There are three different ways to use this class:
+
+ You may derive a new class from wxTimer and override the
+ wxTimer::Notify member to perform the required action.
+ Or you may redirect the notifications to any
+ wxEvtHandler derived object by using the non-default
+ constructor or wxTimer::SetOwner. Then use the @c EVT_TIMER
+ macro to connect it to the event handler which will receive
+ wxTimerEvent notifications.
+ Or you may use a derived class and the @c EVT_TIMER
+ macro to connect it to an event handler defined in the derived class.
+ If the default constructor is used, the timer object will be its
+ own owner object, since it is derived from wxEvtHandler.
+
+ In any case, you must start the timer with wxTimer::Start
+ after constructing it before it actually starts sending notifications. It can
+ be stopped later with wxTimer::Stop.
+
+ @b Note: A timer can only be used from the main thread.
+
+ @library{wxbase}
+ @category{misc}
+
+ @seealso
+ wxStopWatch
+*/
+class wxTimer : public wxEvtHandler
+{
+public:
+ //@{
+ /**
+ Creates a timer and associates it with @e owner. Please see
+ SetOwner() for the description of parameters.
+ */
+ wxTimer();
+ wxTimer(wxEvtHandler * owner, int id = -1);
+ //@}
+
+ /**
+ Destructor. Stops the timer if it is running.
+ */
+ ~wxTimer();
+
+ /**
+ Returns the ID of the events generated by this timer.
+ */
+ int GetId();
+
+ /**
+ Returns the current interval for the timer (in milliseconds).
+ */
+ int GetInterval();
+
+ /**
+ Returns the current @e owner of the timer.
+ If non-@NULL this is the event handler which will receive the
+ @ref overview_wxtimerevent "timer events" when the timer is running.
+ */
+ wxEvtHandler GetOwner();
+
+ /**
+ Returns @true if the timer is one shot, i.e. if it will stop after firing the
+ first notification automatically.
+ */
+ bool IsOneShot();
+
+ /**
+ Returns @true if the timer is running, @false if it is stopped.
+ */
+ bool IsRunning();
+
+ /**
+ This member should be overridden by the user if the default constructor was
+ used and SetOwner() wasn't called.
+
+ Perform whatever action which is to be taken periodically here.
+ */
+ void Notify();
+
+ /**
+ Associates the timer with the given @e owner object. When the timer is
+ running, the owner will receive @ref overview_wxtimerevent "timer events" with
+ id equal to @e id specified here.
+ */
+ void SetOwner(wxEvtHandler * owner, int id = -1);
+
+ /**
+ (Re)starts the timer. If @e milliseconds parameter is -1 (value by default),
+ the previous value is used. Returns @false if the timer could not be started,
+ @true otherwise (in MS Windows timers are a limited resource).
+
+ If @e oneShot is @false (the default), the Notify()
+ function will be called repeatedly until the timer is stopped. If @true,
+ it will be called only once and the timer will stop automatically. 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
+
+ If the timer was already running, it will be stopped by this method before
+ restarting it.
+ */
+ bool Start(int milliseconds = -1, bool oneShot = @false);
+
+ /**
+ Stops the timer.
+ */
+ void Stop();
+};
+
+
+/**
+ @class wxTimerEvent
+ @wxheader{timer.h}
+
+ wxTimerEvent object is passed to the event handler of timer events.
+
+ For example:
+
+ @code
+ class MyFrame : public wxFrame
+ {
+ public:
+ ...
+ void OnTimer(wxTimerEvent& event);
+
+ private:
+ wxTimer m_timer;
+ };
+
+ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
+ EVT_TIMER(TIMER_ID, MyFrame::OnTimer)
+ END_EVENT_TABLE()
+
+ MyFrame::MyFrame()
+ : m_timer(this, TIMER_ID)
+ {
+ m_timer.Start(1000); // 1 second interval
+ }
+
+ void MyFrame::OnTimer(wxTimerEvent& event)
+ {
+ // do whatever you want to do every second here
+ }
+ @endcode
+
+ @library{wxbase}
+ @category{events}
+
+ @seealso
+ wxTimer
+*/
+class wxTimerEvent : public wxEvent
+{
+public:
+ /**
+ Returns the interval of the timer which generated this event.
+ */
+ int GetInterval();
+
+ /**
+ Returns the timer object which generated this event.
+ */
+ wxTimer GetTimer();
+};