
Up-Time counter

cpr
Super simple panel that displays how long Igor has been running:
Menu "Tools" "Up-time",/Q,getUpTime() end //___________________________________________________________________________________________________ // update the up-time panel with the current up-time of Igor Function upTimeTask(s) // This is the function that will be called periodically STRUCT WMBackgroundStruct &s SetVariable valdisp0 Win=upTimePanel, value=_STR:Secs2Time(ticks/60,5) return 0 // Continue background task end //___________________________________________________________________________________________________ // create a panel displaying the current up-time of Igor Function getUpTime() // get up-time panel if it exists if (ItemsInList(WinList("upTimePanel",";","WIN:64"))) DoWindow/F upTimePanel else // create up-time task Variable numTicks = 1 * 60 // 60 ticks = 1 second CtrlNamedBackground upTime, period=numTicks, proc=upTimeTask CtrlNamedBackground upTime, start // create up-time window Newpanel/K=1/NA=2/W=(0,0,120,20)/N=upTimePanel as "" SetVariable valdisp0, Win=upTimePanel, size={120,20},font='Nexa Light',frame=0, title="Up-Time:",value=_STR:time(),help={"The current up-time of Igor "+num2str(IgorVersion())} ModifyPanel/W=upTimePanel, cbRGB=(65534,65534,65534) SetWindow upTimePanel, hook(MyHook) = upTimeWindowHook endif end //___________________________________________________________________________________________________ // Stop the background task Function StopUpTimeTask() CtrlNamedBackground upTime, stop dowindow/K upTimePanel End //___________________________________________________________________________________________________ // Stop the background task if the window is killed Function upTimeWindowHook(s) STRUCT WMWinHookStruct &s Variable hookResult = 0 switch(s.eventCode) case 2: // window killed StopUpTimeTask() break endswitch return hookResult // 0 if nothing done, else 1 end //___________________________________________________________________________________________________


Forum

Support

Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More
The set variable report uses a font that may not be on everyone's computer. You might simply delete the font selection.
Eventually, someone could add a button to report the up-time to the history (e.g. as a record of some time tracking on an experiment).
Thanks for the snippet!
June 1, 2021 at 10:34 am - Permalink
@jjweimer - I think I have that font on absolutely everything, so much that I forget it's even set. It's part of our facility's identity after rebranding.....
Never-the-less if it isn't available the Igor default is used without error from recollection, though it can be safely deleted or altered.
I have this start when Igor starts with e.g. this hook:
My version seems to have a different help string that includes the full version and build number should anyone like that add the following in getUpTime():
Edit: Here is a menu item to simply print the current up-time of Igor in the history area as jjweimer suggested:
"Print up-time to history",/Q,Print "Up-Time: "+Secs2Time(ticks/60,5)
June 1, 2021 at 12:16 pm - Permalink