Popup Menu of Root DataFolders

// This example shows a panel popup menu to list data folders from the root level
// It excludes the Packages folder from the list
// The New selection allows you to create a new data folder from the root level
// NOTE: this does NOT set the location to the folder ... see the comments for details
 
Function MakePanel()
 
    // make a sample panel
    // ... (use your own values here)
    
    NewPanel/W=(10,10,50,50)
 
    // ..
    // strings for popup menu
    
    string theTopFldr = StringFromList(0,ListofRootDataFolders())
    string fldrList = "ListofRootDataFolders()"
 
    // popup menu location, size, and title (change these as you desire)
    
    PopupMenu FolderList,pos={5,13},size={84,20},title="root:"
    
    // popup menu mode, popvalue, value, and procedure
        // do not change these
    
    PopupMenu FolderList, mode=1, popvalue=theTopFldr
        PopupMenu FolderList, value=#fldrList, proc=ChangeFolder
    
    // ..
    
    return 0
end
 
// function to return list of root data folders
 
Function/S ListofRootDataFolders()
 
    string LoFldrs="New;\M1-;", theOne
    variable ic = 0
    do
        theOne = GetIndexedObjName("root:",4,ic)
        if (strlen(theOne)==0)
            break
        endif
        LoFldrs +=  theOne + ";"
        ic += 1
    while(1)
    
    LoFldrs = RemoveFromList("Packages",LoFldrs)
    
    if (strlen(LoFldrs)==0)
        LoFldrs = "-- none --"
    endif
 
    return LoFldrs
end
 
// function to change the data folder
 
Function ChangeFolder(pa) : PopupMenuControl
    STRUCT WMPopupAction &pa
 
    string theFldr = ""
    
    switch( pa.eventCode )
        case 2: // mouse up
                  switch(pa.popNum)
            case 1:     // selection is "New"
                    prompt theFldr, "New folder name?"
                DoPrompt "New Folder", theFldr
                if (V_flag==1)
                    break
                endif
                if (strlen(theFldr)==0)
                    break
                endif
 
                                // create the new folder (but do not go there)
 
                NewDatafolder/O $theFldr
                PopupMenu FolderList, mode=(ItemsInList(ListofRootDatafolders()))
                break
                    
            // put your other cases here for different folders
            // case ....
 
             endswitch
             ControlUpdate FolderList
 
                    // put code here to do something when a folder is selected
                    // ....
 
                    // ....
 
            break
    endswitch
 
    return 0
end

Forum

Support

Gallery

Igor Pro 9

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More