DataBrowser Folder Versioning Button

// This installs or removes a VersionFolder button in the DataBrowser
// The VersionFolder button will create a duplicate of the currently selected data folder
// with a date+time stamp appended to it:  'folder name'YYMMDDHHSS
// Copy this to the procedure window, compile, open a Data Browser,
// and then type InstallVersions() on the command line
// Select a data folder to version and click the VersionFolder button
// Remove the button by typing RemoveVersions() at the command line
// This also works with multiple data folders selected ... it will parse and run the command on each one
// It may choke on data folders with long names!
 
#pragma rtGlobals=1
 
Function InstallVersions()
 
    Execute/P/Q/Z "ModifyBrowser appendUserButton={VersionFolder,\"StoreFolderVersion(%s)\"}"   
    return 0
 
end
 
Function RemoveVersions()
 
    Execute/Q/Z "ModifyBrowser deleteUserButton=VersionFolder"  
    return 0
 
end
 
Function StoreFolderVersion(df)
    DFREF df
    
        // return if this is not a data folder
 
    if (DataFolderRefStatus(df)==0)
        return 0
    endif
 
    // uncomment this next portion if you would like to avoid versioning the Packages data folder
 
//  if (DataFolderRefsEqual(df,root:Packages))
//      return 0
//  endif
    
        // get information about the data folder
 
    string cdf = ParseFilePath(1,GetDataFolder(1,df),":",1,0)
    string sdf = ReplaceString("'",GetDataFolder(0,df),"")
    
        // create the new data folder name
 
    string currDTS, vdf
    
    sprintf currDTS, "%s%s",secs2date(DateTime,-2,":")[2,9],secs2time(DateTime,2)
    sprintf currDTS "%s%s" sdf, ReplaceString("'",ReplaceString(":",currDTS,""),"")
    sprintf vdf, "%s%s", cdf, PossiblyQuoteName(currDTS)
    
        // if the new already exists, do not overwrite
 
    if (DataFolderExists(vdf))
        return 0
    endif
 
       // make the new data folder
    
    DuplicateDataFolder df, $vdf
    
    return 0
 
end

Forum

Support

Gallery

Igor Pro 9

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More