ó t®¸Qc@sSddlTdd d„ƒYZdd d„ƒYZd„ZedkrOeƒndS( iÿÿÿÿ(t*tWidgetRedirectorcBsDeZdZd„Zd„Zd„Zd„Zd„Zd„ZRS(säSupport for redirecting arbitrary widget subcommands. Some Tk operations don't normally pass through Tkinter. For example, if a character is inserted into a Text widget by pressing a key, a default Tk binding to the widget's 'insert' operation is activated, and the Tk library processes the insert without calling back into Tkinter. Although a binding to could be made via Tkinter, what we really want to do is to hook the Tk 'insert' operation itself. When a widget is instantiated, a Tcl command is created whose name is the same as the pathname widget._w. This command is used to invoke the various widget operations, e.g. insert (for a Text widget). We are going to hook this command and provide a facility ('register') to intercept the widget operation. In IDLE, the function being registered provides access to the top of a Percolator chain. At the bottom of the chain is a call to the original Tk widget operation. cCsei|_||_|j|_}|j}|d|_|jd||jƒ|j||jƒdS(Nt_origtrename(t _operationstwidgetttkt_wtorigtcallt createcommandtdispatch(tselfRRtw((s./sys/lib/python2.7/idlelib/WidgetRedirector.pyt__init__s    cCsd|jjj|jjfS(NsWidgetRedirector(%s<%s>)(Rt __class__t__name__R(R ((s./sys/lib/python2.7/idlelib/WidgetRedirector.pyt__repr__&scCs{x$t|jƒD]}|j|ƒqW|j}|`|j}|`|j}|j}|j|ƒ|jd||ƒdS(NR( tlistRt unregisterRRRRt deletecommandR (R t operationRRRR ((s./sys/lib/python2.7/idlelib/WidgetRedirector.pytclose*s     cCs-||j|s W