]> git.saurik.com Git - wxWidgets.git/blob - utils/wxPython/tests/test4.py
I didn't mean for this to be in the repository...
[wxWidgets.git] / utils / wxPython / tests / test4.py
1 #!/bin/env python
2 #----------------------------------------------------------------------------
3 # Name: test4.py
4 # Purpose: Testing lots of stuff, controls, window types, etc.
5 #
6 # Author: Robin Dunn
7 #
8 # Created:
9 # RCS-ID: $Id$
10 # Copyright: (c) 1998 by Total Control Software
11 # Licence: wxWindows license
12 #----------------------------------------------------------------------------
13
14
15 from wxPython import *
16
17
18 #---------------------------------------------------------------------------
19
20 class TestSimpleControlsDlg(wxDialog):
21 def __init__(self, parent, log):
22 self.log = log
23 wxDialog.__init__(self, parent, -1, "Test Simple Controls",
24 wxPyDefaultPosition, wxSize(350, 350))
25
26
27 sampleList = ['zero', 'one', 'two', 'three', 'four', 'five',
28 'six', 'seven', 'eight']
29
30 y_pos = 5
31 delta = 25
32
33 wxStaticText(self, -1, "wxTextCtrl", wxPoint(5, y_pos), wxSize(75, 20))
34 wxTextCtrl(self, 10, "", wxPoint(80, y_pos), wxSize(150, 20))
35 EVT_TEXT(self, 10, self.EvtText)
36 y_pos = y_pos + delta
37
38 wxCheckBox(self, 20, "wxCheckBox", wxPoint(80, y_pos), wxSize(150, 20))
39 EVT_CHECKBOX(self, 20, self.EvtCheckBox)
40 y_pos = y_pos + delta
41
42 rb = wxRadioBox(self, 30, "wxRadioBox", wxPoint(80, y_pos), wxPyDefaultSize,
43 sampleList, 3, wxRA_HORIZONTAL)
44 EVT_RADIOBOX(self, 30, self.EvtRadioBox)
45 width, height = rb.GetSize()
46 y_pos = y_pos + height + 5
47
48 wxStaticText(self, -1, "wxChoice", wxPoint(5, y_pos), wxSize(75, 20))
49 wxChoice(self, 40, wxPoint(80, y_pos), wxSize(95, 20), #wxPyDefaultSize,
50 sampleList)
51 EVT_CHOICE(self, 40, self.EvtChoice)
52 y_pos = y_pos + delta
53
54 wxStaticText(self, -1, "wxComboBox", wxPoint(5, y_pos), wxSize(75, 18))
55 wxComboBox(self, 50, "default value", wxPoint(80, y_pos), wxSize(95, 20),
56 sampleList, wxCB_DROPDOWN)
57 EVT_COMBOBOX(self, 50, self.EvtComboBox)
58 y_pos = y_pos + delta
59
60 wxStaticText(self, -1, "wxListBox", wxPoint(5, y_pos), wxSize(75, 18))
61 lb = wxListBox(self, 60, wxPoint(80, y_pos), wxPyDefaultSize,
62 sampleList, wxLB_SINGLE)
63 EVT_LISTBOX(self, 60, self.EvtListBox)
64 EVT_LISTBOX_DCLICK(self, 60, self.EvtListBoxDClick)
65 lb.SetSelection(0)
66 width, height = lb.GetSize()
67 y_pos = y_pos + height + 5
68
69
70
71 y_pos = y_pos + 15
72 wxButton(self, wxID_OK, ' OK ', wxPoint(80, y_pos), wxPyDefaultSize).SetDefault()
73 wxButton(self, wxID_CANCEL, ' Cancel ', wxPoint(140, y_pos))
74
75
76 def EvtText(self, event):
77 self.log.WriteText('EvtText: %s\n' % event.GetString())
78
79 def EvtCheckBox(self, event):
80 self.log.WriteText('EvtCheckBox: %d\n' % event.GetInt())
81
82 def EvtRadioBox(self, event):
83 self.log.WriteText('EvtRadioBox: %d\n' % event.GetInt())
84
85 def EvtChoice(self, event):
86 self.log.WriteText('EvtChoice: %s\n' % event.GetString())
87
88 def EvtComboBox(self, event):
89 self.log.WriteText('EvtComboBox: %s\n' % event.GetString())
90
91 def EvtListBox(self, event):
92 self.log.WriteText('EvtListBox: %s\n' % event.GetString())
93
94 def EvtListBoxDClick(self, event):
95 self.log.WriteText('EvtListBoxDClick:\n')
96
97
98
99 #---------------------------------------------------------------------------
100
101 class TestTimer(wxTimer):
102 def __init__(self, log):
103 wxTimer.__init__(self)
104 self.log = log
105
106 def Notify(self):
107 wxBell()
108 self.log.WriteText('beep!\n')
109
110
111 #---------------------------------------------------------------------------
112
113 class TestLayoutConstraints(wxFrame):
114 def __init__(self, parent):
115 wxFrame.__init__(self, parent, -1, 'Test Layout Constraints',
116 wxPyDefaultPosition, wxSize(500, 300))
117
118 self.SetAutoLayout(true)
119 EVT_BUTTON(self, 100, self.OnButton)
120
121 self.panelA = wxWindow(self, -1, wxPyDefaultPosition, wxPyDefaultSize,
122 wxSIMPLE_BORDER)
123 self.panelA.SetBackgroundColour(wxBLUE)
124 lc = wxLayoutConstraints()
125 lc.top.SameAs(self, wxTop, 10)
126 lc.left.SameAs(self, wxLeft, 10)
127 lc.bottom.SameAs(self, wxBottom, 10)
128 lc.right.PercentOf(self, wxRight, 50)
129 self.panelA.SetConstraints(lc)
130
131 self.panelB = wxWindow(self, -1, wxPyDefaultPosition, wxPyDefaultSize,
132 wxSIMPLE_BORDER)
133 self.panelB.SetBackgroundColour(wxRED)
134 lc = wxLayoutConstraints()
135 lc.top.SameAs(self, wxTop, 10)
136 lc.right.SameAs(self, wxRight, 10)
137 lc.bottom.PercentOf(self, wxBottom, 30)
138 lc.left.RightOf(self.panelA, 10)
139 self.panelB.SetConstraints(lc)
140
141 self.panelC = wxWindow(self, -1, wxPyDefaultPosition, wxPyDefaultSize,
142 wxSIMPLE_BORDER)
143 self.panelC.SetBackgroundColour(wxWHITE)
144 lc = wxLayoutConstraints()
145 lc.top.Below(self.panelB, 10)
146 lc.right.SameAs(self, wxRight, 10)
147 lc.bottom.SameAs(self, wxBottom, 10)
148 lc.left.RightOf(self.panelA, 10)
149 self.panelC.SetConstraints(lc)
150
151 b = wxButton(self.panelA, 100, ' Panel A ')
152 lc = wxLayoutConstraints()
153 lc.centreX.SameAs (self.panelA, wxCentreX)
154 lc.centreY.SameAs (self.panelA, wxCentreY)
155 lc.height.AsIs ()
156 lc.width.PercentOf (self.panelA, wxWidth, 50)
157 b.SetConstraints(lc);
158
159 b = wxButton(self.panelB, 100, ' Panel B ')
160 lc = wxLayoutConstraints()
161 lc.top.SameAs (self.panelB, wxTop, 2)
162 lc.right.SameAs (self.panelB, wxRight, 4)
163 lc.height.AsIs ()
164 lc.width.AsIs ()
165 b.SetConstraints(lc);
166
167 self.panelD = wxWindow(self.panelC, -1, wxPyDefaultPosition, wxPyDefaultSize,
168 wxSIMPLE_BORDER)
169 self.panelD.SetBackgroundColour(wxGREEN)
170 wxStaticText(self.panelD, -1, "Panel D", wxPoint(4, 4)).SetBackgroundColour(wxGREEN)
171
172 b = wxButton(self.panelC, 100, ' Panel C ')
173 lc = wxLayoutConstraints()
174 lc.top.Below (self.panelD)
175 lc.left.RightOf (self.panelD)
176 lc.height.AsIs ()
177 lc.width.AsIs ()
178 b.SetConstraints(lc);
179
180 lc = wxLayoutConstraints()
181 lc.bottom.PercentOf (self.panelC, wxHeight, 50)
182 lc.right.PercentOf (self.panelC, wxWidth, 50)
183 lc.height.SameAs (b, wxHeight)
184 lc.width.SameAs (b, wxWidth)
185 self.panelD.SetConstraints(lc);
186
187
188 def OnButton(self, event):
189 self.Close(true)
190
191
192 def OnCloseWindow(self, event):
193 self.Destroy()
194
195
196 #---------------------------------------------------------------------------
197
198 class TestGrid(wxFrame):
199 def __init__(self, parent):
200 wxFrame.__init__(self, parent, -1, 'Test Grid',
201 wxPyDefaultPosition, wxSize(500, 300))
202
203 grid = wxGrid(self, -1)
204
205 grid.CreateGrid(16, 16)
206 grid.SetColumnWidth(3, 200)
207 grid.SetRowHeight(4, 45)
208 grid.SetCellValue("First cell", 0, 0)
209 grid.SetCellValue("Another cell", 1, 1)
210 grid.SetCellValue("Yet another cell", 2, 2)
211 grid.SetCellTextFont(wxFont(12, wxROMAN, wxITALIC, wxNORMAL), 0, 0)
212 grid.SetCellTextColour(wxRED, 1, 1)
213 grid.SetCellBackgroundColour(wxCYAN, 2, 2)
214 grid.UpdateDimensions()
215 grid.AdjustScrollbars()
216
217
218 def OnCloseWindow(self, event):
219 self.Destroy()
220
221
222 #---------------------------------------------------------------------------
223
224 class TestNotebookWindow(wxFrame):
225 def __init__(self, parent):
226 wxFrame.__init__(self, parent, -1, 'Test wxNotebook',
227 wxPyDefaultPosition, wxPyDefaultSize)
228
229 nb = wxNotebook(self, -1)
230
231 win = wxWindow(nb, -1, wxPyDefaultPosition, wxPyDefaultSize, wxRAISED_BORDER)
232 win.SetBackgroundColour(wxBLUE)
233 nb.AddPage(win, "Blue")
234
235 win = wxWindow(nb, -1, wxPyDefaultPosition, wxPyDefaultSize, wxRAISED_BORDER)
236 win.SetBackgroundColour(wxRED)
237 nb.AddPage(win, "Red")
238
239 win = wxWindow(nb, -1, wxPyDefaultPosition, wxPyDefaultSize, wxRAISED_BORDER)
240 win.SetBackgroundColour(wxGREEN)
241 nb.AddPage(win, "Green")
242
243 win = wxWindow(nb, -1, wxPyDefaultPosition, wxPyDefaultSize, wxRAISED_BORDER)
244 win.SetBackgroundColour(wxCYAN)
245 nb.AddPage(win, "Cyan")
246
247 win = wxWindow(nb, -1, wxPyDefaultPosition, wxPyDefaultSize, wxRAISED_BORDER)
248 win.SetBackgroundColour(wxWHITE)
249 nb.AddPage(win, "White")
250
251 win = wxWindow(nb, -1, wxPyDefaultPosition, wxPyDefaultSize, wxRAISED_BORDER)
252 win.SetBackgroundColour(wxBLACK)
253 nb.AddPage(win, "Black")
254
255 win = wxWindow(nb, -1, wxPyDefaultPosition, wxPyDefaultSize, wxRAISED_BORDER)
256 win.SetBackgroundColour(wxNamedColour('MIDNIGHT BLUE'))
257 nb.AddPage(win, "MIDNIGHT BLUE")
258
259 win = wxWindow(nb, -1, wxPyDefaultPosition, wxPyDefaultSize, wxRAISED_BORDER)
260 win.SetBackgroundColour(wxNamedColour('INDIAN RED'))
261 nb.AddPage(win, "INDIAN RED")
262
263
264 nb.SetSelection(0)
265 self.SetSize(wxSize(500, 300)) # force a redraw so the notebook will draw
266
267
268 def OnCloseWindow(self, event):
269 self.Destroy()
270
271 #---------------------------------------------------------------------------
272
273 class AppFrame(wxFrame):
274 def __init__(self, parent, id, title):
275 wxFrame.__init__(self, parent, id, title, wxPyDefaultPosition,
276 wxSize(420, 200))
277 self.icon = wxIcon('bitmaps/mondrian.ico', wxBITMAP_TYPE_ICO)
278 self.SetIcon(self.icon)
279
280 self.mainmenu = wxMenuBar()
281 menu = wxMenu()
282 menu.Append(200, 'E&xit', 'Get the heck outta here!')
283 EVT_MENU(self, 200, self.OnFileExit)
284 self.mainmenu.Append(menu, '&File')
285
286 menu = self.MakeTestsMenu()
287 self.mainmenu.Append(menu, '&Tests')
288 self.SetMenuBar(self.mainmenu)
289
290 self.log = wxTextCtrl(self, -1, '', wxPyDefaultPosition, wxPyDefaultSize,
291 wxTE_MULTILINE|wxTE_READONLY)
292 self.log.WriteText('Test 4:\n')
293 (w, self.charHeight) = self.log.GetTextExtent('X')
294
295
296 def MakeTestsMenu(self):
297 menu = wxMenu()
298
299 mID = NewId()
300 menu.Append(mID, '&Simple Controls')
301 EVT_MENU(self, mID, self.OnTestSimpleControls)
302
303 mID = NewId()
304 menu.Append(mID, '&Timer', '', true)
305 EVT_MENU(self, mID, self.OnTestTimer)
306 self.timerID = mID
307 self.timer = None
308
309 mID = NewId()
310 menu.Append(mID, '&Layout Constraints')
311 EVT_MENU(self, mID, self.OnTestLayoutConstraints)
312
313 mID = NewId()
314 menu.Append(mID, '&Grid')
315 EVT_MENU(self, mID, self.OnTestGrid)
316
317
318 smenu = wxMenu() # make a sub-menu
319
320 mID = NewId()
321 smenu.Append(mID, '&Colour')
322 EVT_MENU(self, mID, self.OnTestColourDlg)
323
324 mID = NewId()
325 smenu.Append(mID, '&Directory')
326 EVT_MENU(self, mID, self.OnTestDirDlg)
327
328 mID = NewId()
329 smenu.Append(mID, '&File')
330 EVT_MENU(self, mID, self.OnTestFileDlg)
331
332 mID = NewId()
333 smenu.Append(mID, '&Single Choice')
334 EVT_MENU(self, mID, self.OnTestSingleChoiceDlg)
335
336 mID = NewId()
337 smenu.Append(mID, '&TextEntry')
338 EVT_MENU(self, mID, self.OnTestTextEntryDlg)
339
340 mID = NewId()
341 smenu.Append(mID, '&Font')
342 EVT_MENU(self, mID, self.OnTestFontDlg)
343
344 mID = NewId()
345 smenu.Append(mID, '&PageSetup')
346 EVT_MENU(self, mID, self.OnTestPageSetupDlg)
347
348 mID = NewId()
349 smenu.Append(mID, '&Print')
350 EVT_MENU(self, mID, self.OnTestPrintDlg)
351
352 mID = NewId()
353 smenu.Append(mID, '&Message')
354 EVT_MENU(self, mID, self.OnTestMessageDlg)
355
356
357 menu.AppendMenu(NewId(), '&Common Dialogs', smenu)
358
359
360 mID = NewId()
361 menu.Append(mID, '&Notebook')
362 EVT_MENU(self, mID, self.OnTestNotebook)
363
364 return menu
365
366
367
368
369 def WriteText(self, str):
370 self.log.WriteText(str)
371 w, h = self.log.GetClientSize()
372 numLines = h/self.charHeight
373 x, y = self.log.PositionToXY(self.log.GetLastPosition())
374 self.log.ShowPosition(self.log.XYToPosition(x, y-numLines+1))
375
376 def OnFileExit(self, event):
377 self.Close()
378
379 def OnCloseWindow(self, event):
380 self.Destroy()
381
382
383
384
385 def OnTestSimpleControls(self, event):
386 dlg = TestSimpleControlsDlg(self, self)
387 dlg.SetModal(true)
388 dlg.Centre()
389 dlg.Show(true)
390 dlg.Destroy()
391
392 def OnTestTimer(self, event):
393 if self.timer:
394 self.mainmenu.Check(self.timerID, false)
395 self.timer.Stop()
396 self.timer = None
397 else:
398 self.mainmenu.Check(self.timerID, true)
399 self.timer = TestTimer(self)
400 self.timer.Start(1000)
401
402 def OnTestLayoutConstraints(self, event):
403 win = TestLayoutConstraints(self)
404 win.Show(true)
405
406 def OnTestGrid(self, event):
407 win = TestGrid(self)
408 win.Show(true)
409 win.SetSize(wxSize(505, 300)) # have to force a resize, or the grid doesn't
410 # show up for some reason....
411
412 def OnTestColourDlg(self, event):
413 data = wxColourData()
414 data.SetChooseFull(true)
415 dlg = wxColourDialog(self, data)
416 if dlg.ShowModal() == wxID_OK:
417 data = dlg.GetColourData()
418 self.log.WriteText('You selected: %s\n' % str(data.GetColour().Get()))
419 dlg.Destroy()
420
421 def OnTestDirDlg(self, event):
422 dlg = wxDirDialog(self)
423 if dlg.ShowModal() == wxID_OK:
424 self.log.WriteText('You selected: %s\n' % dlg.GetPath())
425 dlg.Destroy()
426
427 def OnTestFileDlg(self, event):
428 dlg = wxFileDialog(self, "Choose a file", ".", "", "*.*", wxOPEN)
429 if dlg.ShowModal() == wxID_OK:
430 self.log.WriteText('You selected: %s\n' % dlg.GetPath())
431 dlg.Destroy()
432
433 def OnTestSingleChoiceDlg(self, event):
434 dlg = wxSingleChoiceDialog(self, 'Test Single Choice', 'The Caption',
435 ['zero', 'one', 'two', 'three', 'four', 'five',
436 'six', 'seven', 'eight'])
437 if dlg.ShowModal() == wxID_OK:
438 self.log.WriteText('You selected: %s\n' % dlg.GetStringSelection())
439 dlg.Destroy()
440
441 def OnTestTextEntryDlg(self, event):
442 dlg = wxTextEntryDialog(self, 'What is your favorite programming language?',
443 'Duh??', 'Python')
444 #dlg.SetValue("Python is the best!") #### this doesn't work?
445 if dlg.ShowModal() == wxID_OK:
446 self.log.WriteText('You entered: %s\n' % dlg.GetValue())
447 dlg.Destroy()
448
449
450 def OnTestFontDlg(self, event):
451 dlg = wxFontDialog(self)
452 if dlg.ShowModal() == wxID_OK:
453 data = dlg.GetFontData()
454 font = data.GetChosenFont()
455 self.log.WriteText('You selected: "%s", %d points, color %s\n' %
456 (font.GetFaceName(), font.GetPointSize(),
457 data.GetColour().Get()))
458 dlg.Destroy()
459
460
461 def OnTestPageSetupDlg(self, event):
462 data = wxPageSetupData()
463 data.SetMarginTopLeft(wxPoint(50,50))
464 data.SetMarginBottomRight(wxPoint(50,50))
465 dlg = wxPageSetupDialog(self, data)
466 if dlg.ShowModal() == wxID_OK:
467 data = dlg.GetPageSetupData()
468 tl = data.GetMarginTopLeft()
469 br = data.GetMarginBottomRight()
470 self.log.WriteText('Margins are: %s %s\n' % (str(tl), str(br)))
471 dlg.Destroy()
472
473 def OnTestPrintDlg(self, event):
474 data = wxPrintData()
475 data.EnablePrintToFile(true)
476 data.EnablePageNumbers(true)
477 data.EnableSelection(true)
478 dlg = wxPrintDialog(self, data)
479 if dlg.ShowModal() == wxID_OK:
480 self.log.WriteText('\n')
481 dlg.Destroy()
482
483 def OnTestMessageDlg(self, event):
484 dlg = wxMessageDialog(self, 'Hello from Python and wxWindows!',
485 'A Message Box', wxOK | wxICON_INFORMATION)
486 dlg.ShowModal()
487 dlg.Destroy()
488
489
490 def OnTestNotebook(self, event):
491 win = TestNotebookWindow(self)
492 win.Show(true)
493
494 #---------------------------------------------------------------------------
495
496
497 class MyApp(wxApp):
498 def OnInit(self):
499 frame = AppFrame(NULL, -1, "Test 4: (lots of little tests...)")
500 frame.Show(true)
501 self.SetTopWindow(frame)
502 return true
503
504 #---------------------------------------------------------------------------
505
506
507 def main():
508 app = MyApp(0)
509 app.MainLoop()
510
511
512 def t():
513 import pdb
514 pdb.run('main()')
515
516 if __name__ == '__main__':
517 main()
518
519
520 #----------------------------------------------------------------------------
521 #
522 # $Log$
523 # Revision 1.1 1998/08/09 08:28:05 RD
524 # Initial version
525 #
526 #