12f5e1e78f
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54387 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
183 lines
4.9 KiB
Objective-C
183 lines
4.9 KiB
Objective-C
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: timer.h
|
|
// Purpose: interface of wxTimer
|
|
// Author: wxWidgets team
|
|
// RCS-ID: $Id$
|
|
// Licence: wxWindows license
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
/**
|
|
@class wxTimer
|
|
|
|
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.
|
|
|
|
@note A timer can only be used from the main thread.
|
|
|
|
@library{wxbase}
|
|
@category{misc}
|
|
|
|
@see 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() const;
|
|
|
|
/**
|
|
Returns the current interval for the timer (in milliseconds).
|
|
*/
|
|
int GetInterval() const;
|
|
|
|
/**
|
|
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() const;
|
|
|
|
/**
|
|
Returns @true if the timer is one shot, i.e. if it will stop after firing the
|
|
first notification automatically.
|
|
*/
|
|
bool IsOneShot() const;
|
|
|
|
/**
|
|
Returns @true if the timer is running, @false if it is stopped.
|
|
*/
|
|
bool IsRunning() const;
|
|
|
|
/**
|
|
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 @a owner object. When the timer is
|
|
running, the owner will receive @ref overview_wxtimerevent "timer events" with
|
|
id equal to @a id specified here.
|
|
*/
|
|
void SetOwner(wxEvtHandler* owner, int id = -1);
|
|
|
|
/**
|
|
(Re)starts the timer. If @a 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 @a 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
|
|
|
|
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}
|
|
|
|
@see wxTimer
|
|
*/
|
|
class wxTimerEvent : public wxEvent
|
|
{
|
|
public:
|
|
/**
|
|
Returns the interval of the timer which generated this event.
|
|
*/
|
|
int GetInterval() const;
|
|
|
|
/**
|
|
Returns the timer object which generated this event.
|
|
*/
|
|
wxTimer GetTimer() const;
|
|
};
|
|
|