Add _close() method that does the actual cleanup (close() asks the

user what they want first if there's unsaved stuff, and may cancel).
It closes more than before.

Add unload_extensions() method to unload all extensions; called from
_close().  It calls an extension's close() method if it has one.
This commit is contained in:
Guido van Rossum 1999-06-25 16:06:29 +00:00
parent dd4dda87c1
commit 205afb487a
1 changed files with 26 additions and 10 deletions

View File

@ -462,22 +462,38 @@ class EditorWindow:
self.top.tkraise()
reply = self.maybesave()
if reply != "cancel":
WindowList.unregister_callback(self.postwindowsmenu)
if self.close_hook:
self.close_hook()
colorizing = 0
if self.color:
colorizing = self.color.colorizing
doh = colorizing and self.top
self.color.close(doh) # Cancel colorization
if not colorizing:
self.top.destroy()
self._close()
return reply
def _close(self):
WindowList.unregister_callback(self.postwindowsmenu)
if self.close_hook:
self.close_hook()
self.flist = None
colorizing = 0
self.unload_extensions()
self.io.close(); self.io = None
self.undo = None # XXX
if self.color:
colorizing = self.color.colorizing
doh = colorizing and self.top
self.color.close(doh) # Cancel colorization
self.text = None
self.vars = None
self.per.close(); self.per = None
if not colorizing:
self.top.destroy()
def load_extensions(self):
self.extensions = {}
self.load_standard_extensions()
def unload_extensions(self):
for ins in self.extensions.values():
if hasattr(ins, "close"):
ins.close()
self.extensions = {}
def load_standard_extensions(self):
for name in self.get_standard_extension_names():
try: