]>
Commit | Line | Data |
---|---|---|
1 | ||
2 | import wx | |
3 | import os | |
4 | import sys | |
5 | ||
6 | #---------------------------------------------------------------------- | |
7 | ||
8 | class TestPanel(wx.Panel): | |
9 | def __init__(self, parent, log): | |
10 | self.log = log | |
11 | wx.Panel.__init__(self, parent, -1) | |
12 | ||
13 | b1 = wx.Button(self, -1, "MDI demo") | |
14 | self.Bind(wx.EVT_BUTTON, self.ShowMDIDemo, b1) | |
15 | ||
16 | b2 = wx.Button(self, -1, "MDI with SashWindows demo") | |
17 | self.Bind(wx.EVT_BUTTON, self.ShowMDISashDemo, b2) | |
18 | ||
19 | box = wx.BoxSizer(wx.VERTICAL) | |
20 | box.Add((20, 30)) | |
21 | box.Add(b1, 0, wx.ALIGN_CENTER|wx.ALL, 15) | |
22 | box.Add(b2, 0, wx.ALIGN_CENTER|wx.ALL, 15) | |
23 | self.SetAutoLayout(True) | |
24 | self.SetSizer(box) | |
25 | ||
26 | ||
27 | # These are spawned as new processes because on Mac there can be | |
28 | # some problems related to having regular frames and MDI frames in | |
29 | # the same app. | |
30 | def ShowMDIDemo(self, evt): | |
31 | exe, spawn = self.GetPyExecutable() | |
32 | spawn(os.P_NOWAIT, exe, exe, "MDIDemo.py") | |
33 | ||
34 | def ShowMDISashDemo(self, evt): | |
35 | exe, spawn = self.GetPyExecutable() | |
36 | spawn(os.P_NOWAIT, exe, exe, "MDISashDemo.py") | |
37 | ||
38 | # TODO: This hack can be removed once we fix the way the Python | |
39 | # app bundles are generated so that they are not bundling and | |
40 | # pointing to an otherwise unused and non-GUI-friendly version of | |
41 | # Python on OS X. | |
42 | def GetPyExecutable(self): | |
43 | if 'wxMac' in wx.PlatformInfo: | |
44 | # sys.executable will be wrong if running the demo from | |
45 | # an app bundle. But the bundle is always using a system | |
46 | # framework so just hardcode the path to it. | |
47 | if sys.version[:3] == "2.4": | |
48 | return '/usr/local/bin/pythonw', os.spawnl | |
49 | else: | |
50 | return '/usr/bin/pythonw', os.spawnl | |
51 | else: | |
52 | return sys.executable, os.spawnl | |
53 | ||
54 | #---------------------------------------------------------------------- | |
55 | ||
56 | def runTest(frame, nb, log): | |
57 | win = TestPanel(nb, log) | |
58 | return win | |
59 | ||
60 | #---------------------------------------------------------------------- | |
61 | ||
62 | ||
63 | ||
64 | overview = """<html><body> | |
65 | <h2><center>Multiple Document Interface</center></h2> | |
66 | ||
67 | Although Microsoft has deprecated the MDI model, wxWindows still supports | |
68 | it. Here are a couple samples of how to use it - one straightforward, the other | |
69 | showing how the MDI interface can be integrated into a SashWindow interface. | |
70 | ||
71 | </body></html> | |
72 | """ | |
73 | ||
74 | ||
75 | if __name__ == '__main__': | |
76 | import sys,os | |
77 | import run | |
78 | run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:]) |