GLL Example: AutoSave

The original GFA implementation of the auto save feature.

 

Sub Gfa_Init

'

' Add menu item for AutoSave

'

Global Int IdxAutosave = Gfa_AddMenu("&AutoSave", Menu_Autosave)

Gfa_MenuCheck(idxautosave) = Gfa_IntSetting("Auto_Save") And 1

Gfa_MenuDesc(idxautosave) = "Autosave every 5 minutes"

EndSub

 

Sub Menu_Autosave(idx%)

Gfa_MenuCheck(idx) = !Gfa_MenuCheck(idx)

Gfa_IntSetting("Auto_Save") = -Gfa_MenuCheck(Idx)

EndSub

 

Sub Gfa_Minute          // autosave every 5 Minutes

Local Date d

Local st_old$

// Don't save if not wanted

If !Gfa_MenuCheck(IdxAutosave) Then Exit Sub

// Don't save empty program

If Gfa_LineCnt == 0 Then Exit Sub

// Changes have bee saved before

If !Gfa_Dirty Then Exit Sub

// Get filetime of the autosave file

Try

d = FileDateTime(TempDir & "temp.g32")

Catch

d = 0.0

EndCatch

// When not older then 4.5 Minuten

// (1 day / 24 (hours) / 60 (Minutes)) * 4.5

// so 5 minutes or older is

If d > Now - (1 / 24 / 60) * 4.5

Exit Sub    //do nothing

EndIf

// Change statusbar

st_old = Gfa_StatusText

Gfa_StatusText = "Autosave as " & TempDir & "temp.g32"

Gfa_SaveFile TempDir & "temp.g32"

Gfa_StatusText = st_old

End Sub

{Created by Sjouke Hamstra; Last updated: 08/10/2014 by James Gaite}