From: Guido van Rossum Date: Fri, 25 Jun 1999 16:06:29 +0000 (+0000) Subject: Add _close() method that does the actual cleanup (close() asks the X-Git-Tag: v1.6a1~1151 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=205afb487a4ed9a70b0360da47402d2409aa9ed1;p=python 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. --- diff --git a/Tools/idle/EditorWindow.py b/Tools/idle/EditorWindow.py index 0f23b15946..007a99b571 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: