There is an undo system that impara wrote for Sophie. You should consider it, we used it extensively to make *most* actions (some VERY complex ones) undoable/redoable, this also included the ability to transparently nest actions, such as having one action be a consolidation of multiple sub actions, then treat the one container action as an atomic do/undo/redo item.
Say for example do most any textual editing, frame layout, page manipulation for 20 mintues, then hold the undo-key down and watch it rollback everything.
On Apr 29, 2008, at 10:36 AM, itsme213 wrote:
I have commands that I would like to make undoable. Is it possible to wrap the commands within an "undoable" environment as suggested in http://www.ceteva.com/forum/viewtopic.php?t=17
I imagine something like this (but wouldn't know where to start):
A>>setFoo: aFoo Undoable newOn: [ foo := aFoo ]
A>>setBar: aBar Undoable newOn: [ bar := aBar ]
a := A new foo: 0; bar: 0; yourself. a setFoo: 5. a setBar: 10. Undoable undo. "a bar == 0" Undoable undo. "a foo == 0" Undoable redo. "a foo == 10"
Thanks - Sophie
-- = = = ======================================================================== John M. McIntosh johnmci@smalltalkconsulting.com Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com = = = ========================================================================