/*////////// SCRIPT: SaveFile Reminder v1.2 //////////*/ /*////////// WRITTEN BY: Branko Zivkovic //////////*/ /*////////// EMAIL: barigazy@hotmail.com //////////*/ macroScript SFR category:"bgaTools" buttonText:"S • F • R" toolTip:"SaveFile Reminder" Icon:#("SubObjectIcons",29) ( global sfrRoll, isOn = off rollout sfrRoll "Time Setup" ( local notifier = dotNetObject "Timer" fn preRender n = (n.Enabled = off ; format "Render started at %\n" (n.tag[3].value.Now.ToShortTimeString())) fn postRender n = (n.Enabled = on ; format "Render finished at %\n" (n.tag[3].value.Now.ToShortTimeString())) spinner spn_nt "notifying time [minutes] :" pos:[5,5] fieldwidth:40 type:#integer range:[1,1440,5] on sfrRoll open do ( notifier.tag = #(dotNetMXSValue (dotNetClass "System.Timespan"), dotNetMXSValue (dotNetClass "ManagedServices.AppSDK"), dotNetMXSValue (dotNetClass "System.DateTime")) dotNet.addEventHandler notifier "Tick" \ ( fn clockTick s e = if (s.tag[2].value).IsSaveRequired() do ( s.stop() ; (s.tag[2].value).CheckForSave() ; format "Saved at %\n" (s.tag[3].value.Now.ToShortTimeString()) ; s.start() ) ) dotNet.setLifetimeControl notifier #dotnet notifier.Stop() ; autosave.Enable = on ) on sfrRoll close do if isOn do ( notifier.interval = ((notifier.tag[1].value).FromMinutes(spn_nt.value)).TotalMilliseconds as integer notifier.Start() ; autosave.Enable = off ) ) on isChecked return isOn on execute do ( isOn = not isOn if not isOn then (sfrRoll.notifier.Stop() ; autosave.Enable = on ; callbacks.removescripts id:#disable_notification) else ( try(destroyDialog ::sfrRoll)catch() createDialog sfrRoll 180 25 style:#(#style_titlebar, #style_sysmenu, #style_toolwindow) callbacks.addscript #preRender "sfrRoll.preRender sfrRoll.notifier" id:#disable_notification callbacks.addscript #postRender "sfrRoll.postRender sfrRoll.notifier" id:#disable_notification ) ) )