Re: [jokosher-devel] Some thoughts on Undo



Ben Thorp wrote:
I've been mulling around the whole "Undo" thing in my head for the last couple of weeks, trying to make sense of something useful I noticed in GNOME. Sadly, I've failed, but I thought I would share it anyway.

One of the nice bits about GNOME/Nautilus (I think, anyway, although I'm not sure what a usability guru would say) is the fact that you have the back and forward arrows, that take you back and forward in history, but you also have the buttons for each level of the filesystem you are in - eg if you are in /home/mrben/.jokosher/projects/ then you can click on a button to go to /home/mrben directly.

This seemed to me an interesting paradigm in the whole "multiple threads" debate over unlimited undo, and I wondered if there was an obvious way to incorporate this into Jokosher. Sadly, I couldn't think of anything obvious :( The only real thought I had was maybe a set of buttons representing all of the applied actions, and then allowing the user to "toggle" some of the actions on and off, but I don't know how that would work in practice. (ie, if you applied an effect to one track 15 operations ago, you could toggle that effect change to off without affecting the 15 operations since.....)


No you can't. You would have to undo all 15 actions. But if you think about it this is what nautilus is doing when you click on one of the folders in the folders bar.

If you can't think of "anything obvious", then take a look at how the gimp does it. After opening an image go to Dialogues => Undo History and you will get a nice dialog with a list of all the actions. Clicking on the item at the top will undo all changes. Clicking at the bottom will redo all changes.

As I recall the reason this wasn't implemented was that we didn't have a way to provide a name for each individual action. We would need a string for every function which is decorated by UndoSystem.UndoCommand and a way to translate everyone of those strings.

We would need a way to deal with the AtomicUndoAction (which are new in 0.9). These are a collection of function calls that the user perceives as a single action. An example would be adding multiple instruments, or a trim (which is really two splits and two deletes). I think we would want to show each AtomicUndoAction as only one action or else it ruins the illusion of being atomic. But that would mean that we need to not just have strings for every function, but also every combination of undo actions that will be put together in an AtomicUndoAction. This may become a lot of work to translate all these strings, but it would definitely help the usability to see what changed.

The problem of having too many strings and adding this functionality to the undo system is not insurmountable, it just depends on how much people want this feature.

Laszlo



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]