10 window
.after_idle(self
.call_callbacks
)
11 self
.dict[str(window
)] = window
13 def delete(self
, window
):
15 del self
.dict[str(window
)]
17 # Sometimes, destroy() is called twice
21 def add_windows_to_menu(self
, menu
):
23 for key
in self
.dict.keys():
24 window
= self
.dict[key
]
26 title
= window
.get_title()
29 list.append((title
, window
))
31 for title
, window
in list:
32 if title
== "Python Shell":
33 # Hack -- until we have a better way to this
35 menu
.add_command(label
=title
, command
=window
.wakeup
)
37 def register_callback(self
, callback
):
38 self
.callbacks
.append(callback
)
40 def unregister_callback(self
, callback
):
42 self
.callbacks
.remove(callback
)
46 def call_callbacks(self
):
47 for callback
in self
.callbacks
:
51 print "warning: callback failed in WindowList", \
52 sys
.exc_type
, ":", sys
.exc_value
54 registry
= WindowList()
56 add_windows_to_menu
= registry
.add_windows_to_menu
57 register_callback
= registry
.register_callback
58 unregister_callback
= registry
.unregister_callback
61 class ListedToplevel(Toplevel
):
63 def __init__(self
, master
, **kw
):
64 Toplevel
.__init
__(self
, master
, kw
)
69 Toplevel
.destroy(self
)
72 # Subclass can override
73 return self
.wm_title()
77 if self
.wm_state() == "iconic":
83 # This can happen when the window menu was torn off.