From 205afb487a4ed9a70b0360da47402d2409aa9ed1 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 25 Jun 1999 16:06:29 +0000 Subject: 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. --- Tools/idle/EditorWindow.py | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/Tools/idle/EditorWindow.py b/Tools/idle/EditorWindow.py index 0f23b15..007a99b 100644 --- a/Tools/idle/EditorWindow.py +++ b/Tools/idle/EditorWindow.py @@ -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: -- cgit v0.12