Hi,
I have recently uploaded a patch[1] which provides an undo history dialog. It is similar to those found in e.g. GIMP[2] and Photoshop[3] (I don't know if it's in Illustrator, CorelDRAW, etc). To get an idea what it looks like without having to apply the patch, here's a screencast (in flash, sorry ;) showing it in action: http://www.csc.kth.se/~broberg/undo-history.html
First of all, I'm not sure if this is a requested addition to Inkscape -- I can't recall any discussion about it on the list and I didn't find anything in the wiki. Personally, however, I do find it useful (at least occasionally), so I went ahead and implemented it.
Secondly (if it's found to be of value), this patch could use some rather heavy reviewing. It's my first patch and I'm not confident enough with the code base to feel sure about what the "right" solutions are.
Here are some additional concerns:
* To get the type of an event I rely entirely on the current event context. This obviously not (always) a correct assumption. An example of this problem: setting an object's color while the node tool is the current context.
* In order to populate the tree with icons I added a help function to widget/icon.cpp to get the internal Pixbuf of an icon. This could be solved in much a better way when the gktmmified stock icon system is in place, but for now, this was easiest way for me to solve it.
* There are bugs lurking which I have not been able to reproduce. Some seem to be the result of problems with undoing of certain types of events; i.e. the bugs are in the current code. I'm looking into this... For now, here is at least one I managed to nail down and put in the tracker: http://sourceforge.net/tracker/index.php?func=detail&aid=1423038&gro...
1. http://sourceforge.net/tracker/index.php?func=detail&aid=1423034&gro...) 2. http://docs.gimp.org/images/dialogs/dialogs-undo-history.png 3. http://homepage.cs.uri.edu/tutorials/PhotoshopEl/Help/images/wa_11.gif
-- Gustav Broberg
Yeah yeah, top posting is the devil. ;)
Demo looks pretty cool, can't wait to apply the patch when I get home!
Gustav Broberg wrote:
Hi,
I have recently uploaded a patch[1] which provides an undo history dialog. It is similar to those found in e.g. GIMP[2] and Photoshop[3] (I don't know if it's in Illustrator, CorelDRAW, etc). To get an idea what it looks like without having to apply the patch, here's a screencast (in flash, sorry ;) showing it in action: http://www.csc.kth.se/~broberg/undo-history.html
First of all, I'm not sure if this is a requested addition to Inkscape -- I can't recall any discussion about it on the list and I didn't find anything in the wiki. Personally, however, I do find it useful (at least occasionally), so I went ahead and implemented it.
Secondly (if it's found to be of value), this patch could use some rather heavy reviewing. It's my first patch and I'm not confident enough with the code base to feel sure about what the "right" solutions are.
Here are some additional concerns:
To get the type of an event I rely entirely on the current event context. This obviously not (always) a correct assumption. An example of this problem: setting an object's color while the node tool is the current context.
In order to populate the tree with icons I added a help function to widget/icon.cpp to get the internal Pixbuf of an icon. This could be solved in much a better way when the gktmmified stock icon system is in place, but for now, this was easiest way for me to solve it.
There are bugs lurking which I have not been able to reproduce. Some seem to be the result of problems with undoing of certain types of events; i.e. the bugs are in the current code. I'm looking into this... For now, here is at least one I managed to nail down and put in the tracker: http://sourceforge.net/tracker/index.php?func=detail&aid=1423038&gro...
- http://sourceforge.net/tracker/index.php?func=detail&aid=1423034&gro...)
- http://docs.gimp.org/images/dialogs/dialogs-undo-history.png
- http://homepage.cs.uri.edu/tutorials/PhotoshopEl/Help/images/wa_11.gif
-- Gustav Broberg
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&da... _______________________________________________ Inkscape-devel mailing list Inkscape-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/inkscape-devel
Quoting Gustav Broberg <broberg@...370...>:
I have recently uploaded a patch[1] which provides an undo history dialog.
Hey, this is cool, Gustav!
It's not been talked about much, but it would be nice to have.
- To get the type of an event I rely entirely on the current event context. This obviously not (always) a correct assumption. An example of this problem: setting an object's color while the node tool is the current context.
Probably we'll need to add an extra argument to sp_document_done() to help you out with this.
- There are bugs lurking which I have not been able to reproduce. Some seem to be the result of problems with undoing of certain types of events; i.e. the bugs are in the current code. I'm looking into this... For now, here is at least one I managed to nail down and put in the tracker:
You may also be running into lifecycle issues with the history items. We may need to make them refcounted or something, as it's quite easy for e.g. a ListModel entry to outlast the underlying history item otherwise.
To the list: I'll not have time to review the patch today ... someone else want to do the honors? I'd like to see this get into the tree in some form.
-mental
On 2/2/06, mental@...3... <mental@...3...> wrote:
- To get the type of an event I rely entirely on the current event context. This obviously not (always) a correct assumption. An example of this problem: setting an object's color while the node tool is the current context.
Probably we'll need to add an extra argument to sp_document_done() to help you out with this.
Exactly, and I remember mentioning this a couple times in the past. Mental, you look like the most natural person since you wrote the undo system. Can you do this or help some volunteer to do this? If someone puts in the infrastructure I will go and fill in the annotations for all document_done calls. Then we'll also be able to display them in the Undo/Redo commands in the menu.
To the list: I'll not have time to review the patch today ... someone else want to do the honors? I'd like to see this get into the tree in some form.
I appreciate the patch and like the idea, but I think it should be postponed until the undo annotations are in place, and reimplemented to use them.
-- bulia byak Inkscape. Draw Freely. http://www.inkscape.org
On Thu, 2006-02-02 at 21:09 -0400, bulia byak wrote:
To the list: I'll not have time to review the patch today ... someone else want to do the honors? I'd like to see this get into the tree in some form.
I appreciate the patch and like the idea, but I think it should be postponed until the undo annotations are in place, and reimplemented to use them.
I think that it is still useful without the annotations (though, it is much more useful with them). I think the labeling by tool provides a basic annotation already. I think that it is at least as complete as other dialogs that have yet to be fully completed.
--Ted
On Thu, 2 Feb 2006 21:09:12 -0400 bulia byak <buliabyak@...400...> wrote:
On 2/2/06, mental@...3... <mental@...3...> wrote:
Thanks for the nice feedback!
- To get the type of an event I rely entirely on the current event context. This obviously not (always) a correct assumption. An example of this problem: setting an object's color while the node tool is the current context.
Probably we'll need to add an extra argument to sp_document_done() to help you out with this.
Would it be a good solution to declare an extra set of verbs (describing events on a more fine-grained level than event-context), and then pass one of those to sp_document_done()?
Exactly, and I remember mentioning this a couple times in the past. Mental, you look like the most natural person since you wrote the undo system. Can you do this or help some volunteer to do this? If someone puts in the infrastructure I will go and fill in the annotations for all document_done calls. Then we'll also be able to display them in the Undo/Redo commands in the menu.
I agree with bulia that it would be nice to have this before it's applied and I also fancy the idea of it showing up in the undo/redo items in the menu.
If there are any easy (fail-proof, so to say ;) changes I can do myself, I'd be glad to help out.
-- Gustav Broberg
On 2/3/06, Gustav Broberg <broberg@...370...> wrote:
Would it be a good solution to declare an extra set of verbs (describing events on a more fine-grained level than event-context), and then pass one of those to sp_document_done()?
We already have verbs, but they are too crude for this. Many undoable actions are not done by verbs, and within a single verb there may be several undo commits with different annotations. Besides, these annotations will have to have a special grammatical form, so we can't reuse for example verb descriptions (e.g. "Moves selected object(s) to top" is the description, "moving object(s) to top" is the annotation of what has been done). Finally an annotation may contain changeable parts, e.g. the text that you have typed. So, I think adding a new argument of sp_document_done and writing/constructing an annotation string for each call is the best approach.
-- bulia byak Inkscape. Draw Freely. http://www.inkscape.org
On 2/3/06, Gustav Broberg <broberg@...370...> wrote:
If there are any easy (fail-proof, so to say ;) changes I can do myself, I'd be glad to help out.
Mental, so can you please describe what is needed to do this?
-- bulia byak Inkscape. Draw Freely. http://www.inkscape.org
On 2/3/06, Gustav Broberg wrote:
Exactly, and I remember mentioning this a couple times in the past. Mental, you look like the most natural person since you wrote the undo system. Can you do this or help some volunteer to do this? If someone puts in the infrastructure I will go and fill in the annotations for all document_done calls. Then we'll also be able to display them in the Undo/Redo commands in the menu.
I agree with bulia that it would be nice to have this before it's applied and I also fancy the idea of it showing up in the undo/redo items in the menu.
If there are any easy (fail-proof, so to say ;) changes I can do myself, I'd be glad to help out.
So, what's the end of Undo palette story? :)
Alexandre
On 2/3/06, Gustav Broberg wrote:
I have recently uploaded a patch[1] which provides an undo history dialog. It is similar to those found in e.g. GIMP[2] and Photoshop[3] (I don't know if it's in Illustrator, CorelDRAW, etc). To get an idea what it looks like without having to apply the patch, here's a screencast (in flash, sorry ;) showing it in action: http://www.csc.kth.se/~broberg/undo-history.html
Looks very promising. Can't wait to test it :)
First of all, I'm not sure if this is a requested addition to Inkscape -- I can't recall any discussion about it on the list and I didn't find anything in the wiki. Personally, however, I do find it useful (at least occasionally), so I went ahead and implemented it.
Don't know for others, but I discussed it privately with one of developers using Scribus's implementation of actions history as example. If you are interested, have a look at how it's done in Scribus - there are a global history and object's history modes. It means that you can create a rectangle, chnage it somehow, then create an ellipse and change it, then select rectangle, switch to object's history mode and revert changes made to it without affecting the ellipse. It's a very powerful and useful concept.
P.S. Would it be a good idea to have one top menu for showing/hiding all of palettes?
Alexandre
participants (6)
-
unknown@example.com
-
Alexandre Prokoudine
-
bulia byak
-
Gustav Broberg
-
Joshua A. Andler
-
Ted Gould