]> git.saurik.com Git - wxWidgets.git/blob - include/wx/event.h
Updated ten thousand macros for new event type code.
[wxWidgets.git] / include / wx / event.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/event.h
3 // Purpose: Event classes
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 01/02/97
7 // RCS-ID: $Id$
8 // Copyright: (c) wxWindows team
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_EVENTH__
13 #define _WX_EVENTH__
14
15 #ifdef __GNUG__
16 #pragma interface "event.h"
17 #endif
18
19 #include "wx/defs.h"
20 #include "wx/object.h"
21
22 #if wxUSE_GUI
23 #include "wx/gdicmn.h"
24 #include "wx/cursor.h"
25 #endif
26
27 #include "wx/thread.h"
28
29 // ----------------------------------------------------------------------------
30 // forward declarations
31 // ----------------------------------------------------------------------------
32
33 class WXDLLEXPORT wxList;
34
35 #if wxUSE_GUI
36 class WXDLLEXPORT wxClientData;
37 class WXDLLEXPORT wxDC;
38 class WXDLLEXPORT wxMenu;
39 class WXDLLEXPORT wxWindow;
40 #endif // wxUSE_GUI
41
42 // ----------------------------------------------------------------------------
43 // Event types
44 // ----------------------------------------------------------------------------
45
46 #if defined(__BORLANDC__) && defined(__WIN16__)
47 // For 16-bit BC++, these 2 would be identical otherwise (truncated)
48 #define wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED wxEVT_COMMAND_NB_PAGE_CHANGED
49 #define wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING wxEVT_COMMAND_NB_PAGE_CHANGING
50 #endif
51
52 typedef int wxEventType;
53
54 // generate a new unique event type
55 int wxNewEventType();
56
57 // the standard event types
58 extern const int wxEVT_NULL;
59 extern const int wxEVT_FIRST;
60
61 extern const int wxEVT_COMMAND_BUTTON_CLICKED;
62 extern const int wxEVT_COMMAND_CHECKBOX_CLICKED;
63 extern const int wxEVT_COMMAND_CHOICE_SELECTED;
64 extern const int wxEVT_COMMAND_LISTBOX_SELECTED;
65 extern const int wxEVT_COMMAND_LISTBOX_DOUBLECLICKED;
66 extern const int wxEVT_COMMAND_CHECKLISTBOX_TOGGLED;
67 extern const int wxEVT_COMMAND_TEXT_UPDATED;
68 extern const int wxEVT_COMMAND_TEXT_ENTER;
69 extern const int wxEVT_COMMAND_MENU_SELECTED;
70 extern const int wxEVT_COMMAND_TOOL_CLICKED;
71 extern const int wxEVT_COMMAND_SLIDER_UPDATED;
72 extern const int wxEVT_COMMAND_RADIOBOX_SELECTED;
73 extern const int wxEVT_COMMAND_RADIOBUTTON_SELECTED;
74 extern const int wxEVT_COMMAND_SCROLLBAR_UPDATED;
75 extern const int wxEVT_COMMAND_VLBOX_SELECTED;
76 extern const int wxEVT_COMMAND_COMBOBOX_SELECTED;
77 extern const int wxEVT_COMMAND_TOOL_RCLICKED;
78 extern const int wxEVT_COMMAND_TOOL_ENTER;
79 extern const int wxEVT_COMMAND_SPINCTRL_UPDATED;
80
81 // Sockets and timers send events, too
82 extern const int wxEVT_SOCKET;
83 extern const int wxEVT_TIMER;
84
85 // Mouse event types
86 extern const int wxEVT_LEFT_DOWN;
87 extern const int wxEVT_LEFT_UP;
88 extern const int wxEVT_MIDDLE_DOWN;
89 extern const int wxEVT_MIDDLE_UP;
90 extern const int wxEVT_RIGHT_DOWN;
91 extern const int wxEVT_RIGHT_UP;
92 extern const int wxEVT_MOTION;
93 extern const int wxEVT_ENTER_WINDOW;
94 extern const int wxEVT_LEAVE_WINDOW;
95 extern const int wxEVT_LEFT_DCLICK;
96 extern const int wxEVT_MIDDLE_DCLICK;
97 extern const int wxEVT_RIGHT_DCLICK;
98 extern const int wxEVT_SET_FOCUS;
99 extern const int wxEVT_KILL_FOCUS;
100
101 // Non-client mouse events
102 extern const int wxEVT_NC_LEFT_DOWN;
103 extern const int wxEVT_NC_LEFT_UP;
104 extern const int wxEVT_NC_MIDDLE_DOWN;
105 extern const int wxEVT_NC_MIDDLE_UP;
106 extern const int wxEVT_NC_RIGHT_DOWN;
107 extern const int wxEVT_NC_RIGHT_UP;
108 extern const int wxEVT_NC_MOTION;
109 extern const int wxEVT_NC_ENTER_WINDOW;
110 extern const int wxEVT_NC_LEAVE_WINDOW;
111 extern const int wxEVT_NC_LEFT_DCLICK;
112 extern const int wxEVT_NC_MIDDLE_DCLICK;
113 extern const int wxEVT_NC_RIGHT_DCLICK;
114
115 // Character input event type
116 extern const int wxEVT_CHAR;
117 extern const int wxEVT_CHAR_HOOK;
118 extern const int wxEVT_NAVIGATION_KEY;
119 extern const int wxEVT_KEY_DOWN;
120 extern const int wxEVT_KEY_UP;
121
122 // Set cursor event
123 extern const int wxEVT_SET_CURSOR;
124
125 // wxScrollbar and wxSlider event identifiers
126 extern const int wxEVT_SCROLL_TOP;
127 extern const int wxEVT_SCROLL_BOTTOM;
128 extern const int wxEVT_SCROLL_LINEUP;
129 extern const int wxEVT_SCROLL_LINEDOWN;
130 extern const int wxEVT_SCROLL_PAGEUP;
131 extern const int wxEVT_SCROLL_PAGEDOWN;
132 extern const int wxEVT_SCROLL_THUMBTRACK;
133 extern const int wxEVT_SCROLL_THUMBRELEASE;
134
135 // Scroll events from wxWindow
136 extern const int wxEVT_SCROLLWIN_TOP;
137 extern const int wxEVT_SCROLLWIN_BOTTOM;
138 extern const int wxEVT_SCROLLWIN_LINEUP;
139 extern const int wxEVT_SCROLLWIN_LINEDOWN;
140 extern const int wxEVT_SCROLLWIN_PAGEUP;
141 extern const int wxEVT_SCROLLWIN_PAGEDOWN;
142 extern const int wxEVT_SCROLLWIN_THUMBTRACK;
143 extern const int wxEVT_SCROLLWIN_THUMBRELEASE;
144
145 // System events
146 extern const int wxEVT_SIZE;
147 extern const int wxEVT_MOVE;
148 extern const int wxEVT_CLOSE_WINDOW;
149 extern const int wxEVT_END_SESSION;
150 extern const int wxEVT_QUERY_END_SESSION;
151 extern const int wxEVT_ACTIVATE_APP;
152 extern const int wxEVT_POWER;
153 extern const int wxEVT_ACTIVATE;
154 extern const int wxEVT_CREATE;
155 extern const int wxEVT_DESTROY;
156 extern const int wxEVT_SHOW;
157 extern const int wxEVT_ICONIZE;
158 extern const int wxEVT_MAXIMIZE;
159 extern const int wxEVT_MOUSE_CAPTURE_CHANGED;
160 extern const int wxEVT_PAINT;
161 extern const int wxEVT_ERASE_BACKGROUND;
162 extern const int wxEVT_NC_PAINT;
163 extern const int wxEVT_PAINT_ICON;
164 extern const int wxEVT_MENU_CHAR;
165 extern const int wxEVT_MENU_INIT;
166 extern const int wxEVT_MENU_HIGHLIGHT;
167 extern const int wxEVT_POPUP_MENU_INIT;
168 extern const int wxEVT_CONTEXT_MENU;
169 extern const int wxEVT_SYS_COLOUR_CHANGED;
170 extern const int wxEVT_SETTING_CHANGED;
171 extern const int wxEVT_QUERY_NEW_PALETTE;
172 extern const int wxEVT_PALETTE_CHANGED;
173 extern const int wxEVT_JOY_BUTTON_DOWN;
174 extern const int wxEVT_JOY_BUTTON_UP;
175 extern const int wxEVT_JOY_MOVE;
176 extern const int wxEVT_JOY_ZMOVE;
177 extern const int wxEVT_DROP_FILES;
178 extern const int wxEVT_DRAW_ITEM;
179 extern const int wxEVT_MEASURE_ITEM;
180 extern const int wxEVT_COMPARE_ITEM;
181 extern const int wxEVT_INIT_DIALOG;
182 extern const int wxEVT_IDLE;
183 extern const int wxEVT_UPDATE_UI;
184
185 // System misc.
186 extern const int wxEVT_END_PROCESS;
187
188 // Dial up events
189 extern const int wxEVT_DIALUP_CONNECTED;
190 extern const int wxEVT_DIALUP_DISCONNECTED;
191
192 // Generic command events
193 // Note: a click is a higher-level event than button down/up
194 extern const int wxEVT_COMMAND_LEFT_CLICK;
195 extern const int wxEVT_COMMAND_LEFT_DCLICK;
196 extern const int wxEVT_COMMAND_RIGHT_CLICK;
197 extern const int wxEVT_COMMAND_RIGHT_DCLICK;
198 extern const int wxEVT_COMMAND_SET_FOCUS;
199 extern const int wxEVT_COMMAND_KILL_FOCUS;
200 extern const int wxEVT_COMMAND_ENTER;
201
202 // Tree control event types
203 extern const int wxEVT_COMMAND_TREE_BEGIN_DRAG;
204 extern const int wxEVT_COMMAND_TREE_BEGIN_RDRAG;
205 extern const int wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT;
206 extern const int wxEVT_COMMAND_TREE_END_LABEL_EDIT;
207 extern const int wxEVT_COMMAND_TREE_DELETE_ITEM;
208 extern const int wxEVT_COMMAND_TREE_GET_INFO;
209 extern const int wxEVT_COMMAND_TREE_SET_INFO;
210 extern const int wxEVT_COMMAND_TREE_ITEM_EXPANDED;
211 extern const int wxEVT_COMMAND_TREE_ITEM_EXPANDING;
212 extern const int wxEVT_COMMAND_TREE_ITEM_COLLAPSED;
213 extern const int wxEVT_COMMAND_TREE_ITEM_COLLAPSING;
214 extern const int wxEVT_COMMAND_TREE_SEL_CHANGED;
215 extern const int wxEVT_COMMAND_TREE_SEL_CHANGING;
216 extern const int wxEVT_COMMAND_TREE_KEY_DOWN;
217 extern const int wxEVT_COMMAND_TREE_ITEM_ACTIVATED;
218 extern const int wxEVT_COMMAND_TREE_ITEM_RIGHT_CLICK;
219 extern const int wxEVT_COMMAND_TREE_ITEM_MIDDLE_CLICK;
220 extern const int wxEVT_COMMAND_TREE_END_DRAG;
221
222 // List control event types
223 extern const int wxEVT_COMMAND_LIST_BEGIN_DRAG;
224 extern const int wxEVT_COMMAND_LIST_BEGIN_RDRAG;
225 extern const int wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT;
226 extern const int wxEVT_COMMAND_LIST_END_LABEL_EDIT;
227 extern const int wxEVT_COMMAND_LIST_DELETE_ITEM;
228 extern const int wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS;
229 extern const int wxEVT_COMMAND_LIST_GET_INFO;
230 extern const int wxEVT_COMMAND_LIST_SET_INFO;
231 extern const int wxEVT_COMMAND_LIST_ITEM_SELECTED;
232 extern const int wxEVT_COMMAND_LIST_ITEM_DESELECTED;
233 extern const int wxEVT_COMMAND_LIST_KEY_DOWN;
234 extern const int wxEVT_COMMAND_LIST_INSERT_ITEM;
235 extern const int wxEVT_COMMAND_LIST_COL_CLICK;
236 extern const int wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK;
237 extern const int wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK;
238 extern const int wxEVT_COMMAND_LIST_ITEM_ACTIVATED;
239
240 // Tab and notebook control event types
241 extern const int wxEVT_COMMAND_TAB_SEL_CHANGED;
242 extern const int wxEVT_COMMAND_TAB_SEL_CHANGING;
243 extern const int wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED;
244 extern const int wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING;
245
246 // Splitter events
247 extern const int wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED;
248 extern const int wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING;
249 extern const int wxEVT_COMMAND_SPLITTER_DOUBLECLICKED;
250 extern const int wxEVT_COMMAND_SPLITTER_UNSPLIT;
251
252 // Wizard events
253 extern const int wxEVT_WIZARD_PAGE_CHANGED;
254 extern const int wxEVT_WIZARD_PAGE_CHANGING;
255 extern const int wxEVT_WIZARD_CANCEL;
256
257 // Calendar events
258 extern const int wxEVT_CALENDAR_SEL_CHANGED;
259 extern const int wxEVT_CALENDAR_DAY_CHANGED;
260 extern const int wxEVT_CALENDAR_MONTH_CHANGED;
261 extern const int wxEVT_CALENDAR_YEAR_CHANGED;
262 extern const int wxEVT_CALENDAR_DOUBLECLICKED;
263 extern const int wxEVT_CALENDAR_WEEKDAY_CLICKED;
264
265 // Help events
266 extern const int wxEVT_HELP;
267 extern const int wxEVT_DETAILED_HELP;
268
269 // Compatibility
270
271 #if WXWIN_COMPATIBILITY
272
273 #define wxEVENT_TYPE_BUTTON_COMMAND wxEVT_COMMAND_BUTTON_CLICKED
274 #define wxEVENT_TYPE_CHECKBOX_COMMAND wxEVT_COMMAND_CHECKBOX_CLICKED
275 #define wxEVENT_TYPE_CHOICE_COMMAND wxEVT_COMMAND_CHOICE_SELECTED
276 #define wxEVENT_TYPE_LISTBOX_COMMAND wxEVT_COMMAND_LISTBOX_SELECTED
277 #define wxEVENT_TYPE_LISTBOX_DCLICK_COMMAND wxEVT_COMMAND_LISTBOX_DOUBLECLICKED
278 #define wxEVENT_TYPE_TEXT_COMMAND wxEVT_COMMAND_TEXT_UPDATED
279 #define wxEVENT_TYPE_MULTITEXT_COMMAND wxEVT_COMMAND_TEXT_UPDATED
280 #define wxEVENT_TYPE_MENU_COMMAND wxEVT_COMMAND_MENU_SELECTED
281 #define wxEVENT_TYPE_SLIDER_COMMAND wxEVT_COMMAND_SLIDER_UPDATED
282 #define wxEVENT_TYPE_RADIOBOX_COMMAND wxEVT_COMMAND_RADIOBOX_SELECTED
283 #define wxEVENT_TYPE_RADIOBUTTON_COMMAND wxEVT_COMMAND_RADIOBUTTON_SELECTED
284 #define wxEVENT_TYPE_TEXT_ENTER_COMMAND wxEVT_COMMAND_TEXT_ENTER
285 #define wxEVENT_TYPE_SET_FOCUS wxEVT_SET_FOCUS
286 #define wxEVENT_TYPE_KILL_FOCUS wxEVT_KILL_FOCUS
287 #define wxEVENT_TYPE_SCROLLBAR_COMMAND wxEVT_COMMAND_SCROLLBAR_UPDATED
288 #define wxEVENT_TYPE_VIRT_LISTBOX_COMMAND wxEVT_COMMAND_VLBOX_SELECTED
289 #define wxEVENT_TYPE_COMBOBOX_COMMAND wxEVT_COMMAND_COMBOBOX_SELECTED
290
291 #define wxEVENT_TYPE_LEFT_DOWN wxEVT_LEFT_DOWN
292 #define wxEVENT_TYPE_LEFT_UP wxEVT_LEFT_UP
293 #define wxEVENT_TYPE_MIDDLE_DOWN wxEVT_MIDDLE_DOWN
294 #define wxEVENT_TYPE_MIDDLE_UP wxEVT_MIDDLE_UP
295 #define wxEVENT_TYPE_RIGHT_DOWN wxEVT_RIGHT_DOWN
296 #define wxEVENT_TYPE_RIGHT_UP wxEVT_RIGHT_UP
297 #define wxEVENT_TYPE_MOTION wxEVT_MOTION
298 #define wxEVENT_TYPE_ENTER_WINDOW wxEVT_ENTER_WINDOW
299 #define wxEVENT_TYPE_LEAVE_WINDOW wxEVT_LEAVE_WINDOW
300 #define wxEVENT_TYPE_LEFT_DCLICK wxEVT_LEFT_DCLICK
301 #define wxEVENT_TYPE_MIDDLE_DCLICK wxEVT_MIDDLE_DCLICK
302 #define wxEVENT_TYPE_RIGHT_DCLICK wxEVT_RIGHT_DCLICK
303 #define wxEVENT_TYPE_CHAR wxEVT_CHAR
304 #define wxEVENT_TYPE_SCROLL_TOP wxEVT_SCROLL_TOP
305 #define wxEVENT_TYPE_SCROLL_BOTTOM wxEVT_SCROLL_BOTTOM
306 #define wxEVENT_TYPE_SCROLL_LINEUP wxEVT_SCROLL_LINEUP
307 #define wxEVENT_TYPE_SCROLL_LINEDOWN wxEVT_SCROLL_LINEDOWN
308 #define wxEVENT_TYPE_SCROLL_PAGEUP wxEVT_SCROLL_PAGEUP
309 #define wxEVENT_TYPE_SCROLL_PAGEDOWN wxEVT_SCROLL_PAGEDOWN
310 #define wxEVENT_TYPE_SCROLL_THUMBTRACK wxEVT_SCROLL_THUMBTRACK
311
312 #endif // WXWIN_COMPATIBILITY
313
314 /*
315 * wxWindows events, covering all interesting things that might happen
316 * (button clicking, resizing, setting text in widgets, etc.).
317 *
318 * For each completely new event type, derive a new event class.
319 * An event CLASS represents a C++ class defining a range of similar event TYPES;
320 * examples are canvas events, panel item command events.
321 * An event TYPE is a unique identifier for a particular system event,
322 * such as a button press or a listbox deselection.
323 *
324 */
325
326 class WXDLLEXPORT wxEvent : public wxObject
327 {
328 DECLARE_ABSTRACT_CLASS(wxEvent)
329
330 public:
331 wxEvent(int id = 0);
332 ~wxEvent() {}
333
334 void SetEventType(wxEventType typ) { m_eventType = typ; }
335 wxEventType GetEventType() const { return m_eventType; }
336 wxObject *GetEventObject() const { return m_eventObject; }
337 void SetEventObject(wxObject *obj) { m_eventObject = obj; }
338 long GetTimestamp() const { return m_timeStamp; }
339 void SetTimestamp(long ts = 0) { m_timeStamp = ts; }
340 int GetId() const { return m_id; }
341 void SetId(int Id) { m_id = Id; }
342
343 // Can instruct event processor that we wish to ignore this event
344 // (treat as if the event table entry had not been found): this must be done
345 // to allow the event processing by the base classes (calling event.Skip()
346 // is the analog of calling the base class verstion of a virtual function)
347 void Skip(bool skip = TRUE) { m_skipped = skip; }
348 bool GetSkipped() const { return m_skipped; };
349
350 // implementation only: this test is explicitlty anti OO and this functions
351 // exists only for optimization purposes
352 bool IsCommandEvent() const { return m_isCommandEvent; }
353
354 void CopyObject(wxObject& object_dest) const;
355
356 public:
357 wxObject* m_eventObject;
358 wxEventType m_eventType;
359 long m_timeStamp;
360 int m_id;
361 wxObject* m_callbackUserData;
362 bool m_skipped;
363
364 // optimization: instead of using costly IsKindOf() we keep a flag telling
365 // whether we're a command event (by far the most common case)
366 bool m_isCommandEvent;
367 };
368
369 #if wxUSE_GUI
370
371 // Item or menu event class
372 /*
373 wxEVT_COMMAND_BUTTON_CLICKED
374 wxEVT_COMMAND_CHECKBOX_CLICKED
375 wxEVT_COMMAND_CHOICE_SELECTED
376 wxEVT_COMMAND_LISTBOX_SELECTED
377 wxEVT_COMMAND_LISTBOX_DOUBLECLICKED
378 wxEVT_COMMAND_TEXT_UPDATED
379 wxEVT_COMMAND_TEXT_ENTER
380 wxEVT_COMMAND_MENU_SELECTED
381 wxEVT_COMMAND_SLIDER_UPDATED
382 wxEVT_COMMAND_RADIOBOX_SELECTED
383 wxEVT_COMMAND_RADIOBUTTON_SELECTED
384 wxEVT_COMMAND_SCROLLBAR_UPDATED
385 wxEVT_COMMAND_VLBOX_SELECTED
386 wxEVT_COMMAND_COMBOBOX_SELECTED
387 */
388
389 class WXDLLEXPORT wxCommandEvent : public wxEvent
390 {
391 DECLARE_DYNAMIC_CLASS(wxCommandEvent)
392
393 public:
394 wxCommandEvent(wxEventType commandType = wxEVT_NULL, int id = 0);
395 ~wxCommandEvent() {}
396
397 /*
398 * Accessors dependent on context
399 *
400 */
401
402 // Set/Get client data from controls
403 void SetClientData(void* clientData) { m_clientData = clientData; }
404 void *GetClientData() const { return m_clientData; }
405
406 // Set/Get client object from controls
407 void SetClientObject(wxClientData* clientObject) { m_clientObject = clientObject; }
408 void *GetClientObject() const { return m_clientObject; }
409
410 // Get listbox selection if single-choice
411 int GetSelection() const { return m_commandInt; }
412
413 // Set/Get listbox/choice selection string
414 void SetString(const wxString& s) { m_commandString = s; }
415 wxString GetString() const { return m_commandString; }
416
417 // Get checkbox value
418 bool IsChecked() const { return m_commandInt != 0; }
419
420 // TRUE if the listbox event was a selection.
421 bool IsSelection() const { return (m_extraLong != 0); }
422
423 void SetExtraLong(long extraLong) { m_extraLong = extraLong; }
424 long GetExtraLong() const { return m_extraLong ; }
425
426 void SetInt(int i) { m_commandInt = i; }
427 long GetInt() const { return m_commandInt ; }
428
429 void CopyObject(wxObject& obj) const;
430
431 #ifdef WXWIN_COMPATIBILITY_2
432 bool Checked() const { return IsChecked(); }
433 #endif // WXWIN_COMPATIBILITY_2
434
435 public:
436 wxString m_commandString; // String event argument
437 int m_commandInt;
438 long m_extraLong; // Additional information (e.g. select/deselect)
439 void* m_clientData; // Arbitrary client data
440 wxClientData* m_clientObject; // Arbitrary client object
441 };
442
443 // this class adds a possibility to react (from the user) code to a control
444 // notification: allow or veto the operation being reported.
445 class WXDLLEXPORT wxNotifyEvent : public wxCommandEvent
446 {
447 public:
448 wxNotifyEvent(wxEventType commandType = wxEVT_NULL, int id = 0)
449 : wxCommandEvent(commandType, id) { m_bAllow = TRUE; }
450
451 // veto the operation (usually it's allowed by default)
452 void Veto() { m_bAllow = FALSE; }
453
454 // allow the operation if it was disabled by default
455 void Allow() { m_bAllow = TRUE; }
456
457 // for implementation code only: is the operation allowed?
458 bool IsAllowed() const { return m_bAllow; }
459
460 // probably useless: CopyObject() is used for deferred event
461 // handling but wxNotifyEvent must be processed immediately
462 void CopyObject(wxObject& obj) const;
463
464 private:
465 bool m_bAllow;
466
467 DECLARE_DYNAMIC_CLASS(wxNotifyEvent)
468 };
469
470 // Scroll event class, derived form wxCommandEvent. wxScrollEvents are
471 // sent by wxSlider and wxScrollbar.
472 /*
473 wxEVT_SCROLL_TOP
474 wxEVT_SCROLL_BOTTOM
475 wxEVT_SCROLL_LINEUP
476 wxEVT_SCROLL_LINEDOWN
477 wxEVT_SCROLL_PAGEUP
478 wxEVT_SCROLL_PAGEDOWN
479 wxEVT_SCROLL_THUMBTRACK
480 wxEVT_SCROLL_THUMBRELEASE
481 */
482
483 class WXDLLEXPORT wxScrollEvent : public wxCommandEvent
484 {
485 DECLARE_DYNAMIC_CLASS(wxScrollEvent)
486
487 public:
488 wxScrollEvent(wxEventType commandType = wxEVT_NULL,
489 int id = 0, int pos = 0, int orient = 0);
490 ~wxScrollEvent() {}
491
492 /*
493 * Accessors
494 *
495 */
496
497 int GetOrientation() const { return (int) m_extraLong ; }
498 int GetPosition() const { return m_commandInt ; }
499 void SetOrientation(int orient) { m_extraLong = (long) orient; }
500 void SetPosition(int pos) { m_commandInt = pos; }
501 };
502
503 // ScrollWin event class, derived fom wxEvent. wxScrollWinEvents
504 // are sent by wxWindow.
505 /*
506 wxEVT_SCROLLWIN_TOP
507 wxEVT_SCROLLWIN_BOTTOM
508 wxEVT_SCROLLWIN_LINEUP
509 wxEVT_SCROLLWIN_LINEDOWN
510 wxEVT_SCROLLWIN_PAGEUP
511 wxEVT_SCROLLWIN_PAGEDOWN
512 wxEVT_SCROLLWIN_THUMBTRACK
513 wxEVT_SCROLLWIN_THUMBRELEASE
514 */
515
516 class WXDLLEXPORT wxScrollWinEvent : public wxEvent
517 {
518 DECLARE_DYNAMIC_CLASS(wxScrollWinEvent)
519
520 public:
521 wxScrollWinEvent(wxEventType commandType = wxEVT_NULL,
522 int pos = 0, int orient = 0);
523 ~wxScrollWinEvent() {}
524
525 /*
526 * Accessors
527 */
528
529 int GetOrientation() const { return (int) m_extraLong ; }
530 int GetPosition() const { return m_commandInt ; }
531 void SetOrientation(int orient) { m_extraLong = (long) orient; }
532 void SetPosition(int pos) { m_commandInt = pos; }
533
534 void CopyObject(wxObject& object_dest) const;
535 public:
536 int m_commandInt; // Additional information
537 long m_extraLong;
538 };
539
540 // Mouse event class
541
542 /*
543 wxEVT_LEFT_DOWN
544 wxEVT_LEFT_UP
545 wxEVT_MIDDLE_DOWN
546 wxEVT_MIDDLE_UP
547 wxEVT_RIGHT_DOWN
548 wxEVT_RIGHT_UP
549 wxEVT_MOTION
550 wxEVT_ENTER_WINDOW
551 wxEVT_LEAVE_WINDOW
552 wxEVT_LEFT_DCLICK
553 wxEVT_MIDDLE_DCLICK
554 wxEVT_RIGHT_DCLICK
555 wxEVT_NC_LEFT_DOWN
556 wxEVT_NC_LEFT_UP,
557 wxEVT_NC_MIDDLE_DOWN,
558 wxEVT_NC_MIDDLE_UP,
559 wxEVT_NC_RIGHT_DOWN,
560 wxEVT_NC_RIGHT_UP,
561 wxEVT_NC_MOTION,
562 wxEVT_NC_ENTER_WINDOW,
563 wxEVT_NC_LEAVE_WINDOW,
564 wxEVT_NC_LEFT_DCLICK,
565 wxEVT_NC_MIDDLE_DCLICK,
566 wxEVT_NC_RIGHT_DCLICK,
567 */
568
569 class WXDLLEXPORT wxMouseEvent : public wxEvent
570 {
571 DECLARE_DYNAMIC_CLASS(wxMouseEvent)
572
573 public:
574 wxMouseEvent(wxEventType mouseType = wxEVT_NULL);
575
576 // Was it a button event? (*doesn't* mean: is any button *down*?)
577 bool IsButton() const { return Button(-1); }
578
579 // Was it a down event from button 1, 2 or 3 or any?
580 bool ButtonDown(int but = -1) const;
581
582 // Was it a dclick event from button 1, 2 or 3 or any?
583 bool ButtonDClick(int but = -1) const;
584
585 // Was it a up event from button 1, 2 or 3 or any?
586 bool ButtonUp(int but = -1) const;
587
588 // Was the given button 1,2,3 or any changing state?
589 bool Button(int but) const;
590
591 // Was the given button 1,2,3 or any in Down state?
592 bool ButtonIsDown(int but) const;
593
594 // Find state of shift/control keys
595 bool ControlDown() const { return m_controlDown; }
596 bool MetaDown() const { return m_metaDown; }
597 bool AltDown() const { return m_altDown; }
598 bool ShiftDown() const { return m_shiftDown; }
599
600 // Find which event was just generated
601 bool LeftDown() const { return (m_eventType == wxEVT_LEFT_DOWN); }
602 bool MiddleDown() const { return (m_eventType == wxEVT_MIDDLE_DOWN); }
603 bool RightDown() const { return (m_eventType == wxEVT_RIGHT_DOWN); }
604
605 bool LeftUp() const { return (m_eventType == wxEVT_LEFT_UP); }
606 bool MiddleUp() const { return (m_eventType == wxEVT_MIDDLE_UP); }
607 bool RightUp() const { return (m_eventType == wxEVT_RIGHT_UP); }
608
609 bool LeftDClick() const { return (m_eventType == wxEVT_LEFT_DCLICK); }
610 bool MiddleDClick() const { return (m_eventType == wxEVT_MIDDLE_DCLICK); }
611 bool RightDClick() const { return (m_eventType == wxEVT_RIGHT_DCLICK); }
612
613 // Find the current state of the mouse buttons (regardless
614 // of current event type)
615 bool LeftIsDown() const { return m_leftDown; }
616 bool MiddleIsDown() const { return m_middleDown; }
617 bool RightIsDown() const { return m_rightDown; }
618
619 // True if a button is down and the mouse is moving
620 bool Dragging() const
621 {
622 return ((m_eventType == wxEVT_MOTION) &&
623 (LeftIsDown() || MiddleIsDown() || RightIsDown()));
624 }
625
626 // True if the mouse is moving, and no button is down
627 bool Moving() const { return (m_eventType == wxEVT_MOTION); }
628
629 // True if the mouse is just entering the window
630 bool Entering() const { return (m_eventType == wxEVT_ENTER_WINDOW); }
631
632 // True if the mouse is just leaving the window
633 bool Leaving() const { return (m_eventType == wxEVT_LEAVE_WINDOW); }
634
635 // Find the position of the event
636 void GetPosition(wxCoord *xpos, wxCoord *ypos) const
637 {
638 if (xpos)
639 *xpos = m_x;
640 if (ypos)
641 *ypos = m_y;
642 }
643
644 #ifndef __WIN16__
645 void GetPosition(long *xpos, long *ypos) const
646 {
647 if (xpos)
648 *xpos = (long)m_x;
649 if (ypos)
650 *ypos = (long)m_y;
651 }
652 #endif
653
654 // Find the position of the event
655 wxPoint GetPosition() const { return wxPoint(m_x, m_y); }
656
657 // Find the logical position of the event given the DC
658 wxPoint GetLogicalPosition(const wxDC& dc) const ;
659
660 // Compatibility
661 #if WXWIN_COMPATIBILITY
662 void Position(long *xpos, long *ypos) const
663 {
664 if (xpos)
665 *xpos = (long)m_x;
666 if (ypos)
667 *ypos = (long)m_y;
668 }
669
670 void Position(float *xpos, float *ypos) const
671 {
672 *xpos = (float) m_x; *ypos = (float) m_y;
673 }
674 #endif // WXWIN_COMPATIBILITY
675
676 // Get X position
677 wxCoord GetX() const { return m_x; }
678
679 // Get Y position
680 wxCoord GetY() const { return m_y; }
681
682 void CopyObject(wxObject& obj) const;
683
684 public:
685 wxCoord m_x, m_y;
686
687 bool m_leftDown;
688 bool m_middleDown;
689 bool m_rightDown;
690
691 bool m_controlDown;
692 bool m_shiftDown;
693 bool m_altDown;
694 bool m_metaDown;
695 };
696
697 // Cursor set event
698
699 /*
700 wxEVT_SET_CURSOR
701 */
702
703 class WXDLLEXPORT wxSetCursorEvent : public wxEvent
704 {
705 public:
706 wxSetCursorEvent(wxCoord x, wxCoord y)
707 {
708 m_eventType = wxEVT_SET_CURSOR;
709
710 m_x = x;
711 m_y = y;
712 }
713
714 wxCoord GetX() const { return m_x; }
715 wxCoord GetY() const { return m_y; }
716
717 void SetCursor(const wxCursor& cursor) { m_cursor = cursor; }
718 const wxCursor& GetCursor() const { return m_cursor; }
719 bool HasCursor() const { return m_cursor.Ok(); }
720
721 private:
722 wxCoord m_x, m_y;
723 wxCursor m_cursor;
724 };
725
726 // Keyboard input event class
727
728 /*
729 wxEVT_CHAR
730 wxEVT_CHAR_HOOK
731 wxEVT_KEY_DOWN
732 wxEVT_KEY_UP
733 */
734
735 class WXDLLEXPORT wxKeyEvent : public wxEvent
736 {
737 DECLARE_DYNAMIC_CLASS(wxKeyEvent)
738
739 public:
740 wxKeyEvent(wxEventType keyType = wxEVT_NULL);
741
742 // Find state of shift/control keys
743 bool ControlDown() const { return m_controlDown; }
744 bool MetaDown() const { return m_metaDown; }
745 bool AltDown() const { return m_altDown; }
746 bool ShiftDown() const { return m_shiftDown; }
747
748 bool HasModifiers() const { return ControlDown() || AltDown() || MetaDown(); }
749
750 // get the key code: an ASCII7 char or an element of wxKeyCode enum
751 int GetKeyCode() const { return (int)m_keyCode; }
752
753 // Find the position of the event
754 void GetPosition(wxCoord *xpos, wxCoord *ypos) const
755 {
756 if (xpos) *xpos = m_x;
757 if (ypos) *ypos = m_y;
758 }
759
760 #ifndef __WIN16__
761 void GetPosition(long *xpos, long *ypos) const
762 {
763 if (xpos) *xpos = (long)m_x;
764 if (ypos) *ypos = (long)m_y;
765 }
766 #endif
767
768 wxPoint GetPosition() const
769 { return wxPoint(m_x, m_y); }
770
771 // Get X position
772 wxCoord GetX() const { return m_x; }
773
774 // Get Y position
775 wxCoord GetY() const { return m_y; }
776
777 void CopyObject(wxObject& obj) const;
778
779 // deprecated
780 long KeyCode() const { return m_keyCode; }
781
782 public:
783 wxCoord m_x, m_y;
784
785 long m_keyCode;
786
787 bool m_controlDown;
788 bool m_shiftDown;
789 bool m_altDown;
790 bool m_metaDown;
791 bool m_scanCode;
792 };
793
794 // Size event class
795 /*
796 wxEVT_SIZE
797 */
798
799 class WXDLLEXPORT wxSizeEvent : public wxEvent
800 {
801 DECLARE_DYNAMIC_CLASS(wxSizeEvent)
802
803 public:
804 wxSize m_size;
805
806 wxSizeEvent() { m_eventType = wxEVT_SIZE; }
807 wxSizeEvent(const wxSize& sz, int id = 0)
808 : m_size(sz)
809 { m_eventType = wxEVT_SIZE; m_id = id; }
810
811 wxSize GetSize() const { return m_size; }
812
813 void CopyObject(wxObject& obj) const;
814 };
815
816 // Move event class
817
818 /*
819 wxEVT_MOVE
820 */
821
822 class WXDLLEXPORT wxMoveEvent : public wxEvent
823 {
824 DECLARE_DYNAMIC_CLASS(wxMoveEvent)
825
826 public:
827 wxPoint m_pos;
828
829 wxMoveEvent() { m_eventType = wxEVT_MOVE; }
830 wxMoveEvent(const wxPoint& pos, int id = 0)
831 : m_pos(pos)
832 { m_eventType = wxEVT_MOVE; m_id = id; }
833
834 wxPoint GetPosition() const { return m_pos; }
835
836 void CopyObject(wxObject& obj) const;
837 };
838
839 // Paint event class
840 /*
841 wxEVT_PAINT
842 wxEVT_NC_PAINT
843 wxEVT_PAINT_ICON
844 */
845
846 #if defined(__WXDEBUG__) && (defined(__WXMSW__) || defined(__WXPM__))
847 // see comments in src/msw|os2/dcclient.cpp where g_isPainting is defined
848 extern WXDLLEXPORT int g_isPainting;
849 #endif // debug
850
851 class WXDLLEXPORT wxPaintEvent : public wxEvent
852 {
853 DECLARE_DYNAMIC_CLASS(wxPaintEvent)
854
855 public:
856 wxPaintEvent(int Id = 0)
857 {
858 m_eventType = wxEVT_PAINT;
859 m_id = Id;
860
861 #if defined(__WXDEBUG__) && (defined(__WXMSW__) || defined(__WXPM__))
862 // set the internal flag for the duration of processing of WM_PAINT
863 g_isPainting++;
864 #endif // debug
865 }
866
867 #if defined(__WXDEBUG__) && (defined(__WXMSW__) || defined(__WXPM__))
868 ~wxPaintEvent()
869 {
870 g_isPainting--;
871 }
872 #endif // debug
873 };
874
875 // Erase background event class
876 /*
877 wxEVT_ERASE_BACKGROUND
878 */
879
880 class WXDLLEXPORT wxEraseEvent : public wxEvent
881 {
882 DECLARE_DYNAMIC_CLASS(wxEraseEvent)
883
884 public:
885 wxDC *m_dc;
886
887 wxEraseEvent(int Id = 0, wxDC *dc = (wxDC *) NULL)
888 { m_eventType = wxEVT_ERASE_BACKGROUND; m_id = Id; m_dc = dc; }
889 wxDC *GetDC() const { return m_dc; }
890
891 void CopyObject(wxObject& obj) const;
892 };
893
894 // Focus event class
895 /*
896 wxEVT_SET_FOCUS
897 wxEVT_KILL_FOCUS
898 */
899
900 class WXDLLEXPORT wxFocusEvent : public wxEvent
901 {
902 DECLARE_DYNAMIC_CLASS(wxFocusEvent)
903
904 public:
905 wxFocusEvent(wxEventType type = wxEVT_NULL, int Id = 0)
906 { m_eventType = type; m_id = Id; }
907 };
908
909 // Activate event class
910 /*
911 wxEVT_ACTIVATE
912 wxEVT_ACTIVATE_APP
913 */
914
915 class WXDLLEXPORT wxActivateEvent : public wxEvent
916 {
917 DECLARE_DYNAMIC_CLASS(wxActivateEvent)
918
919 public:
920 wxActivateEvent(wxEventType type = wxEVT_NULL, bool active = TRUE, int Id = 0)
921 { m_eventType = type; m_active = active; m_id = Id; }
922 bool GetActive() const { return m_active; }
923
924 void CopyObject(wxObject& obj) const;
925
926 private:
927 bool m_active;
928 };
929
930 // InitDialog event class
931 /*
932 wxEVT_INIT_DIALOG
933 */
934
935 class WXDLLEXPORT wxInitDialogEvent : public wxEvent
936 {
937 DECLARE_DYNAMIC_CLASS(wxInitDialogEvent)
938
939 public:
940 wxInitDialogEvent(int Id = 0)
941 { m_eventType = wxEVT_INIT_DIALOG; m_id = Id; }
942 };
943
944 // Miscellaneous menu event class
945 /*
946 wxEVT_MENU_CHAR,
947 wxEVT_MENU_INIT,
948 wxEVT_MENU_HIGHLIGHT,
949 wxEVT_POPUP_MENU_INIT,
950 wxEVT_CONTEXT_MENU,
951 */
952
953 class WXDLLEXPORT wxMenuEvent : public wxEvent
954 {
955 DECLARE_DYNAMIC_CLASS(wxMenuEvent)
956
957 public:
958 wxMenuEvent(wxEventType type = wxEVT_NULL, int id = 0)
959 { m_eventType = type; m_menuId = id; }
960
961 int GetMenuId() const { return m_menuId; }
962
963 void CopyObject(wxObject& obj) const;
964 private:
965 int m_menuId;
966 };
967
968 // Window close or session close event class
969 /*
970 wxEVT_CLOSE_WINDOW,
971 wxEVT_END_SESSION,
972 wxEVT_QUERY_END_SESSION
973 */
974
975 class WXDLLEXPORT wxCloseEvent : public wxEvent
976 {
977 DECLARE_DYNAMIC_CLASS(wxCloseEvent)
978
979 public:
980 wxCloseEvent(wxEventType type = wxEVT_NULL, int id = 0)
981 {
982 m_eventType = type;
983 m_loggingOff = TRUE;
984 m_veto = FALSE; // should be FALSE by default
985 m_id = id;
986 #if WXWIN_COMPATIBILITY
987 m_force = FALSE;
988 #endif // WXWIN_COMPATIBILITY
989 m_canVeto = TRUE;
990 }
991
992 void SetLoggingOff(bool logOff) { m_loggingOff = logOff; }
993 bool GetLoggingOff() const { return m_loggingOff; }
994
995 void Veto(bool veto = TRUE)
996 {
997 // GetVeto() will return FALSE anyhow...
998 wxCHECK_RET( m_canVeto,
999 wxT("call to Veto() ignored (can't veto this event)") );
1000
1001 m_veto = veto;
1002 }
1003 void SetCanVeto(bool canVeto) { m_canVeto = canVeto; }
1004 // No more asserts here please, the one you put here was wrong.
1005 bool CanVeto() const { return m_canVeto; }
1006 bool GetVeto() const { return m_canVeto && m_veto; }
1007
1008 #if WXWIN_COMPATIBILITY
1009 // This is probably obsolete now, since we use CanVeto instead, in
1010 // both OnCloseWindow and OnQueryEndSession.
1011 // m_force == ! m_canVeto i.e., can't veto means we must force it to close.
1012 void SetForce(bool force) { m_force = force; }
1013 bool GetForce() const { return m_force; }
1014 #endif
1015
1016 void CopyObject(wxObject& obj) const;
1017
1018 protected:
1019 bool m_loggingOff;
1020 bool m_veto, m_canVeto;
1021
1022 #if WXWIN_COMPATIBILITY
1023 bool m_force;
1024 #endif
1025 };
1026
1027 /*
1028 wxEVT_SHOW
1029 */
1030
1031 class WXDLLEXPORT wxShowEvent : public wxEvent
1032 {
1033 DECLARE_DYNAMIC_CLASS(wxShowEvent)
1034
1035 public:
1036
1037 wxShowEvent(int id = 0, bool show = FALSE)
1038 { m_eventType = wxEVT_SHOW; m_id = id; m_show = show; }
1039
1040 void SetShow(bool show) { m_show = show; }
1041 bool GetShow() const { return m_show; }
1042
1043 void CopyObject(wxObject& obj) const;
1044
1045 protected:
1046 bool m_show;
1047 };
1048
1049 /*
1050 wxEVT_ICONIZE
1051 */
1052
1053 class WXDLLEXPORT wxIconizeEvent : public wxEvent
1054 {
1055 DECLARE_DYNAMIC_CLASS(wxIconizeEvent)
1056
1057 public:
1058 wxIconizeEvent(int id = 0)
1059 { m_eventType = wxEVT_ICONIZE; m_id = id; }
1060 };
1061
1062 /*
1063 wxEVT_MAXIMIZE
1064 */
1065
1066 class WXDLLEXPORT wxMaximizeEvent : public wxEvent
1067 {
1068 DECLARE_DYNAMIC_CLASS(wxMaximizeEvent)
1069
1070 public:
1071 wxMaximizeEvent(int id = 0)
1072 { m_eventType = wxEVT_MAXIMIZE; m_id = id; }
1073 };
1074
1075 // Joystick event class
1076 /*
1077 wxEVT_JOY_BUTTON_DOWN,
1078 wxEVT_JOY_BUTTON_UP,
1079 wxEVT_JOY_MOVE,
1080 wxEVT_JOY_ZMOVE
1081 */
1082
1083 // Which joystick? Same as Windows ids so no conversion necessary.
1084 #define wxJOYSTICK1 0
1085 #define wxJOYSTICK2 1
1086
1087 // Which button is down?
1088 #define wxJOY_BUTTON1 1
1089 #define wxJOY_BUTTON2 2
1090 #define wxJOY_BUTTON3 4
1091 #define wxJOY_BUTTON4 8
1092 #define wxJOY_BUTTON_ANY -1
1093
1094 class WXDLLEXPORT wxJoystickEvent : public wxEvent
1095 {
1096 DECLARE_DYNAMIC_CLASS(wxJoystickEvent)
1097
1098 public:
1099 wxPoint m_pos;
1100 int m_zPosition;
1101 int m_buttonChange; // Which button changed?
1102 int m_buttonState; // Which buttons are down?
1103 int m_joyStick; // Which joystick?
1104
1105 wxJoystickEvent(wxEventType type = wxEVT_NULL,
1106 int state = 0,
1107 int joystick = wxJOYSTICK1,
1108 int change = 0)
1109 {
1110 m_eventType = type;
1111 m_buttonState = state;
1112 m_pos = wxPoint(0,0);
1113 m_zPosition = 0;
1114 m_joyStick = joystick;
1115 m_buttonChange = change;
1116 }
1117
1118 wxPoint GetPosition() const { return m_pos; }
1119 int GetZPosition() const { return m_zPosition; }
1120 int GetButtonState() const { return m_buttonState; }
1121 int GetButtonChange() const { return m_buttonChange; }
1122 int GetJoystick() const { return m_joyStick; }
1123
1124 void SetJoystick(int stick) { m_joyStick = stick; }
1125 void SetButtonState(int state) { m_buttonState = state; }
1126 void SetButtonChange(int change) { m_buttonChange = change; }
1127 void SetPosition(const wxPoint& pos) { m_pos = pos; }
1128 void SetZPosition(int zPos) { m_zPosition = zPos; }
1129
1130 // Was it a button event? (*doesn't* mean: is any button *down*?)
1131 bool IsButton() const { return ((GetEventType() == wxEVT_JOY_BUTTON_DOWN) ||
1132 (GetEventType() == wxEVT_JOY_BUTTON_UP)); }
1133
1134 // Was it a move event?
1135 bool IsMove() const { return (GetEventType() == wxEVT_JOY_MOVE) ; }
1136
1137 // Was it a zmove event?
1138 bool IsZMove() const { return (GetEventType() == wxEVT_JOY_ZMOVE) ; }
1139
1140 // Was it a down event from button 1, 2, 3, 4 or any?
1141 bool ButtonDown(int but = wxJOY_BUTTON_ANY) const
1142 { return ((GetEventType() == wxEVT_JOY_BUTTON_DOWN) &&
1143 ((but == wxJOY_BUTTON_ANY) || (but == m_buttonChange))); }
1144
1145 // Was it a up event from button 1, 2, 3 or any?
1146 bool ButtonUp(int but = wxJOY_BUTTON_ANY) const
1147 { return ((GetEventType() == wxEVT_JOY_BUTTON_UP) &&
1148 ((but == wxJOY_BUTTON_ANY) || (but == m_buttonChange))); }
1149
1150 // Was the given button 1,2,3,4 or any in Down state?
1151 bool ButtonIsDown(int but = wxJOY_BUTTON_ANY) const
1152 { return (((but == wxJOY_BUTTON_ANY) && (m_buttonState != 0)) ||
1153 ((m_buttonState & but) == but)); }
1154
1155 void CopyObject(wxObject& obj) const;
1156 };
1157
1158 // Drop files event class
1159 /*
1160 wxEVT_DROP_FILES
1161 */
1162
1163 class WXDLLEXPORT wxDropFilesEvent : public wxEvent
1164 {
1165 DECLARE_DYNAMIC_CLASS(wxDropFilesEvent)
1166
1167 public:
1168 int m_noFiles;
1169 wxPoint m_pos;
1170 wxString* m_files; // Memory (de)allocated by code calling ProcessEvent
1171
1172 wxDropFilesEvent(wxEventType type = wxEVT_NULL,
1173 int noFiles = 0,
1174 wxString *files = (wxString *) NULL)
1175 { m_eventType = type; m_noFiles = noFiles; m_files = files; }
1176
1177 wxPoint GetPosition() const { return m_pos; }
1178 int GetNumberOfFiles() const { return m_noFiles; }
1179 wxString *GetFiles() const { return m_files; }
1180
1181 void CopyObject(wxObject& obj) const;
1182 };
1183
1184 // Update UI event
1185 /*
1186 wxEVT_UPDATE_UI
1187 */
1188
1189 class WXDLLEXPORT wxUpdateUIEvent : public wxCommandEvent
1190 {
1191 DECLARE_DYNAMIC_CLASS(wxUpdateUIEvent)
1192
1193 public:
1194 wxUpdateUIEvent(wxWindowID commandId = 0)
1195 {
1196 m_eventType = wxEVT_UPDATE_UI;
1197 m_id = commandId;
1198 m_checked = FALSE;
1199 m_setChecked = FALSE;
1200 m_enabled = FALSE;
1201 m_setEnabled = FALSE;
1202 m_setText = FALSE;
1203 m_text = "";
1204 }
1205
1206 bool GetChecked() const { return m_checked; }
1207 bool GetEnabled() const { return m_enabled; }
1208 wxString GetText() const { return m_text; }
1209 bool GetSetText() const { return m_setText; }
1210 bool GetSetChecked() const { return m_setChecked; }
1211 bool GetSetEnabled() const { return m_setEnabled; }
1212
1213 void Check(bool check) { m_checked = check; m_setChecked = TRUE; }
1214 void Enable(bool enable) { m_enabled = enable; m_setEnabled = TRUE; }
1215 void SetText(const wxString& text) { m_text = text; m_setText = TRUE; }
1216
1217 void CopyObject(wxObject& obj) const;
1218
1219 protected:
1220 bool m_checked;
1221 bool m_enabled;
1222 bool m_setEnabled;
1223 bool m_setText;
1224 bool m_setChecked;
1225 wxString m_text;
1226 };
1227
1228 /*
1229 wxEVT_SYS_COLOUR_CHANGED
1230 */
1231
1232 // TODO: shouldn't all events record the window ID?
1233 class WXDLLEXPORT wxSysColourChangedEvent : public wxEvent
1234 {
1235 DECLARE_DYNAMIC_CLASS(wxSysColourChangedEvent)
1236
1237 public:
1238 wxSysColourChangedEvent()
1239 { m_eventType = wxEVT_SYS_COLOUR_CHANGED; }
1240 };
1241
1242 /*
1243 wxEVT_PALETTE_CHANGED
1244 */
1245
1246 class WXDLLEXPORT wxPaletteChangedEvent : public wxEvent
1247 {
1248 DECLARE_DYNAMIC_CLASS(wxPaletteChangedEvent)
1249
1250 public:
1251 wxPaletteChangedEvent(wxWindowID id = 0) : wxEvent(id)
1252 {
1253 m_eventType = wxEVT_PALETTE_CHANGED;
1254 m_changedWindow = (wxWindow *) NULL;
1255 }
1256
1257 void SetChangedWindow(wxWindow* win) { m_changedWindow = win; }
1258 wxWindow* GetChangedWindow() const { return m_changedWindow; }
1259
1260 void CopyObject(wxObject& obj) const;
1261
1262 protected:
1263 wxWindow* m_changedWindow;
1264 };
1265
1266 /*
1267 wxEVT_QUERY_NEW_PALETTE
1268 Indicates the window is getting keyboard focus and should re-do its palette.
1269 */
1270
1271 class WXDLLEXPORT wxQueryNewPaletteEvent : public wxEvent
1272 {
1273 DECLARE_DYNAMIC_CLASS(wxQueryNewPaletteEvent)
1274
1275 public:
1276 wxQueryNewPaletteEvent(wxWindowID id = 0): wxEvent(id)
1277 { m_eventType = wxEVT_QUERY_NEW_PALETTE; m_paletteRealized = FALSE; }
1278
1279 // App sets this if it changes the palette.
1280 void SetPaletteRealized(bool realized) { m_paletteRealized = realized; }
1281 bool GetPaletteRealized() const { return m_paletteRealized; }
1282
1283 void CopyObject(wxObject& obj) const;
1284
1285 protected:
1286 bool m_paletteRealized;
1287 };
1288
1289 /*
1290 Event generated by dialog navigation keys
1291 wxEVT_NAVIGATION_KEY
1292 */
1293 // NB: don't derive from command event to avoid being propagated to the parent
1294 class WXDLLEXPORT wxNavigationKeyEvent : public wxEvent
1295 {
1296 public:
1297 wxNavigationKeyEvent()
1298 {
1299 SetEventType(wxEVT_NAVIGATION_KEY);
1300
1301 m_flags = IsForward | Propagate; // defaults are for TAB
1302 m_focus = (wxWindow *)NULL;
1303 }
1304
1305 // direction: forward (true) or backward (false)
1306 bool GetDirection() const
1307 { return (m_flags & IsForward) != 0; }
1308 void SetDirection(bool bForward)
1309 { if ( bForward ) m_flags |= IsForward; else m_flags &= ~IsForward; }
1310
1311 // it may be a window change event (MDI, notebook pages...) or a control
1312 // change event
1313 bool IsWindowChange() const
1314 { return (m_flags & WinChange) != 0; }
1315 void SetWindowChange(bool bIs)
1316 { if ( bIs ) m_flags |= WinChange; else m_flags &= ~WinChange; }
1317
1318 // some navigation events are meant to be propagated upwards (Windows
1319 // convention is to do this for TAB events) while others should always
1320 // cycle inside the panel/radiobox/whatever we're current inside
1321 bool ShouldPropagate() const
1322 { return (m_flags & Propagate) != 0; }
1323 void SetPropagate(bool bDoIt)
1324 { if ( bDoIt ) m_flags |= Propagate; else m_flags &= ~Propagate; }
1325
1326 // the child which has the focus currently (may be NULL - use
1327 // wxWindow::FindFocus then)
1328 wxWindow* GetCurrentFocus() const { return m_focus; }
1329 void SetCurrentFocus(wxWindow *win) { m_focus = win; }
1330
1331 private:
1332 enum
1333 {
1334 IsForward = 0x0001,
1335 WinChange = 0x0002,
1336 Propagate = 0x0004
1337 };
1338
1339 long m_flags;
1340 wxWindow *m_focus;
1341
1342 DECLARE_DYNAMIC_CLASS(wxNavigationKeyEvent)
1343 };
1344
1345 // Window creation/destruction events: the first is sent as soon as window is
1346 // created (i.e. the underlying GUI object exists), but when the C++ object is
1347 // fully initialized (so virtual functions may be called). The second,
1348 // wxEVT_DESTROY, is sent right before the window is destroyed - again, it's
1349 // still safe to call virtual functions at this moment
1350 /*
1351 wxEVT_CREATE
1352 wxEVT_DESTROY
1353 */
1354
1355 class WXDLLEXPORT wxWindowCreateEvent : public wxCommandEvent
1356 {
1357 DECLARE_DYNAMIC_CLASS(wxWindowCreateEvent)
1358
1359 public:
1360 wxWindowCreateEvent(wxWindow *win = NULL);
1361
1362 wxWindow *GetWindow() const { return (wxWindow *)GetEventObject(); }
1363 };
1364
1365 class WXDLLEXPORT wxWindowDestroyEvent : public wxCommandEvent
1366 {
1367 DECLARE_DYNAMIC_CLASS(wxWindowDestroyEvent)
1368
1369 public:
1370 wxWindowDestroyEvent(wxWindow *win = NULL);
1371
1372 wxWindow *GetWindow() const { return (wxWindow *)GetEventObject(); }
1373 };
1374
1375 // A help event is sent when the user clicks on a window in context-help mode.
1376 /*
1377 wxEVT_HELP
1378 wxEVT_DETAILED_HELP
1379 */
1380
1381 class WXDLLEXPORT wxHelpEvent : public wxCommandEvent
1382 {
1383 public:
1384 wxHelpEvent(wxEventType type = wxEVT_NULL,
1385 wxWindowID id = 0,
1386 const wxPoint& pt = wxDefaultPosition)
1387 {
1388 m_eventType = type;
1389 m_id = id;
1390 m_pos = pt;
1391 }
1392
1393 // Position of event (in screen coordinates)
1394 const wxPoint& GetPosition() const { return m_pos; }
1395 void SetPosition(const wxPoint& pos) { m_pos = pos; }
1396
1397 // Optional link to further help
1398 const wxString& GetLink() const { return m_link; }
1399 void SetLink(const wxString& link) { m_link = link; }
1400
1401 // Optional target to display help in. E.g. a window specification
1402 const wxString& GetTarget() const { return m_target; }
1403 void SetTarget(const wxString& target) { m_target = target; }
1404
1405 protected:
1406 wxPoint m_pos;
1407 wxString m_target;
1408 wxString m_link;
1409
1410 private:
1411 DECLARE_DYNAMIC_CLASS(wxHelpEvent)
1412 };
1413
1414 #endif // wxUSE_GUI
1415
1416 // Idle event
1417 /*
1418 wxEVT_IDLE
1419 */
1420
1421 class WXDLLEXPORT wxIdleEvent : public wxEvent
1422 {
1423 DECLARE_DYNAMIC_CLASS(wxIdleEvent)
1424
1425 public:
1426 wxIdleEvent()
1427 { m_eventType = wxEVT_IDLE; m_requestMore = FALSE; }
1428
1429 void RequestMore(bool needMore = TRUE) { m_requestMore = needMore; }
1430 bool MoreRequested() const { return m_requestMore; }
1431
1432 void CopyObject(wxObject& obj) const;
1433
1434 protected:
1435 bool m_requestMore;
1436 };
1437
1438 /* TODO
1439 wxEVT_POWER,
1440 wxEVT_MOUSE_CAPTURE_CHANGED,
1441 wxEVT_SETTING_CHANGED, // WM_WININICHANGE (NT) / WM_SETTINGCHANGE (Win95)
1442 // wxEVT_FONT_CHANGED, // WM_FONTCHANGE: roll into wxEVT_SETTING_CHANGED, but remember to propagate
1443 // wxEVT_FONT_CHANGED to all other windows (maybe).
1444 wxEVT_DRAW_ITEM, // Leave these three as virtual functions in wxControl?? Platform-specific.
1445 wxEVT_MEASURE_ITEM,
1446 wxEVT_COMPARE_ITEM
1447 */
1448
1449 // ============================================================================
1450 // event handler and related classes
1451 // ============================================================================
1452
1453 typedef void (wxObject::*wxObjectEventFunction)(wxEvent&);
1454
1455 struct WXDLLEXPORT wxEventTableEntry
1456 {
1457 wxEventTableEntry( const int &eventType,
1458 int id,
1459 int m_lastId,
1460 wxObjectEventFunction fn,
1461 wxObject *data ) :
1462 m_eventType(eventType),
1463 m_id(id),
1464 m_lastId(id),
1465 m_fn(fn),
1466 m_callbackUserData(data)
1467 {
1468 }
1469
1470 // For some reason, this can't be wxEventType, or VC++ complains.
1471 int m_eventType; // main event type
1472 int m_id; // control/menu/toolbar id
1473 int m_lastId; // used for ranges of ids
1474 wxObjectEventFunction m_fn; // function to call: not wxEventFunction,
1475 // because of dependency problems
1476
1477 wxObject* m_callbackUserData;
1478 };
1479
1480 struct WXDLLEXPORT wxDynamicEventTableEntry
1481 {
1482 // For some reason, this can't be wxEventType, or VC++ complains.
1483 int m_eventType; // main event type
1484 int m_id; // control/menu/toolbar id
1485 int m_lastId; // used for ranges of ids
1486 wxObjectEventFunction m_fn; // function to call: not wxEventFunction,
1487 // because of dependency problems
1488
1489 wxObject* m_callbackUserData;
1490 };
1491
1492 struct WXDLLEXPORT wxEventTable
1493 {
1494 const wxEventTable *baseTable; // Points to base event table (next in chain)
1495 const wxEventTableEntry *entries; // Points to bottom of entry array
1496 };
1497
1498 class WXDLLEXPORT wxEvtHandler : public wxObject
1499 {
1500 DECLARE_DYNAMIC_CLASS(wxEvtHandler)
1501
1502 public:
1503 wxEvtHandler();
1504 ~wxEvtHandler();
1505
1506 wxEvtHandler *GetNextHandler() const { return m_nextHandler; }
1507 wxEvtHandler *GetPreviousHandler() const { return m_previousHandler; }
1508 void SetNextHandler(wxEvtHandler *handler) { m_nextHandler = handler; }
1509 void SetPreviousHandler(wxEvtHandler *handler) { m_previousHandler = handler; }
1510
1511 void SetEvtHandlerEnabled(bool enabled) { m_enabled = enabled; }
1512 bool GetEvtHandlerEnabled() const { return m_enabled; }
1513
1514 // process an event right now
1515 virtual bool ProcessEvent(wxEvent& event);
1516
1517 // add an event to be processed later
1518 void AddPendingEvent(wxEvent& event);
1519
1520 // process all pending events
1521 void ProcessPendingEvents();
1522
1523 // add a
1524 #if wxUSE_THREADS
1525 bool ProcessThreadEvent(wxEvent& event);
1526 #endif
1527
1528 // Dynamic association of a member function handler with the event handler,
1529 // id and event type
1530 void Connect( int id, int lastId, int eventType,
1531 wxObjectEventFunction func,
1532 wxObject *userData = (wxObject *) NULL );
1533
1534 // Convenience function: take just one id
1535 void Connect( int id, int eventType,
1536 wxObjectEventFunction func,
1537 wxObject *userData = (wxObject *) NULL )
1538 { Connect(id, -1, eventType, func, userData); }
1539
1540 bool Disconnect( int id, int lastId = -1, wxEventType eventType = wxEVT_NULL,
1541 wxObjectEventFunction func = NULL,
1542 wxObject *userData = (wxObject *) NULL );
1543
1544 // Convenience function: take just one id
1545 bool Disconnect( int id, wxEventType eventType = wxEVT_NULL,
1546 wxObjectEventFunction func = NULL,
1547 wxObject *userData = (wxObject *) NULL )
1548 { return Disconnect(id, -1, eventType, func, userData); }
1549
1550 // implementation from now on
1551 virtual bool SearchEventTable(wxEventTable& table, wxEvent& event);
1552 bool SearchDynamicEventTable( wxEvent& event );
1553
1554 #if wxUSE_THREADS
1555 void ClearEventLocker()
1556 {
1557 # if !defined(__VISAGECPP__)
1558 delete m_eventsLocker;
1559 m_eventsLocker = NULL;
1560 #endif
1561 };
1562 #endif
1563
1564 // old stuff
1565
1566 #if WXWIN_COMPATIBILITY_2
1567 virtual void OnCommand(wxWindow& WXUNUSED(win),
1568 wxCommandEvent& WXUNUSED(event))
1569 {
1570 wxFAIL_MSG(wxT("shouldn't be called any more"));
1571 }
1572
1573 // Called if child control has no callback function
1574 virtual long Default()
1575 { return GetNextHandler() ? GetNextHandler()->Default() : 0; };
1576 #endif // WXWIN_COMPATIBILITY_2
1577
1578 #if WXWIN_COMPATIBILITY
1579 virtual bool OnClose();
1580 #endif
1581
1582 private:
1583 static const wxEventTableEntry sm_eventTableEntries[];
1584
1585 protected:
1586 static const wxEventTable sm_eventTable;
1587
1588 virtual const wxEventTable *GetEventTable() const;
1589
1590 protected:
1591 wxEvtHandler* m_nextHandler;
1592 wxEvtHandler* m_previousHandler;
1593 wxList* m_dynamicEvents;
1594 wxList* m_pendingEvents;
1595 #if wxUSE_THREADS
1596 #if defined (__VISAGECPP__)
1597 wxCriticalSection m_eventsLocker;
1598 # else
1599 wxCriticalSection* m_eventsLocker;
1600 # endif
1601 #endif
1602
1603 // optimization: instead of using costly IsKindOf() to decide whether we're
1604 // a window (which is true in 99% of cases), use this flag
1605 bool m_isWindow;
1606
1607 // Is event handler enabled?
1608 bool m_enabled;
1609 };
1610
1611 typedef void (wxEvtHandler::*wxEventFunction)(wxEvent&);
1612 #if wxUSE_GUI
1613 typedef void (wxEvtHandler::*wxCommandEventFunction)(wxCommandEvent&);
1614 typedef void (wxEvtHandler::*wxScrollEventFunction)(wxScrollEvent&);
1615 typedef void (wxEvtHandler::*wxScrollWinEventFunction)(wxScrollWinEvent&);
1616 typedef void (wxEvtHandler::*wxSizeEventFunction)(wxSizeEvent&);
1617 typedef void (wxEvtHandler::*wxMoveEventFunction)(wxMoveEvent&);
1618 typedef void (wxEvtHandler::*wxPaintEventFunction)(wxPaintEvent&);
1619 typedef void (wxEvtHandler::*wxEraseEventFunction)(wxEraseEvent&);
1620 typedef void (wxEvtHandler::*wxMouseEventFunction)(wxMouseEvent&);
1621 typedef void (wxEvtHandler::*wxCharEventFunction)(wxKeyEvent&);
1622 typedef void (wxEvtHandler::*wxFocusEventFunction)(wxFocusEvent&);
1623 typedef void (wxEvtHandler::*wxActivateEventFunction)(wxActivateEvent&);
1624 typedef void (wxEvtHandler::*wxMenuEventFunction)(wxMenuEvent&);
1625 typedef void (wxEvtHandler::*wxJoystickEventFunction)(wxJoystickEvent&);
1626 typedef void (wxEvtHandler::*wxDropFilesEventFunction)(wxDropFilesEvent&);
1627 typedef void (wxEvtHandler::*wxInitDialogEventFunction)(wxInitDialogEvent&);
1628 typedef void (wxEvtHandler::*wxSysColourChangedFunction)(wxSysColourChangedEvent&);
1629 typedef void (wxEvtHandler::*wxUpdateUIEventFunction)(wxUpdateUIEvent&);
1630 typedef void (wxEvtHandler::*wxIdleEventFunction)(wxIdleEvent&);
1631 typedef void (wxEvtHandler::*wxCloseEventFunction)(wxCloseEvent&);
1632 typedef void (wxEvtHandler::*wxShowEventFunction)(wxShowEvent&);
1633 typedef void (wxEvtHandler::*wxIconizeEventFunction)(wxShowEvent&);
1634 typedef void (wxEvtHandler::*wxMaximizeEventFunction)(wxShowEvent&);
1635 typedef void (wxEvtHandler::*wxNavigationKeyEventFunction)(wxNavigationKeyEvent&);
1636 typedef void (wxEvtHandler::*wxPaletteChangedEventFunction)(wxPaletteChangedEvent&);
1637 typedef void (wxEvtHandler::*wxQueryNewPaletteEventFunction)(wxQueryNewPaletteEvent&);
1638 typedef void (wxEvtHandler::*wxWindowCreateEventFunction)(wxWindowCreateEvent&);
1639 typedef void (wxEvtHandler::*wxWindowDestroyEventFunction)(wxWindowDestroyEvent&);
1640 typedef void (wxEvtHandler::*wxSetCursorEventFunction)(wxSetCursorEvent&);
1641 typedef void (wxEvtHandler::*wxNotifyEventFunction)(wxNotifyEvent&);
1642 typedef void (wxEvtHandler::*wxHelpEventFunction)(wxHelpEvent&);
1643 #endif // wxUSE_GUI
1644
1645 // N.B. In GNU-WIN32, you *have* to take the address of a member function
1646 // (use &) or the compiler crashes...
1647
1648 #define DECLARE_EVENT_TABLE() \
1649 private:\
1650 static const wxEventTableEntry sm_eventTableEntries[];\
1651 protected:\
1652 static const wxEventTable sm_eventTable;\
1653 virtual const wxEventTable* GetEventTable() const;
1654
1655 #define BEGIN_EVENT_TABLE(theClass, baseClass) \
1656 const wxEventTable *theClass::GetEventTable() const { return &theClass::sm_eventTable; }\
1657 const wxEventTable theClass::sm_eventTable =\
1658 { &baseClass::sm_eventTable, &theClass::sm_eventTableEntries[0] };\
1659 const wxEventTableEntry theClass::sm_eventTableEntries[] = { \
1660
1661 #define END_EVENT_TABLE() \
1662 wxEventTableEntry( 0, 0, 0, 0, 0 ) };
1663
1664 /*
1665 * Event table macros
1666 */
1667
1668 // Generic events
1669 #define EVT_CUSTOM(event, id, func) wxEventTableEntry( event, id, -1, (wxObjectEventFunction) (wxEventFunction) & func, (wxObject *) NULL ),
1670 #define EVT_CUSTOM_RANGE(event, id1, id2, func) wxEventTableEntry( event, id1, id2, (wxObjectEventFunction) (wxEventFunction) & func, (wxObject *) NULL ),
1671
1672 // Miscellaneous
1673 #define EVT_SIZE(func) wxEventTableEntry( wxEVT_SIZE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxSizeEventFunction) & func, (wxObject *) NULL ),
1674 #define EVT_MOVE(func) wxEventTableEntry( wxEVT_MOVE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMoveEventFunction) & func, (wxObject *) NULL ),
1675 #define EVT_CLOSE(func) wxEventTableEntry( wxEVT_CLOSE_WINDOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCloseEventFunction) & func, (wxObject *) NULL ),
1676 #define EVT_END_SESSION(func) wxEventTableEntry( wxEVT_END_SESSION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCloseEventFunction) & func, (wxObject *) NULL ),
1677 #define EVT_QUERY_END_SESSION(func) wxEventTableEntry( wxEVT_QUERY_END_SESSION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCloseEventFunction) & func, (wxObject *) NULL ),
1678 #define EVT_PAINT(func) wxEventTableEntry( wxEVT_PAINT, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxPaintEventFunction) & func, (wxObject *) NULL ),
1679 #define EVT_ERASE_BACKGROUND(func) wxEventTableEntry( wxEVT_ERASE_BACKGROUND, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxEraseEventFunction) & func, (wxObject *) NULL ),
1680 #define EVT_CHAR(func) wxEventTableEntry( wxEVT_CHAR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCharEventFunction) & func, (wxObject *) NULL ),
1681 #define EVT_KEY_DOWN(func) wxEventTableEntry( wxEVT_KEY_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCharEventFunction) & func, (wxObject *) NULL ),
1682 #define EVT_KEY_UP(func) wxEventTableEntry( wxEVT_KEY_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCharEventFunction) & func, (wxObject *) NULL ),
1683 #define EVT_CHAR_HOOK(func) wxEventTableEntry( wxEVT_CHAR_HOOK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCharEventFunction) & func, NULL ),
1684 #define EVT_MENU_HIGHLIGHT(id, func) wxEventTableEntry( wxEVT_MENU_HIGHLIGHT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxMenuEventFunction) & func, (wxObject *) NULL ),
1685 #define EVT_MENU_HIGHLIGHT_ALL(func) wxEventTableEntry( wxEVT_MENU_HIGHLIGHT, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMenuEventFunction) & func, (wxObject *) NULL ),
1686 #define EVT_SET_FOCUS(func) wxEventTableEntry( wxEVT_SET_FOCUS, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxFocusEventFunction) & func, (wxObject *) NULL ),
1687 #define EVT_KILL_FOCUS(func) wxEventTableEntry( wxEVT_KILL_FOCUS, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxFocusEventFunction) & func, (wxObject *) NULL ),
1688 #define EVT_ACTIVATE(func) wxEventTableEntry( wxEVT_ACTIVATE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxActivateEventFunction) & func, (wxObject *) NULL ),
1689 #define EVT_ACTIVATE_APP(func) wxEventTableEntry( wxEVT_ACTIVATE_APP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxActivateEventFunction) & func, (wxObject *) NULL ),
1690 #define EVT_END_SESSION(func) wxEventTableEntry( wxEVT_END_SESSION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCloseEventFunction) & func, (wxObject *) NULL ),
1691 #define EVT_QUERY_END_SESSION(func) wxEventTableEntry( wxEVT_QUERY_END_SESSION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCloseEventFunction) & func, (wxObject *) NULL ),
1692 #define EVT_DROP_FILES(func) wxEventTableEntry( wxEVT_DROP_FILES, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxDropFilesEventFunction) & func, (wxObject *) NULL ),
1693 #define EVT_INIT_DIALOG(func) wxEventTableEntry( wxEVT_INIT_DIALOG, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxInitDialogEventFunction) & func, (wxObject *) NULL ),
1694 #define EVT_SYS_COLOUR_CHANGED(func) wxEventTableEntry( wxEVT_SYS_COLOUR_CHANGED, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxSysColourChangedFunction) & func, (wxObject *) NULL ),
1695 #define EVT_SHOW(func) wxEventTableEntry( wxEVT_SHOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxShowEventFunction) & func, (wxObject *) NULL ),
1696 #define EVT_MAXIMIZE(func) wxEventTableEntry( wxEVT_MAXIMIZE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMaximizeEventFunction) & func, (wxObject *) NULL ),
1697 #define EVT_ICONIZE(func) wxEventTableEntry( wxEVT_ICONIZE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxIconizeEventFunction) & func, (wxObject *) NULL ),
1698 #define EVT_NAVIGATION_KEY(func) wxEventTableEntry( wxEVT_NAVIGATION_KEY, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNavigationKeyEventFunction) & func, (wxObject *) NULL ),
1699 #define EVT_PALETTE_CHANGED(func) wxEventTableEntry( wxEVT_PALETTE_CHANGED, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxPaletteChangedEventFunction) & func, (wxObject *) NULL ),
1700 #define EVT_QUERY_NEW_PALETTE(func) wxEventTableEntry( wxEVT_QUERY_NEW_PALETTE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxQueryNewPaletteEventFunction) & func, (wxObject *) NULL ),
1701 #define EVT_WINDOW_CREATE(func) wxEventTableEntry( wxEVT_CREATE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxWindowCreateEventFunction) & func, (wxObject *) NULL ),
1702 #define EVT_WINDOW_DESTROY(func) wxEventTableEntry( wxEVT_DESTROY, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxWindowDestroyEventFunction) & func, (wxObject *) NULL ),
1703 #define EVT_SET_CURSOR(func) wxEventTableEntry( wxEVT_SET_CURSOR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxSetCursorEventFunction) & func, (wxObject *) NULL ),
1704
1705 // Mouse events
1706 #define EVT_LEFT_DOWN(func) wxEventTableEntry( wxEVT_LEFT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1707 #define EVT_LEFT_UP(func) wxEventTableEntry( wxEVT_LEFT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1708 #define EVT_MIDDLE_DOWN(func) wxEventTableEntry( wxEVT_MIDDLE_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1709 #define EVT_MIDDLE_UP(func) wxEventTableEntry( wxEVT_MIDDLE_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1710 #define EVT_RIGHT_DOWN(func) wxEventTableEntry( wxEVT_RIGHT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1711 #define EVT_RIGHT_UP(func) wxEventTableEntry( wxEVT_RIGHT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1712 #define EVT_MOTION(func) wxEventTableEntry( wxEVT_MOTION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1713 #define EVT_LEFT_DCLICK(func) wxEventTableEntry( wxEVT_LEFT_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1714 #define EVT_MIDDLE_DCLICK(func) wxEventTableEntry( wxEVT_MIDDLE_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1715 #define EVT_RIGHT_DCLICK(func) wxEventTableEntry( wxEVT_RIGHT_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1716 #define EVT_LEAVE_WINDOW(func) wxEventTableEntry( wxEVT_LEAVE_WINDOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1717 #define EVT_ENTER_WINDOW(func) wxEventTableEntry( wxEVT_ENTER_WINDOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1718
1719 // All mouse events
1720 #define EVT_MOUSE_EVENTS(func) \
1721 wxEventTableEntry( wxEVT_LEFT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1722 wxEventTableEntry( wxEVT_LEFT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1723 wxEventTableEntry( wxEVT_MIDDLE_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1724 wxEventTableEntry( wxEVT_MIDDLE_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1725 wxEventTableEntry( wxEVT_RIGHT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1726 wxEventTableEntry( wxEVT_RIGHT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1727 wxEventTableEntry( wxEVT_MOTION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1728 wxEventTableEntry( wxEVT_LEFT_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1729 wxEventTableEntry( wxEVT_MIDDLE_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1730 wxEventTableEntry( wxEVT_RIGHT_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1731 wxEventTableEntry( wxEVT_ENTER_WINDOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1732 wxEventTableEntry( wxEVT_LEAVE_WINDOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1733
1734 // EVT_COMMAND
1735 #define EVT_COMMAND(id, event, fn) wxEventTableEntry( event, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1736 #define EVT_COMMAND_RANGE(id1, id2, event, fn) wxEventTableEntry( event, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1737
1738 // Scrolling from wxWindow (sent to wxScrolledWindow)
1739 #define EVT_SCROLLWIN(func) \
1740 wxEventTableEntry( wxEVT_SCROLLWIN_TOP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),\
1741 wxEventTableEntry( wxEVT_SCROLLWIN_BOTTOM, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),\
1742 wxEventTableEntry( wxEVT_SCROLLWIN_LINEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),\
1743 wxEventTableEntry( wxEVT_SCROLLWIN_LINEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),\
1744 wxEventTableEntry( wxEVT_SCROLLWIN_PAGEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),\
1745 wxEventTableEntry( wxEVT_SCROLLWIN_PAGEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),\
1746 wxEventTableEntry( wxEVT_SCROLLWIN_THUMBTRACK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),\
1747 wxEventTableEntry( wxEVT_SCROLLWIN_THUMBRELEASE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1748
1749 #define EVT_SCROLLWIN_TOP(func) wxEventTableEntry( wxEVT_SCROLLWIN_TOP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1750 #define EVT_SCROLLWIN_BOTTOM(func) wxEventTableEntry( wxEVT_SCROLLWIN_BOTTOM, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1751 #define EVT_SCROLLWIN_LINEUP(func) wxEventTableEntry( wxEVT_SCROLLWIN_LINEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1752 #define EVT_SCROLLWIN_LINEDOWN(func) wxEventTableEntry( wxEVT_SCROLLWIN_LINEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1753 #define EVT_SCROLLWIN_PAGEUP(func) wxEventTableEntry( wxEVT_SCROLLWIN_PAGEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1754 #define EVT_SCROLLWIN_PAGEDOWN(func) wxEventTableEntry( wxEVT_SCROLLWIN_PAGEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1755 #define EVT_SCROLLWIN_THUMBTRACK(func) wxEventTableEntry( wxEVT_SCROLLWIN_THUMBTRACK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1756 #define EVT_SCROLLWIN_THUMBRELEASE(func) wxEventTableEntry( wxEVT_SCROLLWIN_THUMBRELEASE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1757
1758 // Scrolling from wxSlider and wxScrollBar
1759 #define EVT_SCROLL(func) \
1760 wxEventTableEntry( wxEVT_SCROLL_TOP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1761 wxEventTableEntry( wxEVT_SCROLL_BOTTOM, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1762 wxEventTableEntry( wxEVT_SCROLL_LINEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1763 wxEventTableEntry( wxEVT_SCROLL_LINEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1764 wxEventTableEntry( wxEVT_SCROLL_PAGEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1765 wxEventTableEntry( wxEVT_SCROLL_PAGEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1766 wxEventTableEntry( wxEVT_SCROLL_THUMBTRACK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1767 wxEventTableEntry( wxEVT_SCROLL_THUMBRELEASE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1768
1769 #define EVT_SCROLL_TOP(func) wxEventTableEntry( wxEVT_SCROLL_TOP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1770 #define EVT_SCROLL_BOTTOM(func) wxEventTableEntry( wxEVT_SCROLL_BOTTOM, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1771 #define EVT_SCROLL_LINEUP(func) wxEventTableEntry( wxEVT_SCROLL_LINEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1772 #define EVT_SCROLL_LINEDOWN(func) wxEventTableEntry( wxEVT_SCROLL_LINEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1773 #define EVT_SCROLL_PAGEUP(func) wxEventTableEntry( wxEVT_SCROLL_PAGEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1774 #define EVT_SCROLL_PAGEDOWN(func) wxEventTableEntry( wxEVT_SCROLL_PAGEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1775 #define EVT_SCROLL_THUMBTRACK(func) wxEventTableEntry( wxEVT_SCROLL_THUMBTRACK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1776 #define EVT_SCROLL_THUMBRELEASE(func) wxEventTableEntry( wxEVT_SCROLL_THUMBRELEASE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1777
1778 // Scrolling from wxSlider and wxScrollBar, with an id
1779 #define EVT_COMMAND_SCROLL(id, func) \
1780 wxEventTableEntry( wxEVT_SCROLL_TOP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1781 wxEventTableEntry( wxEVT_SCROLL_BOTTOM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1782 wxEventTableEntry( wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1783 wxEventTableEntry( wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1784 wxEventTableEntry( wxEVT_SCROLL_PAGEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1785 wxEventTableEntry( wxEVT_SCROLL_PAGEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1786 wxEventTableEntry( wxEVT_SCROLL_THUMBTRACK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1787 wxEventTableEntry( wxEVT_SCROLL_THUMBRELEASE, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1788
1789 #define EVT_COMMAND_SCROLL_TOP(id, func) wxEventTableEntry( wxEVT_SCROLL_TOP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1790 #define EVT_COMMAND_SCROLL_BOTTOM(id, func) wxEventTableEntry( wxEVT_SCROLL_BOTTOM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1791 #define EVT_COMMAND_SCROLL_LINEUP(id, func) wxEventTableEntry( wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1792 #define EVT_COMMAND_SCROLL_LINEDOWN(id, func) wxEventTableEntry( wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1793 #define EVT_COMMAND_SCROLL_PAGEUP(id, func) wxEventTableEntry( wxEVT_SCROLL_PAGEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1794 #define EVT_COMMAND_SCROLL_PAGEDOWN(id, func) wxEventTableEntry( wxEVT_SCROLL_PAGEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1795 #define EVT_COMMAND_SCROLL_THUMBTRACK(id, func) wxEventTableEntry( wxEVT_SCROLL_THUMBTRACK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1796 #define EVT_COMMAND_SCROLL_THUMBRELEASE(id, func) wxEventTableEntry( wxEVT_SCROLL_THUMBRELEASE, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1797
1798 // Convenience macros for commonly-used commands
1799 #define EVT_BUTTON(id, fn) wxEventTableEntry( wxEVT_COMMAND_BUTTON_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1800 #define EVT_CHECKBOX(id, fn) wxEventTableEntry( wxEVT_COMMAND_CHECKBOX_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1801 #define EVT_CHOICE(id, fn) wxEventTableEntry( wxEVT_COMMAND_CHOICE_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1802 #define EVT_LISTBOX(id, fn) wxEventTableEntry( wxEVT_COMMAND_LISTBOX_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1803 #define EVT_LISTBOX_DCLICK(id, fn) wxEventTableEntry( wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1804 #define EVT_TEXT(id, fn) wxEventTableEntry( wxEVT_COMMAND_TEXT_UPDATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1805 #define EVT_TEXT_ENTER(id, fn) wxEventTableEntry( wxEVT_COMMAND_TEXT_ENTER, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1806 #define EVT_MENU(id, fn) wxEventTableEntry( wxEVT_COMMAND_MENU_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1807 #define EVT_MENU_RANGE(id1, id2, fn) wxEventTableEntry( wxEVT_COMMAND_MENU_SELECTED, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1808 #define EVT_SLIDER(id, fn) wxEventTableEntry( wxEVT_COMMAND_SLIDER_UPDATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1809 #define EVT_RADIOBOX(id, fn) wxEventTableEntry( wxEVT_COMMAND_RADIOBOX_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1810 #define EVT_RADIOBUTTON(id, fn) wxEventTableEntry( wxEVT_COMMAND_RADIOBUTTON_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1811 // EVT_SCROLLBAR is now obsolete since we use EVT_COMMAND_SCROLL... events
1812 #define EVT_SCROLLBAR(id, fn) wxEventTableEntry( wxEVT_COMMAND_SCROLLBAR_UPDATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1813 #define EVT_VLBOX(id, fn) wxEventTableEntry( wxEVT_COMMAND_VLBOX_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1814 #define EVT_COMBOBOX(id, fn) wxEventTableEntry( wxEVT_COMMAND_COMBOBOX_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1815 #define EVT_TOOL(id, fn) wxEventTableEntry( wxEVT_COMMAND_TOOL_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1816 #define EVT_TOOL_RANGE(id1, id2, fn) wxEventTableEntry( wxEVT_COMMAND_TOOL_CLICKED, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1817 #define EVT_TOOL_RCLICKED(id, fn) wxEventTableEntry( wxEVT_COMMAND_TOOL_RCLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1818 #define EVT_TOOL_RCLICKED_RANGE(id1, id2, fn) wxEventTableEntry( wxEVT_COMMAND_TOOL_RCLICKED, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1819 #define EVT_TOOL_ENTER(id, fn) wxEventTableEntry( wxEVT_COMMAND_TOOL_ENTER, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1820 #define EVT_CHECKLISTBOX(id, fn) wxEventTableEntry( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1821
1822 // Generic command events
1823 #define EVT_COMMAND_LEFT_CLICK(id, fn) wxEventTableEntry( wxEVT_COMMAND_LEFT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1824 #define EVT_COMMAND_LEFT_DCLICK(id, fn) wxEventTableEntry( wxEVT_COMMAND_LEFT_DCLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1825 #define EVT_COMMAND_RIGHT_CLICK(id, fn) wxEventTableEntry( wxEVT_COMMAND_RIGHT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1826 #define EVT_COMMAND_RIGHT_DCLICK(id, fn) wxEventTableEntry( wxEVT_COMMAND_RIGHT_DCLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1827 #define EVT_COMMAND_SET_FOCUS(id, fn) wxEventTableEntry( wxEVT_COMMAND_SET_FOCUS, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1828 #define EVT_COMMAND_KILL_FOCUS(id, fn) wxEventTableEntry( wxEVT_COMMAND_KILL_FOCUS, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1829 #define EVT_COMMAND_ENTER(id, fn) wxEventTableEntry( wxEVT_COMMAND_ENTER, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1830
1831 // Joystick events
1832 #define EVT_JOY_DOWN(func) \
1833 wxEventTableEntry( wxEVT_JOY_BUTTON_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL ),
1834 #define EVT_JOY_UP(func) \
1835 wxEventTableEntry( wxEVT_JOY_BUTTON_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL ),
1836 #define EVT_JOY_MOVE(func) \
1837 wxEventTableEntry( wxEVT_JOY_MOVE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL ),
1838 #define EVT_JOY_ZMOVE(func) \
1839 wxEventTableEntry( wxEVT_JOY_ZMOVE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL ),
1840
1841 // All joystick events
1842 #define EVT_JOYSTICK_EVENTS(func) \
1843 wxEventTableEntry( wxEVT_JOY_BUTTON_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL ),\
1844 wxEventTableEntry( wxEVT_JOY_BUTTON_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL ),\
1845 wxEventTableEntry( wxEVT_JOY_MOVE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL ),\
1846 wxEventTableEntry( wxEVT_JOY_ZMOVE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL ),
1847
1848 // Idle event
1849 #define EVT_IDLE(func) \
1850 wxEventTableEntry( wxEVT_IDLE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxIdleEventFunction) & func, (wxObject *) NULL ),
1851
1852 // Update UI event
1853 #define EVT_UPDATE_UI(id, func) \
1854 wxEventTableEntry( wxEVT_UPDATE_UI, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxUpdateUIEventFunction) & func, (wxObject *) NULL ),
1855 #define EVT_UPDATE_UI_RANGE(id1, id2, func) \
1856 wxEventTableEntry( wxEVT_UPDATE_UI, id1, id2, (wxObjectEventFunction)(wxEventFunction)(wxUpdateUIEventFunction)&func, (wxObject *) NULL ),
1857
1858 // Help events
1859 #define EVT_HELP(id, func) \
1860 wxEventTableEntry( wxEVT_HELP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxHelpEventFunction) & func, (wxObject *) NULL ),
1861
1862 #define EVT_HELP_RANGE(id1, id2, func) \
1863 wxEventTableEntry( wxEVT_HELP, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxHelpEventFunction) & func, (wxObject *) NULL ),
1864
1865 #define EVT_DETAILED_HELP(id, func) \
1866 wxEventTableEntry( wxEVT_DETAILED_HELP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxHelpEventFunction) & func, (wxObject *) NULL ),
1867
1868 #define EVT_DETAILED_HELP_RANGE(id1, id2, func) \
1869 wxEventTableEntry( wxEVT_DETAILED_HELP, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxHelpEventFunction) & func, (wxObject *) NULL ),
1870
1871 // ----------------------------------------------------------------------------
1872 // Global data
1873 // ----------------------------------------------------------------------------
1874
1875 // for pending event processing - notice that there is intentionally no
1876 // WXDLLEXPORT here
1877 extern wxList *wxPendingEvents;
1878 #if wxUSE_THREADS
1879 extern wxCriticalSection *wxPendingEventsLocker;
1880 #endif
1881
1882 // ----------------------------------------------------------------------------
1883 // Helper functions
1884 // ----------------------------------------------------------------------------
1885
1886 #if wxUSE_GUI
1887
1888 // Find a window with the focus, that is also a descendant of the given window.
1889 // This is used to determine the window to initially send commands to.
1890 wxWindow* wxFindFocusDescendant(wxWindow* ancestor);
1891
1892 #endif // wxUSE_GUI
1893
1894 #endif
1895 // _WX_EVENTH__