MCPcopy Index your code
hub / github.com/python/cpython / UndoDelegator

Class UndoDelegator

Lib/idlelib/undo.py:21–159  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

19
20
21class UndoDelegator(Delegator):
22
23 max_undo = 1000
24
25 def __init__(self):
26 Delegator.__init__(self)
27 self.reset_undo()
28
29 def setdelegate(self, delegate):
30 if self.delegate is not None:
31 self.unbind("<<undo>>")
32 self.unbind("<<redo>>")
33 self.unbind("<<dump-undo-state>>")
34 Delegator.setdelegate(self, delegate)
35 if delegate is not None:
36 self.bind("<<undo>>", self.undo_event)
37 self.bind("<<redo>>", self.redo_event)
38 self.bind("<<dump-undo-state>>", self.dump_event)
39
40 def dump_event(self, event):
41 from pprint import pprint
42 pprint(self.undolist[:self.pointer])
43 print("pointer:", self.pointer, end=' ')
44 print("saved:", self.saved, end=' ')
45 print("can_merge:", self.can_merge, end=' ')
46 print("get_saved():", self.get_saved())
47 pprint(self.undolist[self.pointer:])
48 return "break"
49
50 def reset_undo(self):
51 self.was_saved = -1
52 self.pointer = 0
53 self.undolist = []
54 self.undoblock = 0 # or a CommandSequence instance
55 self.set_saved(1)
56
57 def set_saved(self, flag):
58 if flag:
59 self.saved = self.pointer
60 else:
61 self.saved = -1
62 self.can_merge = False
63 self.check_saved()
64
65 def get_saved(self):
66 return self.saved == self.pointer
67
68 saved_change_hook = None
69
70 def set_saved_change_hook(self, hook):
71 self.saved_change_hook = hook
72
73 was_saved = -1
74
75 def check_saved(self):
76 is_saved = self.get_saved()
77 if is_saved != self.was_saved:
78 self.was_saved = is_saved

Callers 2

setUpMethod · 0.90
_undo_delegatorFunction · 0.70

Calls

no outgoing calls

Tested by 1

setUpMethod · 0.72

Used in the wild real call sites across dependent graphs

searching dependent graphs…