]> git.saurik.com Git - wxWidgets.git/blame_incremental - wxPython/wx/py/PyShell.py
Use one wxNSWindowDelegate instance per wxCocoaNSWindow instance
[wxWidgets.git] / wxPython / wx / py / PyShell.py
... / ...
CommitLineData
1"""PyShell is a python shell application."""
2
3# The next two lines, and the other code below that makes use of
4# ``__main__`` and ``original``, serve the purpose of cleaning up the
5# main namespace to look as much as possible like the regular Python
6# shell environment.
7import __main__
8original = __main__.__dict__.keys()
9
10__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
11__cvsid__ = "$Id$"
12__revision__ = "$Revision$"[11:-2]
13
14import wx
15
16class App(wx.App):
17 """PyShell standalone application."""
18
19 def OnInit(self):
20 import wx
21 wx.InitAllImageHandlers()
22 locals = __main__.__dict__
23 from shell import ShellFrame
24 self.frame = ShellFrame(locals=locals)
25 self.frame.SetSize((750, 525))
26 self.frame.Show()
27 self.SetTopWindow(self.frame)
28 self.frame.shell.SetFocus()
29 return True
30
31'''
32The main() function needs to handle being imported, such as with the
33pyshell script that wxPython installs:
34
35 #!/usr/bin/env python
36
37 from wx.py.PyShell import main
38 main()
39'''
40
41def main():
42 """The main function for the PyShell program."""
43 # Cleanup the main namespace, leaving the App class.
44 import __main__
45 md = __main__.__dict__
46 keepers = original
47 keepers.append('App')
48 for key in md.keys():
49 if key not in keepers:
50 del md[key]
51 # Create an application instance.
52 app = App(0)
53 # Cleanup the main namespace some more.
54 if md.has_key('App') and md['App'] is App:
55 del md['App']
56 if md.has_key('__main__') and md['__main__'] is __main__:
57 del md['__main__']
58 # Mimic the contents of the standard Python shell's sys.path.
59 import sys
60 if sys.path[0]:
61 sys.path[0] = ''
62 # Add the application object to the sys module's namespace.
63 # This allows a shell user to do:
64 # >>> import sys
65 # >>> sys.app.whatever
66 sys.app = app
67 del sys
68 # Start the wxPython event loop.
69 app.MainLoop()
70
71if __name__ == '__main__':
72 main()