Ticket #223 (new enhancement)

Opened 3 years ago

Last modified 2 years ago

Implement undo/redo

Reported by: mekstran Assigned to: mekstran
Priority: minor Milestone:
Component: Goanna Version:
Keywords: Cc:
Blocking:

Description

At some point, it would be nice if Goanna could sport some kind of undo/redo interface.

Storing files temporarily using sqlite might be a feasible solution to this.

Change History

05/22/07 15:31:56 changed by mekstran

  • blocking changed.

OK, I've got a proposal for a solution. The SQLite thing would be interesting, but implementing a second procedural/relational store behind Goanna (as fun as it would be) isn't practical. I'm documenting the solution over at Goanna/UndoManager.

05/22/07 15:54:17 changed by mekstran

Alternative idea proposed by Brett: implement undo/redo as file snapshots. This could also be done with in-memory copies of the XML tree.

This would require the load code to be refactored and modified so it isn't dependent on throwing the world away. Saved objects would need a way of updating themselves (and their children) from an XML tree, as opposed to simply being constructed. This also means that a parent would need to know enough about its children's structure to be able to find the appropriate child for a given element... not sure on that one.

The undo manager provides a bit more granularity and a conceptually cleaner mechanism. I'm not sure which is easier to implement. I also don't know which is more efficient. An in-memory ring of XML trees, capped at something like 100, wouldn't be difficult to do - the difficulty is making the model updatable from Goanna XML.

05/22/07 16:51:08 changed by mekstran

  • priority changed from major to minor.

Low-priority issue.