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?
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