Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |
Нужна идея как реализовать Undo/Redo в редакторе. 14.11.03 12:26 Число просмотров: 1084
Автор: dl <Dmitry Leonov>
|
> Есть программа, которая предоставляет пользователю > возможность редактировать довольно сложные объекты. Данные > об объектах хранятся в XML файле. Хотелось бы предоставить > пользователю возможность делать Undo/Redo во время > редактирования. Пока что приходит в голову только держать > на винте несколькол временных файлов в одном из которых > ведется редактирование, а в других сохраняются > промежуточные версии. По Undo/Redo, соответственно, менять > их местами. Идея не фонтан, так что, если кто-то может > поделится более элегантным решением - буду признателен.
Достаточно традиционный подход, но для уже существующей программы требующий большой перетряски - создается класс "действие" с функциями Do и Undo. Объекты этого класса/его потомков выполняют основную функциональность программы, требующую отката (либо в состоянии корректно вызвать функции, эту функциональность обеспечивающую), и накапливаются в стеке. При откате вызывается Undo последнего объекта, и он перекидывается в другой список для Redo.
|
<programming>
|
Нужна идея как реализовать Undo/Redo в редакторе. 14.11.03 12:15
Автор: tatar_0x4e Статус: Member
|
Есть программа, которая предоставляет пользователю возможность редактировать довольно сложные объекты. Данные об объектах хранятся в XML файле. Хотелось бы предоставить пользователю возможность делать Undo/Redo во время редактирования. Пока что приходит в голову только держать на винте несколькол временных файлов в одном из которых ведется редактирование, а в других сохраняются промежуточные версии. По Undo/Redo, соответственно, менять их местами. Идея не фонтан, так что, если кто-то может поделится более элегантным решением - буду признателен.
|
 |
Нужна идея как реализовать Undo/Redo в редакторе. 14.11.03 12:26
Автор: dl <Dmitry Leonov>
|
> Есть программа, которая предоставляет пользователю > возможность редактировать довольно сложные объекты. Данные > об объектах хранятся в XML файле. Хотелось бы предоставить > пользователю возможность делать Undo/Redo во время > редактирования. Пока что приходит в голову только держать > на винте несколькол временных файлов в одном из которых > ведется редактирование, а в других сохраняются > промежуточные версии. По Undo/Redo, соответственно, менять > их местами. Идея не фонтан, так что, если кто-то может > поделится более элегантным решением - буду признателен.
Достаточно традиционный подход, но для уже существующей программы требующий большой перетряски - создается класс "действие" с функциями Do и Undo. Объекты этого класса/его потомков выполняют основную функциональность программы, требующую отката (либо в состоянии корректно вызвать функции, эту функциональность обеспечивающую), и накапливаются в стеке. При откате вызывается Undo последнего объекта, и он перекидывается в другой список для Redo.
|
 |  |
Добавлю 14.11.03 14:59
Автор: Ktirf <Æ Rusakov> Статус: Elderman
|
Рекомендуемая литература: Гамма и др. Паттерны проектирования (в английском издании - Design Patterns). Там, кстати, в самом начале приводится пример проектирования простенького как-бы-визивиг-редактора.
|
 |  |  |
Спасибо, мысль ясна. 14.11.03 15:19
Автор: tatar_0x4e Статус: Member
|
|
|
|