]> git.saurik.com Git - wxWidgets.git/blob - utils/wxPython/tests/test4.py
ae177835ec20584fa1453fd27ede30d9c0a67e2b
[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.wx import *
16
17 import time
18
19 #---------------------------------------------------------------------------
20
21 class TestSimpleControlsDlg(wxDialog):
22 def __init__(self, parent, log):
23 self.log = log
24 wxDialog.__init__(self, parent, -1, "Test Simple Controls",
25 wxPyDefaultPosition, wxSize(350, 350))
26
27
28 sampleList = ['zero', 'one', 'two', 'three', 'four', 'five',
29 'six', 'seven', 'eight']
30
31 y_pos = 5
32 delta = 25
33
34 wxStaticText(self, -1, "wxTextCtrl", wxPoint(5, y_pos), wxSize(75, 20))
35 wxTextCtrl(self, 10, "", wxPoint(80, y_pos), wxSize(150, 20))
36 EVT_TEXT(self, 10, self.EvtText)
37 y_pos = y_pos + delta
38
39 wxCheckBox(self, 20, "wxCheckBox", wxPoint(80, y_pos), wxSize(150, 20), wxNO_BORDER)
40 EVT_CHECKBOX(self, 20, self.EvtCheckBox)
41 y_pos = y_pos + delta
42
43 rb = wxRadioBox(self, 30, "wxRadioBox", wxPoint(80, y_pos), wxPyDefaultSize,
44 sampleList, 3, wxRA_HORIZONTAL| wxNO_BORDER)
45 EVT_RADIOBOX(self, 30, self.EvtRadioBox)
46 width, height = rb.GetSizeTuple()
47 y_pos = y_pos + height + 5
48
49 wxStaticText(self, -1, "wxChoice", wxPoint(5, y_pos), wxSize(75, 20))
50 wxChoice(self, 40, wxPoint(80, y_pos), wxSize(95, 20), #wxPyDefaultSize,
51 sampleList)
52 EVT_CHOICE(self, 40, self.EvtChoice)
53 y_pos = y_pos + delta
54
55 wxStaticText(self, -1, "wxComboBox", wxPoint(5, y_pos), wxSize(75, 18))
56 wxComboBox(self, 50, "default value", wxPoint(80, y_pos), wxSize(95, 20),
57 sampleList, wxCB_DROPDOWN)
58 EVT_COMBOBOX(self, 50, self.EvtComboBox)
59 y_pos = y_pos + delta
60
61 wxStaticText(self, -1, "wxListBox", wxPoint(5, y_pos), wxSize(75, 18))
62 lb = wxListBox(self, 60, wxPoint(80, y_pos), wxPyDefaultSize,
63 sampleList, wxLB_SINGLE)
64 EVT_LISTBOX(self, 60, self.EvtListBox)
65 EVT_LISTBOX_DCLICK(self, 60, self.EvtListBoxDClick)
66 lb.SetSelection(0)
67 width, height = lb.GetSizeTuple()
68 y_pos = y_pos + height + 5
69
70
71
72 y_pos = y_pos + 15
73 wxButton(self, wxID_OK, ' OK ', wxPoint(80, y_pos), wxPyDefaultSize).SetDefault()
74 wxButton(self, wxID_CANCEL, ' Cancel ', wxPoint(140, y_pos))
75
76
77 def EvtText(self, event):
78 self.log.WriteText('EvtText: %s\n' % event.GetString())
79
80 def EvtCheckBox(self, event):
81 self.log.WriteText('EvtCheckBox: %d\n' % event.GetInt())
82
83 def EvtRadioBox(self, event):
84 self.log.WriteText('EvtRadioBox: %d\n' % event.GetInt())
85
86 def EvtChoice(self, event):
87 self.log.WriteText('EvtChoice: %s\n' % event.GetString())
88
89 def EvtComboBox(self, event):
90 self.log.WriteText('EvtComboBox: %s\n' % event.GetString())
91
92 def EvtListBox(self, event):
93 self.log.WriteText('EvtListBox: %s\n' % event.GetString())
94
95 def EvtListBoxDClick(self, event):
96 self.log.WriteText('EvtListBoxDClick:\n')
97
98
99
100 #---------------------------------------------------------------------------
101
102 class TestTimer(wxTimer):
103 def __init__(self, log):
104 wxTimer.__init__(self)
105 self.log = log
106
107 def Notify(self):
108 wxBell()
109 self.log.WriteText('beep!\n')
110
111
112 #---------------------------------------------------------------------------
113
114 class TestLayoutConstraints(wxFrame):
115 def __init__(self, parent):
116 wxFrame.__init__(self, parent, -1, 'Test Layout Constraints',
117 wxPyDefaultPosition, wxSize(500, 300))
118
119 self.SetAutoLayout(true)
120 EVT_BUTTON(self, 100, self.OnButton)
121
122 self.panelA = wxWindow(self, -1, wxPyDefaultPosition, wxPyDefaultSize,
123 wxSIMPLE_BORDER)
124 self.panelA.SetBackgroundColour(wxBLUE)
125 lc = wxLayoutConstraints()
126 lc.top.SameAs(self, wxTop, 10)
127 lc.left.SameAs(self, wxLeft, 10)
128 lc.bottom.SameAs(self, wxBottom, 10)
129 lc.right.PercentOf(self, wxRight, 50)
130 self.panelA.SetConstraints(lc)
131
132 self.panelB = wxWindow(self, -1, wxPyDefaultPosition, wxPyDefaultSize,
133 wxSIMPLE_BORDER)
134 self.panelB.SetBackgroundColour(wxRED)
135 lc = wxLayoutConstraints()
136 lc.top.SameAs(self, wxTop, 10)
137 lc.right.SameAs(self, wxRight, 10)
138 lc.bottom.PercentOf(self, wxBottom, 30)
139 lc.left.RightOf(self.panelA, 10)
140 self.panelB.SetConstraints(lc)
141
142 self.panelC = wxWindow(self, -1, wxPyDefaultPosition, wxPyDefaultSize,
143 wxSIMPLE_BORDER)
144 self.panelC.SetBackgroundColour(wxWHITE)
145 lc = wxLayoutConstraints()
146 lc.top.Below(self.panelB, 10)
147 lc.right.SameAs(self, wxRight, 10)
148 lc.bottom.SameAs(self, wxBottom, 10)
149 lc.left.RightOf(self.panelA, 10)
150 self.panelC.SetConstraints(lc)
151
152 b = wxButton(self.panelA, 100, ' Panel A ')
153 lc = wxLayoutConstraints()
154 lc.centreX.SameAs (self.panelA, wxCentreX)
155 lc.centreY.SameAs (self.panelA, wxCentreY)
156 lc.height.AsIs ()
157 lc.width.PercentOf (self.panelA, wxWidth, 50)
158 b.SetConstraints(lc);
159
160 b = wxButton(self.panelB, 100, ' Panel B ')
161 lc = wxLayoutConstraints()
162 lc.top.SameAs (self.panelB, wxTop, 2)
163 lc.right.SameAs (self.panelB, wxRight, 4)
164 lc.height.AsIs ()
165 lc.width.AsIs ()
166 b.SetConstraints(lc);
167
168 self.panelD = wxWindow(self.panelC, -1, wxPyDefaultPosition, wxPyDefaultSize,
169 wxSIMPLE_BORDER)
170 self.panelD.SetBackgroundColour(wxGREEN)
171 wxStaticText(self.panelD, -1, "Panel D", wxPoint(4, 4)).SetBackgroundColour(wxGREEN)
172
173 b = wxButton(self.panelC, 100, ' Panel C ')
174 lc = wxLayoutConstraints()
175 lc.top.Below (self.panelD)
176 lc.left.RightOf (self.panelD)
177 lc.height.AsIs ()
178 lc.width.AsIs ()
179 b.SetConstraints(lc);
180
181 lc = wxLayoutConstraints()
182 lc.bottom.PercentOf (self.panelC, wxHeight, 50)
183 lc.right.PercentOf (self.panelC, wxWidth, 50)
184 lc.height.SameAs (b, wxHeight)
185 lc.width.SameAs (b, wxWidth)
186 self.panelD.SetConstraints(lc);
187
188
189 def OnButton(self, event):
190 self.Close(true)
191
192
193 def OnCloseWindow(self, event):
194 self.Destroy()
195
196
197 #---------------------------------------------------------------------------
198
199 class TestGrid(wxFrame):
200 def __init__(self, parent, log):
201 wxFrame.__init__(self, parent, -1, 'Test Grid',
202 wxPyDefaultPosition, wxSize(500, 300))
203 self.log = log
204
205 grid = wxGrid(self, -1)
206
207 grid.CreateGrid(16, 16)
208 grid.SetColumnWidth(3, 200)
209 grid.SetRowHeight(4, 45)
210 grid.SetCellValue("First cell", 0, 0)
211 grid.SetCellValue("Another cell", 1, 1)
212 grid.SetCellValue("Yet another cell", 2, 2)
213 grid.SetCellTextFont(wxFont(12, wxROMAN, wxITALIC, wxNORMAL), 0, 0)
214 grid.SetCellTextColour(wxRED, 1, 1)
215 grid.SetCellBackgroundColour(wxCYAN, 2, 2)
216 grid.UpdateDimensions()
217 grid.AdjustScrollbars()
218
219 EVT_GRID_SELECT_CELL(grid, self.OnSelectCell)
220 EVT_GRID_CELL_CHANGE(grid, self.OnCellChange)
221 EVT_GRID_CELL_LCLICK(grid, self.OnCellClick)
222 EVT_GRID_LABEL_LCLICK(grid, self.OnLabelClick)
223
224
225
226 def OnCloseWindow(self, event):
227 self.Destroy()
228
229 def OnSelectCell(self, event):
230 self.log.WriteText("OnSelectCell: (%d, %d)\n" % (event.m_row, event.m_col))
231
232 def OnCellChange(self, event):
233 self.log.WriteText("OnCellChange: (%d, %d)\n" % (event.m_row, event.m_col))
234
235 def OnCellClick(self, event):
236 self.log.WriteText("OnCellClick: (%d, %d)\n" % (event.m_row, event.m_col))
237
238 def OnLabelClick(self, event):
239 self.log.WriteText("OnLabelClick: (%d, %d)\n" % (event.m_row, event.m_col))
240
241 #---------------------------------------------------------------------------
242
243
244 class ColoredPanel(wxWindow):
245 def __init__(self, parent, color):
246 wxWindow.__init__(self, parent, -1,
247 wxPyDefaultPosition, wxPyDefaultSize, wxRAISED_BORDER)
248 self.SetBackgroundColour(color)
249
250
251 class TestNotebookWindow(wxFrame):
252 def __init__(self, parent, log):
253 wxFrame.__init__(self, parent, -1, 'Test wxNotebook',
254 wxPyDefaultPosition, wxPyDefaultSize)
255
256 nb = wxNotebook(self, -1)
257
258 win = ColoredPanel(nb, wxBLUE)
259 nb.AddPage(win, "Blue")
260 st = wxStaticText(win, -1,
261 "You can put nearly any type of window here!",
262 wxPoint(10, 10))
263 st.SetForegroundColour(wxWHITE)
264 st.SetBackgroundColour(wxBLUE)
265 st = wxStaticText(win, -1,
266 "Check the next tab for an example...",
267 wxPoint(10, 30))
268 st.SetForegroundColour(wxWHITE)
269 st.SetBackgroundColour(wxBLUE)
270
271 win = TestTreeCtrlPanel(nb, log)
272 nb.AddPage(win, "TreeCtrl")
273
274 win = ColoredPanel(nb, wxRED)
275 nb.AddPage(win, "Red")
276
277 win = ColoredPanel(nb, wxGREEN)
278 nb.AddPage(win, "Green")
279
280 win = ColoredPanel(nb, wxCYAN)
281 nb.AddPage(win, "Cyan")
282
283 win = ColoredPanel(nb, wxWHITE)
284 nb.AddPage(win, "White")
285
286 win = ColoredPanel(nb, wxBLACK)
287 nb.AddPage(win, "Black")
288
289 win = ColoredPanel(nb, wxNamedColour('MIDNIGHT BLUE'))
290 nb.AddPage(win, "MIDNIGHT BLUE")
291
292 win = ColoredPanel(nb, wxNamedColour('INDIAN RED'))
293 nb.AddPage(win, "INDIAN RED")
294
295
296 nb.SetSelection(0)
297 self.SetSize(wxSize(350, 300)) # force a redraw so the notebook will draw
298
299
300 def OnCloseWindow(self, event):
301 self.Destroy()
302
303 #---------------------------------------------------------------------------
304
305 class TestSplitterWindow(wxFrame):
306 def __init__(self, parent):
307 wxFrame.__init__(self, parent, -1, 'Test wxSplitterWindow',
308 wxPyDefaultPosition, wxSize(500, 300))
309
310 splitter = wxSplitterWindow(self, -1)
311
312 p1 = ColoredPanel(splitter, wxRED)
313 wxStaticText(p1, -1, "Panel One", wxPoint(5,5)).SetBackgroundColour(wxRED)
314
315 p2 = ColoredPanel(splitter, wxBLUE)
316 wxStaticText(p2, -1, "Panel Two", wxPoint(5,5)).SetBackgroundColour(wxBLUE)
317
318 splitter.SplitVertically(p1, p2)
319
320
321 def OnCloseWindow(self, event):
322 self.Destroy()
323
324
325 #---------------------------------------------------------------------------
326
327 class CustomStatusBar(wxStatusBar):
328 def __init__(self, parent):
329 wxStatusBar.__init__(self, parent, -1)
330 self.SetFieldsCount(3)
331
332 self.SetStatusText("A Custom StatusBar...", 0)
333
334 self.cb = wxCheckBox(self, 1001, "toggle clock")
335 EVT_CHECKBOX(self, 1001, self.OnToggleClock)
336 self.cb.SetValue(true)
337
338 # figure out how tall to make it.
339 dc = wxClientDC(self)
340 dc.SetFont(self.GetFont())
341 (w,h, d,e) = dc.GetTextExtent('X')
342 h = int(h * 1.8)
343 self.SetSize(wxSize(100, h))
344
345 # start our timer
346 self.timer = wxPyTimer(self.Notify)
347 self.timer.Start(1000)
348 self.Notify()
349
350
351 # Time-out handler
352 def Notify(self):
353 t = time.localtime(time.time())
354 st = time.strftime("%d-%b-%Y %I:%M:%S", t)
355 self.SetStatusText(st, 2)
356
357 # the checkbox was clicked
358 def OnToggleClock(self, event):
359 if self.cb.GetValue():
360 self.timer.Start(1000)
361 self.Notify()
362 else:
363 self.timer.Stop()
364
365 # reposition the checkbox
366 def OnSize(self, event):
367 rect = self.GetFieldRect(1)
368 self.cb.SetPosition(wxPoint(rect.x+2, rect.y+2))
369 self.cb.SetSize(wxSize(rect.width-4, rect.height-4))
370
371
372
373 class TestCustomStatusBar(wxFrame):
374 def __init__(self, parent):
375 wxFrame.__init__(self, parent, -1, 'Test Custom StatusBar',
376 wxPyDefaultPosition, wxSize(500, 300))
377 wxWindow(self, -1).SetBackgroundColour(wxNamedColour("WHITE"))
378
379 self.sb = CustomStatusBar(self)
380 self.SetStatusBar(self.sb)
381
382 def OnCloseWindow(self, event):
383 self.sb.timer.Stop()
384 self.Destroy()
385
386
387 #---------------------------------------------------------------------------
388
389 class TestToolBar(wxFrame):
390 def __init__(self, parent, log):
391 wxFrame.__init__(self, parent, -1, 'Test ToolBar',
392 wxPyDefaultPosition, wxSize(500, 300))
393 self.log = log
394
395 wxWindow(self, -1).SetBackgroundColour(wxNamedColour("WHITE"))
396
397 tb = self.CreateToolBar(wxTB_HORIZONTAL|wxNO_BORDER)
398 #tb = wxToolBar(self, -1, wxPyDefaultPosition, wxPyDefaultSize,
399 # wxTB_HORIZONTAL | wxNO_BORDER | wxTB_FLAT)
400 #self.SetToolBar(tb)
401
402 tb.AddTool(10, wxNoRefBitmap('bitmaps/new.bmp', wxBITMAP_TYPE_BMP),
403 NULL, false, -1, -1, "New")
404 EVT_TOOL(self, 10, self.OnToolClick)
405 EVT_TOOL_RCLICKED(self, 10, self.OnToolRClick)
406
407 tb.AddTool(20, wxNoRefBitmap('bitmaps/open.bmp', wxBITMAP_TYPE_BMP),
408 NULL, false, -1, -1, "Open")
409 EVT_TOOL(self, 20, self.OnToolClick)
410 EVT_TOOL_RCLICKED(self, 20, self.OnToolRClick)
411
412 tb.AddSeparator()
413 tb.AddTool(30, wxNoRefBitmap('bitmaps/copy.bmp', wxBITMAP_TYPE_BMP),
414 NULL, false, -1, -1, "Copy")
415 EVT_TOOL(self, 30, self.OnToolClick)
416 EVT_TOOL_RCLICKED(self, 30, self.OnToolRClick)
417
418 tb.AddTool(40, wxNoRefBitmap('bitmaps/paste.bmp', wxBITMAP_TYPE_BMP),
419 NULL, false, -1, -1, "Paste")
420 EVT_TOOL(self, 40, self.OnToolClick)
421 EVT_TOOL_RCLICKED(self, 40, self.OnToolRClick)
422
423 tb.AddSeparator()
424
425 tb.AddTool(50, wxNoRefBitmap('bitmaps/tog1.bmp', wxBITMAP_TYPE_BMP),
426 NULL, true, -1, -1, "Toggle this")
427 EVT_TOOL(self, 50, self.OnToolClick)
428 EVT_TOOL_RCLICKED(self, 50, self.OnToolRClick)
429
430 tb.AddTool(60, wxNoRefBitmap('bitmaps/tog1.bmp', wxBITMAP_TYPE_BMP),
431 wxNoRefBitmap('bitmaps/tog2.bmp', wxBITMAP_TYPE_BMP),
432 true, -1, -1, "Toggle with 2 bitmaps")
433 EVT_TOOL(self, 60, self.OnToolClick)
434 EVT_TOOL_RCLICKED(self, 60, self.OnToolRClick)
435
436 tb.Realize()
437
438
439 def OnCloseWindow(self, event):
440 self.Destroy()
441
442 def OnToolClick(self, event):
443 self.log.WriteText("tool %s clicked\n" % event.GetId())
444
445 def OnToolRClick(self, event):
446 self.log.WriteText("tool %s right-clicked\n" % event.GetId())
447
448
449 #---------------------------------------------------------------------------
450
451 class TestTreeCtrlPanel(wxPanel):
452 def __init__(self, parent, log):
453 wxPanel.__init__(self, parent, -1)
454
455 self.log = log
456 tID = 1101
457
458 self.tree = wxTreeCtrl(self, tID)
459 root = self.tree.AddRoot("The Root Item")
460 for x in range(10):
461 child = self.tree.AppendItem(root, "Item %d" % x)
462 for y in range(5):
463 last = self.tree.AppendItem(child, "item %d-%s" % (x, chr(ord("a")+y)))
464
465 self.tree.Expand(root)
466 EVT_TREE_ITEM_EXPANDED (self, tID, self.OnItemExpanded)
467 EVT_TREE_ITEM_COLLAPSED (self, tID, self.OnItemCollapsed)
468 EVT_TREE_SEL_CHANGED (self, tID, self.OnSelChanged)
469
470
471 def OnSize(self, event):
472 w,h = self.GetClientSizeTuple()
473 self.tree.SetDimensions(0, 0, w, h)
474
475
476 def OnItemExpanded(self, event):
477 item = event.GetItem()
478 self.log.WriteText("OnItemExpanded: %s\n" % self.tree.GetItemText(item))
479
480 def OnItemCollapsed(self, event):
481 item = event.GetItem()
482 self.log.WriteText("OnItemCollapsed: %s\n" % self.tree.GetItemText(item))
483
484 def OnSelChanged(self, event):
485 item = event.GetItem()
486 self.log.WriteText("OnSelChanged: %s\n" % self.tree.GetItemText(item))
487
488
489
490
491 class TestTreeCtrl(wxFrame):
492 def __init__(self, parent, log):
493 wxFrame.__init__(self, parent, -1, 'Test TreeCtrl',
494 wxPyDefaultPosition, wxSize(250, 300))
495
496 p = TestTreeCtrlPanel(self, log)
497
498
499 #---------------------------------------------------------------------------
500 #---------------------------------------------------------------------------
501 #---------------------------------------------------------------------------
502
503 class AppFrame(wxFrame):
504 def __init__(self, parent, id, title):
505 wxFrame.__init__(self, parent, id, title, wxPyDefaultPosition,
506 wxSize(420, 200))
507 if wxPlatform == '__WXMSW__':
508 self.icon = wxIcon('bitmaps/mondrian.ico', wxBITMAP_TYPE_ICO)
509 self.SetIcon(self.icon)
510
511 self.mainmenu = wxMenuBar()
512 menu = wxMenu()
513 menu.Append(200, 'E&xit', 'Get the heck outta here!')
514 EVT_MENU(self, 200, self.OnFileExit)
515 self.mainmenu.Append(menu, '&File')
516
517 menu = self.MakeTestsMenu()
518 self.mainmenu.Append(menu, '&Tests')
519 self.SetMenuBar(self.mainmenu)
520
521 self.log = wxTextCtrl(self, -1, '', wxPyDefaultPosition, wxPyDefaultSize,
522 wxTE_MULTILINE|wxTE_READONLY)
523 self.log.WriteText('Test 4:\n')
524 (w, self.charHeight) = self.log.GetTextExtent('X')
525
526
527 def MakeTestsMenu(self):
528 menu = wxMenu()
529
530 mID = NewId()
531 menu.Append(mID, '&Simple Controls')
532 EVT_MENU(self, mID, self.OnTestSimpleControls)
533
534 mID = NewId()
535 menu.Append(mID, '&Timer', '', true)
536 EVT_MENU(self, mID, self.OnTestTimer)
537 self.timerID = mID
538 self.timer = None
539
540 mID = NewId()
541 menu.Append(mID, '&Layout Constraints')
542 EVT_MENU(self, mID, self.OnTestLayoutConstraints)
543
544 mID = NewId()
545 menu.Append(mID, '&Grid')
546 EVT_MENU(self, mID, self.OnTestGrid)
547
548
549 smenu = wxMenu() # make a sub-menu
550
551 mID = NewId()
552 smenu.Append(mID, '&Colour')
553 EVT_MENU(self, mID, self.OnTestColourDlg)
554
555 mID = NewId()
556 smenu.Append(mID, '&Directory')
557 EVT_MENU(self, mID, self.OnTestDirDlg)
558
559 mID = NewId()
560 smenu.Append(mID, '&File')
561 EVT_MENU(self, mID, self.OnTestFileDlg)
562
563 mID = NewId()
564 smenu.Append(mID, '&Single Choice')
565 EVT_MENU(self, mID, self.OnTestSingleChoiceDlg)
566
567 mID = NewId()
568 smenu.Append(mID, '&TextEntry')
569 EVT_MENU(self, mID, self.OnTestTextEntryDlg)
570
571 mID = NewId()
572 smenu.Append(mID, '&Font')
573 EVT_MENU(self, mID, self.OnTestFontDlg)
574
575 mID = NewId()
576 smenu.Append(mID, '&PageSetup')
577 EVT_MENU(self, mID, self.OnTestPageSetupDlg)
578
579 mID = NewId()
580 smenu.Append(mID, '&Print')
581 EVT_MENU(self, mID, self.OnTestPrintDlg)
582
583 mID = NewId()
584 smenu.Append(mID, '&Message')
585 EVT_MENU(self, mID, self.OnTestMessageDlg)
586
587
588 menu.AppendMenu(NewId(), '&Common Dialogs', smenu)
589
590
591 mID = NewId()
592 menu.Append(mID, '&Notebook')
593 EVT_MENU(self, mID, self.OnTestNotebook)
594
595 mID = NewId()
596 menu.Append(mID, '&Splitter Window')
597 EVT_MENU(self, mID, self.OnTestSplitter)
598
599 mID = NewId()
600 menu.Append(mID, '&Custom StatusBar')
601 EVT_MENU(self, mID, self.OnTestCustomStatusBar)
602
603 mID = NewId()
604 menu.Append(mID, '&ToolBar')
605 EVT_MENU(self, mID, self.OnTestToolBar)
606
607 mID = NewId()
608 menu.Append(mID, 'T&ree Control')
609 EVT_MENU(self, mID, self.OnTestTreeCtrl)
610
611 return menu
612
613
614
615
616 def WriteText(self, str):
617 self.log.WriteText(str)
618 if wxPlatform == '__WXMSW__':
619 w, h = self.log.GetClientSizeTuple()
620 numLines = h/self.charHeight
621 x, y = self.log.PositionToXY(self.log.GetLastPosition())
622 self.log.ShowPosition(self.log.XYToPosition(x, y-numLines+1))
623
624 def OnFileExit(self, event):
625 self.Close()
626
627 def OnCloseWindow(self, event):
628 self.Destroy()
629
630
631
632
633 def OnTestSimpleControls(self, event):
634 dlg = TestSimpleControlsDlg(self, self)
635 dlg.Centre()
636 dlg.ShowModal()
637 dlg.Destroy()
638
639 def OnTestTimer(self, event):
640 if self.timer:
641 self.mainmenu.Check(self.timerID, false)
642 self.timer.Stop()
643 self.timer = None
644 else:
645 self.mainmenu.Check(self.timerID, true)
646 self.timer = TestTimer(self)
647 self.timer.Start(1000)
648
649 def OnTestLayoutConstraints(self, event):
650 win = TestLayoutConstraints(self)
651 win.Show(true)
652
653 def OnTestGrid(self, event):
654 win = TestGrid(self, self)
655 win.Show(true)
656 win.SetSize(wxSize(505, 300)) # have to force a resize, or the grid doesn't
657 # show up for some reason....
658
659 def OnTestColourDlg(self, event):
660 data = wxColourData()
661 data.SetChooseFull(true)
662 dlg = wxColourDialog(self, data)
663 if dlg.ShowModal() == wxID_OK:
664 data = dlg.GetColourData()
665 self.log.WriteText('You selected: %s\n' % str(data.GetColour().Get()))
666 dlg.Destroy()
667
668 def OnTestDirDlg(self, event):
669 dlg = wxDirDialog(self)
670 if dlg.ShowModal() == wxID_OK:
671 self.log.WriteText('You selected: %s\n' % dlg.GetPath())
672 dlg.Destroy()
673
674 def OnTestFileDlg(self, event):
675 dlg = wxFileDialog(self, "Choose a file", ".", "", "*.*", wxOPEN)
676 if dlg.ShowModal() == wxID_OK:
677 self.log.WriteText('You selected: %s\n' % dlg.GetPath())
678 dlg.Destroy()
679
680 def OnTestSingleChoiceDlg(self, event):
681 dlg = wxSingleChoiceDialog(self, 'Test Single Choice', 'The Caption',
682 ['zero', 'one', 'two', 'three', 'four', 'five',
683 'six', 'seven', 'eight'])
684 if dlg.ShowModal() == wxID_OK:
685 self.log.WriteText('You selected: %s\n' % dlg.GetStringSelection())
686 dlg.Destroy()
687
688 def OnTestTextEntryDlg(self, event):
689 dlg = wxTextEntryDialog(self, 'What is your favorite programming language?',
690 'Duh??', 'Python')
691 #dlg.SetValue("Python is the best!") #### this doesn't work?
692 if dlg.ShowModal() == wxID_OK:
693 self.log.WriteText('You entered: %s\n' % dlg.GetValue())
694 dlg.Destroy()
695
696
697 def OnTestFontDlg(self, event):
698 dlg = wxFontDialog(self)
699 if dlg.ShowModal() == wxID_OK:
700 data = dlg.GetFontData()
701 font = data.GetChosenFont()
702 self.log.WriteText('You selected: "%s", %d points, color %s\n' %
703 (font.GetFaceName(), font.GetPointSize(),
704 data.GetColour().Get()))
705 dlg.Destroy()
706
707
708 def OnTestPageSetupDlg(self, event):
709 data = wxPageSetupData()
710 data.SetMarginTopLeft(wxPoint(50,50))
711 data.SetMarginBottomRight(wxPoint(50,50))
712 dlg = wxPageSetupDialog(self, data)
713 if dlg.ShowModal() == wxID_OK:
714 data = dlg.GetPageSetupData()
715 tl = data.GetMarginTopLeft()
716 br = data.GetMarginBottomRight()
717 self.log.WriteText('Margins are: %s %s\n' % (str(tl), str(br)))
718 dlg.Destroy()
719
720 def OnTestPrintDlg(self, event):
721 data = wxPrintData()
722 data.EnablePrintToFile(true)
723 data.EnablePageNumbers(true)
724 data.EnableSelection(true)
725 dlg = wxPrintDialog(self, data)
726 if dlg.ShowModal() == wxID_OK:
727 self.log.WriteText('\n')
728 dlg.Destroy()
729
730 def OnTestMessageDlg(self, event):
731 dlg = wxMessageDialog(self, 'Hello from Python and wxWindows!',
732 'A Message Box', wxOK | wxICON_INFORMATION)
733 dlg.ShowModal()
734 dlg.Destroy()
735
736
737 def OnTestNotebook(self, event):
738 win = TestNotebookWindow(self, self)
739 win.Show(true)
740
741 def OnTestSplitter(self, event):
742 win = TestSplitterWindow(self)
743 win.Show(true)
744
745 def OnTestCustomStatusBar(self, event):
746 win = TestCustomStatusBar(self)
747 win.Show(true)
748
749 def OnTestToolBar(self, event):
750 win = TestToolBar(self, self)
751 win.Show(true)
752
753 def OnTestTreeCtrl(self, event):
754 win = TestTreeCtrl(self, self)
755 win.Show(true)
756
757
758 #---------------------------------------------------------------------------
759
760
761 class MyApp(wxApp):
762 def OnInit(self):
763 frame = AppFrame(NULL, -1, "Test 4: (lots of little tests...)")
764 frame.Show(true)
765 self.SetTopWindow(frame)
766 return true
767
768 #---------------------------------------------------------------------------
769
770
771 def main():
772 app = MyApp(0)
773 app.MainLoop()
774
775
776 def t():
777 import pdb
778 pdb.run('main()')
779
780
781 # for focused testing...
782 def main2():
783 class T2App(wxApp):
784 def OnInit(self):
785 frame = TestLayoutConstraints(NULL)
786 frame.Show(true)
787 self.SetTopWindow(frame)
788 return true
789
790 app = T2App(0)
791 app.MainLoop()
792
793 def t2():
794 import pdb
795 pdb.run('main2()')
796
797
798
799 if __name__ == '__main__':
800 main()
801
802
803 #----------------------------------------------------------------------------
804 #
805 # $Log$
806 # Revision 1.9 1998/12/15 20:44:35 RD
807 # Changed the import semantics from "from wxPython import *" to "from
808 # wxPython.wx import *" This is for people who are worried about
809 # namespace pollution, they can use "from wxPython import wx" and then
810 # prefix all the wxPython identifiers with "wx."
811 #
812 # Added wxTaskbarIcon for wxMSW.
813 #
814 # Made the events work for wxGrid.
815 #
816 # Added wxConfig.
817 #
818 # Added wxMiniFrame for wxGTK, (untested.)
819 #
820 # Changed many of the args and return values that were pointers to gdi
821 # objects to references to reflect changes in the wxWindows API.
822 #
823 # Other assorted fixes and additions.
824 #
825 # Revision 1.8 1998/11/25 08:47:11 RD
826 #
827 # Added wxPalette, wxRegion, wxRegionIterator, wxTaskbarIcon
828 # Added events for wxGrid
829 # Other various fixes and additions
830 #
831 # Revision 1.7 1998/11/11 03:13:19 RD
832 #
833 # Additions for wxTreeCtrl
834 #
835 # Revision 1.6 1998/10/20 06:45:33 RD
836 # New wxTreeCtrl wrappers (untested)
837 # some changes in helpers
838 # etc.
839 #
840 # Revision 1.5 1998/10/02 06:42:28 RD
841 #
842 # Version 0.4 of wxPython for MSW.
843 #
844 # Revision 1.4 1998/08/27 21:59:51 RD
845 # Some chicken-and-egg problems solved for wxPython on wxGTK
846 #
847 # Revision 1.3 1998/08/27 00:01:17 RD
848 # - more tweaks
849 # - have discovered some problems but not yet discovered solutions...
850 #
851 # Revision 1.2 1998/08/22 19:51:18 RD
852 # some tweaks for wxGTK
853 #
854 # Revision 1.1 1998/08/09 08:28:05 RD
855 # Initial version
856 #
857 #