"""Support for redirecting arbitrary widget subcommands."""
def __init__(self
, widget
):
tk
.call("rename", w
, self
.orig
)
tk
.createcommand(w
, self
.dispatch
)
return "WidgetRedirector(%s<%s>)" % (self
.widget
.__class
__.__name
__,
for name
in self
.dict.keys():
widget
= self
.widget
; del self
.widget
orig
= self
.orig
; del self
.orig
tk
.call("rename", orig
, w
)
def register(self
, name
, function
):
if self
.dict.has_key(name
):
previous
= OriginalCommand(self
, name
)
self
.dict[name
] = function
setattr(self
.widget
, name
, function
)
def unregister(self
, name
):
if self
.dict.has_key(name
):
function
= self
.dict[name
]
if hasattr(self
.widget
, name
):
delattr(self
.widget
, name
)
def dispatch(self
, cmd
, *args
):
return self
.tk
.call((self
.orig
, cmd
) + args
)
def __init__(self
, redir
, name
):
self
.tk_call
= self
.tk
.call
self
.orig_and_name
= (self
.orig
, self
.name
)
return "OriginalCommand(%r, %r)" % (self
.redir
, self
.name
)
def __call__(self
, *args
):
return self
.tk_call(self
.orig_and_name
+ args
)
redir
= WidgetRedirector(text
)
orig_insert
= redir
.register("insert", my_insert
)
if __name__
== "__main__":