As other have said, the basic mechanism is to have a UNDO LIFO (last in first out) queue or stack (no LC stack for a data structure stack). For each action you want 'undoable" you need a handler (do[action] ) to perform that action that also adds a record (a line) to the queue (a property, global variable, or script variable) that puts enough information in that record to undo the action. You then you have a corresponding undo[action] handler that can take the record from the queue and reverse the action.

So records on the queue might look like:

changeFont <oldFont> <newFont> <chunk>  -- which can be undone by setting the <chunk> to <oldFont>
resizeImage <oldSize> <newSize>
etc.

The first item tells you action was done and the subsequent items provide enough information to undo (or do again or redo) the action.


On 5/21/2021 10:52 AM, Klaus major-k via use-livecode wrote:
Hi Mark,

Am 21.05.2021 um 16:42 schrieb Mark Wieder via use-livecode 
<[email protected]>:
On 5/21/21 6:19 AM, Klaus major-k via use-livecode wrote:
OK, something like this, but for graphics, images etc., too. 8-)
Some general hints will be OK.
Except for TEXT I don't have a clue yet.
Maybe store "the properties of xyz" and re-apply them when the user hits CMD-Z?
I've got an undo library on livecodeshare. It's designed to handle text, but 
the filo stack mechanism would probably work if you store something other than 
text as blobs. Untested, but maybe. My guess is this would use up memory 
rapidly.
...and from experience, don't try to compress/decompress arrays.
thank you, will download and check the stack.

--
Mark Wieder
[email protected]
Best

Klaus

--
Klaus Major
https://www.major-k.de
https://www.major-k.de/bass
[email protected]


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


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

Reply via email to