Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions Lib/idlelib/iomenu.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,20 @@ def set_filename_change_hook(self, hook):
self.filename_change_hook = hook

filename = None
file_timestamp = None
dirname = None

def set_filename(self, filename):
if filename and os.path.isdir(filename):
self.filename = None
self.file_timestamp = None
self.dirname = filename
else:
self.filename = filename
if filename is not None:
self.file_timestamp = os.stat(filename).st_mtime
else:
self.file_timestamp = None
self.dirname = None
self.set_saved(1)
if self.filename_change_hook:
Expand Down Expand Up @@ -206,7 +212,21 @@ def save(self, event):
if not self.filename:
self.save_as(event)
else:
# Check the time of most recent content modification so the
# user doesn't accidentally overwrite a newer version of the file.
if self.file_timestamp != os.stat(self.filename).st_mtime:
confirm = tkMessageBox.askokcancel(
title="File has changed",
message=(
"The file has changed on disk since reading it!\n\n"
"Do you really want to overwrite it?"),
default=tkMessageBox.CANCEL,
parent=self.text)
if not confirm:
return

if self.writefile(self.filename):
self.file_timestamp = os.stat(self.filename).st_mtime
self.set_saved(True)
try:
self.editwin.store_file_breaks()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Warn the user if a file will be overwritten when saving.