// Licence: Lesser GNU Public License 2.1 (LGPL) #pragma rtGlobals=3 // Use modern global access method and strict wave access. #include "import_KratosDSET" // Kratos Vision dset strconstant version = "0.41.29" //importflasg ################################################# constant CB_DivScans = 1 constant CB_DivLifeTime = 1 strconstant suffix = "_new" // Attach if the Region... already excists constant posbinde = 0 // Positive (1) or negative (0) binding energy constant importtoroot = 1 // import into root (1) or into active directory (0) constant converttoWN = 1 // convert eV to Wavenumber (cm-1) //ende importflags ############################################## function /S loaderstart(name, filestr,file,dfSave) string name //name of importer string filestr //file endings "*.xxx,*.xxx" variable &file String &dfSave Debugprintf2("##########################",0) Debugprintf2("Start new "+name+" File Import",0) dfSave = GetDataFolder(1) if(importtoroot==1) SetDataFolder root: endif variable i=0//,j=0 String fileFilters = name+" Files ("+filestr+"):"+ReplaceString("*",filestr,"")+";" //fileFilters += "All Files:.*;" open/z=2/F=fileFilters/m="Looking for a "+name+" file"/r file if(V_flag==-1) Debugprintf2("No file given, aborting",0) return "" endif fstatus file string tempname = S_filename if (strsearch(tempname,".",inf,1)>1)//remove filename extension tempname=tempname[0,strsearch(tempname,".",inf,1)-1] endif string nameforwave=tempname if (strlen(tempname) >= 24) do Prompt Tempname, "Enter new Experiment Name: " DoPrompt "Experimentname to long (<=24) (no ,.()", tempname while (strlen(tempname) >= 24) endif string ExperimentName = ReplaceString(" ",tempname,"") ExperimentName = ReplaceString(",",ExperimentName,"") ExperimentName = ReplaceString("(",ExperimentName,"") ExperimentName = ReplaceString(")",ExperimentName,"") ExperimentName = ReplaceString(".",ExperimentName,"") ExperimentName = cleanname(ExperimentName) //CleanupName string newexpname ="" if(importtoroot==1) newexpname = "root:"+ExperimentName else newexpname = dfSave+ExperimentName endif Debugprintf2(newexpname,0) if(DataFolderExists(newexpname)) Debugprintf2("Folder exists, adding suffix!",0) ExperimentName += suffix i=0 do i+=1 if(importtoroot==1) newexpname = "root:"+Experimentname + num2str(i) else newexpname = dfSave+Experimentname + num2str(i) endif while(DataFolderExists(newexpname)) Experimentname +=num2str(i) endif if(importtoroot==1) NewDataFolder/s root:$(ExperimentName) SetDataFolder root:$(ExperimentName) else NewDataFolder/s $(dfSave+ExperimentName) SetDataFolder $(dfSave+ExperimentName) endif string header = "Fileinfo: " + S_path + S_filename return header end function loaderend(name,success,file, dfSave) variable file string name variable success String dfSave if(success==1) close file endif if(importtoroot==1) setdatafolder $(dfSave) endif Debugprintf2("Finished "+name+" File Import",0) Debugprintf2("##########################",0) end function /S getnameforwave(file) variable file fstatus file string nameforwave = S_filename if (strsearch(nameforwave,".",inf,1)>1)//remove filename extension nameforwave=nameforwave[0,strsearch(nameforwave,".",inf,1)-1] endif nameforwave = cleanupname(nameforwave,1) //0 to use strict name rules or 1 to use liberal name rules if (strlen(nameforwave) >= 24) do Prompt nameforwave, "Enter new wave Name: " DoPrompt "Wave name to long (<=24) (no ,.()", nameforwave while (strlen(nameforwave) >= 24) endif return nameforwave end function /S mybinreadBE(file, count) variable file variable count variable i string line = "" for (i=0;i= maxlen) print "Name too long. Shortened." print "Before: "+str str = str[0,maxlen-2] print "After: "+str endif return str end function /S shortname(name, len) string name variable len if(strlen(name) > len) print "Name too long. Shortened." print "Before: "+name name = name[0,len-2] print "After: "+name endif return name end Function/S stripstr(str, zeicheni,zeicheno) string str, zeicheni,zeicheno string stro="" variable i=0,j=0, length=strlen(str) For (i=0;i0;i-=1) if(strsearch(str[i]," ",0)==-1) str=str[0,i] break endif endfor length=strlen(str) for(i=length-1;i>0;i-=1) if(strsearch(str[i]," ",0)==-1) str=str[0,i] break endif endfor return str end function getkeyval(file, key, val) variable file string &key string &val string tmps FReadLine file, tmps If (strlen(tmps)==0) return -1 endif tmps = cleanup_(tmps) tmps=stripstrfirstlastpaces(tmps) if(strsearch(tmps,"=",0)!=-1) key = stripstrfirstlastpaces(tmps[0,strsearch(tmps,"=",0)-1]) val=stripstrfirstlastpaces(tmps[strsearch(tmps,"=",0)+1,inf]) elseif(strlen(tmps)==1 && strsearch(tmps,"{",0)==0) key = "{" val="" elseif(strlen(tmps)==1 && strsearch(tmps,"}",0)==0) key = "}" val="" elseif(strlen(tmps)>1) //single keyword key =stripstrfirstlastpaces(tmps) val ="" endif end Function /S cleanup_(name) string name if(cmpstr(name[strlen(name)-1],"\r") == 0) name = name[0,strlen(name)-2] endif return name end function /S read_line_trim(file) variable file string line FReadLine file, line if(strlen(line) == 0) Debugprintf2("Unexpected end of file.",0) return "-1" endif line = cleanup_(line) return line end function read_line_int(file) variable file return str2num(read_line_trim(file)) end function splitmatrix(matrix,name) wave matrix string name variable rows = dimsize(matrix,0) variable cols = dimsize(matrix,1) variable i=0, j=0 string tmps="" for(i=0;i