1 #----------------------------------------------------------------------------
3 # Purpose: This file is appended to the shadow class file generated
4 # by SWIG. We add some unSWIGable things here.
10 # Copyright: (c) 1998 by Total Control Software
11 # Licence: wxWindows license
12 #----------------------------------------------------------------------------
16 #----------------------------------------------------------------------
17 # This gives this module's dictionary to the C++ extension code...
19 _wxSetDictionary(vars())
22 #----------------------------------------------------------------------
23 #----------------------------------------------------------------------
24 # Helper function to link python methods to wxWindows virtual
27 def _checkForCallback(obj
, name
, event
, theID
=-1):
28 try: cb
= getattr(obj
, name
)
30 else: obj
.Connect(theID
, -1, event
, cb
)
32 def _StdWindowCallbacks(win
):
33 _checkForCallback(win
, "OnChar", wxEVT_CHAR
)
34 _checkForCallback(win
, "OnSize", wxEVT_SIZE
)
35 _checkForCallback(win
, "OnEraseBackground", wxEVT_ERASE_BACKGROUND
)
36 _checkForCallback(win
, "OnSysColourChanged", wxEVT_SYS_COLOUR_CHANGED
)
37 _checkForCallback(win
, "OnInitDialog", wxEVT_INIT_DIALOG
)
38 _checkForCallback(win
, "OnIdle", wxEVT_IDLE
)
39 _checkForCallback(win
, "OnPaint", wxEVT_PAINT
)
41 def _StdFrameCallbacks(win
):
42 _StdWindowCallbacks(win
)
43 _checkForCallback(win
, "OnActivate", wxEVT_ACTIVATE
)
44 _checkForCallback(win
, "OnMenuHighlight", wxEVT_MENU_HIGHLIGHT
)
45 _checkForCallback(win
, "OnCloseWindow", wxEVT_CLOSE_WINDOW
)
48 def _StdDialogCallbacks(win
):
49 _StdWindowCallbacks(win
)
50 _checkForCallback(win
, "OnOk", wxEVT_COMMAND_BUTTON_CLICKED
, wxID_OK
)
51 _checkForCallback(win
, "OnApply", wxEVT_COMMAND_BUTTON_CLICKED
, wxID_APPLY
)
52 _checkForCallback(win
, "OnCancel", wxEVT_COMMAND_BUTTON_CLICKED
, wxID_CANCEL
)
53 _checkForCallback(win
, "OnCloseWindow", wxEVT_CLOSE_WINDOW
)
54 _checkForCallback(win
, "OnCharHook", wxEVT_CHAR_HOOK
)
57 def _StdOnScrollCallback(win
):
58 try: cb
= getattr(win
, "OnScroll")
60 else: EVT_SCROLL(win
, cb
)
64 #----------------------------------------------------------------------
65 #----------------------------------------------------------------------
66 # functions that look and act like the C++ Macros of the same name
70 def EVT_SIZE(win
, func
):
71 win
.Connect(-1, -1, wxEVT_SIZE
, func
)
73 def EVT_MOVE(win
, func
):
74 win
.Connect(-1, -1, wxEVT_MOVE
, func
)
76 def EVT_CLOSE(win
, func
):
77 win
.Connect(-1, -1, wxEVT_CLOSE_WINDOW
, func
)
79 def EVT_PAINT(win
, func
):
80 win
.Connect(-1, -1, wxEVT_PAINT
, func
)
82 def EVT_ERASE_BACKGROUND(win
, func
):
83 win
.Connect(-1, -1, wxEVT_ERASE_BACKGROUND
, func
)
85 def EVT_CHAR(win
, func
):
86 win
.Connect(-1, -1, wxEVT_CHAR
, func
)
88 def EVT_CHAR_HOOK(win
, func
):
89 win
.Connect(-1, -1, wxEVT_CHAR_HOOK
, func
)
91 def EVT_MENU_HIGHLIGHT(win
, id, func
):
92 win
.Connect(id, -1, wxEVT_MENU_HIGHLIGHT
, func
)
94 def EVT_MENU_HIGHLIGHT_ALL(win
, func
):
95 win
.Connect(-1, -1, wxEVT_MENU_HIGHLIGHT
, func
)
97 def EVT_SET_FOCUS(win
, func
):
98 win
.Connect(-1, -1, wxEVT_SET_FOCUS
, func
)
100 def EVT_KILL_FOCUS(win
, func
):
101 win
.Connect(-1, -1, wxEVT_KILL_FOCUS
, func
)
103 def EVT_ACTIVATE(win
, func
):
104 win
.Connect(-1, -1, wxEVT_ACTIVATE
, func
)
106 def EVT_ACTIVATE_APP(win
, func
):
107 win
.Connect(-1, -1, wxEVT_ACTIVATE_APP
, func
)
109 def EVT_END_SESSION(win
, func
):
110 win
.Connect(-1, -1, wxEVT_END_SESSION
, func
)
112 def EVT_QUERY_END_SESSION(win
, func
):
113 win
.Connect(-1, -1, wxEVT_QUERY_END_SESSION
, func
)
115 def EVT_DROP_FILES(win
, func
):
116 win
.Connect(-1, -1, wxEVT_DROP_FILES
, func
)
118 def EVT_INIT_DIALOG(win
, func
):
119 win
.Connect(-1, -1, wxEVT_INIT_DIALOG
, func
)
121 def EVT_SYS_COLOUR_CHANGED(win
, func
):
122 win
.Connect(-1, -1, wxEVT_SYS_COLOUR_CHANGED
, func
)
124 def EVT_SHOW(win
, func
):
125 win
.Connect(-1, -1, wxEVT_SHOW
, func
)
127 def EVT_MAXIMIZE(win
, func
):
128 win
.Connect(-1, -1, wxEVT_MAXIMIZE
, func
)
130 def EVT_ICONIZE(win
, func
):
131 win
.Connect(-1, -1, wxEVT_ICONIZE
, func
)
133 def EVT_NAVIGATION_KEY(win
, func
):
134 win
.Connect(-1, -1, wxEVT_NAVIGATION_KEY
, func
)
138 def EVT_LEFT_DOWN(win
, func
):
139 win
.Connect(-1, -1, wxEVT_LEFT_DOWN
, func
)
141 def EVT_LEFT_UP(win
, func
):
142 win
.Connect(-1, -1, wxEVT_LEFT_UP
, func
)
144 def EVT_MIDDLE_DOWN(win
, func
):
145 win
.Connect(-1, -1, wxEVT_MIDDLE_DOWN
, func
)
147 def EVT_MIDDLE_UP(win
, func
):
148 win
.Connect(-1, -1, wxEVT_MIDDLE_UP
, func
)
150 def EVT_RIGHT_DOWN(win
, func
):
151 win
.Connect(-1, -1, wxEVT_RIGHT_DOWN
, func
)
153 def EVT_RIGHT_UP(win
, func
):
154 win
.Connect(-1, -1, wxEVT_RIGHT_UP
, func
)
156 def EVT_MOTION(win
, func
):
157 win
.Connect(-1, -1, wxEVT_MOTION
, func
)
159 def EVT_LEFT_DCLICK(win
, func
):
160 win
.Connect(-1, -1, wxEVT_LEFT_DCLICK
, func
)
162 def EVT_MIDDLE_DCLICK(win
, func
):
163 win
.Connect(-1, -1, wxEVT_MIDDLE_DCLICK
, func
)
165 def EVT_RIGHT_DCLICK(win
, func
):
166 win
.Connect(-1, -1, wxEVT_RIGHT_DCLICK
, func
)
168 def EVT_LEAVE_WINDOW(win
, func
):
169 win
.Connect(-1, -1, wxEVT_LEAVE_WINDOW
, func
)
171 def EVT_ENTER_WINDOW(win
, func
):
172 win
.Connect(-1, -1, wxEVT_ENTER_WINDOW
, func
)
176 def EVT_MOUSE_EVENTS(win
, func
):
177 win
.Connect(-1, -1, wxEVT_LEFT_DOWN
, func
)
178 win
.Connect(-1, -1, wxEVT_LEFT_UP
, func
)
179 win
.Connect(-1, -1, wxEVT_MIDDLE_DOWN
, func
)
180 win
.Connect(-1, -1, wxEVT_MIDDLE_UP
, func
)
181 win
.Connect(-1, -1, wxEVT_RIGHT_DOWN
, func
)
182 win
.Connect(-1, -1, wxEVT_RIGHT_UP
, func
)
183 win
.Connect(-1, -1, wxEVT_MOTION
, func
)
184 win
.Connect(-1, -1, wxEVT_LEFT_DCLICK
, func
)
185 win
.Connect(-1, -1, wxEVT_MIDDLE_DCLICK
, func
)
186 win
.Connect(-1, -1, wxEVT_RIGHT_DCLICK
, func
)
187 win
.Connect(-1, -1, wxEVT_LEAVE_WINDOW
, func
)
188 win
.Connect(-1, -1, wxEVT_ENTER_WINDOW
, func
)
191 def EVT_COMMAND(win
, id, cmd
, func
):
192 win
.Connect(id, -1, cmd
, func
)
194 def EVT_COMMAND_RANGE(win
, id1
, id2
, cmd
, func
):
195 win
.Connect(id1
, id2
, cmd
, func
)
198 def EVT_SCROLL(win
, func
):
199 win
.Connect(-1, -1, wxEVT_SCROLL_TOP
, func
)
200 win
.Connect(-1, -1, wxEVT_SCROLL_BOTTOM
, func
)
201 win
.Connect(-1, -1, wxEVT_SCROLL_LINEUP
, func
)
202 win
.Connect(-1, -1, wxEVT_SCROLL_LINEDOWN
, func
)
203 win
.Connect(-1, -1, wxEVT_SCROLL_PAGEUP
, func
)
204 win
.Connect(-1, -1, wxEVT_SCROLL_PAGEDOWN
, func
)
205 win
.Connect(-1, -1, wxEVT_SCROLL_THUMBTRACK
,func
)
207 def EVT_SCROLL_TOP(win
, func
):
208 win
.Connect(-1, -1, wxEVT_SCROLL_TOP
, func
)
210 def EVT_SCROLL_BOTTOM(win
, func
):
211 win
.Connect(-1, -1, wxEVT_SCROLL_BOTTOM
, func
)
213 def EVT_SCROLL_LINEUP(win
, func
):
214 win
.Connect(-1, -1, wxEVT_SCROLL_LINEUP
, func
)
216 def EVT_SCROLL_LINEDOWN(win
, func
):
217 win
.Connect(-1, -1, wxEVT_SCROLL_LINEDOWN
, func
)
219 def EVT_SCROLL_PAGEUP(win
, func
):
220 win
.Connect(-1, -1, wxEVT_SCROLL_PAGEUP
, func
)
222 def EVT_SCROLL_PAGEDOWN(win
, func
):
223 win
.Connect(-1, -1, wxEVT_SCROLL_PAGEDOWN
, func
)
225 def EVT_SCROLL_THUMBTRACK(win
, func
):
226 win
.Connect(-1, -1, wxEVT_SCROLL_THUMBTRACK
, func
)
230 # Scrolling, with an id
231 def EVT_COMMAND_SCROLL(win
, id, func
):
232 win
.Connect(id, -1, wxEVT_SCROLL_TOP
, func
)
233 win
.Connect(id, -1, wxEVT_SCROLL_BOTTOM
, func
)
234 win
.Connect(id, -1, wxEVT_SCROLL_LINEUP
, func
)
235 win
.Connect(id, -1, wxEVT_SCROLL_LINEDOWN
, func
)
236 win
.Connect(id, -1, wxEVT_SCROLL_PAGEUP
, func
)
237 win
.Connect(id, -1, wxEVT_SCROLL_PAGEDOWN
, func
)
238 win
.Connect(id, -1, wxEVT_SCROLL_THUMBTRACK
,func
)
240 def EVT_COMMAND_SCROLL_TOP(win
, id, func
):
241 win
.Connect(id, -1, wxEVT_SCROLL_TOP
, func
)
243 def EVT_COMMAND_SCROLL_BOTTOM(win
, id, func
):
244 win
.Connect(id, -1, wxEVT_SCROLL_BOTTOM
, func
)
246 def EVT_COMMAND_SCROLL_LINEUP(win
, id, func
):
247 win
.Connect(id, -1, wxEVT_SCROLL_LINEUP
, func
)
249 def EVT_COMMAND_SCROLL_LINEDOWN(win
, id, func
):
250 win
.Connect(id, -1, wxEVT_SCROLL_LINEDOWN
, func
)
252 def EVT_COMMAND_SCROLL_PAGEUP(win
, id, func
):
253 win
.Connect(id, -1, wxEVT_SCROLL_PAGEUP
, func
)
255 def EVT_COMMAND_SCROLL_PAGEDOWN(win
, id, func
):
256 win
.Connect(id, -1, wxEVT_SCROLL_PAGEDOWN
, func
)
258 def EVT_COMMAND_SCROLL_THUMBTRACK(win
, id, func
):
259 win
.Connect(id, -1, wxEVT_SCROLL_THUMBTRACK
, func
)
262 # Convenience commands
263 def EVT_BUTTON(win
, id, func
):
264 win
.Connect(id, -1, wxEVT_COMMAND_BUTTON_CLICKED
, func
)
266 def EVT_CHECKBOX(win
, id, func
):
267 win
.Connect(id, -1, wxEVT_COMMAND_CHECKBOX_CLICKED
, func
)
269 def EVT_CHOICE(win
, id, func
):
270 win
.Connect(id, -1, wxEVT_COMMAND_CHOICE_SELECTED
, func
)
272 def EVT_LISTBOX(win
, id, func
):
273 win
.Connect(id, -1, wxEVT_COMMAND_LISTBOX_SELECTED
, func
)
275 def EVT_LISTBOX_DCLICK(win
, id, func
):
276 win
.Connect(id, -1, wxEVT_COMMAND_LISTBOX_DOUBLECLICKED
, func
)
278 def EVT_TEXT(win
, id, func
):
279 win
.Connect(id, -1, wxEVT_COMMAND_TEXT_UPDATED
, func
)
281 def EVT_TEXT_ENTER(win
, id, func
):
282 win
.Connect(id, -1, wxEVT_COMMAND_TEXT_ENTER
, func
)
284 def EVT_MENU(win
, id, func
):
285 win
.Connect(id, -1, wxEVT_COMMAND_MENU_SELECTED
, func
)
287 def EVT_MENU_RANGE(win
, id1
, id2
, func
):
288 win
.Connect(id1
, id2
, wxEVT_COMMAND_MENU_SELECTED
, func
)
290 def EVT_SLIDER(win
, id, func
):
291 win
.Connect(id, -1, wxEVT_COMMAND_SLIDER_UPDATED
, func
)
293 def EVT_RADIOBOX(win
, id, func
):
294 win
.Connect(id, -1, wxEVT_COMMAND_RADIOBOX_SELECTED
, func
)
296 def EVT_RADIOBUTTON(win
, id, func
):
297 win
.Connect(id, -1, wxEVT_COMMAND_RADIOBUTTON_SELECTED
, func
)
299 def EVT_VLBOX(win
, id, func
):
300 win
.Connect(id, -1, wxEVT_COMMAND_VLBOX_SELECTED
, func
)
302 def EVT_COMBOBOX(win
, id, func
):
303 win
.Connect(id, -1, wxEVT_COMMAND_COMBOBOX_SELECTED
, func
)
305 def EVT_TOOL(win
, id, func
):
306 win
.Connect(id, -1, wxEVT_COMMAND_TOOL_CLICKED
, func
)
308 def EVT_TOOL_RCLICKED(win
, id, func
):
309 win
.Connect(id, -1, wxEVT_COMMAND_TOOL_RCLICKED
, func
)
311 def EVT_TOOL_ENTER(win
, id, func
):
312 win
.Connect(id, -1, wxEVT_COMMAND_TOOL_ENTER
, func
)
314 def EVT_CHECKLISTBOX(win
, id, func
):
315 win
.Connect(id, -1, wxEVT_COMMAND_CHECKLISTBOX_TOGGLED
, func
)
318 # Generic command events
320 def EVT_COMMAND_LEFT_CLICK(win
, id, func
):
321 win
.Connect(id, -1, wxEVT_COMMAND_LEFT_CLICK
, func
)
323 def EVT_COMMAND_LEFT_DCLICK(win
, id, func
):
324 win
.Connect(id, -1, wxEVT_COMMAND_LEFT_DCLICK
, func
)
326 def EVT_COMMAND_RIGHT_CLICK(win
, id, func
):
327 win
.Connect(id, -1, wxEVT_COMMAND_RIGHT_CLICK
, func
)
329 def EVT_COMMAND_RIGHT_DCLICK(win
, id, func
):
330 win
.Connect(id, -1, wxEVT_COMMAND_RIGHT_DCLICK
, func
)
332 def EVT_COMMAND_SET_FOCUS(win
, id, func
):
333 win
.Connect(id, -1, wxEVT_COMMAND_SET_FOCUS
, func
)
335 def EVT_COMMAND_KILL_FOCUS(win
, id, func
):
336 win
.Connect(id, -1, wxEVT_COMMAND_KILL_FOCUS
, func
)
338 def EVT_COMMAND_ENTER(win
, id, func
):
339 win
.Connect(id, -1, wxEVT_COMMAND_ENTER
, func
)
343 def EVT_NOTEBOOK_PAGE_CHANGED(win
, id, func
):
344 win
.Connect(id, -1, wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED
, func
)
346 def EVT_NOTEBOOK_PAGE_CHANGING(win
, id, func
):
347 win
.Connect(id, -1, wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING
, func
)
351 def EVT_TREE_BEGIN_DRAG(win
, id, func
):
352 win
.Connect(id, -1, wxEVT_COMMAND_TREE_BEGIN_DRAG
, func
)
354 def EVT_TREE_BEGIN_RDRAG(win
, id, func
):
355 win
.Connect(id, -1, wxEVT_COMMAND_TREE_BEGIN_RDRAG
, func
)
357 def EVT_TREE_BEGIN_LABEL_EDIT(win
, id, func
):
358 win
.Connect(id, -1, wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT
, func
)
360 def EVT_TREE_END_LABEL_EDIT(win
, id, func
):
361 win
.Connect(id, -1, wxEVT_COMMAND_TREE_END_LABEL_EDIT
, func
)
363 def EVT_TREE_GET_INFO(win
, id, func
):
364 win
.Connect(id, -1, wxEVT_COMMAND_TREE_GET_INFO
, func
)
366 def EVT_TREE_SET_INFO(win
, id, func
):
367 win
.Connect(id, -1, wxEVT_COMMAND_TREE_SET_INFO
, func
)
369 def EVT_TREE_ITEM_EXPANDED(win
, id, func
):
370 win
.Connect(id, -1, wxEVT_COMMAND_TREE_ITEM_EXPANDED
, func
)
372 def EVT_TREE_ITEM_EXPANDING(win
, id, func
):
373 win
.Connect(id, -1, wxEVT_COMMAND_TREE_ITEM_EXPANDING
, func
)
375 def EVT_TREE_ITEM_COLLAPSED(win
, id, func
):
376 win
.Connect(id, -1, wxEVT_COMMAND_TREE_ITEM_COLLAPSED
, func
)
378 def EVT_TREE_ITEM_COLLAPSING(win
, id, func
):
379 win
.Connect(id, -1, wxEVT_COMMAND_TREE_ITEM_COLLAPSING
, func
)
381 def EVT_TREE_SEL_CHANGED(win
, id, func
):
382 win
.Connect(id, -1, wxEVT_COMMAND_TREE_SEL_CHANGED
, func
)
384 def EVT_TREE_SEL_CHANGING(win
, id, func
):
385 win
.Connect(id, -1, wxEVT_COMMAND_TREE_SEL_CHANGING
, func
)
387 def EVT_TREE_KEY_DOWN(win
, id, func
):
388 win
.Connect(id, -1, wxEVT_COMMAND_TREE_KEY_DOWN
, func
)
390 def EVT_TREE_DELETE_ITEM(win
, id, func
):
391 win
.Connect(id, -1, wxEVT_COMMAND_TREE_DELETE_ITEM
, func
)
396 #----------------------------------------------------------------------
398 class wxTimer(wxPyTimer
):
400 wxPyTimer
.__init
__(self
, self
.Notify
) # derived class must provide
401 # Notify(self) method.
403 #----------------------------------------------------------------------
404 # Some wxWin methods can take "NULL" as parameters, but the shadow classes
405 # expect an object with the SWIG pointer as a 'this' member. This class
406 # and instance fools the shadow into passing the NULL pointer.
409 this
= 'NULL' # SWIG converts this to (void*)0
414 #----------------------------------------------------------------------
418 wxNamedColor
= wxNamedColour
420 wxPyDefaultPosition
.Set(-1,-1)
421 wxPyDefaultSize
.Set(-1,-1)
423 #----------------------------------------------------------------------
425 ## class wxPyStdOutWindow(wxFrame):
426 ## def __init__(self, title = "wxPython: stdout/stderr"):
427 ## wxFrame.__init__(self, NULL, title)
428 ## self.title = title
429 ## self.text = wxTextWindow(self)
430 ## self.text.SetFont(wxFont(10, wxMODERN, wxNORMAL, wxBOLD))
431 ## self.SetSize(-1,-1,400,200)
433 ## self.isShown = false
435 ## def write(self, str): # with this method,
436 ## if not self.isShown:
438 ## self.isShown = true
439 ## self.text.WriteText(str)
441 ## def OnCloseWindow(self, event): # doesn't allow the window to close, just hides it
443 ## self.isShown = false
446 _defRedirect
= (wxPlatform
== '__WXMSW__')
448 #----------------------------------------------------------------------
449 # The main application class. Derive from this and implement an OnInit
450 # method that creates a frame and then calls self.SetTopWindow(frame)
452 class wxApp(wxPyApp
):
453 error
= 'wxApp.error'
455 def __init__(self
, redirect
=_defRedirect
, filename
=None):
456 wxPyApp
.__init
__(self
)
458 self
.saveStdio
= (sys
.stdout
, sys
.stderr
)
460 self
.RedirectStdio(filename
)
462 # this initializes wxWindows and then calls our OnInit
463 _wxStart(self
.OnInit
)
472 def RedirectStdio(self
, filename
):
474 sys
.stdout
= sys
.stderr
= open(filename
, 'a')
476 raise self
.error
, 'wxPyStdOutWindow not yet implemented.'
477 #self.stdioWin = sys.stdout = sys.stderr = wxPyStdOutWindow()
479 def RestoreStdio(self
):
480 sys
.stdout
, sys
.stderr
= self
.saveStdio
481 if self
.stdioWin
!= None:
482 self
.stdioWin
.Show(false
)
483 self
.stdioWin
.Destroy()
487 #----------------------------------------------------------------------------
490 # Revision 1.5 1998/10/20 07:38:02 RD
493 # Revision 1.4 1998/10/20 06:43:54 RD
494 # New wxTreeCtrl wrappers (untested)
495 # some changes in helpers
498 # Revision 1.3 1998/10/02 06:40:33 RD
500 # Version 0.4 of wxPython for MSW.
502 # Revision 1.2 1998/08/18 19:48:12 RD
503 # more wxGTK compatibility things.
505 # It builds now but there are serious runtime problems...
507 # Revision 1.1 1998/08/09 08:25:49 RD