
Generate Menu String Based on Package Existing (with Panel Shown)
This code will build a menu return string to call a function in a package based on input for three options
- Does a graph window exist?
- Does a specific function exist that defines the entrance point for a specific package?
- [optional] Is a specific panel that is associate with the package already showing?
Function/S BuildMenuStr(string package, string rStr, [string actpanel]) string fWin = WinName(0,1) if (ParamIsDefault(actpanel)) if ((strlen(fWin) == 0) || (exists(package) == 0)) rStr = "\\M1(" + rStr endif else if ((strlen(fWin) == 0) || (exists(package) == 0)) rStr = "\\M1(" + rStr else if (ItemsInList(WinList(actpanel,";","WIN:64")) != 0) rStr = "\\M1(" + rStr + " (active)" endif endif endif return rStr end
By example, using Tony's Baselines package, I call this in one of my analysis package menu options.
BuildMenuStr("Baselines#Initialise","Generate Baselines",actpanel="BL_panel"), /Q, StartBaselines()
The menu return appears as
--> INACTIVE Generate Baselines - cannot select when front window is not a graph or baselines package is not loaded
--> ACTIVE Generate Baselines - can select when front window is a graph, baselines package is loaded, and baselines is not active on front window
--> INACTIVE Generate Baselines (active) - cannot select because front graph window already has baselines panel attached
EDIT -- A more secure approach is to check for the panel in WinList(...), since this returns it whether it is external or not.

Forum

Support

Gallery
Igor Pro 10
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More