Autosave

Mike Bonner bonnmike at gmail.com
Thu Aug 20 22:21:14 CEST 2015


store the current filename of the stack.
set the filename of the stack to whatever backup name you want
save the stack.
set the filename of the stack back to how it started

Also, from your example, using " / " as part of the filename would probably
be a bad idea since / is a directory separator. If you already have
directories set up, then it would be fine, but since you're using the live
time and date to do this, its unlikely thats what you were going for.
Change it to "_" maybe.

Just a quick and dirty example, but..

on mouseUp
   set the defaultfolder to specialfolderpath("desktop") --just so I can
mess around

   palette this stack
   wait 0 with messages -- to make sure the palette is complete before
moving on

   put the short name of the topStack into TSTAK
   put TSTAK & "_"& the time & "_" & the date into TSTAKN

   replace "/" with empty in TSTAKN -- remove slashes

   replace space with empty in TSTAKN-- the time has a space in it (for AM
PM)
   put TSTAKN into fld "TSTAKN"

-- make sure its been saved before and if so..
   if the filename of the topstack is not empty then
      put the filename of the topstack into tOldFilename -- store the main
filename

      set the filename of the topstack to TSTAKN -- set the temporary
filename
      save stack (the short name of the topstack) -- save the stack
      put the result -- Just so I could see any errors
      set the filename of the topstack to tOldFilename -- revert to the
main filename
   else
-- if it wasn't saved already..
-- set the filename
      set the filename of the topstack to (the short name of the topstack &
".livecode")

-- warn the user that the file will be saved
      answer information "Performing first stack save"

-- save the file
      save the topstack-- as (the short name of the topstack & ".livecode")

   end if
end mouseUp

Obviously, you'll end up with a cleaner script that catches potential
problems, but it seems to work fine.

If you really want the slashes and spaces in there, I _THINK_ you might be
able to pass in a full quoted string.. The spaces are relatively common and
could be worked around, but I'd be avoiding the slashes.

On Thu, Aug 20, 2015 at 1:40 PM, Richmond <richmondmathewson at gmail.com>
wrote:

> On 19/08/15 23:03, Richard Gaskin wrote:
>
>> Richmond wrote:
>>
>>> Why does this script NOT work in a small stack?
>>>
>>> on mouseUp
>>>     palette stack "AUTOSAVE"
>>>     put the short name of the topStack into TSTAK
>>>     put TSTAK & " / " &  the time & " / " & the date into TSTAKN
>>>     put TSTAKN into fld "TSTAKN"
>>>     save the topstack as TSTAKN
>>> end mouseUp
>>>
>>
>> Does it work on a large stack?
>>
>
> By "small stack' I meant that that script is contained in a button on a
> palettised stack, and is meant to save another stack.
> It does put the data into the fld "TSTAKN" but does NOT save the top stack.
>
> The idea is to convert this code into the cardStack of a palette with a
> time interval so it serves as a version saver.
>
> But any sort of script to save a stack under a different name seems
> problematic:
>
> save stack "HEX rotate" as "Granny goes gay"
>
> doesn't work either.
>
>
>> It might be problematic with a stack of any size since the date returns a
>> value that contains "/", which is used as a path delimiter on OS X and
>> Linux.
>>
>> What does "the result" give you after the save command?
>>
>
> "can't open stack file"
>
>
>> If instead of changing the path of the current stack what you're looking
>> to do is make a copy of it to a new location, I'd make a copy of the file
>> itself and leave the in-memory stack alone.
>>
>> --
>>  Richard Gaskin
>>
>
> Richmond.
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>


More information about the use-livecode mailing list