5 def __init__(self
, text
):
8 self
.history_prefix
= None
9 self
.history_pointer
= None
10 text
.bind("<<history-previous>>", self
.history_prev
)
11 text
.bind("<<history-next>>", self
.history_next
)
13 def history_next(self
, event
):
17 def history_prev(self
, event
):
21 def history_do(self
, reverse
):
22 nhist
= len(self
.history
)
23 pointer
= self
.history_pointer
24 prefix
= self
.history_prefix
25 if pointer
is not None and prefix
is not None:
26 if self
.text
.compare("insert", "!=", "end-1c") or \
27 self
.text
.get("iomark", "end-1c") != self
.history
[pointer
]:
28 pointer
= prefix
= None
29 if pointer
is None or prefix
is None:
30 prefix
= self
.text
.get("iomark", "end-1c")
41 if pointer
< 0 or pointer
>= nhist
:
43 if self
.text
.get("iomark", "end-1c") != prefix
:
44 self
.text
.delete("iomark", "end-1c")
45 self
.text
.insert("iomark", prefix
)
46 pointer
= prefix
= None
48 item
= self
.history
[pointer
]
49 if item
[:nprefix
] == prefix
and len(item
) > nprefix
:
50 self
.text
.delete("iomark", "end-1c")
51 self
.text
.insert("iomark", item
)
53 self
.text
.mark_set("insert", "end-1c")
54 self
.text
.see("insert")
55 self
.text
.tag_remove("sel", "1.0", "end")
56 self
.history_pointer
= pointer
57 self
.history_prefix
= prefix
59 def history_store(self
, source
):
60 source
= string
.strip(source
)
62 self
.history
.append(source
)
63 self
.history_pointer
= None
64 self
.history_prefix
= None
68 self
.text
.tag_remove("sel", "1.0", "end")
69 self
.text
.delete("iomark", "end-1c")
70 self
.text
.mark_set("insert", "end-1c")
71 self
.text
.insert("insert", s
)
72 self
.text
.see("insert")