The below script helps to manage different large projects with a vast number of procedure files.
Just add the desired procedure file in the panel and then load/unload it with one click or CTRL+6 to siwtch the included state.
#pragma rtGlobals=3 // Use modern global access method and strict wave access.
#pragma version=0.1
#pragma igorVersion=6.3
#pragma IndependentModule=IncludeLoader
// Author: thomas aht braun dot byte minus physics dot de
// Feb 2018
static StrConstant panel = "IncludeLoader"
Menu "MyMacros"
"IncludeLoader",/Q, CreatePanel()
"Switch Inluded State/6",/Q, SwitchState()
End
Function CreatePanel()
DoWindow $panel
if(V_Flag)
KillWindow $panel
endif
NewPanel/W=(150,77,350,150)/N=$panel/K=1
Button button0,pos={76,7},size={50,20},proc=$(GetIndependentModuleName() + "#ButtonProcLoadUnload")
SetVariable setvar0,pos={37,38},size={159,16},title="Includes: "
SetVariable setvar0,value= _STR:""
UpdatePanel()
End
static Function/S GetIncludes()
DoWindow $panel
if(!V_Flag)
return ""
endif
ControlInfo/W=$panel setvar0
return S_value
End
static Function isIncludeLoaded()
string includeFiles = GetIncludes()
/// @todo handle properly
string includeFile = StringFromList(0, includeFiles)
string list = WinList(includeFile + ".ipf", ";", "WIN:128")
return ( strlen(list) != 0 )
End
Function SwitchState()
variable i, numItems
string includeFile, includeFiles
includeFiles = GetIncludes()
numItems = ItemsInList(includeFiles)
for(i = 0; i < numItems; i += 1)
includeFile = StringFromList(i, includeFiles)
if(isIncludeLoaded())
Execute/P/Q "DELETEINCLUDE \"" + includeFile + "\""
else
Execute/P/Q "INSERTINCLUDE \"" + includeFile + "\""
endif
endfor
Execute/P/Q/Z "COMPILEPROCEDURES "
// update the panel after loading/unloading the include
Execute/P/Q/Z GetIndependentModuleName() + "#UpdatePanel()"
End
Function ButtonProcLoadUnload(ba) : ButtonControl
STRUCT WMButtonAction &ba
switch(ba.eventCode)
case 2: // mouse up
SwitchState()
break
case -1: // control being killed
break
endswitch
return 0
End
Function UpdatePanel()
if(isIncludeLoaded())
Button button0, win=$panel, title="Unload"
else
Button button0, win=$panel, title="Load"
endif
End