diff --git a/Lib/idlelib/EditorWindow.py b/Lib/idlelib/EditorWindow.py index fcb1612f1f6..2303537dfe1 100644 --- a/Lib/idlelib/EditorWindow.py +++ b/Lib/idlelib/EditorWindow.py @@ -139,7 +139,7 @@ def __init__(self, flist=None, filename=None, key=None, root=None): flist.inversedict[self] = key if key: flist.dict[key] = self - text.bind("<>", self.flist.new_callback) + text.bind("<>", self.new_callback) text.bind("<>", self.flist.close_all_callback) text.bind("<>", self.open_class_browser) text.bind("<>", self.open_path_browser) @@ -182,7 +182,7 @@ def __init__(self, flist=None, filename=None, key=None, root=None): self.UpdateRecentFilesList() if filename: - if os.path.exists(filename): + if os.path.exists(filename) and not os.path.isdir(filename): io.loadfile(filename) else: io.set_filename(filename) @@ -210,6 +210,11 @@ def __init__(self, flist=None, filename=None, key=None, root=None): self.extensions['AutoIndent'].set_indentation_params( self.ispythonsource(filename)) + def new_callback(self, event): + dirname, basename = self.io.defaultfilename() + self.flist.new(dirname) + return "break" + def set_status_bar(self): self.status_bar = self.MultiStatusBar(self.top) self.status_bar.set_label('column', 'Col: ?', side=RIGHT) diff --git a/Lib/idlelib/FileList.py b/Lib/idlelib/FileList.py index e01ce3c47cc..7a46afaa028 100644 --- a/Lib/idlelib/FileList.py +++ b/Lib/idlelib/FileList.py @@ -58,8 +58,8 @@ def gotofileline(self, filename, lineno=None): if edit is not None and lineno is not None: edit.gotoline(lineno) - def new(self): - return self.EditorWindow(self) + def new(self, filename=None): + return self.EditorWindow(self, filename) def new_callback(self, event): self.new() diff --git a/Lib/idlelib/IOBinding.py b/Lib/idlelib/IOBinding.py index cd2638c1218..e2077500c1b 100644 --- a/Lib/idlelib/IOBinding.py +++ b/Lib/idlelib/IOBinding.py @@ -179,12 +179,18 @@ def set_filename_change_hook(self, hook): self.filename_change_hook = hook filename = None + dirname = None def set_filename(self, filename): - self.filename = filename - self.set_saved(1) - if self.filename_change_hook: - self.filename_change_hook() + if filename and os.path.isdir(filename): + self.filename = None + self.dirname = filename + else: + self.filename = filename + self.dirname = None + self.set_saved(1) + if self.filename_change_hook: + self.filename_change_hook() def open(self, event=None, editFile=None): if self.editwin.flist: @@ -505,6 +511,8 @@ def askopenfile(self): def defaultfilename(self, mode="open"): if self.filename: return os.path.split(self.filename) + elif self.dirname: + return self.dirname, "" else: try: pwd = os.getcwd()