ยปCore Development>Code coverage>Lib/idlelib/WindowList.py

Python code coverage for Lib/idlelib/WindowList.py

#countcontent
1n/afrom tkinter import *
2n/a
3n/aclass WindowList:
4n/a
5n/a def __init__(self):
6n/a self.dict = {}
7n/a self.callbacks = []
8n/a
9n/a def add(self, window):
10n/a window.after_idle(self.call_callbacks)
11n/a self.dict[str(window)] = window
12n/a
13n/a def delete(self, window):
14n/a try:
15n/a del self.dict[str(window)]
16n/a except KeyError:
17n/a # Sometimes, destroy() is called twice
18n/a pass
19n/a self.call_callbacks()
20n/a
21n/a def add_windows_to_menu(self, menu):
22n/a list = []
23n/a for key in self.dict:
24n/a window = self.dict[key]
25n/a try:
26n/a title = window.get_title()
27n/a except TclError:
28n/a continue
29n/a list.append((title, key, window))
30n/a list.sort()
31n/a for title, key, window in list:
32n/a menu.add_command(label=title, command=window.wakeup)
33n/a
34n/a def register_callback(self, callback):
35n/a self.callbacks.append(callback)
36n/a
37n/a def unregister_callback(self, callback):
38n/a try:
39n/a self.callbacks.remove(callback)
40n/a except ValueError:
41n/a pass
42n/a
43n/a def call_callbacks(self):
44n/a for callback in self.callbacks:
45n/a try:
46n/a callback()
47n/a except:
48n/a t, v, tb = sys.exc_info()
49n/a print("warning: callback failed in WindowList", t, ":", v)
50n/a
51n/aregistry = WindowList()
52n/a
53n/aadd_windows_to_menu = registry.add_windows_to_menu
54n/aregister_callback = registry.register_callback
55n/aunregister_callback = registry.unregister_callback
56n/a
57n/a
58n/aclass ListedToplevel(Toplevel):
59n/a
60n/a def __init__(self, master, **kw):
61n/a Toplevel.__init__(self, master, kw)
62n/a registry.add(self)
63n/a self.focused_widget = self
64n/a
65n/a def destroy(self):
66n/a registry.delete(self)
67n/a Toplevel.destroy(self)
68n/a # If this is Idle's last window then quit the mainloop
69n/a # (Needed for clean exit on Windows 98)
70n/a if not registry.dict:
71n/a self.quit()
72n/a
73n/a def update_windowlist_registry(self, window):
74n/a registry.call_callbacks()
75n/a
76n/a def get_title(self):
77n/a # Subclass can override
78n/a return self.wm_title()
79n/a
80n/a def wakeup(self):
81n/a try:
82n/a if self.wm_state() == "iconic":
83n/a self.wm_withdraw()
84n/a self.wm_deiconify()
85n/a self.tkraise()
86n/a self.focused_widget.focus_set()
87n/a except TclError:
88n/a # This can happen when the window menu was torn off.
89n/a # Simply ignore it.
90n/a pass