]> git.saurik.com Git - wxWidgets.git/blame_incremental - include/wx/event.h
corrected comment
[wxWidgets.git] / include / wx / event.h
... / ...
CommitLineData
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
33class 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
52typedef int wxEventType;
53
54// generate a new unique event type
55extern wxEventType wxNewEventType();
56
57// the standard event types
58extern wxEventType wxEVT_NULL;
59extern wxEventType wxEVT_FIRST;
60
61extern wxEventType wxEVT_COMMAND_BUTTON_CLICKED;
62extern wxEventType wxEVT_COMMAND_CHECKBOX_CLICKED;
63extern wxEventType wxEVT_COMMAND_CHOICE_SELECTED;
64extern wxEventType wxEVT_COMMAND_LISTBOX_SELECTED;
65extern wxEventType wxEVT_COMMAND_LISTBOX_DOUBLECLICKED;
66extern wxEventType wxEVT_COMMAND_CHECKLISTBOX_TOGGLED;
67extern wxEventType wxEVT_COMMAND_TEXT_UPDATED;
68extern wxEventType wxEVT_COMMAND_TEXT_ENTER;
69extern wxEventType wxEVT_COMMAND_MENU_SELECTED;
70extern wxEventType wxEVT_COMMAND_TOOL_CLICKED;
71extern wxEventType wxEVT_COMMAND_SLIDER_UPDATED;
72extern wxEventType wxEVT_COMMAND_RADIOBOX_SELECTED;
73extern wxEventType wxEVT_COMMAND_RADIOBUTTON_SELECTED;
74extern wxEventType wxEVT_COMMAND_SCROLLBAR_UPDATED;
75extern wxEventType wxEVT_COMMAND_VLBOX_SELECTED;
76extern wxEventType wxEVT_COMMAND_COMBOBOX_SELECTED;
77extern wxEventType wxEVT_COMMAND_TOOL_RCLICKED;
78extern wxEventType wxEVT_COMMAND_TOOL_ENTER;
79extern wxEventType wxEVT_COMMAND_SPINCTRL_UPDATED;
80
81// Sockets and timers send events, too
82extern wxEventType wxEVT_SOCKET;
83extern wxEventType wxEVT_TIMER;
84
85// Mouse event types
86extern wxEventType wxEVT_LEFT_DOWN;
87extern wxEventType wxEVT_LEFT_UP;
88extern wxEventType wxEVT_MIDDLE_DOWN;
89extern wxEventType wxEVT_MIDDLE_UP;
90extern wxEventType wxEVT_RIGHT_DOWN;
91extern wxEventType wxEVT_RIGHT_UP;
92extern wxEventType wxEVT_MOTION;
93extern wxEventType wxEVT_ENTER_WINDOW;
94extern wxEventType wxEVT_LEAVE_WINDOW;
95extern wxEventType wxEVT_LEFT_DCLICK;
96extern wxEventType wxEVT_MIDDLE_DCLICK;
97extern wxEventType wxEVT_RIGHT_DCLICK;
98extern wxEventType wxEVT_SET_FOCUS;
99extern wxEventType wxEVT_KILL_FOCUS;
100
101// Non-client mouse events
102extern wxEventType wxEVT_NC_LEFT_DOWN;
103extern wxEventType wxEVT_NC_LEFT_UP;
104extern wxEventType wxEVT_NC_MIDDLE_DOWN;
105extern wxEventType wxEVT_NC_MIDDLE_UP;
106extern wxEventType wxEVT_NC_RIGHT_DOWN;
107extern wxEventType wxEVT_NC_RIGHT_UP;
108extern wxEventType wxEVT_NC_MOTION;
109extern wxEventType wxEVT_NC_ENTER_WINDOW;
110extern wxEventType wxEVT_NC_LEAVE_WINDOW;
111extern wxEventType wxEVT_NC_LEFT_DCLICK;
112extern wxEventType wxEVT_NC_MIDDLE_DCLICK;
113extern wxEventType wxEVT_NC_RIGHT_DCLICK;
114
115// Character input event type
116extern wxEventType wxEVT_CHAR;
117extern wxEventType wxEVT_CHAR_HOOK;
118extern wxEventType wxEVT_NAVIGATION_KEY;
119extern wxEventType wxEVT_KEY_DOWN;
120extern wxEventType wxEVT_KEY_UP;
121
122// Set cursor event
123extern wxEventType wxEVT_SET_CURSOR;
124
125// wxScrollbar and wxSlider event identifiers
126extern wxEventType wxEVT_SCROLL_TOP;
127extern wxEventType wxEVT_SCROLL_BOTTOM;
128extern wxEventType wxEVT_SCROLL_LINEUP;
129extern wxEventType wxEVT_SCROLL_LINEDOWN;
130extern wxEventType wxEVT_SCROLL_PAGEUP;
131extern wxEventType wxEVT_SCROLL_PAGEDOWN;
132extern wxEventType wxEVT_SCROLL_THUMBTRACK;
133extern wxEventType wxEVT_SCROLL_THUMBRELEASE;
134
135// Scroll events from wxWindow
136extern wxEventType wxEVT_SCROLLWIN_TOP;
137extern wxEventType wxEVT_SCROLLWIN_BOTTOM;
138extern wxEventType wxEVT_SCROLLWIN_LINEUP;
139extern wxEventType wxEVT_SCROLLWIN_LINEDOWN;
140extern wxEventType wxEVT_SCROLLWIN_PAGEUP;
141extern wxEventType wxEVT_SCROLLWIN_PAGEDOWN;
142extern wxEventType wxEVT_SCROLLWIN_THUMBTRACK;
143extern wxEventType wxEVT_SCROLLWIN_THUMBRELEASE;
144
145// System events
146extern wxEventType wxEVT_SIZE;
147extern wxEventType wxEVT_MOVE;
148extern wxEventType wxEVT_CLOSE_WINDOW;
149extern wxEventType wxEVT_END_SESSION;
150extern wxEventType wxEVT_QUERY_END_SESSION;
151extern wxEventType wxEVT_ACTIVATE_APP;
152extern wxEventType wxEVT_POWER;
153extern wxEventType wxEVT_ACTIVATE;
154extern wxEventType wxEVT_CREATE;
155extern wxEventType wxEVT_DESTROY;
156extern wxEventType wxEVT_SHOW;
157extern wxEventType wxEVT_ICONIZE;
158extern wxEventType wxEVT_MAXIMIZE;
159extern wxEventType wxEVT_MOUSE_CAPTURE_CHANGED;
160extern wxEventType wxEVT_PAINT;
161extern wxEventType wxEVT_ERASE_BACKGROUND;
162extern wxEventType wxEVT_NC_PAINT;
163extern wxEventType wxEVT_PAINT_ICON;
164extern wxEventType wxEVT_MENU_CHAR;
165extern wxEventType wxEVT_MENU_INIT;
166extern wxEventType wxEVT_MENU_HIGHLIGHT;
167extern wxEventType wxEVT_POPUP_MENU_INIT;
168extern wxEventType wxEVT_CONTEXT_MENU;
169extern wxEventType wxEVT_SYS_COLOUR_CHANGED;
170extern wxEventType wxEVT_SETTING_CHANGED;
171extern wxEventType wxEVT_QUERY_NEW_PALETTE;
172extern wxEventType wxEVT_PALETTE_CHANGED;
173extern wxEventType wxEVT_JOY_BUTTON_DOWN;
174extern wxEventType wxEVT_JOY_BUTTON_UP;
175extern wxEventType wxEVT_JOY_MOVE;
176extern wxEventType wxEVT_JOY_ZMOVE;
177extern wxEventType wxEVT_DROP_FILES;
178extern wxEventType wxEVT_DRAW_ITEM;
179extern wxEventType wxEVT_MEASURE_ITEM;
180extern wxEventType wxEVT_COMPARE_ITEM;
181extern wxEventType wxEVT_INIT_DIALOG;
182extern wxEventType wxEVT_IDLE;
183extern wxEventType wxEVT_UPDATE_UI;
184
185// System misc.
186extern wxEventType wxEVT_END_PROCESS;
187
188// Dial up events
189extern wxEventType wxEVT_DIALUP_CONNECTED;
190extern wxEventType wxEVT_DIALUP_DISCONNECTED;
191
192// Generic command events
193// Note: a click is a higher-level event than button down/up
194extern wxEventType wxEVT_COMMAND_LEFT_CLICK;
195extern wxEventType wxEVT_COMMAND_LEFT_DCLICK;
196extern wxEventType wxEVT_COMMAND_RIGHT_CLICK;
197extern wxEventType wxEVT_COMMAND_RIGHT_DCLICK;
198extern wxEventType wxEVT_COMMAND_SET_FOCUS;
199extern wxEventType wxEVT_COMMAND_KILL_FOCUS;
200extern wxEventType wxEVT_COMMAND_ENTER;
201
202// Tree control event types
203extern wxEventType wxEVT_COMMAND_TREE_BEGIN_DRAG;
204extern wxEventType wxEVT_COMMAND_TREE_BEGIN_RDRAG;
205extern wxEventType wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT;
206extern wxEventType wxEVT_COMMAND_TREE_END_LABEL_EDIT;
207extern wxEventType wxEVT_COMMAND_TREE_DELETE_ITEM;
208extern wxEventType wxEVT_COMMAND_TREE_GET_INFO;
209extern wxEventType wxEVT_COMMAND_TREE_SET_INFO;
210extern wxEventType wxEVT_COMMAND_TREE_ITEM_EXPANDED;
211extern wxEventType wxEVT_COMMAND_TREE_ITEM_EXPANDING;
212extern wxEventType wxEVT_COMMAND_TREE_ITEM_COLLAPSED;
213extern wxEventType wxEVT_COMMAND_TREE_ITEM_COLLAPSING;
214extern wxEventType wxEVT_COMMAND_TREE_SEL_CHANGED;
215extern wxEventType wxEVT_COMMAND_TREE_SEL_CHANGING;
216extern wxEventType wxEVT_COMMAND_TREE_KEY_DOWN;
217extern wxEventType wxEVT_COMMAND_TREE_ITEM_ACTIVATED;
218extern wxEventType wxEVT_COMMAND_TREE_ITEM_RIGHT_CLICK;
219extern wxEventType wxEVT_COMMAND_TREE_ITEM_MIDDLE_CLICK;
220extern wxEventType wxEVT_COMMAND_TREE_END_DRAG;
221
222// List control event types
223extern wxEventType wxEVT_COMMAND_LIST_BEGIN_DRAG;
224extern wxEventType wxEVT_COMMAND_LIST_BEGIN_RDRAG;
225extern wxEventType wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT;
226extern wxEventType wxEVT_COMMAND_LIST_END_LABEL_EDIT;
227extern wxEventType wxEVT_COMMAND_LIST_DELETE_ITEM;
228extern wxEventType wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS;
229extern wxEventType wxEVT_COMMAND_LIST_GET_INFO;
230extern wxEventType wxEVT_COMMAND_LIST_SET_INFO;
231extern wxEventType wxEVT_COMMAND_LIST_ITEM_SELECTED;
232extern wxEventType wxEVT_COMMAND_LIST_ITEM_DESELECTED;
233extern wxEventType wxEVT_COMMAND_LIST_KEY_DOWN;
234extern wxEventType wxEVT_COMMAND_LIST_INSERT_ITEM;
235extern wxEventType wxEVT_COMMAND_LIST_COL_CLICK;
236extern wxEventType wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK;
237extern wxEventType wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK;
238extern wxEventType wxEVT_COMMAND_LIST_ITEM_ACTIVATED;
239
240// Tab and notebook control event types
241extern wxEventType wxEVT_COMMAND_TAB_SEL_CHANGED;
242extern wxEventType wxEVT_COMMAND_TAB_SEL_CHANGING;
243extern wxEventType wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED;
244extern wxEventType wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING;
245
246// Splitter events
247extern wxEventType wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED;
248extern wxEventType wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING;
249extern wxEventType wxEVT_COMMAND_SPLITTER_DOUBLECLICKED;
250extern wxEventType wxEVT_COMMAND_SPLITTER_UNSPLIT;
251
252// Wizard events
253extern wxEventType wxEVT_WIZARD_PAGE_CHANGED;
254extern wxEventType wxEVT_WIZARD_PAGE_CHANGING;
255extern wxEventType wxEVT_WIZARD_CANCEL;
256
257// Calendar events
258extern wxEventType wxEVT_CALENDAR_SEL_CHANGED;
259extern wxEventType wxEVT_CALENDAR_DAY_CHANGED;
260extern wxEventType wxEVT_CALENDAR_MONTH_CHANGED;
261extern wxEventType wxEVT_CALENDAR_YEAR_CHANGED;
262extern wxEventType wxEVT_CALENDAR_DOUBLECLICKED;
263extern wxEventType wxEVT_CALENDAR_WEEKDAY_CLICKED;
264
265// Help events
266extern wxEventType wxEVT_HELP;
267extern wxEventType 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
326class WXDLLEXPORT wxEvent : public wxObject
327{
328 DECLARE_ABSTRACT_CLASS(wxEvent)
329
330public:
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
356public:
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
389class WXDLLEXPORT wxCommandEvent : public wxEvent
390{
391 DECLARE_DYNAMIC_CLASS(wxCommandEvent)
392
393public:
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
435public:
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.
445class WXDLLEXPORT wxNotifyEvent : public wxCommandEvent
446{
447public:
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
464private:
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
483class WXDLLEXPORT wxScrollEvent : public wxCommandEvent
484{
485 DECLARE_DYNAMIC_CLASS(wxScrollEvent)
486
487public:
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
516class WXDLLEXPORT wxScrollWinEvent : public wxEvent
517{
518 DECLARE_DYNAMIC_CLASS(wxScrollWinEvent)
519
520public:
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;
535public:
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
569class WXDLLEXPORT wxMouseEvent : public wxEvent
570{
571 DECLARE_DYNAMIC_CLASS(wxMouseEvent)
572
573public:
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
684public:
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
703class WXDLLEXPORT wxSetCursorEvent : public wxEvent
704{
705public:
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
721private:
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
735class WXDLLEXPORT wxKeyEvent : public wxEvent
736{
737 DECLARE_DYNAMIC_CLASS(wxKeyEvent)
738
739public:
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
782public:
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
799class WXDLLEXPORT wxSizeEvent : public wxEvent
800{
801 DECLARE_DYNAMIC_CLASS(wxSizeEvent)
802
803public:
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
822class WXDLLEXPORT wxMoveEvent : public wxEvent
823{
824 DECLARE_DYNAMIC_CLASS(wxMoveEvent)
825
826public:
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
851class WXDLLEXPORT wxPaintEvent : public wxEvent
852{
853 DECLARE_DYNAMIC_CLASS(wxPaintEvent)
854
855public:
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
880class WXDLLEXPORT wxEraseEvent : public wxEvent
881{
882 DECLARE_DYNAMIC_CLASS(wxEraseEvent)
883
884public:
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
900class WXDLLEXPORT wxFocusEvent : public wxEvent
901{
902 DECLARE_DYNAMIC_CLASS(wxFocusEvent)
903
904public:
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
915class WXDLLEXPORT wxActivateEvent : public wxEvent
916{
917 DECLARE_DYNAMIC_CLASS(wxActivateEvent)
918
919public:
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
926private:
927 bool m_active;
928};
929
930// InitDialog event class
931/*
932 wxEVT_INIT_DIALOG
933 */
934
935class WXDLLEXPORT wxInitDialogEvent : public wxEvent
936{
937 DECLARE_DYNAMIC_CLASS(wxInitDialogEvent)
938
939public:
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
953class WXDLLEXPORT wxMenuEvent : public wxEvent
954{
955 DECLARE_DYNAMIC_CLASS(wxMenuEvent)
956
957public:
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;
964private:
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
975class WXDLLEXPORT wxCloseEvent : public wxEvent
976{
977 DECLARE_DYNAMIC_CLASS(wxCloseEvent)
978
979public:
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
1018protected:
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
1031class WXDLLEXPORT wxShowEvent : public wxEvent
1032{
1033 DECLARE_DYNAMIC_CLASS(wxShowEvent)
1034
1035public:
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
1045protected:
1046 bool m_show;
1047};
1048
1049/*
1050 wxEVT_ICONIZE
1051 */
1052
1053class WXDLLEXPORT wxIconizeEvent : public wxEvent
1054{
1055 DECLARE_DYNAMIC_CLASS(wxIconizeEvent)
1056
1057public:
1058 wxIconizeEvent(int id = 0)
1059 { m_eventType = wxEVT_ICONIZE; m_id = id; }
1060};
1061
1062/*
1063 wxEVT_MAXIMIZE
1064 */
1065
1066class WXDLLEXPORT wxMaximizeEvent : public wxEvent
1067{
1068 DECLARE_DYNAMIC_CLASS(wxMaximizeEvent)
1069
1070public:
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
1094class WXDLLEXPORT wxJoystickEvent : public wxEvent
1095{
1096 DECLARE_DYNAMIC_CLASS(wxJoystickEvent)
1097
1098public:
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
1163class WXDLLEXPORT wxDropFilesEvent : public wxEvent
1164{
1165 DECLARE_DYNAMIC_CLASS(wxDropFilesEvent)
1166
1167public:
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
1189class WXDLLEXPORT wxUpdateUIEvent : public wxCommandEvent
1190{
1191 DECLARE_DYNAMIC_CLASS(wxUpdateUIEvent)
1192
1193public:
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
1219protected:
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?
1233class WXDLLEXPORT wxSysColourChangedEvent : public wxEvent
1234{
1235 DECLARE_DYNAMIC_CLASS(wxSysColourChangedEvent)
1236
1237public:
1238 wxSysColourChangedEvent()
1239 { m_eventType = wxEVT_SYS_COLOUR_CHANGED; }
1240};
1241
1242/*
1243 wxEVT_PALETTE_CHANGED
1244 */
1245
1246class WXDLLEXPORT wxPaletteChangedEvent : public wxEvent
1247{
1248 DECLARE_DYNAMIC_CLASS(wxPaletteChangedEvent)
1249
1250public:
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
1262protected:
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
1271class WXDLLEXPORT wxQueryNewPaletteEvent : public wxEvent
1272{
1273 DECLARE_DYNAMIC_CLASS(wxQueryNewPaletteEvent)
1274
1275public:
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
1285protected:
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
1294class WXDLLEXPORT wxNavigationKeyEvent : public wxEvent
1295{
1296public:
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
1331private:
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
1355class WXDLLEXPORT wxWindowCreateEvent : public wxCommandEvent
1356{
1357 DECLARE_DYNAMIC_CLASS(wxWindowCreateEvent)
1358
1359public:
1360 wxWindowCreateEvent(wxWindow *win = NULL);
1361
1362 wxWindow *GetWindow() const { return (wxWindow *)GetEventObject(); }
1363};
1364
1365class WXDLLEXPORT wxWindowDestroyEvent : public wxCommandEvent
1366{
1367 DECLARE_DYNAMIC_CLASS(wxWindowDestroyEvent)
1368
1369public:
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
1381class WXDLLEXPORT wxHelpEvent : public wxCommandEvent
1382{
1383public:
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
1405protected:
1406 wxPoint m_pos;
1407 wxString m_target;
1408 wxString m_link;
1409
1410private:
1411 DECLARE_DYNAMIC_CLASS(wxHelpEvent)
1412};
1413
1414#endif // wxUSE_GUI
1415
1416// Idle event
1417/*
1418 wxEVT_IDLE
1419 */
1420
1421class WXDLLEXPORT wxIdleEvent : public wxEvent
1422{
1423 DECLARE_DYNAMIC_CLASS(wxIdleEvent)
1424
1425public:
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
1434protected:
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
1453typedef void (wxObject::*wxObjectEventFunction)(wxEvent&);
1454
1455struct WXDLLEXPORT wxEventTableEntry
1456{
1457 wxEventTableEntry(int evType, int id, int idLast,
1458 wxObjectEventFunction fn, wxObject *data);
1459
1460 int m_eventType; // the event type
1461 int m_id; // control/menu/toolbar id
1462 int m_lastId; // used for ranges of ids
1463 wxObjectEventFunction m_fn; // function to call: not wxEventFunction,
1464 // because of dependency problems
1465
1466 wxObject* m_callbackUserData;
1467};
1468
1469struct WXDLLEXPORT wxDynamicEventTableEntry : public wxEventTableEntry
1470{
1471 wxDynamicEventTableEntry(int evType, int id, int idLast,
1472 wxObjectEventFunction fn, wxObject *data)
1473 : wxEventTableEntry(evType, id, idLast, fn, data)
1474 {
1475 }
1476};
1477
1478struct WXDLLEXPORT wxEventTable
1479{
1480 const wxEventTable *baseTable; // base event table (next in chain)
1481 const wxEventTableEntry *entries; // bottom of entry array
1482};
1483
1484class WXDLLEXPORT wxEvtHandler : public wxObject
1485{
1486 DECLARE_DYNAMIC_CLASS(wxEvtHandler)
1487
1488public:
1489 wxEvtHandler();
1490 ~wxEvtHandler();
1491
1492 wxEvtHandler *GetNextHandler() const { return m_nextHandler; }
1493 wxEvtHandler *GetPreviousHandler() const { return m_previousHandler; }
1494 void SetNextHandler(wxEvtHandler *handler) { m_nextHandler = handler; }
1495 void SetPreviousHandler(wxEvtHandler *handler) { m_previousHandler = handler; }
1496
1497 void SetEvtHandlerEnabled(bool enabled) { m_enabled = enabled; }
1498 bool GetEvtHandlerEnabled() const { return m_enabled; }
1499
1500 // process an event right now
1501 virtual bool ProcessEvent(wxEvent& event);
1502
1503 // add an event to be processed later
1504 void AddPendingEvent(wxEvent& event);
1505
1506 // process all pending events
1507 void ProcessPendingEvents();
1508
1509 // add a
1510#if wxUSE_THREADS
1511 bool ProcessThreadEvent(wxEvent& event);
1512#endif
1513
1514 // Dynamic association of a member function handler with the event handler,
1515 // id and event type
1516 void Connect( int id, int lastId, int eventType,
1517 wxObjectEventFunction func,
1518 wxObject *userData = (wxObject *) NULL );
1519
1520 // Convenience function: take just one id
1521 void Connect( int id, int eventType,
1522 wxObjectEventFunction func,
1523 wxObject *userData = (wxObject *) NULL )
1524 { Connect(id, -1, eventType, func, userData); }
1525
1526 bool Disconnect( int id, int lastId = -1, wxEventType eventType = wxEVT_NULL,
1527 wxObjectEventFunction func = NULL,
1528 wxObject *userData = (wxObject *) NULL );
1529
1530 // Convenience function: take just one id
1531 bool Disconnect( int id, wxEventType eventType = wxEVT_NULL,
1532 wxObjectEventFunction func = NULL,
1533 wxObject *userData = (wxObject *) NULL )
1534 { return Disconnect(id, -1, eventType, func, userData); }
1535
1536 // implementation from now on
1537 virtual bool SearchEventTable(wxEventTable& table, wxEvent& event);
1538 bool SearchDynamicEventTable( wxEvent& event );
1539
1540#if wxUSE_THREADS
1541 void ClearEventLocker()
1542 {
1543# if !defined(__VISAGECPP__)
1544 delete m_eventsLocker;
1545 m_eventsLocker = NULL;
1546#endif
1547 };
1548#endif
1549
1550 // old stuff
1551
1552#if WXWIN_COMPATIBILITY_2
1553 virtual void OnCommand(wxWindow& WXUNUSED(win),
1554 wxCommandEvent& WXUNUSED(event))
1555 {
1556 wxFAIL_MSG(wxT("shouldn't be called any more"));
1557 }
1558
1559 // Called if child control has no callback function
1560 virtual long Default()
1561 { return GetNextHandler() ? GetNextHandler()->Default() : 0; };
1562#endif // WXWIN_COMPATIBILITY_2
1563
1564#if WXWIN_COMPATIBILITY
1565 virtual bool OnClose();
1566#endif
1567
1568private:
1569 static const wxEventTableEntry sm_eventTableEntries[];
1570
1571protected:
1572 static const wxEventTable sm_eventTable;
1573
1574 virtual const wxEventTable *GetEventTable() const;
1575
1576protected:
1577 wxEvtHandler* m_nextHandler;
1578 wxEvtHandler* m_previousHandler;
1579 wxList* m_dynamicEvents;
1580 wxList* m_pendingEvents;
1581#if wxUSE_THREADS
1582#if defined (__VISAGECPP__)
1583 wxCriticalSection m_eventsLocker;
1584# else
1585 wxCriticalSection* m_eventsLocker;
1586# endif
1587#endif
1588
1589 // optimization: instead of using costly IsKindOf() to decide whether we're
1590 // a window (which is true in 99% of cases), use this flag
1591 bool m_isWindow;
1592
1593 // Is event handler enabled?
1594 bool m_enabled;
1595};
1596
1597typedef void (wxEvtHandler::*wxEventFunction)(wxEvent&);
1598#if wxUSE_GUI
1599typedef void (wxEvtHandler::*wxCommandEventFunction)(wxCommandEvent&);
1600typedef void (wxEvtHandler::*wxScrollEventFunction)(wxScrollEvent&);
1601typedef void (wxEvtHandler::*wxScrollWinEventFunction)(wxScrollWinEvent&);
1602typedef void (wxEvtHandler::*wxSizeEventFunction)(wxSizeEvent&);
1603typedef void (wxEvtHandler::*wxMoveEventFunction)(wxMoveEvent&);
1604typedef void (wxEvtHandler::*wxPaintEventFunction)(wxPaintEvent&);
1605typedef void (wxEvtHandler::*wxEraseEventFunction)(wxEraseEvent&);
1606typedef void (wxEvtHandler::*wxMouseEventFunction)(wxMouseEvent&);
1607typedef void (wxEvtHandler::*wxCharEventFunction)(wxKeyEvent&);
1608typedef void (wxEvtHandler::*wxFocusEventFunction)(wxFocusEvent&);
1609typedef void (wxEvtHandler::*wxActivateEventFunction)(wxActivateEvent&);
1610typedef void (wxEvtHandler::*wxMenuEventFunction)(wxMenuEvent&);
1611typedef void (wxEvtHandler::*wxJoystickEventFunction)(wxJoystickEvent&);
1612typedef void (wxEvtHandler::*wxDropFilesEventFunction)(wxDropFilesEvent&);
1613typedef void (wxEvtHandler::*wxInitDialogEventFunction)(wxInitDialogEvent&);
1614typedef void (wxEvtHandler::*wxSysColourChangedFunction)(wxSysColourChangedEvent&);
1615typedef void (wxEvtHandler::*wxUpdateUIEventFunction)(wxUpdateUIEvent&);
1616typedef void (wxEvtHandler::*wxIdleEventFunction)(wxIdleEvent&);
1617typedef void (wxEvtHandler::*wxCloseEventFunction)(wxCloseEvent&);
1618typedef void (wxEvtHandler::*wxShowEventFunction)(wxShowEvent&);
1619typedef void (wxEvtHandler::*wxIconizeEventFunction)(wxShowEvent&);
1620typedef void (wxEvtHandler::*wxMaximizeEventFunction)(wxShowEvent&);
1621typedef void (wxEvtHandler::*wxNavigationKeyEventFunction)(wxNavigationKeyEvent&);
1622typedef void (wxEvtHandler::*wxPaletteChangedEventFunction)(wxPaletteChangedEvent&);
1623typedef void (wxEvtHandler::*wxQueryNewPaletteEventFunction)(wxQueryNewPaletteEvent&);
1624typedef void (wxEvtHandler::*wxWindowCreateEventFunction)(wxWindowCreateEvent&);
1625typedef void (wxEvtHandler::*wxWindowDestroyEventFunction)(wxWindowDestroyEvent&);
1626typedef void (wxEvtHandler::*wxSetCursorEventFunction)(wxSetCursorEvent&);
1627typedef void (wxEvtHandler::*wxNotifyEventFunction)(wxNotifyEvent&);
1628typedef void (wxEvtHandler::*wxHelpEventFunction)(wxHelpEvent&);
1629#endif // wxUSE_GUI
1630
1631// N.B. In GNU-WIN32, you *have* to take the address of a member function
1632// (use &) or the compiler crashes...
1633
1634#define DECLARE_EVENT_TABLE() \
1635private:\
1636 static const wxEventTableEntry sm_eventTableEntries[];\
1637protected:\
1638 static const wxEventTable sm_eventTable;\
1639 virtual const wxEventTable* GetEventTable() const;
1640
1641#define BEGIN_EVENT_TABLE(theClass, baseClass) \
1642const wxEventTable *theClass::GetEventTable() const { return &theClass::sm_eventTable; }\
1643const wxEventTable theClass::sm_eventTable =\
1644 { &baseClass::sm_eventTable, &theClass::sm_eventTableEntries[0] };\
1645const wxEventTableEntry theClass::sm_eventTableEntries[] = { \
1646
1647#define END_EVENT_TABLE() \
1648 wxEventTableEntry( 0, 0, 0, 0, 0 ) };
1649
1650/*
1651 * Event table macros
1652 */
1653
1654// Generic events
1655#define EVT_CUSTOM(event, id, func) wxEventTableEntry( event, id, -1, (wxObjectEventFunction) (wxEventFunction) & func, (wxObject *) NULL ),
1656#define EVT_CUSTOM_RANGE(event, id1, id2, func) wxEventTableEntry( event, id1, id2, (wxObjectEventFunction) (wxEventFunction) & func, (wxObject *) NULL ),
1657
1658// Miscellaneous
1659#define EVT_SIZE(func) wxEventTableEntry( wxEVT_SIZE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxSizeEventFunction) & func, (wxObject *) NULL ),
1660#define EVT_MOVE(func) wxEventTableEntry( wxEVT_MOVE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMoveEventFunction) & func, (wxObject *) NULL ),
1661#define EVT_CLOSE(func) wxEventTableEntry( wxEVT_CLOSE_WINDOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCloseEventFunction) & func, (wxObject *) NULL ),
1662#define EVT_END_SESSION(func) wxEventTableEntry( wxEVT_END_SESSION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCloseEventFunction) & func, (wxObject *) NULL ),
1663#define EVT_QUERY_END_SESSION(func) wxEventTableEntry( wxEVT_QUERY_END_SESSION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCloseEventFunction) & func, (wxObject *) NULL ),
1664#define EVT_PAINT(func) wxEventTableEntry( wxEVT_PAINT, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxPaintEventFunction) & func, (wxObject *) NULL ),
1665#define EVT_ERASE_BACKGROUND(func) wxEventTableEntry( wxEVT_ERASE_BACKGROUND, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxEraseEventFunction) & func, (wxObject *) NULL ),
1666#define EVT_CHAR(func) wxEventTableEntry( wxEVT_CHAR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCharEventFunction) & func, (wxObject *) NULL ),
1667#define EVT_KEY_DOWN(func) wxEventTableEntry( wxEVT_KEY_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCharEventFunction) & func, (wxObject *) NULL ),
1668#define EVT_KEY_UP(func) wxEventTableEntry( wxEVT_KEY_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCharEventFunction) & func, (wxObject *) NULL ),
1669#define EVT_CHAR_HOOK(func) wxEventTableEntry( wxEVT_CHAR_HOOK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCharEventFunction) & func, NULL ),
1670#define EVT_MENU_HIGHLIGHT(id, func) wxEventTableEntry( wxEVT_MENU_HIGHLIGHT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxMenuEventFunction) & func, (wxObject *) NULL ),
1671#define EVT_MENU_HIGHLIGHT_ALL(func) wxEventTableEntry( wxEVT_MENU_HIGHLIGHT, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMenuEventFunction) & func, (wxObject *) NULL ),
1672#define EVT_SET_FOCUS(func) wxEventTableEntry( wxEVT_SET_FOCUS, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxFocusEventFunction) & func, (wxObject *) NULL ),
1673#define EVT_KILL_FOCUS(func) wxEventTableEntry( wxEVT_KILL_FOCUS, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxFocusEventFunction) & func, (wxObject *) NULL ),
1674#define EVT_ACTIVATE(func) wxEventTableEntry( wxEVT_ACTIVATE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxActivateEventFunction) & func, (wxObject *) NULL ),
1675#define EVT_ACTIVATE_APP(func) wxEventTableEntry( wxEVT_ACTIVATE_APP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxActivateEventFunction) & 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_DROP_FILES(func) wxEventTableEntry( wxEVT_DROP_FILES, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxDropFilesEventFunction) & func, (wxObject *) NULL ),
1679#define EVT_INIT_DIALOG(func) wxEventTableEntry( wxEVT_INIT_DIALOG, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxInitDialogEventFunction) & func, (wxObject *) NULL ),
1680#define EVT_SYS_COLOUR_CHANGED(func) wxEventTableEntry( wxEVT_SYS_COLOUR_CHANGED, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxSysColourChangedFunction) & func, (wxObject *) NULL ),
1681#define EVT_SHOW(func) wxEventTableEntry( wxEVT_SHOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxShowEventFunction) & func, (wxObject *) NULL ),
1682#define EVT_MAXIMIZE(func) wxEventTableEntry( wxEVT_MAXIMIZE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMaximizeEventFunction) & func, (wxObject *) NULL ),
1683#define EVT_ICONIZE(func) wxEventTableEntry( wxEVT_ICONIZE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxIconizeEventFunction) & func, (wxObject *) NULL ),
1684#define EVT_NAVIGATION_KEY(func) wxEventTableEntry( wxEVT_NAVIGATION_KEY, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNavigationKeyEventFunction) & func, (wxObject *) NULL ),
1685#define EVT_PALETTE_CHANGED(func) wxEventTableEntry( wxEVT_PALETTE_CHANGED, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxPaletteChangedEventFunction) & func, (wxObject *) NULL ),
1686#define EVT_QUERY_NEW_PALETTE(func) wxEventTableEntry( wxEVT_QUERY_NEW_PALETTE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxQueryNewPaletteEventFunction) & func, (wxObject *) NULL ),
1687#define EVT_WINDOW_CREATE(func) wxEventTableEntry( wxEVT_CREATE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxWindowCreateEventFunction) & func, (wxObject *) NULL ),
1688#define EVT_WINDOW_DESTROY(func) wxEventTableEntry( wxEVT_DESTROY, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxWindowDestroyEventFunction) & func, (wxObject *) NULL ),
1689#define EVT_SET_CURSOR(func) wxEventTableEntry( wxEVT_SET_CURSOR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxSetCursorEventFunction) & func, (wxObject *) NULL ),
1690
1691// Mouse events
1692#define EVT_LEFT_DOWN(func) wxEventTableEntry( wxEVT_LEFT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1693#define EVT_LEFT_UP(func) wxEventTableEntry( wxEVT_LEFT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1694#define EVT_MIDDLE_DOWN(func) wxEventTableEntry( wxEVT_MIDDLE_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1695#define EVT_MIDDLE_UP(func) wxEventTableEntry( wxEVT_MIDDLE_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1696#define EVT_RIGHT_DOWN(func) wxEventTableEntry( wxEVT_RIGHT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1697#define EVT_RIGHT_UP(func) wxEventTableEntry( wxEVT_RIGHT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1698#define EVT_MOTION(func) wxEventTableEntry( wxEVT_MOTION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1699#define EVT_LEFT_DCLICK(func) wxEventTableEntry( wxEVT_LEFT_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1700#define EVT_MIDDLE_DCLICK(func) wxEventTableEntry( wxEVT_MIDDLE_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1701#define EVT_RIGHT_DCLICK(func) wxEventTableEntry( wxEVT_RIGHT_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1702#define EVT_LEAVE_WINDOW(func) wxEventTableEntry( wxEVT_LEAVE_WINDOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1703#define EVT_ENTER_WINDOW(func) wxEventTableEntry( wxEVT_ENTER_WINDOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1704
1705// All mouse events
1706#define EVT_MOUSE_EVENTS(func) \
1707 wxEventTableEntry( wxEVT_LEFT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1708 wxEventTableEntry( wxEVT_LEFT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1709 wxEventTableEntry( wxEVT_MIDDLE_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1710 wxEventTableEntry( wxEVT_MIDDLE_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1711 wxEventTableEntry( wxEVT_RIGHT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1712 wxEventTableEntry( wxEVT_RIGHT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1713 wxEventTableEntry( wxEVT_MOTION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1714 wxEventTableEntry( wxEVT_LEFT_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1715 wxEventTableEntry( wxEVT_MIDDLE_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1716 wxEventTableEntry( wxEVT_RIGHT_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1717 wxEventTableEntry( wxEVT_ENTER_WINDOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),\
1718 wxEventTableEntry( wxEVT_LEAVE_WINDOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL ),
1719
1720// EVT_COMMAND
1721#define EVT_COMMAND(id, event, fn) wxEventTableEntry( event, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1722#define EVT_COMMAND_RANGE(id1, id2, event, fn) wxEventTableEntry( event, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1723
1724// Scrolling from wxWindow (sent to wxScrolledWindow)
1725#define EVT_SCROLLWIN(func) \
1726 wxEventTableEntry( wxEVT_SCROLLWIN_TOP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),\
1727 wxEventTableEntry( wxEVT_SCROLLWIN_BOTTOM, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),\
1728 wxEventTableEntry( wxEVT_SCROLLWIN_LINEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),\
1729 wxEventTableEntry( wxEVT_SCROLLWIN_LINEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),\
1730 wxEventTableEntry( wxEVT_SCROLLWIN_PAGEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),\
1731 wxEventTableEntry( wxEVT_SCROLLWIN_PAGEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),\
1732 wxEventTableEntry( wxEVT_SCROLLWIN_THUMBTRACK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),\
1733 wxEventTableEntry( wxEVT_SCROLLWIN_THUMBRELEASE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1734
1735#define EVT_SCROLLWIN_TOP(func) wxEventTableEntry( wxEVT_SCROLLWIN_TOP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1736#define EVT_SCROLLWIN_BOTTOM(func) wxEventTableEntry( wxEVT_SCROLLWIN_BOTTOM, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1737#define EVT_SCROLLWIN_LINEUP(func) wxEventTableEntry( wxEVT_SCROLLWIN_LINEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1738#define EVT_SCROLLWIN_LINEDOWN(func) wxEventTableEntry( wxEVT_SCROLLWIN_LINEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1739#define EVT_SCROLLWIN_PAGEUP(func) wxEventTableEntry( wxEVT_SCROLLWIN_PAGEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1740#define EVT_SCROLLWIN_PAGEDOWN(func) wxEventTableEntry( wxEVT_SCROLLWIN_PAGEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1741#define EVT_SCROLLWIN_THUMBTRACK(func) wxEventTableEntry( wxEVT_SCROLLWIN_THUMBTRACK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1742#define EVT_SCROLLWIN_THUMBRELEASE(func) wxEventTableEntry( wxEVT_SCROLLWIN_THUMBRELEASE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL ),
1743
1744// Scrolling from wxSlider and wxScrollBar
1745#define EVT_SCROLL(func) \
1746 wxEventTableEntry( wxEVT_SCROLL_TOP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1747 wxEventTableEntry( wxEVT_SCROLL_BOTTOM, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1748 wxEventTableEntry( wxEVT_SCROLL_LINEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1749 wxEventTableEntry( wxEVT_SCROLL_LINEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1750 wxEventTableEntry( wxEVT_SCROLL_PAGEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1751 wxEventTableEntry( wxEVT_SCROLL_PAGEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1752 wxEventTableEntry( wxEVT_SCROLL_THUMBTRACK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1753 wxEventTableEntry( wxEVT_SCROLL_THUMBRELEASE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1754
1755#define EVT_SCROLL_TOP(func) wxEventTableEntry( wxEVT_SCROLL_TOP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1756#define EVT_SCROLL_BOTTOM(func) wxEventTableEntry( wxEVT_SCROLL_BOTTOM, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1757#define EVT_SCROLL_LINEUP(func) wxEventTableEntry( wxEVT_SCROLL_LINEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1758#define EVT_SCROLL_LINEDOWN(func) wxEventTableEntry( wxEVT_SCROLL_LINEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1759#define EVT_SCROLL_PAGEUP(func) wxEventTableEntry( wxEVT_SCROLL_PAGEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1760#define EVT_SCROLL_PAGEDOWN(func) wxEventTableEntry( wxEVT_SCROLL_PAGEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1761#define EVT_SCROLL_THUMBTRACK(func) wxEventTableEntry( wxEVT_SCROLL_THUMBTRACK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1762#define EVT_SCROLL_THUMBRELEASE(func) wxEventTableEntry( wxEVT_SCROLL_THUMBRELEASE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1763
1764// Scrolling from wxSlider and wxScrollBar, with an id
1765#define EVT_COMMAND_SCROLL(id, func) \
1766 wxEventTableEntry( wxEVT_SCROLL_TOP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1767 wxEventTableEntry( wxEVT_SCROLL_BOTTOM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1768 wxEventTableEntry( wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1769 wxEventTableEntry( wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1770 wxEventTableEntry( wxEVT_SCROLL_PAGEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1771 wxEventTableEntry( wxEVT_SCROLL_PAGEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1772 wxEventTableEntry( wxEVT_SCROLL_THUMBTRACK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),\
1773 wxEventTableEntry( wxEVT_SCROLL_THUMBRELEASE, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1774
1775#define EVT_COMMAND_SCROLL_TOP(id, func) wxEventTableEntry( wxEVT_SCROLL_TOP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1776#define EVT_COMMAND_SCROLL_BOTTOM(id, func) wxEventTableEntry( wxEVT_SCROLL_BOTTOM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1777#define EVT_COMMAND_SCROLL_LINEUP(id, func) wxEventTableEntry( wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1778#define EVT_COMMAND_SCROLL_LINEDOWN(id, func) wxEventTableEntry( wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1779#define EVT_COMMAND_SCROLL_PAGEUP(id, func) wxEventTableEntry( wxEVT_SCROLL_PAGEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1780#define EVT_COMMAND_SCROLL_PAGEDOWN(id, func) wxEventTableEntry( wxEVT_SCROLL_PAGEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1781#define EVT_COMMAND_SCROLL_THUMBTRACK(id, func) wxEventTableEntry( wxEVT_SCROLL_THUMBTRACK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1782#define EVT_COMMAND_SCROLL_THUMBRELEASE(id, func) wxEventTableEntry( wxEVT_SCROLL_THUMBRELEASE, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL ),
1783
1784// Convenience macros for commonly-used commands
1785#define EVT_BUTTON(id, fn) wxEventTableEntry( wxEVT_COMMAND_BUTTON_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1786#define EVT_CHECKBOX(id, fn) wxEventTableEntry( wxEVT_COMMAND_CHECKBOX_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1787#define EVT_CHOICE(id, fn) wxEventTableEntry( wxEVT_COMMAND_CHOICE_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1788#define EVT_LISTBOX(id, fn) wxEventTableEntry( wxEVT_COMMAND_LISTBOX_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1789#define EVT_LISTBOX_DCLICK(id, fn) wxEventTableEntry( wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1790#define EVT_TEXT(id, fn) wxEventTableEntry( wxEVT_COMMAND_TEXT_UPDATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1791#define EVT_TEXT_ENTER(id, fn) wxEventTableEntry( wxEVT_COMMAND_TEXT_ENTER, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1792#define EVT_MENU(id, fn) wxEventTableEntry( wxEVT_COMMAND_MENU_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1793#define EVT_MENU_RANGE(id1, id2, fn) wxEventTableEntry( wxEVT_COMMAND_MENU_SELECTED, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1794#define EVT_SLIDER(id, fn) wxEventTableEntry( wxEVT_COMMAND_SLIDER_UPDATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1795#define EVT_RADIOBOX(id, fn) wxEventTableEntry( wxEVT_COMMAND_RADIOBOX_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1796#define EVT_RADIOBUTTON(id, fn) wxEventTableEntry( wxEVT_COMMAND_RADIOBUTTON_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1797// EVT_SCROLLBAR is now obsolete since we use EVT_COMMAND_SCROLL... events
1798#define EVT_SCROLLBAR(id, fn) wxEventTableEntry( wxEVT_COMMAND_SCROLLBAR_UPDATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1799#define EVT_VLBOX(id, fn) wxEventTableEntry( wxEVT_COMMAND_VLBOX_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1800#define EVT_COMBOBOX(id, fn) wxEventTableEntry( wxEVT_COMMAND_COMBOBOX_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1801#define EVT_TOOL(id, fn) wxEventTableEntry( wxEVT_COMMAND_TOOL_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1802#define EVT_TOOL_RANGE(id1, id2, fn) wxEventTableEntry( wxEVT_COMMAND_TOOL_CLICKED, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1803#define EVT_TOOL_RCLICKED(id, fn) wxEventTableEntry( wxEVT_COMMAND_TOOL_RCLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1804#define EVT_TOOL_RCLICKED_RANGE(id1, id2, fn) wxEventTableEntry( wxEVT_COMMAND_TOOL_RCLICKED, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1805#define EVT_TOOL_ENTER(id, fn) wxEventTableEntry( wxEVT_COMMAND_TOOL_ENTER, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1806#define EVT_CHECKLISTBOX(id, fn) wxEventTableEntry( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1807
1808// Generic command events
1809#define EVT_COMMAND_LEFT_CLICK(id, fn) wxEventTableEntry( wxEVT_COMMAND_LEFT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1810#define EVT_COMMAND_LEFT_DCLICK(id, fn) wxEventTableEntry( wxEVT_COMMAND_LEFT_DCLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1811#define EVT_COMMAND_RIGHT_CLICK(id, fn) wxEventTableEntry( wxEVT_COMMAND_RIGHT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1812#define EVT_COMMAND_RIGHT_DCLICK(id, fn) wxEventTableEntry( wxEVT_COMMAND_RIGHT_DCLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1813#define EVT_COMMAND_SET_FOCUS(id, fn) wxEventTableEntry( wxEVT_COMMAND_SET_FOCUS, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1814#define EVT_COMMAND_KILL_FOCUS(id, fn) wxEventTableEntry( wxEVT_COMMAND_KILL_FOCUS, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1815#define EVT_COMMAND_ENTER(id, fn) wxEventTableEntry( wxEVT_COMMAND_ENTER, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL ),
1816
1817// Joystick events
1818#define EVT_JOY_DOWN(func) \
1819 wxEventTableEntry( wxEVT_JOY_BUTTON_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL ),
1820#define EVT_JOY_UP(func) \
1821 wxEventTableEntry( wxEVT_JOY_BUTTON_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL ),
1822#define EVT_JOY_MOVE(func) \
1823 wxEventTableEntry( wxEVT_JOY_MOVE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL ),
1824#define EVT_JOY_ZMOVE(func) \
1825 wxEventTableEntry( wxEVT_JOY_ZMOVE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL ),
1826
1827// All joystick events
1828#define EVT_JOYSTICK_EVENTS(func) \
1829 wxEventTableEntry( wxEVT_JOY_BUTTON_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL ),\
1830 wxEventTableEntry( wxEVT_JOY_BUTTON_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL ),\
1831 wxEventTableEntry( wxEVT_JOY_MOVE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL ),\
1832 wxEventTableEntry( wxEVT_JOY_ZMOVE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL ),
1833
1834// Idle event
1835#define EVT_IDLE(func) \
1836 wxEventTableEntry( wxEVT_IDLE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxIdleEventFunction) & func, (wxObject *) NULL ),
1837
1838// Update UI event
1839#define EVT_UPDATE_UI(id, func) \
1840 wxEventTableEntry( wxEVT_UPDATE_UI, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxUpdateUIEventFunction) & func, (wxObject *) NULL ),
1841#define EVT_UPDATE_UI_RANGE(id1, id2, func) \
1842 wxEventTableEntry( wxEVT_UPDATE_UI, id1, id2, (wxObjectEventFunction)(wxEventFunction)(wxUpdateUIEventFunction)&func, (wxObject *) NULL ),
1843
1844// Help events
1845#define EVT_HELP(id, func) \
1846 wxEventTableEntry( wxEVT_HELP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxHelpEventFunction) & func, (wxObject *) NULL ),
1847
1848#define EVT_HELP_RANGE(id1, id2, func) \
1849 wxEventTableEntry( wxEVT_HELP, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxHelpEventFunction) & func, (wxObject *) NULL ),
1850
1851#define EVT_DETAILED_HELP(id, func) \
1852 wxEventTableEntry( wxEVT_DETAILED_HELP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxHelpEventFunction) & func, (wxObject *) NULL ),
1853
1854#define EVT_DETAILED_HELP_RANGE(id1, id2, func) \
1855 wxEventTableEntry( wxEVT_DETAILED_HELP, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxHelpEventFunction) & func, (wxObject *) NULL ),
1856
1857// ----------------------------------------------------------------------------
1858// Global data
1859// ----------------------------------------------------------------------------
1860
1861// for pending event processing - notice that there is intentionally no
1862// WXDLLEXPORT here
1863extern wxList *wxPendingEvents;
1864#if wxUSE_THREADS
1865 extern wxCriticalSection *wxPendingEventsLocker;
1866#endif
1867
1868// ----------------------------------------------------------------------------
1869// Helper functions
1870// ----------------------------------------------------------------------------
1871
1872#if wxUSE_GUI
1873
1874// Find a window with the focus, that is also a descendant of the given window.
1875// This is used to determine the window to initially send commands to.
1876wxWindow* wxFindFocusDescendant(wxWindow* ancestor);
1877
1878#endif // wxUSE_GUI
1879
1880#endif
1881 // _WX_EVENTH__