
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 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More