1 #----------------------------------------------------------------------------
3 # Purpose: This file is appended to the shadow class file generated
4 # by SWIG. We add some unSWIGable things here.
9 # Copyright: (c) 1998 by Total Control Software
10 # Licence: wxWindows license
11 #----------------------------------------------------------------------------
15 #----------------------------------------------------------------------
16 # This gives this module's dictionary to the C++ extension code...
18 _wxSetDictionary(vars())
21 #----------------------------------------------------------------------
22 #----------------------------------------------------------------------
23 # Helper function to link python methods to wxWindows virtual
26 def _checkForCallback(obj
, name
, event
, theID
=-1):
27 try: cb
= getattr(obj
, name
)
29 else: obj
.Connect(theID
, -1, event
, cb
)
32 #----------------------------------------------------------------------
33 #----------------------------------------------------------------------
34 # functions that look and act like the C++ Macros of the same name
38 def EVT_SIZE(win
, func
):
39 win
.Connect(-1, -1, wxEVT_SIZE
, func
)
41 def EVT_MOVE(win
, func
):
42 win
.Connect(-1, -1, wxEVT_MOVE
, func
)
44 def EVT_CLOSE(win
, func
):
45 win
.Connect(-1, -1, wxEVT_CLOSE_WINDOW
, func
)
47 def EVT_PAINT(win
, func
):
48 win
.Connect(-1, -1, wxEVT_PAINT
, func
)
50 def EVT_ERASE_BACKGROUND(win
, func
):
51 win
.Connect(-1, -1, wxEVT_ERASE_BACKGROUND
, func
)
53 def EVT_CHAR(win
, func
):
54 win
.Connect(-1, -1, wxEVT_CHAR
, func
)
56 def EVT_CHAR_HOOK(win
, func
):
57 win
.Connect(-1, -1, wxEVT_CHAR_HOOK
, func
)
59 def EVT_KEY_DOWN(win
, func
):
60 win
.Connect(-1, -1, wxEVT_KEY_DOWN
, func
)
62 def EVT_KEY_UP(win
, func
):
63 win
.Connect(-1, -1, wxEVT_KEY_UP
, func
)
65 def EVT_MENU_OPEN(win
, func
):
66 win
.Connect(-1, -1, wxEVT_MENU_OPEN
, func
)
68 def EVT_MENU_CLOSE(win
, func
):
69 win
.Connect(-1, -1, wxEVT_MENU_CLOSE
, func
)
71 def EVT_MENU_HIGHLIGHT(win
, id, func
):
72 win
.Connect(id, -1, wxEVT_MENU_HIGHLIGHT
, func
)
74 def EVT_MENU_HIGHLIGHT_ALL(win
, func
):
75 win
.Connect(-1, -1, wxEVT_MENU_HIGHLIGHT
, func
)
77 def EVT_SET_FOCUS(win
, func
):
78 win
.Connect(-1, -1, wxEVT_SET_FOCUS
, func
)
80 def EVT_KILL_FOCUS(win
, func
):
81 win
.Connect(-1, -1, wxEVT_KILL_FOCUS
, func
)
83 def EVT_CHILD_FOCUS(win
, func
):
84 win
.Connect(-1, -1, wxEVT_CHILD_FOCUS
, func
)
86 def EVT_ACTIVATE(win
, func
):
87 win
.Connect(-1, -1, wxEVT_ACTIVATE
, func
)
89 def EVT_ACTIVATE_APP(win
, func
):
90 win
.Connect(-1, -1, wxEVT_ACTIVATE_APP
, func
)
92 def EVT_END_SESSION(win
, func
):
93 win
.Connect(-1, -1, wxEVT_END_SESSION
, func
)
95 def EVT_QUERY_END_SESSION(win
, func
):
96 win
.Connect(-1, -1, wxEVT_QUERY_END_SESSION
, func
)
98 def EVT_DROP_FILES(win
, func
):
99 win
.Connect(-1, -1, wxEVT_DROP_FILES
, func
)
101 def EVT_INIT_DIALOG(win
, func
):
102 win
.Connect(-1, -1, wxEVT_INIT_DIALOG
, func
)
104 def EVT_SYS_COLOUR_CHANGED(win
, func
):
105 win
.Connect(-1, -1, wxEVT_SYS_COLOUR_CHANGED
, func
)
107 def EVT_DISPLAY_CHANGED(win
, func
):
108 win
.Connect(-1, -1, wxEVT_DISPLAY_CHANGED
, func
)
110 def EVT_SHOW(win
, func
):
111 win
.Connect(-1, -1, wxEVT_SHOW
, func
)
113 def EVT_MAXIMIZE(win
, func
):
114 win
.Connect(-1, -1, wxEVT_MAXIMIZE
, func
)
116 def EVT_ICONIZE(win
, func
):
117 win
.Connect(-1, -1, wxEVT_ICONIZE
, func
)
119 def EVT_NAVIGATION_KEY(win
, func
):
120 win
.Connect(-1, -1, wxEVT_NAVIGATION_KEY
, func
)
122 def EVT_PALETTE_CHANGED(win
, func
):
123 win
.Connect(-1, -1, wxEVT_PALETTE_CHANGED
, func
)
125 def EVT_QUERY_NEW_PALETTE(win
, func
):
126 win
.Connect(-1, -1, wxEVT_QUERY_NEW_PALETTE
, func
)
128 def EVT_WINDOW_CREATE(win
, func
):
129 win
.Connect(-1, -1, wxEVT_CREATE
, func
)
131 def EVT_WINDOW_DESTROY(win
, func
):
132 win
.Connect(-1, -1, wxEVT_DESTROY
, func
)
134 def EVT_WINDOW_CREATE_ID(win
, id, func
):
135 win
.Connect(id, -1, wxEVT_CREATE
, func
)
137 def EVT_WINDOW_DESTROY_ID(win
, id, func
):
138 win
.Connect(id, -1, wxEVT_DESTROY
, func
)
140 def EVT_SET_CURSOR(win
, func
):
141 win
.Connect(-1, -1, wxEVT_SET_CURSOR
, func
)
145 def EVT_IDLE(win
, func
):
146 win
.Connect(-1, -1, wxEVT_IDLE
, func
)
148 def EVT_UPDATE_UI(win
, id, func
):
149 win
.Connect(id, -1, wxEVT_UPDATE_UI
, func
)
151 def EVT_UPDATE_UI_RANGE(win
, id, id2
, func
):
152 win
.Connect(id, id2
, wxEVT_UPDATE_UI
, func
)
156 def EVT_LEFT_DOWN(win
, func
):
157 win
.Connect(-1, -1, wxEVT_LEFT_DOWN
, func
)
159 def EVT_LEFT_UP(win
, func
):
160 win
.Connect(-1, -1, wxEVT_LEFT_UP
, func
)
162 def EVT_MIDDLE_DOWN(win
, func
):
163 win
.Connect(-1, -1, wxEVT_MIDDLE_DOWN
, func
)
165 def EVT_MIDDLE_UP(win
, func
):
166 win
.Connect(-1, -1, wxEVT_MIDDLE_UP
, func
)
168 def EVT_RIGHT_DOWN(win
, func
):
169 win
.Connect(-1, -1, wxEVT_RIGHT_DOWN
, func
)
171 def EVT_RIGHT_UP(win
, func
):
172 win
.Connect(-1, -1, wxEVT_RIGHT_UP
, func
)
174 def EVT_MOTION(win
, func
):
175 win
.Connect(-1, -1, wxEVT_MOTION
, func
)
177 def EVT_LEFT_DCLICK(win
, func
):
178 win
.Connect(-1, -1, wxEVT_LEFT_DCLICK
, func
)
180 def EVT_MIDDLE_DCLICK(win
, func
):
181 win
.Connect(-1, -1, wxEVT_MIDDLE_DCLICK
, func
)
183 def EVT_RIGHT_DCLICK(win
, func
):
184 win
.Connect(-1, -1, wxEVT_RIGHT_DCLICK
, func
)
186 def EVT_LEAVE_WINDOW(win
, func
):
187 win
.Connect(-1, -1, wxEVT_LEAVE_WINDOW
, func
)
189 def EVT_ENTER_WINDOW(win
, func
):
190 win
.Connect(-1, -1, wxEVT_ENTER_WINDOW
, func
)
192 def EVT_MOUSEWHEEL(win
, func
):
193 win
.Connect(-1, -1, wxEVT_MOUSEWHEEL
, func
)
196 def EVT_MOUSE_EVENTS(win
, func
):
197 win
.Connect(-1, -1, wxEVT_LEFT_DOWN
, func
)
198 win
.Connect(-1, -1, wxEVT_LEFT_UP
, func
)
199 win
.Connect(-1, -1, wxEVT_MIDDLE_DOWN
, func
)
200 win
.Connect(-1, -1, wxEVT_MIDDLE_UP
, func
)
201 win
.Connect(-1, -1, wxEVT_RIGHT_DOWN
, func
)
202 win
.Connect(-1, -1, wxEVT_RIGHT_UP
, func
)
203 win
.Connect(-1, -1, wxEVT_MOTION
, func
)
204 win
.Connect(-1, -1, wxEVT_LEFT_DCLICK
, func
)
205 win
.Connect(-1, -1, wxEVT_MIDDLE_DCLICK
, func
)
206 win
.Connect(-1, -1, wxEVT_RIGHT_DCLICK
, func
)
207 win
.Connect(-1, -1, wxEVT_LEAVE_WINDOW
, func
)
208 win
.Connect(-1, -1, wxEVT_ENTER_WINDOW
, func
)
210 def EVT_MOUSE_CAPTURE_CHANGED(win
, func
):
211 win
.Connect(-1, -1, wxEVT_MOUSE_CAPTURE_CHANGED
, func
)
214 def EVT_COMMAND(win
, id, cmd
, func
):
215 win
.Connect(id, -1, cmd
, func
)
217 def EVT_COMMAND_RANGE(win
, id1
, id2
, cmd
, func
):
218 win
.Connect(id1
, id2
, cmd
, func
)
222 def EVT_SCROLL(win
, func
):
223 win
.Connect(-1, -1, wxEVT_SCROLL_TOP
, func
)
224 win
.Connect(-1, -1, wxEVT_SCROLL_BOTTOM
, func
)
225 win
.Connect(-1, -1, wxEVT_SCROLL_LINEUP
, func
)
226 win
.Connect(-1, -1, wxEVT_SCROLL_LINEDOWN
, func
)
227 win
.Connect(-1, -1, wxEVT_SCROLL_PAGEUP
, func
)
228 win
.Connect(-1, -1, wxEVT_SCROLL_PAGEDOWN
, func
)
229 win
.Connect(-1, -1, wxEVT_SCROLL_THUMBTRACK
, func
)
230 win
.Connect(-1, -1, wxEVT_SCROLL_THUMBRELEASE
,func
)
231 win
.Connect(-1, -1, wxEVT_SCROLL_ENDSCROLL
, func
)
233 def EVT_SCROLL_TOP(win
, func
):
234 win
.Connect(-1, -1, wxEVT_SCROLL_TOP
, func
)
236 def EVT_SCROLL_BOTTOM(win
, func
):
237 win
.Connect(-1, -1, wxEVT_SCROLL_BOTTOM
, func
)
239 def EVT_SCROLL_LINEUP(win
, func
):
240 win
.Connect(-1, -1, wxEVT_SCROLL_LINEUP
, func
)
242 def EVT_SCROLL_LINEDOWN(win
, func
):
243 win
.Connect(-1, -1, wxEVT_SCROLL_LINEDOWN
, func
)
245 def EVT_SCROLL_PAGEUP(win
, func
):
246 win
.Connect(-1, -1, wxEVT_SCROLL_PAGEUP
, func
)
248 def EVT_SCROLL_PAGEDOWN(win
, func
):
249 win
.Connect(-1, -1, wxEVT_SCROLL_PAGEDOWN
, func
)
251 def EVT_SCROLL_THUMBTRACK(win
, func
):
252 win
.Connect(-1, -1, wxEVT_SCROLL_THUMBTRACK
, func
)
254 def EVT_SCROLL_THUMBRELEASE(win
, func
):
255 win
.Connect(-1, -1, wxEVT_SCROLL_THUMBRELEASE
, func
)
257 def EVT_SCROLL_ENDSCROLL(win
, func
):
258 win
.Connect(-1, -1, wxEVT_SCROLL_ENDSCROLL
, func
)
262 # Scrolling, with an id
263 def EVT_COMMAND_SCROLL(win
, id, func
):
264 win
.Connect(id, -1, wxEVT_SCROLL_TOP
, func
)
265 win
.Connect(id, -1, wxEVT_SCROLL_BOTTOM
, func
)
266 win
.Connect(id, -1, wxEVT_SCROLL_LINEUP
, func
)
267 win
.Connect(id, -1, wxEVT_SCROLL_LINEDOWN
, func
)
268 win
.Connect(id, -1, wxEVT_SCROLL_PAGEUP
, func
)
269 win
.Connect(id, -1, wxEVT_SCROLL_PAGEDOWN
, func
)
270 win
.Connect(id, -1, wxEVT_SCROLL_THUMBTRACK
,func
)
271 win
.Connect(id, -1, wxEVT_SCROLL_THUMBRELEASE
,func
)
272 win
.Connect(id, -1, wxEVT_SCROLL_ENDSCROLL
, func
)
274 def EVT_COMMAND_SCROLL_TOP(win
, id, func
):
275 win
.Connect(id, -1, wxEVT_SCROLL_TOP
, func
)
277 def EVT_COMMAND_SCROLL_BOTTOM(win
, id, func
):
278 win
.Connect(id, -1, wxEVT_SCROLL_BOTTOM
, func
)
280 def EVT_COMMAND_SCROLL_LINEUP(win
, id, func
):
281 win
.Connect(id, -1, wxEVT_SCROLL_LINEUP
, func
)
283 def EVT_COMMAND_SCROLL_LINEDOWN(win
, id, func
):
284 win
.Connect(id, -1, wxEVT_SCROLL_LINEDOWN
, func
)
286 def EVT_COMMAND_SCROLL_PAGEUP(win
, id, func
):
287 win
.Connect(id, -1, wxEVT_SCROLL_PAGEUP
, func
)
289 def EVT_COMMAND_SCROLL_PAGEDOWN(win
, id, func
):
290 win
.Connect(id, -1, wxEVT_SCROLL_PAGEDOWN
, func
)
292 def EVT_COMMAND_SCROLL_THUMBTRACK(win
, id, func
):
293 win
.Connect(id, -1, wxEVT_SCROLL_THUMBTRACK
, func
)
295 def EVT_COMMAND_SCROLL_THUMBRELEASE(win
, id, func
):
296 win
.Connect(id, -1, wxEVT_SCROLL_THUMBRELEASE
, func
)
298 def EVT_COMMAND_SCROLL_ENDSCROLL(win
, id, func
):
299 win
.Connect(id, -1, wxEVT_SCROLL_ENDSCROLL
, func
)
302 def EVT_SCROLLWIN(win
, func
):
303 win
.Connect(-1, -1, wxEVT_SCROLLWIN_TOP
, func
)
304 win
.Connect(-1, -1, wxEVT_SCROLLWIN_BOTTOM
, func
)
305 win
.Connect(-1, -1, wxEVT_SCROLLWIN_LINEUP
, func
)
306 win
.Connect(-1, -1, wxEVT_SCROLLWIN_LINEDOWN
, func
)
307 win
.Connect(-1, -1, wxEVT_SCROLLWIN_PAGEUP
, func
)
308 win
.Connect(-1, -1, wxEVT_SCROLLWIN_PAGEDOWN
, func
)
309 win
.Connect(-1, -1, wxEVT_SCROLLWIN_THUMBTRACK
, func
)
310 win
.Connect(-1, -1, wxEVT_SCROLLWIN_THUMBRELEASE
,func
)
312 def EVT_SCROLLWIN_TOP(win
, func
):
313 win
.Connect(-1, -1, wxEVT_SCROLLWIN_TOP
, func
)
315 def EVT_SCROLLWIN_BOTTOM(win
, func
):
316 win
.Connect(-1, -1, wxEVT_SCROLLWIN_BOTTOM
, func
)
318 def EVT_SCROLLWIN_LINEUP(win
, func
):
319 win
.Connect(-1, -1, wxEVT_SCROLLWIN_LINEUP
, func
)
321 def EVT_SCROLLWIN_LINEDOWN(win
, func
):
322 win
.Connect(-1, -1, wxEVT_SCROLLWIN_LINEDOWN
, func
)
324 def EVT_SCROLLWIN_PAGEUP(win
, func
):
325 win
.Connect(-1, -1, wxEVT_SCROLLWIN_PAGEUP
, func
)
327 def EVT_SCROLLWIN_PAGEDOWN(win
, func
):
328 win
.Connect(-1, -1, wxEVT_SCROLLWIN_PAGEDOWN
, func
)
330 def EVT_SCROLLWIN_THUMBTRACK(win
, func
):
331 win
.Connect(-1, -1, wxEVT_SCROLLWIN_THUMBTRACK
, func
)
333 def EVT_SCROLLWIN_THUMBRELEASE(win
, func
):
334 win
.Connect(-1, -1, wxEVT_SCROLLWIN_THUMBRELEASE
, func
)
338 # Scrolling, with an id
339 def EVT_COMMAND_SCROLLWIN(win
, id, func
):
340 win
.Connect(id, -1, wxEVT_SCROLLWIN_TOP
, func
)
341 win
.Connect(id, -1, wxEVT_SCROLLWIN_BOTTOM
, func
)
342 win
.Connect(id, -1, wxEVT_SCROLLWIN_LINEUP
, func
)
343 win
.Connect(id, -1, wxEVT_SCROLLWIN_LINEDOWN
, func
)
344 win
.Connect(id, -1, wxEVT_SCROLLWIN_PAGEUP
, func
)
345 win
.Connect(id, -1, wxEVT_SCROLLWIN_PAGEDOWN
, func
)
346 win
.Connect(id, -1, wxEVT_SCROLLWIN_THUMBTRACK
, func
)
347 win
.Connect(id, -1, wxEVT_SCROLLWIN_THUMBRELEASE
,func
)
349 def EVT_COMMAND_SCROLLWIN_TOP(win
, id, func
):
350 win
.Connect(id, -1, wxEVT_SCROLLWIN_TOP
, func
)
352 def EVT_COMMAND_SCROLLWIN_BOTTOM(win
, id, func
):
353 win
.Connect(id, -1, wxEVT_SCROLLWIN_BOTTOM
, func
)
355 def EVT_COMMAND_SCROLLWIN_LINEUP(win
, id, func
):
356 win
.Connect(id, -1, wxEVT_SCROLLWIN_LINEUP
, func
)
358 def EVT_COMMAND_SCROLLWIN_LINEDOWN(win
, id, func
):
359 win
.Connect(id, -1, wxEVT_SCROLLWIN_LINEDOWN
, func
)
361 def EVT_COMMAND_SCROLLWIN_PAGEUP(win
, id, func
):
362 win
.Connect(id, -1, wxEVT_SCROLLWIN_PAGEUP
, func
)
364 def EVT_COMMAND_SCROLLWIN_PAGEDOWN(win
, id, func
):
365 win
.Connect(id, -1, wxEVT_SCROLLWIN_PAGEDOWN
, func
)
367 def EVT_COMMAND_SCROLLWIN_THUMBTRACK(win
, id, func
):
368 win
.Connect(id, -1, wxEVT_SCROLLWIN_THUMBTRACK
, func
)
370 def EVT_COMMAND_SCROLLWIN_THUMBRELEASE(win
, id, func
):
371 win
.Connect(id, -1, wxEVT_SCROLLWIN_THUMBRELEASE
, func
)
374 # Convenience commands
375 def EVT_BUTTON(win
, id, func
):
376 win
.Connect(id, -1, wxEVT_COMMAND_BUTTON_CLICKED
, func
)
378 def EVT_CHECKBOX(win
, id, func
):
379 win
.Connect(id, -1, wxEVT_COMMAND_CHECKBOX_CLICKED
, func
)
381 def EVT_CHOICE(win
, id, func
):
382 win
.Connect(id, -1, wxEVT_COMMAND_CHOICE_SELECTED
, func
)
384 def EVT_LISTBOX(win
, id, func
):
385 win
.Connect(id, -1, wxEVT_COMMAND_LISTBOX_SELECTED
, func
)
387 def EVT_LISTBOX_DCLICK(win
, id, func
):
388 win
.Connect(id, -1, wxEVT_COMMAND_LISTBOX_DOUBLECLICKED
, func
)
390 def EVT_TEXT(win
, id, func
):
391 win
.Connect(id, -1, wxEVT_COMMAND_TEXT_UPDATED
, func
)
393 def EVT_TEXT_ENTER(win
, id, func
):
394 win
.Connect(id, -1, wxEVT_COMMAND_TEXT_ENTER
, func
)
396 def EVT_TEXT_URL(win
, id, func
):
397 win
.Connect(id, -1, wxEVT_COMMAND_TEXT_URL
, func
)
399 def EVT_TEXT_MAXLEN(win
, id, func
):
400 win
.Connect(id, -1, wxEVT_COMMAND_TEXT_MAXLEN
, func
)
402 def EVT_MENU(win
, id, func
):
403 win
.Connect(id, -1, wxEVT_COMMAND_MENU_SELECTED
, func
)
405 def EVT_MENU_RANGE(win
, id1
, id2
, func
):
406 win
.Connect(id1
, id2
, wxEVT_COMMAND_MENU_SELECTED
, func
)
408 def EVT_SLIDER(win
, id, func
):
409 win
.Connect(id, -1, wxEVT_COMMAND_SLIDER_UPDATED
, func
)
411 def EVT_RADIOBOX(win
, id, func
):
412 win
.Connect(id, -1, wxEVT_COMMAND_RADIOBOX_SELECTED
, func
)
414 def EVT_RADIOBUTTON(win
, id, func
):
415 win
.Connect(id, -1, wxEVT_COMMAND_RADIOBUTTON_SELECTED
, func
)
417 def EVT_VLBOX(win
, id, func
):
418 win
.Connect(id, -1, wxEVT_COMMAND_VLBOX_SELECTED
, func
)
420 def EVT_COMBOBOX(win
, id, func
):
421 win
.Connect(id, -1, wxEVT_COMMAND_COMBOBOX_SELECTED
, func
)
423 def EVT_TOOL(win
, id, func
):
424 win
.Connect(id, -1, wxEVT_COMMAND_TOOL_CLICKED
, func
)
426 def EVT_TOOL_RANGE(win
, id, id2
, func
):
427 win
.Connect(id, id2
, wxEVT_COMMAND_TOOL_CLICKED
, func
)
429 def EVT_TOOL_RCLICKED(win
, id, func
):
430 win
.Connect(id, -1, wxEVT_COMMAND_TOOL_RCLICKED
, func
)
432 def EVT_TOOL_RCLICKED_RANGE(win
, id, id2
, func
):
433 win
.Connect(id, id2
, wxEVT_COMMAND_TOOL_RCLICKED
, func
)
435 def EVT_TOOL_ENTER(win
, id, func
):
436 win
.Connect(id, -1, wxEVT_COMMAND_TOOL_ENTER
, func
)
438 def EVT_CHECKLISTBOX(win
, id, func
):
439 win
.Connect(id, -1, wxEVT_COMMAND_CHECKLISTBOX_TOGGLED
, func
)
441 def EVT_SPINCTRL(win
, id, func
):
442 win
.Connect(id, -1, wxEVT_COMMAND_SPINCTRL_UPDATED
, func
)
446 # Generic command events
448 def EVT_COMMAND_LEFT_CLICK(win
, id, func
):
449 win
.Connect(id, -1, wxEVT_COMMAND_LEFT_CLICK
, func
)
451 def EVT_COMMAND_LEFT_DCLICK(win
, id, func
):
452 win
.Connect(id, -1, wxEVT_COMMAND_LEFT_DCLICK
, func
)
454 def EVT_COMMAND_RIGHT_CLICK(win
, id, func
):
455 win
.Connect(id, -1, wxEVT_COMMAND_RIGHT_CLICK
, func
)
457 def EVT_COMMAND_RIGHT_DCLICK(win
, id, func
):
458 win
.Connect(id, -1, wxEVT_COMMAND_RIGHT_DCLICK
, func
)
460 def EVT_COMMAND_SET_FOCUS(win
, id, func
):
461 win
.Connect(id, -1, wxEVT_COMMAND_SET_FOCUS
, func
)
463 def EVT_COMMAND_KILL_FOCUS(win
, id, func
):
464 win
.Connect(id, -1, wxEVT_COMMAND_KILL_FOCUS
, func
)
466 def EVT_COMMAND_ENTER(win
, id, func
):
467 win
.Connect(id, -1, wxEVT_COMMAND_ENTER
, func
)
471 def EVT_NOTEBOOK_PAGE_CHANGED(win
, id, func
):
472 win
.Connect(id, -1, wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED
, func
)
474 def EVT_NOTEBOOK_PAGE_CHANGING(win
, id, func
):
475 win
.Connect(id, -1, wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING
, func
)
479 def EVT_SPIN_UP(win
, id, func
):
480 win
.Connect(id, -1, wxEVT_SCROLL_LINEUP
, func
)
482 def EVT_SPIN_DOWN(win
, id, func
):
483 win
.Connect(id, -1, wxEVT_SCROLL_LINEDOWN
, func
)
485 def EVT_SPIN(win
, id, func
):
486 win
.Connect(id, -1, wxEVT_SCROLL_THUMBTRACK
,func
)
490 def EVT_TASKBAR_MOVE(win
, func
):
491 win
.Connect(-1, -1, wxEVT_TASKBAR_MOVE
, func
)
493 def EVT_TASKBAR_LEFT_DOWN(win
, func
):
494 win
.Connect(-1, -1, wxEVT_TASKBAR_LEFT_DOWN
, func
)
496 def EVT_TASKBAR_LEFT_UP(win
, func
):
497 win
.Connect(-1, -1, wxEVT_TASKBAR_LEFT_UP
, func
)
499 def EVT_TASKBAR_RIGHT_DOWN(win
, func
):
500 win
.Connect(-1, -1, wxEVT_TASKBAR_RIGHT_DOWN
, func
)
502 def EVT_TASKBAR_RIGHT_UP(win
, func
):
503 win
.Connect(-1, -1, wxEVT_TASKBAR_RIGHT_UP
, func
)
505 def EVT_TASKBAR_LEFT_DCLICK(win
, func
):
506 win
.Connect(-1, -1, wxEVT_TASKBAR_LEFT_DCLICK
, func
)
508 def EVT_TASKBAR_RIGHT_DCLICK(win
, func
):
509 win
.Connect(-1, -1, wxEVT_TASKBAR_RIGHT_DCLICK
, func
)
513 def EVT_SASH_DRAGGED(win
, id, func
):
514 win
.Connect(id, -1, wxEVT_SASH_DRAGGED
, func
)
516 def EVT_SASH_DRAGGED_RANGE(win
, id1
, id2
, func
):
517 win
.Connect(id1
, id2
, wxEVT_SASH_DRAGGED
, func
)
519 def EVT_QUERY_LAYOUT_INFO(win
, func
):
520 win
.Connect(-1, -1, wxEVT_QUERY_LAYOUT_INFO
, func
)
522 def EVT_CALCULATE_LAYOUT(win
, func
):
523 win
.Connect(-1, -1, wxEVT_CALCULATE_LAYOUT
, func
)
527 def EVT_SPLITTER_SASH_POS_CHANGING(win
, id, func
):
528 win
.Connect(id, -1, wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING
, func
)
530 def EVT_SPLITTER_SASH_POS_CHANGED(win
, id, func
):
531 win
.Connect(id, -1, wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED
, func
)
533 def EVT_SPLITTER_UNSPLIT(win
, id, func
):
534 win
.Connect(id, -1, wxEVT_COMMAND_SPLITTER_UNSPLIT
, func
)
536 def EVT_SPLITTER_DOUBLECLICKED(win
, id, func
):
537 win
.Connect(id, -1, wxEVT_COMMAND_SPLITTER_DOUBLECLICKED
, func
)
541 def EVT_TIMER(win
, id, func
):
542 win
.Connect(id, -1, wxEVT_TIMER
, func
)
545 def EVT_END_PROCESS(eh
, id, func
):
546 eh
.Connect(id, -1, wxEVT_END_PROCESS
, func
)
550 def EVT_JOY_DOWN(win
, func
):
551 win
.Connect(-1, -1, wxEVT_JOY_BUTTON_DOWN
, func
)
553 def EVT_JOY_UP(win
, func
):
554 win
.Connect(-1, -1, wxEVT_JOY_BUTTON_UP
, func
)
556 def EVT_JOY_MOVE(win
, func
):
557 win
.Connect(-1, -1, wxEVT_JOY_MOVE
, func
)
559 def EVT_JOY_ZMOVE(win
, func
):
560 win
.Connect(-1, -1, wxEVT_JOY_ZMOVE
, func
)
562 def EVT_JOYSTICK_EVENTS(win
, func
):
563 win
.Connect(-1, -1, wxEVT_JOY_BUTTON_DOWN
, func
)
564 win
.Connect(-1, -1, wxEVT_JOY_BUTTON_UP
, func
)
565 win
.Connect(-1, -1, wxEVT_JOY_MOVE
, func
)
566 win
.Connect(-1, -1, wxEVT_JOY_ZMOVE
, func
)
569 def EVT_TOGGLEBUTTON(win
, id, func
):
570 win
.Connect(id, -1, wxEVT_COMMAND_TOGGLEBUTTON_CLICKED
, func
)
574 def EVT_CONTEXT_MENU(win
, func
):
575 win
.Connect(-1, -1, wxEVT_CONTEXT_MENU
, func
)
578 #----------------------------------------------------------------------
580 class wxTimer(wxPyTimer
):
581 def __init__(self
, evtHandler
= None, id = -1):
582 if evtHandler
is None:
583 wxPyTimer
.__init
__(self
, self
.Notify
) # derived class must provide
584 # Notify(self) method.
586 wxPyTimer
.__init
__(self
, None)
587 self
.SetOwner(evtHandler
, id)
589 #----------------------------------------------------------------------
593 wxNamedColor
= wxNamedColour
595 wxScrollbar
= wxScrollBar
596 wxPoint2D
= wxPoint2DDouble
598 wxPyAssertionError
= wxc
.wxPyAssertionError
601 # backwards compatibility
602 wxNoRefBitmap
= wxBitmap
603 wxPyDefaultPosition
= wxDefaultPosition
604 wxPyDefaultSize
= wxDefaultSize
606 wxSystemSettings_GetSystemColour
= wxSystemSettings_GetColour
607 wxSystemSettings_GetSystemFont
= wxSystemSettings_GetFont
608 wxSystemSettings_GetSystemMetric
= wxSystemSettings_GetMetric
611 # workarounds for bad wxRTTI names
612 __wxPyPtrTypeMap
['wxGauge95'] = 'wxGauge'
613 __wxPyPtrTypeMap
['wxSlider95'] = 'wxSlider'
614 __wxPyPtrTypeMap
['wxStatusBar95'] = 'wxStatusBar'
620 warnings
.warn("Use wxNewId instead", DeprecationWarning, 2)
625 warnings
.warn("Use wxRegisterId instead", DeprecationWarning, 2)
626 return wxRegisterId(ID
)
630 # Use Python's bool constants if available, make aliases if not
637 # Backwards compaatible
639 FALSE
= false
= False
642 #----------------------------------------------------------------------
643 # wxGTK sets the locale when initialized. Doing this at the Python
644 # level should set it up to match what GTK is doing at the C level.
645 if wxPlatform
== "__WXGTK__":
648 locale
.setlocale(locale
.LC_ALL
, "")
652 # On MSW add the directory where the wxWindows catalogs were installed
653 # to the default catalog path.
654 if wxPlatform
== "__WXMSW__":
656 localedir
= os
.path
.join(os
.path
.split(__file__
)[0], "locale")
657 wxLocale_AddCatalogLookupPathPrefix(localedir
)
660 #----------------------------------------------------------------------
661 # Load version numbers from __version__... Ensure that major and minor
662 # versions are the same for both wxPython and wxWindows.
664 from wxPython
.__version
__ import *
665 __version__
= wxVERSION_STRING
667 assert wxMAJOR_VERSION
== wxc
.wxMAJOR_VERSION
, "wxPython/wxWindows version mismatch"
668 assert wxMINOR_VERSION
== wxc
.wxMINOR_VERSION
, "wxPython/wxWindows version mismatch"
669 if wxRELEASE_VERSION
!= wxc
.wxRELEASE_VERSION
:
671 warnings
.warn("wxPython/wxWindows release number mismatch")
674 #----------------------------------------------------------------------
675 # This helper function will take a wxPython object and convert it to
676 # another wxPython object type. This will not be able to create objects
677 # that are derived from wxPython classes by the user, only those that are
678 # actually part of wxPython and directly corespond to C++ objects.
680 # This is useful in situations where some method returns a generic
681 # type such as wxWindow, but you know that it is actually some
682 # derived type such as a wxTextCtrl. You can't call wxTextCtrl specific
683 # methods on a wxWindow object, but you can use this function to
684 # create a wxTextCtrl object that will pass the same pointer to
685 # the C++ code. You use it like this:
687 # textCtrl = wxPyTypeCast(window, "wxTextCtrl")
690 # WARNING: Using this function to type cast objects into types that
691 # they are not is not recommended and is likely to cause your
692 # program to crash... Hard.
695 def wxPyTypeCast(obj
, typeStr
):
698 theClass
= globals()[typeStr
+"Ptr"]
699 typeStr
= __wxPyPtrTypeMap
.get(typeStr
, typeStr
)
700 if hasattr(obj
, "this"):
701 # if already the right type then just return it
702 if isinstance(obj
, theClass
) or obj
.__class
__ is theClass
:
704 newPtr
= ptrcast(obj
.this
, typeStr
+"_p")
706 newPtr
= ptrcast(obj
, typeStr
+"_p")
707 theObj
= theClass(newPtr
)
708 if hasattr(obj
, "this"):
709 theObj
.thisown
= obj
.thisown
712 #----------------------------------------------------------------------------
713 # An isinstance for Pythons < 2.2 that can check a sequence of class objects
714 # like the one in 2.2 can.
716 def wxPy_isinstance(obj
, klasses
):
718 if sys
.version
[:3] < "2.2" and type(klasses
) in [types
.TupleType
, types
.ListType
]:
719 for klass
in klasses
:
720 if isinstance(obj
, klass
): return True
723 return isinstance(obj
, klasses
)
725 #----------------------------------------------------------------------------
726 _wxCallAfterId
= None
728 def wxCallAfter(callable, *args
, **kw
):
730 Call the specified function after the current and pending event
731 handlers have been completed. This is also good for making GUI
732 method calls from non-GUI threads.
735 assert app
, 'No wxApp created yet'
737 global _wxCallAfterId
738 if _wxCallAfterId
is None:
739 _wxCallAfterId
= wxNewEventType()
740 app
.Connect(-1, -1, _wxCallAfterId
,
741 lambda event
: event
.callable(*event
.args
, **event
.kw
) )
743 evt
.SetEventType(_wxCallAfterId
)
744 evt
.callable = callable
747 wxPostEvent(app
, evt
)
750 #----------------------------------------------------------------------
755 A convenience class for wxTimer, that calls the given callable
756 object once after the given amount of milliseconds, passing any
757 positional or keyword args. The return value of the callable is
758 availbale after it has been run with the GetResult method.
760 If you don't need to get the return value or restart the timer
761 then there is no need to hold a reference to this object. It will
762 hold a reference to itself while the timer is running (the timer
763 has a reference to self.Notify) but the cycle will be broken when
764 the timer completes, automatically cleaning up the wxFutureCall
767 def __init__(self
, millis
, callable, *args
, **kwargs
):
769 self
.callable = callable
770 self
.SetArgs(*args
, **kwargs
)
781 def Start(self
, millis
=None):
786 if millis
is not None:
789 self
.timer
= wxPyTimer(self
.Notify
)
790 self
.timer
.Start(self
.millis
, wxTIMER_ONE_SHOT
)
796 Stop and destroy the timer.
798 if self
.timer
is not None:
803 def GetInterval(self
):
804 if self
.timer
is not None:
805 return self
.timer
.GetInterval()
811 return self
.timer
is not None and self
.timer
.IsRunning()
814 def SetArgs(self
, *args
, **kwargs
):
816 (Re)set the args passed to the callable object. This is
817 useful in conjunction with Restart if you want to schedule a
818 new call to the same callable object but with different
832 The timer has expired so call the callable.
834 if self
.callable and getattr(self
.callable, 'im_self', True):
836 self
.result
= self
.callable(*self
.args
, **self
.kwargs
)
838 wxCallAfter(self
.Stop
)
841 #----------------------------------------------------------------------
843 class wxPyDeadObjectError(AttributeError):
846 class _wxPyDeadObject
:
848 Instances of wx objects that are OOR capable will have their __class__
849 changed to this class when the C++ object is deleted. This should help
850 prevent crashes due to referencing a bogus C++ pointer.
852 reprStr
= "wxPython wrapper for DELETED %s object! (The C++ object no longer exists.)"
853 attrStr
= "The C++ part of the %s object has been deleted, attribute access no longer allowed."
855 def __repr__( self
):
856 if not hasattr(self
, "_name"):
857 self
._name
= "[unknown]"
858 return self
.reprStr
% self
._name
860 def __getattr__( self
, *args
):
861 if not hasattr(self
, "_name"):
862 self
._name
= "[unknown]"
863 raise wxPyDeadObjectError( self
.attrStr
% self
._name
)
865 def __nonzero__(self
):
869 #----------------------------------------------------------------------
871 class wxNotebookPage(wxPanel
):
873 There is an old (and apparently unsolvable) bug when placing a
874 window with a nonstandard background colour in a wxNotebook on
875 wxGTK, as the notbooks's background colour would always be used
876 when the window is refreshed. The solution is to place a panel in
877 the notbook and the coloured window on the panel, sized to cover
878 the panel. This simple class does that for you, just put an
879 instance of this in the notebook and make your regular window a
880 child of this one and it will handle the resize for you.
882 def __init__(self
, parent
, id=-1,
883 pos
=wxDefaultPosition
, size
=wxDefaultSize
,
884 style
=wxTAB_TRAVERSAL
, name
="panel"):
885 wxPanel
.__init
__(self
, parent
, id, pos
, size
, style
, name
)
887 EVT_SIZE(self
, self
.OnSize
)
888 def OnSize(self
, evt
):
889 if self
.child
is None:
890 children
= self
.GetChildren()
892 self
.child
= children
[0]
894 self
.child
.SetPosition((0,0))
895 self
.child
.SetSize(self
.GetSize())
898 #----------------------------------------------------------------------
899 #----------------------------------------------------------------------
901 class wxPyOnDemandOutputWindow
:
902 def __init__(self
, title
= "wxPython: stdout/stderr"):
907 def SetParent(self
, parent
):
910 def OnCloseWindow(self
, event
):
911 if self
.frame
!= None:
916 # These methods provide the file-like output behaviour.
917 def write(self
, str):
918 if not wxThread_IsMain():
919 # Aquire the GUI mutex before making GUI calls. Mutex is released
920 # when locker is deleted at the end of this function.
921 locker
= wxMutexGuiLocker()
924 self
.frame
= wxFrame(self
.parent
, -1, self
.title
,
925 style
=wxDEFAULT_FRAME_STYLE|wxNO_FULL_REPAINT_ON_RESIZE
)
926 self
.text
= wxTextCtrl(self
.frame
, -1, "",
927 style
= wxTE_MULTILINE|wxTE_READONLY
)
928 self
.frame
.SetSize(wxSize(450, 300))
929 self
.frame
.Show(True)
930 EVT_CLOSE(self
.frame
, self
.OnCloseWindow
)
931 self
.text
.AppendText(str)
934 if self
.frame
!= None:
935 if not wxThread_IsMain():
936 locker
= wxMutexGuiLocker()
940 _defRedirect
= (wxPlatform
== '__WXMSW__' or wxPlatform
== '__WXMAC__')
942 #----------------------------------------------------------------------
943 # The main application class. Derive from this and implement an OnInit
944 # method that creates a frame and then calls self.SetTopWindow(frame)
946 class wxApp(wxPyApp
):
947 error
= 'wxApp.error'
948 outputWindowClass
= wxPyOnDemandOutputWindow
950 def __init__(self
, redirect
=_defRedirect
, filename
=None, useBestVisual
=False):
951 wxPyApp
.__init
__(self
)
953 if wx
.wxPlatform
== "__WXMAC__":
956 if not MacOS
.WMAvailable():
957 print """This program needs access to the screen. Please run with
958 'pythonw', not 'python', and only when you are logged in on the main display
965 self
.saveStdio
= (sys
.stdout
, sys
.stderr
)
967 # This has to be done before OnInit
968 self
.SetUseBestVisual(useBestVisual
)
971 self
.RedirectStdio(filename
)
973 # this initializes wxWindows and then calls our OnInit
974 _wxStart(self
.OnInit
)
984 def SetTopWindow(self
, frame
):
986 self
.stdioWin
.SetParent(frame
)
987 wxPyApp
.SetTopWindow(self
, frame
)
991 wxPyApp
.MainLoop(self
)
995 def RedirectStdio(self
, filename
):
997 sys
.stdout
= sys
.stderr
= open(filename
, 'a')
999 self
.stdioWin
= self
.outputWindowClass()
1000 sys
.stdout
= sys
.stderr
= self
.stdioWin
1003 def RestoreStdio(self
):
1004 sys
.stdout
, sys
.stderr
= self
.saveStdio
1007 # change from wxPyApp_ to wxApp_
1008 wxApp_GetMacDefaultEncodingIsPC
= wxc
.wxPyApp_GetMacDefaultEncodingIsPC
1009 wxApp_GetMacSupportPCMenuShortcuts
= wxc
.wxPyApp_GetMacSupportPCMenuShortcuts
1010 wxApp_GetMacAboutMenuItemId
= wxc
.wxPyApp_GetMacAboutMenuItemId
1011 wxApp_GetMacPreferencesMenuItemId
= wxc
.wxPyApp_GetMacPreferencesMenuItemId
1012 wxApp_GetMacExitMenuItemId
= wxc
.wxPyApp_GetMacExitMenuItemId
1013 wxApp_GetMacHelpMenuTitleName
= wxc
.wxPyApp_GetMacHelpMenuTitleName
1014 wxApp_SetMacDefaultEncodingIsPC
= wxc
.wxPyApp_SetMacDefaultEncodingIsPC
1015 wxApp_SetMacSupportPCMenuShortcuts
= wxc
.wxPyApp_SetMacSupportPCMenuShortcuts
1016 wxApp_SetMacAboutMenuItemId
= wxc
.wxPyApp_SetMacAboutMenuItemId
1017 wxApp_SetMacPreferencesMenuItemId
= wxc
.wxPyApp_SetMacPreferencesMenuItemId
1018 wxApp_SetMacExitMenuItemId
= wxc
.wxPyApp_SetMacExitMenuItemId
1019 wxApp_SetMacHelpMenuTitleName
= wxc
.wxPyApp_SetMacHelpMenuTitleName
1022 #----------------------------------------------------------------------------
1024 class wxPySimpleApp(wxApp
):
1025 def __init__(self
, flag
=0):
1026 wxApp
.__init
__(self
, flag
)
1028 wxInitAllImageHandlers()
1032 class wxPyWidgetTester(wxApp
):
1033 def __init__(self
, size
= (250, 100)):
1035 wxApp
.__init
__(self
, 0)
1038 self
.frame
= wxFrame(None, -1, "Widget Tester", pos
=(0,0), size
=self
.size
)
1039 self
.SetTopWindow(self
.frame
)
1042 def SetWidget(self
, widgetClass
, *args
):
1043 w
= widgetClass(self
.frame
, *args
)
1044 self
.frame
.Show(True)
1046 #----------------------------------------------------------------------------
1047 # DO NOT hold any other references to this object. This is how we
1048 # know when to cleanup system resources that wxWin is holding. When
1049 # the sys module is unloaded, the refcount on sys.__wxPythonCleanup
1050 # goes to zero and it calls the wxApp_CleanUp function.
1052 class __wxPyCleanup
:
1054 self
.cleanup
= wxc
.wxApp_CleanUp
1058 sys
.__wxPythonCleanup
= __wxPyCleanup()
1060 ## # another possible solution, but it gets called too early...
1061 ## if sys.version[0] == '2':
1063 ## atexit.register(wxc.wxApp_CleanUp)
1065 ## sys.exitfunc = wxc.wxApp_CleanUp
1068 #----------------------------------------------------------------------------
1069 #----------------------------------------------------------------------------