Auto-start when procedure file is compiled
JimProuty
Use a dynamic Menu definition to do two things:
1) Return the menu item string, as per normal.
2) Schedule the starting-up code with Execute/P.
Here's a demo. Copy and paste into the Procedure window and somehow cause compilation to occur (by, say, simply closing the Procedure window):
Menu "Macros", dynamic
AutoStartMenu(),/Q,DoNormalStuff()
End
Function/S AutoStartMenu()
// Test if auto start is needed
NVAR/Z haveStarted= root:gHaveStarted
if( !NVAR_Exists(haveStarted) )
Variable/G root:gHaveStarted=1 // do this now to prevent double scheduling
Execute/P/Q/Z "StartUp()"
endif
return "Do Normal Stuff"
End
Function StartUp()
DoAlert 0, "Starting Up"
End
AutoStartMenu(),/Q,DoNormalStuff()
End
Function/S AutoStartMenu()
// Test if auto start is needed
NVAR/Z haveStarted= root:gHaveStarted
if( !NVAR_Exists(haveStarted) )
Variable/G root:gHaveStarted=1 // do this now to prevent double scheduling
Execute/P/Q/Z "StartUp()"
endif
return "Do Normal Stuff"
End
Function StartUp()
DoAlert 0, "Starting Up"
End
Forum
Support
Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More
DoAlert 0, "Starting Up"
killvariables/Z root:gHaveStarted // killing variable here causes next compile to rerun this function
return 0
end
--
J. J. Weimer
Chemistry / Chemical & Materials Engineering, UAH
January 25, 2010 at 06:06 pm - Permalink