1 from WidgetRedirector
import WidgetRedirector
2 from Delegator
import Delegator
6 def __init__(self
, text
):
7 # XXX would be nice to inherit from Delegator
9 self
.redir
= WidgetRedirector(text
)
10 self
.top
= self
.bottom
= Delegator(text
)
11 self
.bottom
.insert
= self
.redir
.register("insert", self
.insert
)
12 self
.bottom
.delete
= self
.redir
.register("delete", self
.delete
)
15 def insert(self
, index
, chars
, tags
=None):
16 # Could go away if inheriting from Delegator
17 self
.top
.insert(index
, chars
, tags
)
19 def delete(self
, index1
, index2
=None):
20 # Could go away if inheriting from Delegator
21 self
.top
.delete(index1
, index2
)
23 def insertfilter(self
, filter):
24 # Perhaps rename to pushfilter()?
25 assert isinstance(filter, Delegator
)
26 assert filter.delegate
is None
27 filter.setdelegate(self
.top
)
30 def removefilter(self
, filter):
31 # XXX Perhaps should only support popfilter()?
32 assert isinstance(filter, Delegator
)
33 assert filter.delegate
is not None
36 self
.top
= filter.delegate
37 filter.setdelegate(None)
39 while f
.delegate
is not filter:
40 assert f
is not self
.bottom
43 f
.setdelegate(filter.delegate
)
44 filter.setdelegate(None)
48 class Tracer(Delegator
):
49 def __init__(self
, name
):
51 Delegator
.__init
__(self
, None)
52 def insert(self
, *args
):
53 print self
.name
, ": insert", args
54 apply(self
.delegate
.insert
, args
)
55 def delete(self
, *args
):
56 print self
.name
, ": delete", args
57 apply(self
.delegate
.delete
, args
)
60 root
.wm_protocol("WM_DELETE_WINDOW", root
.quit
)
76 if __name__
== "__main__":