Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Нужна идея как реализовать Undo/Redo в редакторе. 14.11.03 12:26 Число просмотров: 922
Автор: dl <Dmitry Leonov>
|
> Есть программа, которая предоставляет пользователю > возможность редактировать довольно сложные объекты. Данные > об объектах хранятся в XML файле. Хотелось бы предоставить > пользователю возможность делать Undo/Redo во время > редактирования. Пока что приходит в голову только держать > на винте несколькол временных файлов в одном из которых > ведется редактирование, а в других сохраняются > промежуточные версии. По Undo/Redo, соответственно, менять > их местами. Идея не фонтан, так что, если кто-то может > поделится более элегантным решением - буду признателен.
Достаточно традиционный подход, но для уже существующей программы требующий большой перетряски - создается класс "действие" с функциями Do и Undo. Объекты этого класса/его потомков выполняют основную функциональность программы, требующую отката (либо в состоянии корректно вызвать функции, эту функциональность обеспечивающую), и накапливаются в стеке. При откате вызывается Undo последнего объекта, и он перекидывается в другой список для Redo.
|
|
|