]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Add close() method that breaks a cycle.
authorGuido van Rossum <guido@python.org>
Fri, 25 Jun 1999 16:02:22 +0000 (16:02 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 25 Jun 1999 16:02:22 +0000 (16:02 +0000)
Tools/idle/CallTips.py
Tools/idle/FormatParagraph.py
Tools/idle/IOBinding.py

index 413d211ca868046225768774495ac679ab69b8aa..04eccde0b401eaaf75a6a97efdc8e80d9c0ef364 100644 (file)
@@ -32,6 +32,9 @@ class CallTips:
         else:
             self._make_calltip_window = self._make_tk_calltip_window
 
+    def close(self):
+        self._make_calltip_window = None
+
     # Makes a Tk based calltip window.  Used by IDLE, but not Pythonwin.
     # See __init__ above for how this is used.
     def _make_tk_calltip_window(self):
index 671b30303167bc54612c672f8fa77fa1303baa38..76c52f55d186ec55e5f40f3bc916f73a84696657 100644 (file)
@@ -36,6 +36,9 @@ class FormatParagraph:
     def __init__(self, editwin):
         self.editwin = editwin
 
+    def close(self):
+        self.editwin = None
+
     def format_paragraph_event(self, event):
         text = self.editwin.text
         first, last = self.editwin.get_selection_indices()
index 6a41a37500cb5cfa2e2d73c2c1965a62f7a7ab94..7d8f0a9e50bdfa6905baa8ab6c6942e43763ce29 100644 (file)
@@ -24,10 +24,23 @@ class IOBinding:
     def __init__(self, editwin):
         self.editwin = editwin
         self.text = editwin.text
-        self.text.bind("<<open-window-from-file>>", self.open)
-        self.text.bind("<<save-window>>", self.save)
-        self.text.bind("<<save-window-as-file>>", self.save_as)
-        self.text.bind("<<save-copy-of-window-as-file>>", self.save_a_copy)
+        self.__id_open = self.text.bind("<<open-window-from-file>>", self.open)
+        self.__id_save = self.text.bind("<<save-window>>", self.save)
+        self.__id_saveas = self.text.bind("<<save-window-as-file>>",
+                                          self.save_as)
+        self.__id_savecopy = self.text.bind("<<save-copy-of-window-as-file>>",
+                                            self.save_a_copy)
+
+    def close(self):
+        # Undo command bindings
+        self.text.unbind("<<open-window-from-file>>", self.__id_open)
+        self.text.unbind("<<save-window>>", self.__id_save)
+        self.text.unbind("<<save-window-as-file>>",self.__id_saveas)
+        self.text.unbind("<<save-copy-of-window-as-file>>", self.__id_savecopy)
+        # Break cycles
+        self.editwin = None
+        self.text = None
+        self.filename_change_hook = None
 
     def get_saved(self):
         return self.editwin.get_saved()