]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/timer.h
Must clear property selection in wxPGProperty::SetChoices() or risk a crash
[wxWidgets.git] / interface / wx / timer.h
CommitLineData
23324ae1
FM
1/////////////////////////////////////////////////////////////////////////////
2// Name: timer.h
e54c96f1 3// Purpose: interface of wxTimer
23324ae1
FM
4// Author: wxWidgets team
5// RCS-ID: $Id$
6// Licence: wxWindows license
7/////////////////////////////////////////////////////////////////////////////
8
9/**
10 @class wxTimer
7c913512 11
78e87bf7
FM
12 The wxTimer class allows you to execute code at specified intervals.
13 Its precision is platform-dependent, but in general will not be better than
14 @c 1ms nor worse than @c 1s.
7c913512 15
23324ae1 16 There are three different ways to use this class:
7c913512 17
78e87bf7
FM
18 - You may derive a new class from wxTimer and override the
19 wxTimer::Notify member to perform the required action.
20 - You may redirect the notifications to any wxEvtHandler derived object by
21 using the non-default constructor or wxTimer::SetOwner.
22 Then use the @c EVT_TIMER macro to connect it to the event handler which
23 will receive wxTimerEvent notifications.
24 - You may use a derived class and the @c EVT_TIMER macro to connect it to
25 an event handler defined in the derived class. If the default constructor
26 is used, the timer object will be its own owner object, since it is
27 derived from wxEvtHandler.
28
29 In any case, you must start the timer with wxTimer::Start() after constructing
30 it before it actually starts sending notifications.
31 It can be stopped later with wxTimer::Stop().
7c913512 32
cdbcf4c2 33 @note A timer can only be used from the main thread.
7c913512 34
23324ae1
FM
35 @library{wxbase}
36 @category{misc}
7c913512 37
e54c96f1 38 @see wxStopWatch
23324ae1
FM
39*/
40class wxTimer : public wxEvtHandler
41{
42public:
23324ae1 43 /**
78e87bf7
FM
44 Default constructor.
45 If you use it to construct the object and don't call SetOwner() later,
46 you must override Notify() method to process the notifications.
23324ae1
FM
47 */
48 wxTimer();
78e87bf7
FM
49
50 /**
51 Creates a timer and associates it with @a owner.
52 Please see SetOwner() for the description of parameters.
53 */
4cc4bfaf 54 wxTimer(wxEvtHandler* owner, int id = -1);
23324ae1
FM
55
56 /**
57 Destructor. Stops the timer if it is running.
58 */
adaaa686 59 virtual ~wxTimer();
23324ae1
FM
60
61 /**
62 Returns the ID of the events generated by this timer.
63 */
328f5751 64 int GetId() const;
23324ae1
FM
65
66 /**
67 Returns the current interval for the timer (in milliseconds).
68 */
328f5751 69 int GetInterval() const;
23324ae1
FM
70
71 /**
72 Returns the current @e owner of the timer.
78e87bf7 73
7c913512 74 If non-@NULL this is the event handler which will receive the
78e87bf7 75 timer events (see wxTimerEvent) when the timer is running.
23324ae1 76 */
5267aefd 77 wxEvtHandler* GetOwner() const;
23324ae1
FM
78
79 /**
78e87bf7
FM
80 Returns @true if the timer is one shot, i.e. if it will stop after firing
81 the first notification automatically.
23324ae1 82 */
328f5751 83 bool IsOneShot() const;
23324ae1
FM
84
85 /**
86 Returns @true if the timer is running, @false if it is stopped.
87 */
328f5751 88 bool IsRunning() const;
23324ae1
FM
89
90 /**
91 This member should be overridden by the user if the default constructor was
92 used and SetOwner() wasn't called.
78e87bf7 93
23324ae1 94 Perform whatever action which is to be taken periodically here.
7d491133
VZ
95
96 Notice that throwing exceptions from this method is currently not
97 supported, use event-based timer handling approach if an exception can
98 be thrown while handling timer notifications.
23324ae1 99 */
adaaa686 100 virtual void Notify();
23324ae1
FM
101
102 /**
78e87bf7
FM
103 Associates the timer with the given @a owner object.
104
105 When the timer is running, the owner will receive timer events (see wxTimerEvent)
106 with @a id equal to @a id specified here.
23324ae1 107 */
4cc4bfaf 108 void SetOwner(wxEvtHandler* owner, int id = -1);
23324ae1
FM
109
110 /**
4cc4bfaf 111 (Re)starts the timer. If @a milliseconds parameter is -1 (value by default),
23324ae1
FM
112 the previous value is used. Returns @false if the timer could not be started,
113 @true otherwise (in MS Windows timers are a limited resource).
3c4f71cc 114
78e87bf7
FM
115 If @a oneShot is @false (the default), the Notify() function will be called
116 repeatedly until the timer is stopped.
117 If @true, it will be called only once and the timer will stop automatically.
3c4f71cc 118
78e87bf7
FM
119 To make your code more readable you may also use the following symbolic constants:
120 - wxTIMER_CONTINUOUS: Start a normal, continuously running, timer
121 - wxTIMER_ONE_SHOT: Start a one shot timer
23324ae1
FM
122 If the timer was already running, it will be stopped by this method before
123 restarting it.
124 */
adaaa686 125 virtual bool Start(int milliseconds = -1, bool oneShot = false);
23324ae1
FM
126
127 /**
128 Stops the timer.
129 */
adaaa686 130 virtual void Stop();
23324ae1
FM
131};
132
133
e54c96f1 134
23324ae1
FM
135/**
136 @class wxTimerEvent
7c913512 137
3051a44a
FM
138 wxTimerEvent object is passed to the event handler of timer events
139 (see wxTimer::SetOwner).
7c913512 140
23324ae1 141 For example:
7c913512 142
23324ae1
FM
143 @code
144 class MyFrame : public wxFrame
145 {
146 public:
147 ...
148 void OnTimer(wxTimerEvent& event);
7c913512 149
23324ae1
FM
150 private:
151 wxTimer m_timer;
152 };
7c913512 153
23324ae1
FM
154 BEGIN_EVENT_TABLE(MyFrame, wxFrame)
155 EVT_TIMER(TIMER_ID, MyFrame::OnTimer)
156 END_EVENT_TABLE()
7c913512 157
23324ae1
FM
158 MyFrame::MyFrame()
159 : m_timer(this, TIMER_ID)
160 {
161 m_timer.Start(1000); // 1 second interval
162 }
7c913512 163
23324ae1
FM
164 void MyFrame::OnTimer(wxTimerEvent& event)
165 {
166 // do whatever you want to do every second here
167 }
168 @endcode
7c913512 169
23324ae1
FM
170 @library{wxbase}
171 @category{events}
7c913512 172
e54c96f1 173 @see wxTimer
23324ae1
FM
174*/
175class wxTimerEvent : public wxEvent
176{
177public:
178 /**
179 Returns the interval of the timer which generated this event.
180 */
328f5751 181 int GetInterval() const;
23324ae1
FM
182
183 /**
184 Returns the timer object which generated this event.
185 */
5267aefd 186 wxTimer& GetTimer() const;
23324ae1 187};
e54c96f1 188