]> granicus.if.org Git - python/commitdiff
SF 748973 Guido van Rossum patch
authorKurt B. Kaiser <kbk@shore.net>
Thu, 5 Jun 2003 02:34:04 +0000 (02:34 +0000)
committerKurt B. Kaiser <kbk@shore.net>
Thu, 5 Jun 2003 02:34:04 +0000 (02:34 +0000)
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

Lib/idlelib/EditorWindow.py
Lib/idlelib/FileList.py
Lib/idlelib/IOBinding.py

index fcb1612f1f6d946d05941f6dfa1415725f5a8775..2303537dfe16c13b818ada30a7c64e260d3143b5 100644 (file)
@@ -139,7 +139,7 @@ class EditorWindow:
             flist.inversedict[self] = key
             if key:
                 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("<<open-class-browser>>", self.open_class_browser)
             text.bind("<<open-path-browser>>", self.open_path_browser)
@@ -182,7 +182,7 @@ class EditorWindow:
         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 @@ class EditorWindow:
             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)
index e01ce3c47cc165e2e580603b38c5b95543891663..7a46afaa028bbc8b0e4db8367e38566b0bc1b37a 100644 (file)
@@ -58,8 +58,8 @@ class FileList:
         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()
index cd2638c1218c1a468d495a1bf1cf330aa14b1ea1..e2077500c1bf76421c9e308e47a82c01c69e6f11 100644 (file)
@@ -179,12 +179,18 @@ class IOBinding:
         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 @@ class IOBinding:
     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()