Ignore:
Timestamp:
Mar 17, 2016 5:00:30 PM (7 years ago)
Author:
srkline
Message:

lots of changes to how VCALC simulations can be written to Nexus files to effectively make test data with different callues before the virtual machine is ready. many changes for visualization to effectively handle zeros in log scaled images

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_Utilities_General.ipf

    r981 r987  
    6868End 
    6969 
     70 
     71 
     72// TODO: 
     73// -- this must be called as needed to force a re-read of the data from disk 
     74//    "as needed" means that when an operation is done that needs to ensure 
     75//     a fresh read from disk, it must take care of the kill. 
     76// -- the ksBaseDFPath needs to be removed. It's currently pointing to RawVSANS, which is 
     77//    really not used as intended anymore. 
     78// 
     79Function V_KillNamedDataFolder(fname) 
     80        String fname 
     81         
     82        Variable err=0 
     83         
     84        String folderStr = V_GetFileNameFromPathNoSemi(fname) 
     85        folderStr = V_RemoveDotExtension(folderStr) 
     86         
     87        KillDataFolder/Z $(ksBaseDFPath+folderStr) 
     88        err = V_flag 
     89         
     90        return(err) 
     91end 
     92 
     93//given a filename of a SANS data filename of the form 
     94// name.anything 
     95//returns the name as a string without the ".fbdfasga" extension 
     96// 
     97// returns the input string if a "." can't be found (maybe it wasn't there) 
     98Function/S V_RemoveDotExtension(item) 
     99        String item 
     100        String invalid = item   // 
     101        Variable num=-1 
     102         
     103        //find the "dot" 
     104        String runStr="" 
     105        Variable pos = strsearch(item,".",0) 
     106        if(pos == -1) 
     107                //"dot" not found 
     108                return (invalid) 
     109        else 
     110                //found, get all of the characters preceeding it 
     111                runStr = item[0,pos-1] 
     112                return (runStr) 
     113        Endif 
     114End 
     115 
     116//returns a string containing filename (WITHOUT the ;vers) 
     117//the input string is a full path to the file (Mac-style, still works on Win in IGOR) 
     118//with the folders separated by colons 
     119// 
     120// called by MaskUtils.ipf, ProtocolAsPanel.ipf, WriteQIS.ipf 
     121// 
     122Function/S V_GetFileNameFromPathNoSemi(fullPath) 
     123        String fullPath 
     124         
     125        Variable offset1,offset2 
     126        String filename="" 
     127        //String PartialPath 
     128        offset1 = 0 
     129        do 
     130                offset2 = StrSearch(fullPath, ":", offset1) 
     131                if (offset2 == -1)                              // no more colons ? 
     132                        fileName = FullPath[offset1,strlen(FullPath) ] 
     133                        //PartialPath = FullPath[0, offset1-1] 
     134                        break 
     135                endif 
     136                offset1 = offset2+1 
     137        while (1) 
     138         
     139        //remove version number from name, if it's there - format should be: filename;N 
     140        filename =  StringFromList(0,filename,";")              //returns null if error 
     141         
     142        Return filename 
     143End 
     144 
     145// 
     146// -- this was copied directly, no changes , from PlotUtils_Macro_v40 
     147// 
     148// returns the path to the file, or null if the user cancelled 
     149// fancy use of optional parameters 
     150//  
     151// enforce short file names (25 characters) 
     152Function/S V_DoSaveFileDialog(msg,[fname,suffix]) 
     153        String msg,fname,suffix 
     154        Variable refNum 
     155//      String message = "Save the file as" 
     156 
     157        if(ParamIsDefault(fname)) 
     158//              Print "fname not supplied" 
     159                fname = "" 
     160        endif 
     161        if(ParamIsDefault(suffix)) 
     162//              Print "suffix not supplied" 
     163                suffix = "" 
     164        endif 
     165         
     166        String outputPath,tmpName,testStr 
     167        Variable badLength=0,maxLength=25,l1,l2 
     168         
     169         
     170        tmpName = fname + suffix 
     171         
     172        do 
     173                badLength=0 
     174                Open/D/M=msg/T="????" refNum as tmpName         //OS will allow 255 characters, but then I can't read it back in! 
     175                outputPath = S_fileName 
     176                 
     177                testStr = ParseFilePath(0, outputPath, ":", 1, 0)               //just the filename 
     178                if(strlen(testStr)==0) 
     179                        break           //cancel, allow exit 
     180                endif 
     181                if(strlen(testStr) > maxLength) 
     182                        badlength = 1 
     183                        DoAlert 2,"File name is too long. Is\r"+testStr[0,maxLength-1]+"\rOK?" 
     184                        if(V_flag==3) 
     185                                outputPath = "" 
     186                                break 
     187                        endif 
     188                        if(V_flag==1)                   //my suggested name is OK, so trim the output 
     189                                badlength=0 
     190                                l1 = strlen(testStr)            //too long length 
     191                                l1 = l1-maxLength               //number to trim 
     192                                //Print outputPath 
     193                                l2=strlen(outputPath) 
     194                                outputPath = outputPath[0,l2-1-l1] 
     195                                //Print "modified  ",outputPath 
     196                        endif 
     197                        //if(V_flag==2)  do nothing, let it go around again 
     198                endif 
     199                 
     200        while(badLength) 
     201         
     202        return outputPath 
     203End 
     204 
     205 
Note: See TracChangeset for help on using the changeset viewer.