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
//___________________________________________________________________________________________________
"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:
// Hook function to call when Igor starts
Function IgorStartOrNewHook(String igorApplicationNameStr)
getUpTime()
End
//___________________________________________________________________________________________________
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