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 8

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More