In this situation - undoes over a period of time - would not a time/date stamp 
within the array provide such a temporal key order?
Best,
Keith..

On 8 Dec 2011, at 16:40, Bob Sneidar wrote:

> If there were a property that contained all of the standard properties of an 
> object, you could simply store the array for that object in another array 
> with 4 keys: The first being the version of the undo (for multiple undo's), 
> the long id of the object, the defaultProperties (??) of the object, and the 
> customProperties of the object. Here is where storing keys in an array in the 
> order they were added would be REALLY handy, but alas, Livecode don' play 
> dat! 
> 
> It's not very efficient storing both property sets in full, but much simpler 
> to work with. This way you would not have to trap for every change a user 
> could make to an object. 
> 
> Bob
> 
> 
> On Dec 8, 2011, at 8:02 AM, Ken Ray wrote:
> 
>> 
>> On Dec 7, 2011, at 1:28 PM, Alejandro Tejada wrote:
>> 
>>> Hi All,
>>> 
>>> I am trying to create an Undo function
>>> for one of my stacks.
>>> 
>>> Not sucessful at all. Everything seems so simple,
>>> but it failed everytime.
>>> 
>>> The model that I am using for this task is the
>>> "History palette" used in Photoshop:
>>> http://livedocs.adobe.com/en_US/Photoshop/10.0/help.html?content=WSfd1234e1c4b69f30ea53e41001031ab64-7497.html
>>> 
>>> Now, I am asking for advice from all of you
>>> that have created similar function for your
>>> applications or stacks.
>> 
>> Al, I've done that for my Stykz animation program, but only focused on 
>> objects (it doesn't do any text undoing). You basically need to store the 
>> state of an object before it is manipulated by the user so that you can 
>> reinstate the same state after it's 'undone'. With the exception of actions 
>> that physically destroy an object (like a "cut" or "delete" command), the 
>> methods to choose from would fall into these three categories:
>> 
>> 1) Using 'save' and 'revert'
>> 2) Store a physical copy of the original object, and then copy it back again 
>> on an "undo"
>> 3) Storing/restoring all the properties of an object
>> 
>> #1 is very touchy and doesn't give you the ability for multiple undos/redos 
>> (which would seem to be your intention with the History palette), so you can 
>> ignore that one.
>> 
>> #2 could be used, but you're deleting and copying objects which will use up 
>> object IDs rather quickly, and it is also a pain if the objects in question 
>> are inside of a group at a specific layer in the group. 
>> 
>> #3 seemed to be the best choice for me, with #2 being used only when the 
>> user wanted to cut or delete an object (I have an offscreen stack I use to 
>> hold the objects in that instance.
>> 
>> Basically you want to store the properties of an object *before* they are 
>> manipulated by the user; if someone's doing that through an interface (like 
>> changing the fill color of a graphic), you can store the old fill color 
>> before you change it to the color they selected. It's a little trickier with 
>> resizing/moving objects themselves, but it can be done. It's more of a pain 
>> if you're giving the user the pointer tool, but it can be done there as 
>> well. The bottom line is you need a message you can trap that will take 
>> place *before* the user's action, then store the relevant property(ies) in 
>> your undo history list, and then let the user's actions take place.
>> 
>> Hope this helps,
>> 
>> Ken Ray
>> Sons of Thunder Software, Inc.
>> Email: k...@sonsothunder.com
>> Web Site: http://www.sonsothunder.com/       
>> 
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode@lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription 
>> preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to