[squeak-dev] Re: Re: Undoable environment ?

dpharris at telus.net dpharris at telus.net
Wed Apr 30 21:04:13 UTC 2008


Quoting tim Rowledge <tim at rowledge.org>:

> 
> On 30-Apr-08, at 1:18 PM, itsme213 wrote:
> 
> > "Gary Chambers" <gazzaguru2 at btinternet.com> wrote in message
> >
> >> Can you explain the general functionality you are hoping to obtain?
> >
> > Generic undo of arbitrary domain-object actions with no extra effort.
> Unless you propose to make a practical completely reversible  
> computational system I suspect you are heading for some disappointment.
> 
> Not all actions have trivially derivable inverse actions. Consider a  
> real example from Sophie that occupied me for several days; inserting  
> a character into a paragraph. Sound pathetically simple, doesn't it?
> 
> Until you realise that the character might be carrying a style that is  
> not the same as the text where it is being inserted. Or that the  
> insertion point is in between two adjacent pagebreaks.
> If the character's style matches the style of where it is being  
> inserted, you can simply stick the Character into the relevant String.  
> The undo record would record the insertion index; simple.
> If the character style doesn't match, then you have to split the  
> string, make a new string for the character, insert that into the  
> paragraph. Of course, the insertion point might be at the very  
> beginning or end of the string and that adds some extra twists. The  
> undo record needs to record that a new string was added instead of  
> merely a Character being put into a String. The undo action has to  
> remove that string and remerge the split halves if needed. Oh, and all  
> cases have to make sure that any annotations like highlighting get  
> updated to account for the splitting, inserting, merging etc.
> 
> tim
> --
> tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
> Strange OpCodes: ESBD: Erase System and Burn Documentation

But surely all that logic is built into the application, so the inverse 
operation is 'delete character at insertion index' - since you obviously need 
this functionality.  Nobody said it was easy or trivial.

David



> 
> 
> 
> 







More information about the Squeak-dev mailing list