Skip to content

Commit 037c49a

Browse files
Fix errors.
1 parent 8c043b1 commit 037c49a

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

Lib/idlelib/iomenu.py

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,9 @@ def set_filename_change_hook(self, hook):
6767
def set_filename(self, filename):
6868
if filename and os.path.isdir(filename):
6969
self.filename = None
70-
self.file_timestamp = None
7170
self.dirname = filename
7271
else:
7372
self.filename = filename
74-
if filename is not None:
75-
self.file_timestamp = os.stat(filename).st_mtime
76-
else:
77-
self.file_timestamp = None
7873
self.dirname = None
7974
self.set_saved(1)
8075
if self.filename_change_hook:
@@ -133,6 +128,7 @@ def loadfile(self, filename):
133128
chars = f.read()
134129
fileencoding = f.encoding
135130
eol_convention = f.newlines
131+
file_timestamp = os.stat(filename).st_mtime
136132
converted = False
137133
except (UnicodeDecodeError, SyntaxError):
138134
# Wait for the editor window to appear
@@ -148,6 +144,7 @@ def loadfile(self, filename):
148144
chars = f.read()
149145
fileencoding = f.encoding
150146
eol_convention = f.newlines
147+
file_timestamp = os.stat(filename).st_mtime
151148
converted = True
152149
except OSError as err:
153150
messagebox.showerror("I/O Error", str(err), parent=self.text)
@@ -176,6 +173,7 @@ def loadfile(self, filename):
176173
self.text.insert("1.0", chars)
177174
self.reset_undo()
178175
self.set_filename(filename)
176+
self.file_timestamp = file_timestamp
179177
if converted:
180178
# We need to save the conversion results first
181179
# before being able to execute the code
@@ -214,16 +212,21 @@ def save(self, event):
214212
else:
215213
# Check the time of most recent content modification so the
216214
# user doesn't accidentally overwrite a newer version of the file.
217-
if self.file_timestamp != os.stat(self.filename).st_mtime:
218-
confirm = tkMessageBox.askokcancel(
219-
title="File has changed",
220-
message=(
221-
"The file has changed on disk since reading it!\n\n"
222-
"Do you really want to overwrite it?"),
223-
default=tkMessageBox.CANCEL,
224-
parent=self.text)
225-
if not confirm:
226-
return
215+
try:
216+
file_timestamp = os.stat(self.filename).st_mtime
217+
except OSError:
218+
pass
219+
else:
220+
if self.file_timestamp != file_timestamp:
221+
confirm = messagebox.askokcancel(
222+
title="File has changed",
223+
message=(
224+
"The file has changed on disk since reading it!\n\n"
225+
"Do you really want to overwrite it?"),
226+
default=messagebox.CANCEL,
227+
parent=self.text)
228+
if not confirm:
229+
return
227230

228231
if self.writefile(self.filename):
229232
self.file_timestamp = os.stat(self.filename).st_mtime
@@ -239,6 +242,7 @@ def save_as(self, event):
239242
filename = self.asksavefile()
240243
if filename:
241244
if self.writefile(filename):
245+
self.file_timestamp = os.stat(filename).st_mtime
242246
self.set_filename(filename)
243247
self.set_saved(1)
244248
try:

0 commit comments

Comments
 (0)