/Python25Einstein/Lib/site-packages/wx-2.8-msw-unicode/wx/py/PyShell.py
Python | 79 lines | 44 code | 10 blank | 25 comment | 9 complexity | 8573adb0edd9471bc0254fbcf975c7c6 MD5 | raw file
- """PyShell is a python shell application."""
- # The next two lines, and the other code below that makes use of
- # ``__main__`` and ``original``, serve the purpose of cleaning up the
- # main namespace to look as much as possible like the regular Python
- # shell environment.
- import __main__
- original = __main__.__dict__.keys()
- __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
- __cvsid__ = "$Id: PyShell.py 41078 2006-09-09 00:38:53Z RD $"
- __revision__ = "$Revision: 41078 $"[11:-2]
- import wx
- import os
- class App(wx.App):
- """PyShell standalone application."""
- def OnInit(self):
- import os
- import wx
- from wx import py
- self.SetAppName("pyshell")
- confDir = wx.StandardPaths.Get().GetUserDataDir()
- if not os.path.exists(confDir):
- os.mkdir(confDir)
- fileName = os.path.join(confDir, 'config')
- self.config = wx.FileConfig(localFilename=fileName)
- self.config.SetRecordDefaults(True)
- self.frame = py.shell.ShellFrame(config=self.config, dataDir=confDir)
- self.frame.Show()
- self.SetTopWindow(self.frame)
- return True
- '''
- The main() function needs to handle being imported, such as with the
- pyshell script that wxPython installs:
- #!/usr/bin/env python
- from wx.py.PyShell import main
- main()
- '''
- def main():
- """The main function for the PyShell program."""
- # Cleanup the main namespace, leaving the App class.
- import __main__
- md = __main__.__dict__
- keepers = original
- keepers.append('App')
- for key in md.keys():
- if key not in keepers:
- del md[key]
- # Create an application instance.
- app = App(0)
- # Cleanup the main namespace some more.
- if md.has_key('App') and md['App'] is App:
- del md['App']
- if md.has_key('__main__') and md['__main__'] is __main__:
- del md['__main__']
- # Mimic the contents of the standard Python shell's sys.path.
- import sys
- if sys.path[0]:
- sys.path[0] = ''
- # Add the application object to the sys module's namespace.
- # This allows a shell user to do:
- # >>> import sys
- # >>> sys.app.whatever
- sys.app = app
- del sys
- # Start the wxPython event loop.
- app.MainLoop()
- if __name__ == '__main__':
- main()