window
.after_idle(self
.call_callbacks
)
self
.dict[str(window
)] = window
def delete(self
, window
):
del self
.dict[str(window
)]
# Sometimes, destroy() is called twice
def add_windows_to_menu(self
, menu
):
for key
in self
.dict.keys():
title
= window
.get_title()
list.append((title
, window
))
for title
, window
in list:
menu
.add_command(label
=title
, command
=window
.wakeup
)
def register_callback(self
, callback
):
self
.callbacks
.append(callback
)
def unregister_callback(self
, callback
):
self
.callbacks
.remove(callback
)
def call_callbacks(self
):
for callback
in self
.callbacks
:
print "warning: callback failed in WindowList", \
sys
.exc_type
, ":", sys
.exc_value
add_windows_to_menu
= registry
.add_windows_to_menu
register_callback
= registry
.register_callback
unregister_callback
= registry
.unregister_callback
class ListedToplevel(Toplevel
):
def __init__(self
, master
, **kw
):
Toplevel
.__init
__(self
, master
, kw
)
self
.focused_widget
= self
# If this is Idle's last window then quit the mainloop
# (Needed for clean exit on Windows 98)
def update_windowlist_registry(self
, window
):
registry
.call_callbacks()
if self
.wm_state() == "iconic":
self
.focused_widget
.focus_set()
# This can happen when the window menu was torn off.