SF 748973 Guido van Rossum patch

New Window should save in the directory of the Editor Window
from which it was selected.

M EditorWindow.py
M FileList.py
M IOBinding.py
This commit is contained in:
Kurt B. Kaiser 2003-06-05 02:34:04 +00:00
parent a1045567e0
commit d2f4861a0b
3 changed files with 21 additions and 8 deletions

View file

@ -139,7 +139,7 @@ class EditorWindow:
flist.inversedict[self] = key flist.inversedict[self] = key
if key: if key:
flist.dict[key] = self flist.dict[key] = self
text.bind("<<open-new-window>>", self.flist.new_callback) text.bind("<<open-new-window>>", self.new_callback)
text.bind("<<close-all-windows>>", self.flist.close_all_callback) text.bind("<<close-all-windows>>", self.flist.close_all_callback)
text.bind("<<open-class-browser>>", self.open_class_browser) text.bind("<<open-class-browser>>", self.open_class_browser)
text.bind("<<open-path-browser>>", self.open_path_browser) text.bind("<<open-path-browser>>", self.open_path_browser)
@ -182,7 +182,7 @@ class EditorWindow:
self.UpdateRecentFilesList() self.UpdateRecentFilesList()
if filename: if filename:
if os.path.exists(filename): if os.path.exists(filename) and not os.path.isdir(filename):
io.loadfile(filename) io.loadfile(filename)
else: else:
io.set_filename(filename) io.set_filename(filename)
@ -210,6 +210,11 @@ class EditorWindow:
self.extensions['AutoIndent'].set_indentation_params( self.extensions['AutoIndent'].set_indentation_params(
self.ispythonsource(filename)) self.ispythonsource(filename))
def new_callback(self, event):
dirname, basename = self.io.defaultfilename()
self.flist.new(dirname)
return "break"
def set_status_bar(self): def set_status_bar(self):
self.status_bar = self.MultiStatusBar(self.top) self.status_bar = self.MultiStatusBar(self.top)
self.status_bar.set_label('column', 'Col: ?', side=RIGHT) self.status_bar.set_label('column', 'Col: ?', side=RIGHT)

View file

@ -58,8 +58,8 @@ class FileList:
if edit is not None and lineno is not None: if edit is not None and lineno is not None:
edit.gotoline(lineno) edit.gotoline(lineno)
def new(self): def new(self, filename=None):
return self.EditorWindow(self) return self.EditorWindow(self, filename)
def new_callback(self, event): def new_callback(self, event):
self.new() self.new()

View file

@ -179,12 +179,18 @@ class IOBinding:
self.filename_change_hook = hook self.filename_change_hook = hook
filename = None filename = None
dirname = None
def set_filename(self, filename): def set_filename(self, filename):
self.filename = filename if filename and os.path.isdir(filename):
self.set_saved(1) self.filename = None
if self.filename_change_hook: self.dirname = filename
self.filename_change_hook() 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): def open(self, event=None, editFile=None):
if self.editwin.flist: if self.editwin.flist:
@ -505,6 +511,8 @@ class IOBinding:
def defaultfilename(self, mode="open"): def defaultfilename(self, mode="open"):
if self.filename: if self.filename:
return os.path.split(self.filename) return os.path.split(self.filename)
elif self.dirname:
return self.dirname, ""
else: else:
try: try:
pwd = os.getcwd() pwd = os.getcwd()