]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/wx/py/frame.py
move wxPython to new trunk
[wxWidgets.git] / wxPython / wx / py / frame.py
diff --git a/wxPython/wx/py/frame.py b/wxPython/wx/py/frame.py
deleted file mode 100644 (file)
index 904c1b0..0000000
+++ /dev/null
@@ -1,862 +0,0 @@
-"""Base frame with menu."""
-
-__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
-__cvsid__ = "$Id$"
-__revision__ = "$Revision$"[11:-2]
-
-import wx
-import os
-from version import VERSION
-import editwindow
-import dispatcher
-
-ID_NEW = wx.ID_NEW
-ID_OPEN = wx.ID_OPEN
-ID_REVERT = wx.ID_REVERT
-ID_CLOSE = wx.ID_CLOSE
-ID_SAVE = wx.ID_SAVE
-ID_SAVEAS = wx.ID_SAVEAS
-ID_PRINT = wx.ID_PRINT
-ID_EXIT = wx.ID_EXIT
-ID_UNDO = wx.ID_UNDO
-ID_REDO = wx.ID_REDO
-ID_CUT = wx.ID_CUT
-ID_COPY = wx.ID_COPY
-ID_PASTE = wx.ID_PASTE
-ID_CLEAR = wx.ID_CLEAR
-ID_SELECTALL = wx.ID_SELECTALL
-ID_EMPTYBUFFER = wx.NewId()
-ID_ABOUT = wx.ID_ABOUT
-ID_HELP = wx.NewId()
-ID_AUTOCOMP = wx.NewId()
-ID_AUTOCOMP_SHOW = wx.NewId()
-ID_AUTOCOMP_MAGIC = wx.NewId()
-ID_AUTOCOMP_SINGLE = wx.NewId()
-ID_AUTOCOMP_DOUBLE = wx.NewId()
-ID_CALLTIPS = wx.NewId()
-ID_CALLTIPS_SHOW = wx.NewId()
-ID_CALLTIPS_INSERT = wx.NewId()
-ID_COPY_PLUS = wx.NewId()
-ID_NAMESPACE = wx.NewId()
-ID_PASTE_PLUS = wx.NewId()
-ID_WRAP = wx.NewId()
-ID_TOGGLE_MAXIMIZE = wx.NewId()
-ID_USEAA = wx.NewId()
-ID_SHOW_LINENUMBERS = wx.NewId()
-ID_AUTO_SAVESETTINGS = wx.NewId()
-ID_SAVEHISTORY = wx.NewId()
-ID_SAVEHISTORYNOW = wx.NewId()
-ID_CLEARHISTORY = wx.NewId()
-ID_SAVESETTINGS = wx.NewId()
-ID_DELSETTINGSFILE = wx.NewId()
-ID_EDITSTARTUPSCRIPT = wx.NewId()
-ID_EXECSTARTUPSCRIPT = wx.NewId()
-ID_STARTUP = wx.NewId()
-ID_SETTINGS = wx.NewId()
-ID_FIND = wx.ID_FIND
-ID_FINDNEXT = wx.NewId()
-ID_SHOWTOOLS = wx.NewId()
-
-
-
-class Frame(wx.Frame):
-    """Frame with standard menu items."""
-
-    revision = __revision__
-
-    def __init__(self, parent=None, id=-1, title='Editor',
-                 pos=wx.DefaultPosition, size=wx.DefaultSize, 
-                 style=wx.DEFAULT_FRAME_STYLE):
-        """Create a Frame instance."""
-        wx.Frame.__init__(self, parent, id, title, pos, size, style)
-        self.CreateStatusBar()
-        self.SetStatusText('Frame')
-        import images
-        self.SetIcon(images.getPyIcon())
-        self.__createMenus()
-
-        self.iconized = False
-        self.findDlg = None
-        self.findData = wx.FindReplaceData()
-        self.findData.SetFlags(wx.FR_DOWN)
-
-        self.Bind(wx.EVT_CLOSE, self.OnClose)
-        self.Bind(wx.EVT_ICONIZE, self.OnIconize)
-
-
-    def OnIconize(self, event):
-        """Event handler for Iconize."""
-        self.iconized = event.Iconized()
-
-
-    def OnClose(self, event):
-        """Event handler for closing."""
-        self.Destroy()
-
-
-    def __createMenus(self):
-        # File Menu
-        m = self.fileMenu = wx.Menu()
-        m.Append(ID_NEW, '&New \tCtrl+N',
-                 'New file')
-        m.Append(ID_OPEN, '&Open... \tCtrl+O',
-                 'Open file')
-        m.AppendSeparator()
-        m.Append(ID_REVERT, '&Revert \tCtrl+R',
-                 'Revert to last saved version')
-        m.Append(ID_CLOSE, '&Close \tCtrl+W',
-                 'Close file')
-        m.AppendSeparator()
-        m.Append(ID_SAVE, '&Save... \tCtrl+S',
-                 'Save file')
-        m.Append(ID_SAVEAS, 'Save &As \tCtrl+Shift+S',
-                 'Save file with new name')
-        m.AppendSeparator()
-        m.Append(ID_PRINT, '&Print... \tCtrl+P',
-                 'Print file')
-        m.AppendSeparator()
-        m.Append(ID_NAMESPACE, '&Update Namespace \tCtrl+Shift+N',
-                 'Update namespace for autocompletion and calltips')
-        m.AppendSeparator()
-        m.Append(ID_EXIT, 'E&xit\tCtrl+Q', 'Exit Program')
-
-        # Edit
-        m = self.editMenu = wx.Menu()
-        m.Append(ID_UNDO, '&Undo \tCtrl+Z',
-                 'Undo the last action')
-        m.Append(ID_REDO, '&Redo \tCtrl+Y',
-                 'Redo the last undone action')
-        m.AppendSeparator()
-        m.Append(ID_CUT, 'Cu&t \tCtrl+X',
-                 'Cut the selection')
-        m.Append(ID_COPY, '&Copy \tCtrl+C',
-                 'Copy the selection')
-        m.Append(ID_COPY_PLUS, 'Cop&y Plus \tCtrl+Shift+C',
-                 'Copy the selection - retaining prompts')
-        m.Append(ID_PASTE, '&Paste \tCtrl+V', 'Paste from clipboard')
-        m.Append(ID_PASTE_PLUS, 'Past&e Plus \tCtrl+Shift+V',
-                 'Paste and run commands')
-        m.AppendSeparator()
-        m.Append(ID_CLEAR, 'Cle&ar',
-                 'Delete the selection')
-        m.Append(ID_SELECTALL, 'Select A&ll \tCtrl+A',
-                 'Select all text')
-        m.AppendSeparator()
-        m.Append(ID_EMPTYBUFFER, 'E&mpty Buffer...',
-                 'Delete all the contents of the edit buffer')
-        m.Append(ID_FIND, '&Find Text... \tCtrl+F',
-                 'Search for text in the edit buffer')
-        m.Append(ID_FINDNEXT, 'Find &Next \tF3',
-                 'Find next/previous instance of the search text')
-
-        # View
-        m = self.viewMenu = wx.Menu()
-        m.Append(ID_WRAP, '&Wrap Lines\tCtrl+Shift+W',
-                 'Wrap lines at right edge', wx.ITEM_CHECK)
-        m.Append(ID_SHOW_LINENUMBERS, '&Show Line Numbers\tCtrl+Shift+L', 'Show Line Numbers', wx.ITEM_CHECK)
-        m.Append(ID_TOGGLE_MAXIMIZE, '&Toggle Maximize\tF11', 'Maximize/Restore Application')
-        if hasattr(self, 'ToggleTools'):
-            m.Append(ID_SHOWTOOLS,
-                     'Show &Tools\tF4',
-                     'Show the filling and other tools', wx.ITEM_CHECK)
-
-        # Options
-        m = self.autocompMenu = wx.Menu()
-        m.Append(ID_AUTOCOMP_SHOW, 'Show &Auto Completion\tCtrl+Shift+A',
-                 'Show auto completion list', wx.ITEM_CHECK)
-        m.Append(ID_AUTOCOMP_MAGIC, 'Include &Magic Attributes\tCtrl+Shift+M',
-                 'Include attributes visible to __getattr__ and __setattr__',
-                 wx.ITEM_CHECK)
-        m.Append(ID_AUTOCOMP_SINGLE, 'Include Single &Underscores\tCtrl+Shift+U',
-                 'Include attibutes prefixed by a single underscore', wx.ITEM_CHECK)
-        m.Append(ID_AUTOCOMP_DOUBLE, 'Include &Double Underscores\tCtrl+Shift+D',
-                 'Include attibutes prefixed by a double underscore', wx.ITEM_CHECK)
-        m = self.calltipsMenu = wx.Menu()
-        m.Append(ID_CALLTIPS_SHOW, 'Show Call &Tips\tCtrl+Shift+T',
-                 'Show call tips with argument signature and docstring', wx.ITEM_CHECK)
-        m.Append(ID_CALLTIPS_INSERT, '&Insert Call Tips\tCtrl+Shift+I',
-                 '&Insert Call Tips', wx.ITEM_CHECK)
-
-        m = self.optionsMenu = wx.Menu()
-        m.AppendMenu(ID_AUTOCOMP, '&Auto Completion', self.autocompMenu,
-                     'Auto Completion Options')
-        m.AppendMenu(ID_CALLTIPS, '&Call Tips', self.calltipsMenu,
-                     'Call Tip Options')
-                
-        if wx.Platform == "__WXMAC__":
-            m.Append(ID_USEAA, '&Use AntiAliasing',
-                     'Use anti-aliased fonts', wx.ITEM_CHECK)
-            
-        m.AppendSeparator()
-
-        self.historyMenu = wx.Menu()
-        self.historyMenu.Append(ID_SAVEHISTORY, '&Autosave History',
-                 'Automatically save history on close', wx.ITEM_CHECK)
-        self.historyMenu.Append(ID_SAVEHISTORYNOW, '&Save History Now',
-                 'Save history')
-        self.historyMenu.Append(ID_CLEARHISTORY, '&Clear History ',
-                 'Clear history')
-        m.AppendMenu(-1, "&History", self.historyMenu, "History Options")
-
-        self.startupMenu = wx.Menu()
-        self.startupMenu.Append(ID_EXECSTARTUPSCRIPT,
-                                'E&xecute Startup Script',
-                                'Execute Startup Script', wx.ITEM_CHECK)
-        self.startupMenu.Append(ID_EDITSTARTUPSCRIPT,
-                                '&Edit Startup Script...',
-                                'Edit Startup Script')
-        m.AppendMenu(ID_STARTUP, '&Startup', self.startupMenu, 'Startup Options')
-
-        self.settingsMenu = wx.Menu()
-        self.settingsMenu.Append(ID_AUTO_SAVESETTINGS,
-                                 '&Auto Save Settings',
-                                 'Automatically save settings on close', wx.ITEM_CHECK)
-        self.settingsMenu.Append(ID_SAVESETTINGS,
-                                 '&Save Settings',
-                                 'Save settings now')
-        self.settingsMenu.Append(ID_DELSETTINGSFILE,
-                                 '&Revert to default',
-                                 'Revert to the default settings')
-        m.AppendMenu(ID_SETTINGS, '&Settings', self.settingsMenu, 'Settings Options')           
-
-        m = self.helpMenu = wx.Menu()
-        m.Append(ID_HELP, '&Help\tF1', 'Help!')
-        m.AppendSeparator()
-        m.Append(ID_ABOUT, '&About...', 'About this program')
-
-        b = self.menuBar = wx.MenuBar()
-        b.Append(self.fileMenu, '&File')
-        b.Append(self.editMenu, '&Edit')
-        b.Append(self.viewMenu, '&View')
-        b.Append(self.optionsMenu, '&Options')
-        b.Append(self.helpMenu, '&Help')
-        self.SetMenuBar(b)
-
-        self.Bind(wx.EVT_MENU, self.OnFileNew, id=ID_NEW)
-        self.Bind(wx.EVT_MENU, self.OnFileOpen, id=ID_OPEN)
-        self.Bind(wx.EVT_MENU, self.OnFileRevert, id=ID_REVERT)
-        self.Bind(wx.EVT_MENU, self.OnFileClose, id=ID_CLOSE)
-        self.Bind(wx.EVT_MENU, self.OnFileSave, id=ID_SAVE)
-        self.Bind(wx.EVT_MENU, self.OnFileSaveAs, id=ID_SAVEAS)
-        self.Bind(wx.EVT_MENU, self.OnFileUpdateNamespace, id=ID_NAMESPACE)
-        self.Bind(wx.EVT_MENU, self.OnFilePrint, id=ID_PRINT)
-        self.Bind(wx.EVT_MENU, self.OnExit, id=ID_EXIT)
-        self.Bind(wx.EVT_MENU, self.OnUndo, id=ID_UNDO)
-        self.Bind(wx.EVT_MENU, self.OnRedo, id=ID_REDO)
-        self.Bind(wx.EVT_MENU, self.OnCut, id=ID_CUT)
-        self.Bind(wx.EVT_MENU, self.OnCopy, id=ID_COPY)
-        self.Bind(wx.EVT_MENU, self.OnCopyPlus, id=ID_COPY_PLUS)
-        self.Bind(wx.EVT_MENU, self.OnPaste, id=ID_PASTE)
-        self.Bind(wx.EVT_MENU, self.OnPastePlus, id=ID_PASTE_PLUS)
-        self.Bind(wx.EVT_MENU, self.OnClear, id=ID_CLEAR)
-        self.Bind(wx.EVT_MENU, self.OnSelectAll, id=ID_SELECTALL)
-        self.Bind(wx.EVT_MENU, self.OnEmptyBuffer, id=ID_EMPTYBUFFER)
-        self.Bind(wx.EVT_MENU, self.OnAbout, id=ID_ABOUT)
-        self.Bind(wx.EVT_MENU, self.OnHelp, id=ID_HELP)
-        self.Bind(wx.EVT_MENU, self.OnAutoCompleteShow, id=ID_AUTOCOMP_SHOW)
-        self.Bind(wx.EVT_MENU, self.OnAutoCompleteMagic, id=ID_AUTOCOMP_MAGIC)
-        self.Bind(wx.EVT_MENU, self.OnAutoCompleteSingle, id=ID_AUTOCOMP_SINGLE)
-        self.Bind(wx.EVT_MENU, self.OnAutoCompleteDouble, id=ID_AUTOCOMP_DOUBLE)
-        self.Bind(wx.EVT_MENU, self.OnCallTipsShow, id=ID_CALLTIPS_SHOW)
-        self.Bind(wx.EVT_MENU, self.OnCallTipsInsert, id=ID_CALLTIPS_INSERT)
-        self.Bind(wx.EVT_MENU, self.OnWrap, id=ID_WRAP)
-        self.Bind(wx.EVT_MENU, self.OnUseAA, id=ID_USEAA)
-        self.Bind(wx.EVT_MENU, self.OnToggleMaximize, id=ID_TOGGLE_MAXIMIZE)
-        self.Bind(wx.EVT_MENU, self.OnShowLineNumbers, id=ID_SHOW_LINENUMBERS)
-        self.Bind(wx.EVT_MENU, self.OnAutoSaveSettings, id=ID_AUTO_SAVESETTINGS)
-        self.Bind(wx.EVT_MENU, self.OnSaveHistory, id=ID_SAVEHISTORY)
-        self.Bind(wx.EVT_MENU, self.OnSaveHistoryNow, id=ID_SAVEHISTORYNOW)
-        self.Bind(wx.EVT_MENU, self.OnClearHistory, id=ID_CLEARHISTORY)
-        self.Bind(wx.EVT_MENU, self.OnSaveSettings, id=ID_SAVESETTINGS)
-        self.Bind(wx.EVT_MENU, self.OnDelSettingsFile, id=ID_DELSETTINGSFILE)
-        self.Bind(wx.EVT_MENU, self.OnEditStartupScript, id=ID_EDITSTARTUPSCRIPT)
-        self.Bind(wx.EVT_MENU, self.OnExecStartupScript, id=ID_EXECSTARTUPSCRIPT)
-        self.Bind(wx.EVT_MENU, self.OnFindText, id=ID_FIND)
-        self.Bind(wx.EVT_MENU, self.OnFindNext, id=ID_FINDNEXT)
-        self.Bind(wx.EVT_MENU, self.OnToggleTools, id=ID_SHOWTOOLS)
-
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_NEW)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_OPEN)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_REVERT)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_CLOSE)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_SAVE)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_SAVEAS)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_NAMESPACE)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_PRINT)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_UNDO)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_REDO)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_CUT)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_COPY)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_COPY_PLUS)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_PASTE)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_PASTE_PLUS)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_CLEAR)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_SELECTALL)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_EMPTYBUFFER)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_AUTOCOMP_SHOW)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_AUTOCOMP_MAGIC)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_AUTOCOMP_SINGLE)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_AUTOCOMP_DOUBLE)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_CALLTIPS_SHOW)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_CALLTIPS_INSERT)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_WRAP)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_USEAA)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_SHOW_LINENUMBERS)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_AUTO_SAVESETTINGS)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_SAVESETTINGS)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_DELSETTINGSFILE)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_EXECSTARTUPSCRIPT)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_SAVEHISTORY)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_SAVEHISTORYNOW)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_CLEARHISTORY)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_EDITSTARTUPSCRIPT)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_FIND)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_FINDNEXT)
-        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id=ID_SHOWTOOLS)
-        
-        self.Bind(wx.EVT_ACTIVATE, self.OnActivate)
-        self.Bind(wx.EVT_FIND, self.OnFindNext)
-        self.Bind(wx.EVT_FIND_NEXT, self.OnFindNext)
-        self.Bind(wx.EVT_FIND_CLOSE, self.OnFindClose)
-        
-    
-
-    def OnShowLineNumbers(self, event):
-        win = wx.Window.FindFocus()
-        if hasattr(win, 'lineNumbers'):
-            win.lineNumbers = event.IsChecked()
-            win.setDisplayLineNumbers(win.lineNumbers)
-
-    def OnToggleMaximize(self, event):
-        self.Maximize(not self.IsMaximized())
-
-    def OnFileNew(self, event):
-        self.bufferNew()
-
-    def OnFileOpen(self, event):
-        self.bufferOpen()
-
-    def OnFileRevert(self, event):
-        self.bufferRevert()
-
-    def OnFileClose(self, event):
-        self.bufferClose()
-
-    def OnFileSave(self, event):
-        self.bufferSave()
-
-    def OnFileSaveAs(self, event):
-        self.bufferSaveAs()
-
-    def OnFileUpdateNamespace(self, event):
-        self.updateNamespace()
-
-    def OnFilePrint(self, event):
-        self.bufferPrint()
-
-    def OnExit(self, event):
-        self.Close(False)
-
-    def OnUndo(self, event):
-        win = wx.Window.FindFocus()
-        win.Undo()
-
-    def OnRedo(self, event):
-        win = wx.Window.FindFocus()
-        win.Redo()
-
-    def OnCut(self, event):
-        win = wx.Window.FindFocus()
-        win.Cut()
-
-    def OnCopy(self, event):
-        win = wx.Window.FindFocus()
-        win.Copy()
-
-    def OnCopyPlus(self, event):
-        win = wx.Window.FindFocus()
-        win.CopyWithPrompts()
-
-    def OnPaste(self, event):
-        win = wx.Window.FindFocus()
-        win.Paste()
-
-    def OnPastePlus(self, event):
-        win = wx.Window.FindFocus()
-        win.PasteAndRun()
-
-    def OnClear(self, event):
-        win = wx.Window.FindFocus()
-        win.Clear()
-    
-    def OnEmptyBuffer(self, event):
-        win = wx.Window.FindFocus()
-        d = wx.MessageDialog(self,
-                             "Are you sure you want to clear the edit buffer,\n"
-                             "deleting all the text?",
-                             "Empty Buffer", wx.OK | wx.CANCEL | wx.ICON_QUESTION)
-        answer = d.ShowModal()
-        d.Destroy()
-        if (answer == wx.ID_OK):
-            win.ClearAll()
-            if hasattr(win,'prompt'):
-                win.prompt()
-
-    def OnSelectAll(self, event):
-        win = wx.Window.FindFocus()
-        win.SelectAll()
-
-    def OnAbout(self, event):
-        """Display an About window."""
-        title = 'About'
-        text = 'Your message here.'
-        dialog = wx.MessageDialog(self, text, title,
-                                  wx.OK | wx.ICON_INFORMATION)
-        dialog.ShowModal()
-        dialog.Destroy()
-
-    def OnHelp(self, event):
-        """Display a Help window."""
-        title = 'Help'        
-        text = "Type 'shell.help()' in the shell window."
-        dialog = wx.MessageDialog(self, text, title,
-                                  wx.OK | wx.ICON_INFORMATION)
-        dialog.ShowModal()
-        dialog.Destroy()
-
-    def OnAutoCompleteShow(self, event):
-        win = wx.Window.FindFocus()
-        win.autoComplete = event.IsChecked()
-
-    def OnAutoCompleteMagic(self, event):
-        win = wx.Window.FindFocus()
-        win.autoCompleteIncludeMagic = event.IsChecked()
-
-    def OnAutoCompleteSingle(self, event):
-        win = wx.Window.FindFocus()
-        win.autoCompleteIncludeSingle = event.IsChecked()
-
-    def OnAutoCompleteDouble(self, event):
-        win = wx.Window.FindFocus()
-        win.autoCompleteIncludeDouble = event.IsChecked()
-
-    def OnCallTipsShow(self, event):
-        win = wx.Window.FindFocus()
-        win.autoCallTip = event.IsChecked()
-
-    def OnCallTipsInsert(self, event):
-        win = wx.Window.FindFocus()
-        win.callTipInsert = event.IsChecked()
-
-    def OnWrap(self, event):
-        win = wx.Window.FindFocus()
-        win.SetWrapMode(event.IsChecked())
-        wx.FutureCall(1, self.shell.EnsureCaretVisible)
-
-    def OnUseAA(self, event):
-        win = wx.Window.FindFocus()
-        win.SetUseAntiAliasing(event.IsChecked())
-
-    def OnSaveHistory(self, event):
-        self.autoSaveHistory = event.IsChecked()
-
-    def OnSaveHistoryNow(self, event):
-        self.SaveHistory()
-
-    def OnClearHistory(self, event):
-        self.shell.clearHistory()
-
-    def OnAutoSaveSettings(self, event):
-        self.autoSaveSettings = event.IsChecked()
-
-    def OnSaveSettings(self, event):
-        self.DoSaveSettings()
-
-    def OnDelSettingsFile(self, event):
-        if self.config is not None:
-            d = wx.MessageDialog(
-                self, "Do you want to revert to the default settings?\n" + 
-                "A restart is needed for the change to take effect",
-                "Warning", wx.OK | wx.CANCEL | wx.ICON_QUESTION)
-            answer = d.ShowModal()
-            d.Destroy()
-            if (answer == wx.ID_OK):
-                self.config.DeleteAll()
-                self.LoadSettings()
-
-
-    def OnEditStartupScript(self, event):
-        if hasattr(self, 'EditStartupScript'):
-            self.EditStartupScript()
-            
-    def OnExecStartupScript(self, event):
-        self.execStartupScript = event.IsChecked()
-
-
-    def OnFindText(self, event):
-        if self.findDlg is not None:
-            return
-        win = wx.Window.FindFocus()
-        self.findDlg = wx.FindReplaceDialog(win, self.findData, "Find",
-                                            wx.FR_NOWHOLEWORD)
-        self.findDlg.Show()
-        
-    def OnFindNext(self, event):
-        if not self.findData.GetFindString():
-            self.OnFindText(event)
-            return
-        if isinstance(event, wx.FindDialogEvent):
-            win = self.findDlg.GetParent()
-        else:
-            win = wx.Window.FindFocus()
-        win.DoFindNext(self.findData, self.findDlg)
-        if self.findDlg is not None:
-            self.OnFindClose(None)
-
-    def OnFindClose(self, event):
-        self.findDlg.Destroy()
-        self.findDlg = None
-    
-    def OnToggleTools(self, event):
-        self.ToggleTools()
-        
-
-    def OnUpdateMenu(self, event):
-        """Update menu items based on current status and context."""
-        win = wx.Window.FindFocus()
-        id = event.GetId()
-        event.Enable(True)
-        try:
-            if id == ID_NEW:
-                event.Enable(hasattr(self, 'bufferNew'))
-            elif id == ID_OPEN:
-                event.Enable(hasattr(self, 'bufferOpen'))
-            elif id == ID_REVERT:
-                event.Enable(hasattr(self, 'bufferRevert')
-                             and self.hasBuffer())
-            elif id == ID_CLOSE:
-                event.Enable(hasattr(self, 'bufferClose')
-                             and self.hasBuffer())
-            elif id == ID_SAVE:
-                event.Enable(hasattr(self, 'bufferSave')
-                             and self.bufferHasChanged())
-            elif id == ID_SAVEAS:
-                event.Enable(hasattr(self, 'bufferSaveAs')
-                             and self.hasBuffer())
-            elif id == ID_NAMESPACE:
-                event.Enable(hasattr(self, 'updateNamespace')
-                             and self.hasBuffer())
-            elif id == ID_PRINT:
-                event.Enable(hasattr(self, 'bufferPrint')
-                             and self.hasBuffer())
-            elif id == ID_UNDO:
-                event.Enable(win.CanUndo())
-            elif id == ID_REDO:
-                event.Enable(win.CanRedo())
-            elif id == ID_CUT:
-                event.Enable(win.CanCut())
-            elif id == ID_COPY:
-                event.Enable(win.CanCopy())
-            elif id == ID_COPY_PLUS:
-                event.Enable(win.CanCopy() and hasattr(win, 'CopyWithPrompts'))
-            elif id == ID_PASTE:
-                event.Enable(win.CanPaste())
-            elif id == ID_PASTE_PLUS:
-                event.Enable(win.CanPaste() and hasattr(win, 'PasteAndRun'))
-            elif id == ID_CLEAR:
-                event.Enable(win.CanCut())
-            elif id == ID_SELECTALL:
-                event.Enable(hasattr(win, 'SelectAll'))
-            elif id == ID_EMPTYBUFFER:
-                event.Enable(hasattr(win, 'ClearAll') and not win.GetReadOnly())
-            elif id == ID_AUTOCOMP_SHOW:
-                event.Check(win.autoComplete)
-            elif id == ID_AUTOCOMP_MAGIC:
-                event.Check(win.autoCompleteIncludeMagic)
-            elif id == ID_AUTOCOMP_SINGLE:
-                event.Check(win.autoCompleteIncludeSingle)
-            elif id == ID_AUTOCOMP_DOUBLE:
-                event.Check(win.autoCompleteIncludeDouble)
-            elif id == ID_CALLTIPS_SHOW:
-                event.Check(win.autoCallTip)
-            elif id == ID_CALLTIPS_INSERT:
-                event.Check(win.callTipInsert)
-            elif id == ID_WRAP:
-                event.Check(win.GetWrapMode())
-            elif id == ID_USEAA:
-                event.Check(win.GetUseAntiAliasing())
-
-            elif id == ID_SHOW_LINENUMBERS:
-                event.Check(win.lineNumbers)
-            elif id == ID_AUTO_SAVESETTINGS:
-                event.Check(self.autoSaveSettings)
-                event.Enable(self.config is not None)
-            elif id == ID_SAVESETTINGS:
-                event.Enable(self.config is not None and
-                             hasattr(self, 'DoSaveSettings'))
-            elif id == ID_DELSETTINGSFILE:
-                event.Enable(self.config is not None)
-                
-            elif id == ID_EXECSTARTUPSCRIPT:
-                event.Check(self.execStartupScript)
-                event.Enable(self.config is not None)
-
-            elif id == ID_SAVEHISTORY:
-                event.Check(self.autoSaveHistory)
-                event.Enable(self.dataDir is not None)
-            elif id == ID_SAVEHISTORYNOW:
-                event.Enable(self.dataDir is not None and
-                             hasattr(self, 'SaveHistory'))
-            elif id == ID_CLEARHISTORY:
-                event.Enable(self.dataDir is not None)
-                
-            elif id == ID_EDITSTARTUPSCRIPT:
-                event.Enable(hasattr(self, 'EditStartupScript'))
-                event.Enable(self.dataDir is not None)
-                
-            elif id == ID_FIND:
-                event.Enable(hasattr(win, 'DoFindNext'))
-            elif id == ID_FINDNEXT:
-                event.Enable(hasattr(win, 'DoFindNext'))
-
-            elif id == ID_SHOWTOOLS:
-                event.Check(self.ToolsShown())
-                                             
-            else:
-                event.Enable(False)
-        except AttributeError:
-            # This menu option is not supported in the current context.
-            event.Enable(False)
-
-
-    def OnActivate(self, event):
-        """
-        Event Handler for losing the focus of the Frame. Should close
-        Autocomplete listbox, if shown.
-        """
-        if not event.GetActive():
-            # If autocomplete active, cancel it.  Otherwise, the
-            # autocomplete list will stay visible on top of the
-            # z-order after switching to another application
-            win = wx.Window.FindFocus()
-            if hasattr(win, 'AutoCompActive') and win.AutoCompActive():
-                win.AutoCompCancel()
-        event.Skip()
-
-
-
-    def LoadSettings(self, config):
-        """Called by derived classes to load settings specific to the Frame"""
-        pos  = wx.Point(config.ReadInt('Window/PosX', -1),
-                        config.ReadInt('Window/PosY', -1))
-                        
-        size = wx.Size(config.ReadInt('Window/Width', -1),
-                       config.ReadInt('Window/Height', -1))
-
-        self.SetSize(size)
-        self.Move(pos)
-
-
-    def SaveSettings(self, config):
-        """Called by derived classes to save Frame settings to a wx.Config object"""
-
-        # TODO: track position/size so we can save it even if the
-        # frame is maximized or iconized.
-        if not self.iconized and not self.IsMaximized():
-            w, h = self.GetSize()
-            config.WriteInt('Window/Width', w)
-            config.WriteInt('Window/Height', h)
-            
-            px, py = self.GetPosition()
-            config.WriteInt('Window/PosX', px)
-            config.WriteInt('Window/PosY', py)
-
-
-
-
-class ShellFrameMixin:
-    """
-    A mix-in class for frames that will have a Shell or a Crust window
-    and that want to add history, startupScript and other common
-    functionality.
-    """
-    def __init__(self, config, dataDir):
-        self.config = config
-        self.dataDir = dataDir
-        self.startupScript = os.environ.get('PYTHONSTARTUP')
-        if not self.startupScript and self.dataDir:
-            self.startupScript = os.path.join(self.dataDir, 'startup')
-            
-        self.autoSaveSettings = False
-        self.autoSaveHistory = False
-
-        # We need this one before we have a chance to load the settings...
-        self.execStartupScript = True
-        if self.config:
-            self.execStartupScript = self.config.ReadBool('Options/ExecStartupScript', True)
-            
-
-    def OnHelp(self, event):
-        """Display a Help window."""
-        import  wx.lib.dialogs
-        title = 'Help on key bindings'
-        
-        text = wx.py.shell.HELP_TEXT
-
-        dlg = wx.lib.dialogs.ScrolledMessageDialog(self, text, title, size = ((700, 540)))
-        fnt = wx.Font(10, wx.TELETYPE, wx.NORMAL, wx.NORMAL)
-        dlg.GetChildren()[0].SetFont(fnt)
-        dlg.GetChildren()[0].SetInsertionPoint(0)
-        dlg.ShowModal()
-        dlg.Destroy()
-
-
-    def LoadSettings(self):
-        if self.config is not None:
-            self.autoSaveSettings = self.config.ReadBool('Options/AutoSaveSettings', False)
-            self.execStartupScript = self.config.ReadBool('Options/ExecStartupScript', True)
-            self.autoSaveHistory  = self.config.ReadBool('Options/AutoSaveHistory', False)
-            self.LoadHistory()
-
-
-    def SaveSettings(self):
-        if self.config is not None:
-            # always save this one
-            self.config.WriteBool('Options/AutoSaveSettings', self.autoSaveSettings)
-            if self.autoSaveSettings:
-                self.config.WriteBool('Options/AutoSaveHistory', self.autoSaveHistory)
-                self.config.WriteBool('Options/ExecStartupScript', self.execStartupScript)
-            if self.autoSaveHistory:
-                self.SaveHistory()
-
-
-
-    def SaveHistory(self):
-        if self.dataDir:
-            try:
-                name = os.path.join(self.dataDir, 'history')
-                f = file(name, 'w')
-                hist = '\x00\n'.join(self.shell.history)
-                f.write(hist)
-                f.close()
-            except:
-                d = wx.MessageDialog(self, "Error saving history file.",
-                                     "Error", wx.ICON_EXCLAMATION)
-                d.ShowModal()
-                d.Destroy()
-                raise
-
-    def LoadHistory(self):
-        if self.dataDir:
-            name = os.path.join(self.dataDir, 'history')
-            if os.path.exists(name):
-                try:
-                    f = file(name, 'U')
-                    hist = f.read()
-                    f.close()
-                    self.shell.history = hist.split('\x00\n')
-                    dispatcher.send(signal="Shell.loadHistory", history=self.shell.history)
-                except:
-                    d = wx.MessageDialog(self, "Error loading history file.",
-                                         "Error", wx.ICON_EXCLAMATION)
-                    d.ShowModal()
-                    d.Destroy()
-
-
-    def bufferHasChanged(self):
-        # the shell buffers can always be saved
-        return True
-
-    def bufferSave(self):
-        import time
-        appname = wx.GetApp().GetAppName()
-        default = appname + '-' + time.strftime("%Y%m%d-%H%M.py")
-        fileName = wx.FileSelector("Save File As", "Saving",
-                                  default_filename=default,
-                                  default_extension="py",
-                                  wildcard="*.py",
-                                  flags = wx.SAVE | wx.OVERWRITE_PROMPT)
-        if not fileName:
-            return
-        
-        text = self.shell.GetText()
-
-## This isn't working currently...
-##         d = wx.MessageDialog(self,u'Save source code only?\nAnswering yes will only save lines starting with >>> and ...',u'Question', wx.YES_NO | wx.ICON_QUESTION)
-##         yes_no = d.ShowModal()
-##         if yes_no == wx.ID_YES:
-##             m = re.findall('^[>\.]{3,3} (.*)\r', text, re.MULTILINE | re.LOCALE)
-##             text = '\n'.join(m)
-##         d.Destroy()
-
-        try:
-            f = open(fileName, "w")
-            f.write(text)
-            f.close()
-        except:
-            d = wx.MessageDialog(self, u'Error saving session',u'Error',
-                                 wx.OK | wx.ICON_ERROR)
-            d.ShowModal()
-            d.Destroy()
-
-
-    def EditStartupScript(self):
-        if os.path.exists(self.startupScript):
-            text = file(self.startupScript, 'U').read()
-        else:
-            text = ''
-
-        dlg = EditStartupScriptDialog(self, self.startupScript, text)
-        if dlg.ShowModal() == wx.ID_OK:
-            text = dlg.GetText()
-            try:
-                f = file(self.startupScript, 'w')
-                f.write(text)
-                f.close()
-            except:
-                d = wx.MessageDialog(self, "Error saving startup file.",
-                                     "Error", wx.ICON_EXCLAMATION)
-                d.ShowModal()
-                d.Destroy()
-
-
-
-class EditStartupScriptDialog(wx.Dialog):
-    def __init__(self, parent, fileName, text):
-        wx.Dialog.__init__(self, parent, size=(425,350),
-                           title="Edit Startup Script",
-                           style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER)
-        
-        pst = wx.StaticText(self, -1, "Path:")
-        ptx = wx.TextCtrl(self, -1, fileName, style=wx.TE_READONLY)
-        self.editor = editwindow.EditWindow(self)
-        self.editor.SetText(text)
-        wx.CallAfter(self.editor.SetFocus)
-        
-        ok = wx.Button(self, wx.ID_OK)
-        cancel = wx.Button(self, wx.ID_CANCEL)
-
-        mainSizer = wx.BoxSizer(wx.VERTICAL)
-
-        pthSizer = wx.BoxSizer(wx.HORIZONTAL)
-        pthSizer.Add(pst, flag=wx.ALIGN_CENTER_VERTICAL)
-        pthSizer.Add((5,5))
-        pthSizer.Add(ptx, 1)
-        mainSizer.Add(pthSizer, 0, wx.EXPAND|wx.ALL, 10)
-
-        mainSizer.Add(self.editor, 1, wx.EXPAND|wx.LEFT|wx.RIGHT, 10)
-        
-        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
-        btnSizer.Add((5,5), 1)
-        btnSizer.Add(ok)
-        btnSizer.Add((5,5), 1)
-        btnSizer.Add(cancel)
-        btnSizer.Add((5,5), 1)
-        mainSizer.Add(btnSizer, 0, wx.EXPAND|wx.ALL, 10)
-        
-        self.SetSizer(mainSizer)
-        self.Layout()
-
-
-    def GetText(self):
-        return self.editor.GetText()