diff options
Diffstat (limited to 'Tools/idle/FileList.py')
-rw-r--r-- | Tools/idle/FileList.py | 143 |
1 files changed, 39 insertions, 104 deletions
diff --git a/Tools/idle/FileList.py b/Tools/idle/FileList.py index d9378e3..393b81c 100644 --- a/Tools/idle/FileList.py +++ b/Tools/idle/FileList.py @@ -2,125 +2,59 @@ import os from Tkinter import * import tkMessageBox -from EditorWindow import EditorWindow, fixwordbreaks -from IOBinding import IOBinding +import WindowList +#$ event <<open-new-window>> +#$ win <Control-n> +#$ unix <Control-x><Control-n> -class MultiIOBinding(IOBinding): +# (This is labeled as 'Exit'in the File menu) +#$ event <<close-all-windows>> +#$ win <Control-q> +#$ unix <Control-x><Control-c> - def open(self, event): - filename = self.askopenfile() - if filename: - self.flist.open(filename, self.edit) - return "break" - - -class MultiEditorWindow(EditorWindow): - - IOBinding = MultiIOBinding - - # Override menu bar specs - menu_specs = EditorWindow.menu_specs[:] - menu_specs.insert(len(menu_specs)-1, ("windows", "_Windows")) - - def __init__(self, flist, filename, key): - self.flist = flist - flist.inversedict[self] = key - if key: - flist.dict[key] = self - EditorWindow.__init__(self, flist.root, filename) - self.io.flist = flist - self.io.edit = self - self.text.bind("<<open-new-window>>", self.flist.new_callback) - self.text.bind("<<close-all-windows>>", self.flist.close_all_callback) - self.text.bind("<<open-class-browser>>", self.open_class_browser) - - def close_hook(self): - self.flist.close_edit(self) - - def filename_change_hook(self): - self.flist.filename_changed_edit(self) - EditorWindow.filename_change_hook(self) - - def wakeup(self): - self.top.tkraise() - self.top.wm_deiconify() - self.text.focus_set() - - def createmenubar(self): - EditorWindow.createmenubar(self) - self.menudict['windows'].configure(postcommand=self.postwindowsmenu) - - def postwindowsmenu(self): - wmenu = self.menudict['windows'] - wmenu.delete(0, 'end') - self.fixedwindowsmenu(wmenu) - files = self.flist.dict.keys() - files.sort() - for file in files: - def openit(self=self, file=file): - self.flist.open(file) - wmenu.add_command(label=file, command=openit) - - def open_class_browser(self, event=None): - filename = self.io.filename - if not filename: - tkMessageBox.showerror( - "No filename", - "This buffer has no associated filename", - master=self.text) - return None - head, tail = os.path.split(filename) - base, ext = os.path.splitext(tail) - import pyclbr - if pyclbr._modules.has_key(base): - del pyclbr._modules[base] - import ClassBrowser - ClassBrowser.ClassBrowser(self.flist, base, [head]) +class FileList: + from EditorWindow import EditorWindow + EditorWindow.Toplevel = WindowList.ListedToplevel # XXX Patch it! -class FileList: - - EditorWindow = MultiEditorWindow - def __init__(self, root): self.root = root self.dict = {} self.inversedict = {} - def new(self): - return self.open(None) - def open(self, filename, edit=None): - if filename: + def goodname(self, filename): filename = self.canonize(filename) - if os.path.isdir(filename): - tkMessageBox.showerror( - "Is A Directory", - "The path %s is a directory." % `filename`, - master=self.root) - return None key = os.path.normcase(filename) if self.dict.has_key(key): edit = self.dict[key] - edit.wakeup() - return edit - if not os.path.exists(filename): - tkMessageBox.showinfo( - "New File", - "Opening non-existent file %s" % `filename`, - master=self.root) - if edit and not edit.io.filename and edit.undo.get_saved(): - # Reuse existing Untitled window for new file - edit.io.loadfile(filename) - self.dict[key] = edit - self.inversedict[edit] = key - edit.wakeup() - return edit - else: - key = None - edit = self.EditorWindow(self, filename, key) - return edit + filename = edit.io.filename or filename + return filename + + def open(self, filename): + assert filename + filename = self.canonize(filename) + if os.path.isdir(filename): + tkMessageBox.showerror( + "Is A Directory", + "The path %s is a directory." % `filename`, + master=self.root) + return None + key = os.path.normcase(filename) + if self.dict.has_key(key): + edit = self.dict[key] + edit.wakeup() + return edit + if not os.path.exists(filename): + tkMessageBox.showinfo( + "New File", + "Opening non-existent file %s" % `filename`, + master=self.root) + return self.EditorWindow(self, filename, key) + + def new(self): + return self.EditorWindow(self) def new_callback(self, event): self.new() @@ -189,6 +123,7 @@ class FileList: def test(): + from EditorWindow import fixwordbreaks import sys root = Tk() fixwordbreaks(root) |