Realistically, are users ever going to backtrack through more than ~300 levels of undo anyway?
Easy :) Real drawing sessions may span hours and hours. Right now, however, a crash is a more likely outcome of being in Inkscape for too long, but in the future...
My opinion is that a vector app must have unlimited undo, or at least very large. It's the promise of the vector: everything is preserved, no loss of information. Unlimited undo is part of that appeal.
One thing: right now subsequent arrow-key movements are stored as separate undo steps. I'd like to combine all adjacent moves in one direction (only horizontal or only vertical) in one step. Is there already a mechanism for that, or do I have to dig into the undo system to implement it?
_________________________________________________________________ STOP MORE SPAM with the new MSN 8 and get 2 months FREE* http://join.msn.com/?page=dept/bcomm&pgmarket=en-ca&RU=http%3a%2f%2f...
I agree with Bulia and others.
Unlimited undos is seemingly doable and can set this project apart from others. It is a nice challeng.
I see that Xara X supports unlimited undos.
Programs like alias maya have a feature called history where every step made to a 3d model is saved, so that you can go back in time at any point. (www.alias.com).
I think for now we just should stick with lots of undo, or preference based amount of undos, but should be a strong feature to implement in the future.
jon
On Mon, 2003-12-08 at 19:44, bulia byak wrote:
Realistically, are users ever going to backtrack through more than ~300 levels of undo anyway?
Easy :) Real drawing sessions may span hours and hours. Right now, however, a crash is a more likely outcome of being in Inkscape for too long, but in the future...
My opinion is that a vector app must have unlimited undo, or at least very large. It's the promise of the vector: everything is preserved, no loss of information. Unlimited undo is part of that appeal.
One thing: right now subsequent arrow-key movements are stored as separate undo steps. I'd like to combine all adjacent moves in one direction (only horizontal or only vertical) in one step. Is there already a mechanism for that, or do I have to dig into the undo system to implement it?
STOP MORE SPAM with the new MSN 8 and get 2 months FREE* http://join.msn.com/?page=dept/bcomm&pgmarket=en-ca&RU=http%3a%2f%2f...
This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ _______________________________________________ Inkscape-devel mailing list Inkscape-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/inkscape-devel
On Mon, 2003-12-08 at 22:51, Jonathan Phillips wrote:
I agree with Bulia and others.
Unlimited undos is seemingly doable and can set this project apart from others. It is a nice challeng.
I see that Xara X supports unlimited undos.
Programs like alias maya have a feature called history where every step made to a 3d model is saved, so that you can go back in time at any point. (www.alias.com).
I think for now we just should stick with lots of undo, or preference based amount of undos, but should be a strong feature to implement in the future.
Okay, you've sold me.
It also happens to be a very easy feature to implement -- all we have to do is delete a few lines of code.
I think it'd be a good thing to have for the 0.36 release. ^_^
-mental
I agree.
IMO we gotta set ourselves apart from the other projects.
jon
On Mon, 2003-12-08 at 20:20, MenTaLguY wrote:
On Mon, 2003-12-08 at 22:51, Jonathan Phillips wrote:
I agree with Bulia and others.
Unlimited undos is seemingly doable and can set this project apart from others. It is a nice challeng.
I see that Xara X supports unlimited undos.
Programs like alias maya have a feature called history where every step made to a 3d model is saved, so that you can go back in time at any point. (www.alias.com).
I think for now we just should stick with lots of undo, or preference based amount of undos, but should be a strong feature to implement in the future.
Okay, you've sold me.
It also happens to be a very easy feature to implement -- all we have to do is delete a few lines of code.
I think it'd be a good thing to have for the 0.36 release. ^_^
-mental
On Mon, 2003-12-08 at 22:51, Jonathan Phillips wrote:
Programs like alias maya have a feature called history where every step made to a 3d model is saved, so that you can go back in time at any point. (www.alias.com).
I think for now we just should stick with lots of undo, or preference based amount of undos, but should be a strong feature to implement in the future.
Ohh, you mean saving the undo history in the file. Yeah, that's worth some thought...
-mental
On Mon, 2003-12-08 at 23:22, MenTaLguY wrote:
On Mon, 2003-12-08 at 22:51, Jonathan Phillips wrote:
Programs like alias maya have a feature called history where every step made to a 3d model is saved, so that you can go back in time at any point. (www.alias.com).
I think for now we just should stick with lots of undo, or preference based amount of undos, but should be a strong feature to implement in the future.
Ohh, you mean saving the undo history in the file. Yeah, that's worth some thought...
Thinking about it, embedding the editing history in an XML document should actually be pretty trivial.
I guess the only question is whether users would mind the (potentially considerable) space it could take up.
Hmm, one interesting problem would be is if the document were edited in an external tool in such a way as to render the edit history partially invalid. Recovery strategies for that might prove interesting (but probably not intractable)...
-mental
On Mon, 8 Dec 2003, MenTaLguY wrote:
Date: Mon, 08 Dec 2003 23:22:50 -0500 From: MenTaLguY <mental@...3...> To: Inkscape ML inkscape-devel@lists.sourceforge.net Subject: Re: [Inkscape-devel] max undo
On Mon, 2003-12-08 at 22:51, Jonathan Phillips wrote:
Programs like alias maya have a feature called history where every step made to a 3d model is saved, so that you can go back in time at any point. (www.alias.com).
I think for now we just should stick with lots of undo, or preference based amount of undos, but should be a strong feature to implement in the future.
Ohh, you mean saving the undo history in the file. Yeah, that's worth some thought...
This gets more into Revision tracking which is not really what I had in mind and probably more hassle than it is worth to implement directly in Inkscape. If I seriously wanted Revision tracking I'd be shouting out for WebDAV (Web Distributed Authoring and Versioning) and maybe an autosave feature. (I know some Dia users use CVS to do version tracking on their documents, and I think some of them even found an XML aware diff program to make things more efficient.
- Alan
On Tue, 2003-12-09 at 13:20, Alan Horkan wrote:
This gets more into Revision tracking which is not really what I had in mind and probably more hassle than it is worth to implement directly in Inkscape. If I seriously wanted Revision tracking I'd be shouting out for WebDAV (Web Distributed Authoring and Versioning) and maybe an autosave feature. (I know some Dia users use CVS to do version tracking on their documents, and I think some of them even found an XML aware diff program to make things more efficient.
Yeah. The other thing is that if we're storing the revision history, we're already storing most (or all) of the document anyway just in the journal. It'd be kind of hard to justify using SVG as our standard container if we went that way.
-mental
On Mon, 2003-12-08 at 22:44, bulia byak wrote:
Realistically, are users ever going to backtrack through more than ~300 levels of undo anyway?
Easy :) Real drawing sessions may span hours and hours. Right now, however, a crash is a more likely outcome of being in Inkscape for too long, but in the future...
I still have a hard time imagining anyone doing nothing but clicking on 'undo' for several minutes on end, but ok... ^_-
Actually, you know what would be cool? A "snapback" feature for undo like Apple's Safari browser has for its navigation history.
One thing: right now subsequent arrow-key movements are stored as separate undo steps. I'd like to combine all adjacent moves in one direction (only horizontal or only vertical) in one step. Is there already a mechanism for that, or do I have to dig into the undo system to implement it?
Yes, there's already a facility present for that: sp_document_maybe_done().
sp_document_maybe_done(), like sp_document_done(), completes a transaction and pushes the transaction journal onto the undo stack.
All that should be necessary is to replace a couple calls to sp_document_done() in select-context.c.
maybe_done() takes a constant string "key" as a parameter; if it's called multiple times sequentially with the same key, all those actions will be merged into one undo step.
The key doesn't actually mean anything, it just has to identify a particular type of action. I might suggest "keyboard-move-horizontal" and "keyboard-move-vertical".
-mental
On Mon, 8 Dec 2003, MenTaLguY wrote:
On Mon, 2003-12-08 at 22:44, bulia byak wrote:
Realistically, are users ever going to backtrack through more than ~300 levels of undo anyway?
Easy :) Real drawing sessions may span hours and hours. Right now, however, a crash is a more likely outcome of being in Inkscape for too long, but in the future...
I still have a hard time imagining anyone doing nothing but clicking on 'undo' for several minutes on end, but ok... ^_-
Actually, you know what would be cool? A "snapback" feature for undo like Apple's Safari browser has for its navigation history.
This sounds like it could be a good solution to consider - what is it in more detail? It sort of sounds like allowing the user to set "bookmarks" on the undo transaction log, which would solve the backtracing issue.
Another approach could be to allow access to the undo log through a list or tree interface, akin to the XML editor. Then they could randomly jump around in the transaction log as needed.
Also, we general talk about the undo transaction log as being linear, however one thing to consider if we are going to allow the user to hop around in history is representing it as a tree instead. The user could hop 42 changes back, then make a sequence of changes, but decide they don't like that and want to go back to where they were originally. Many professional artists I've worked with have operated in a manner that would map like this, and having full access to the breadth as well as depth of their changes would seem like a very useful feature for them.
Nathan mentioned another idea - per-object transaction logs, so that, for instance, the context menu for the object would allow stepping back through its changes. This might get tricky for situations like if the object has been split or joined, etc. and how restoring the changes to an object affects the global undo log, but if that could be resolved it'd be very cool.
Bryce
Bryce Harrington wrote:
Also, we general talk about the undo transaction log as being linear, however one thing to consider if we are going to allow the user to hop around in history is representing it as a tree instead. The user could hop 42 changes back, then make a sequence of changes, but decide they don't like that and want to go back to where they were originally. Many professional artists I've worked with have operated in a manner that would map like this, and having full access to the breadth as well as depth of their changes would seem like a very useful feature for them.
Nathan mentioned another idea - per-object transaction logs, so that, for instance, the context menu for the object would allow stepping back through its changes. This might get tricky for situations like if the object has been split or joined, etc. and how restoring the changes to an object affects the global undo log, but if that could be resolved it'd be very cool.
I put both these ideas on the wiki at: http://www.inkscape.org/cgi-bin/wiki.pl?BreadthFirstUndo
I don't know if either are a) implementable or b) useful, but they were the first two extensions of undo I could think of.
Revision control is another interesting idea, and I'm not sure that it would be hard to support - and inkscape 'file' could actually be an RCS file of the inkscape file. every edit can be put into RCS in the background. Keeping undo between edits would be cool.
njh
On Tue, 2003-12-09 at 14:25, Bryce Harrington wrote:
Nathan mentioned another idea - per-object transaction logs, so that, for instance, the context menu for the object would allow stepping back through its changes. This might get tricky for situations like if the object has been split or joined, etc. and how restoring the changes to an object affects the global undo log, but if that could be resolved it'd be very cool.
I'm not sure it's totally soluable, though. There are a lot of inter-object validity constraints -- it would be akin to introducing per-table transactions in a database with complex inter-table relationships and triggers.
Only a small subset of constellations of various object revisions would represent a valid document.
-mental
participants (6)
-
Alan Horkan
-
Bryce Harrington
-
bulia byak
-
Jonathan Phillips
-
MenTaLguY
-
Nathan Hurst