source: trunk/User Procedures/Irena/IR3_SimpleFits.ipf @ 804

Last change on this file since 804 was 804, checked in by ilavsky, 3 years ago

Update all Labels for graphs to use Irena parameetrs.
Major fixes and improvements to 3D Aggregate

  • Property svn:eol-style set to native
File size: 41.1 KB
Line 
1#pragma rtGlobals=3             // Use modern global access method and strict wave access.
2#pragma version=1.1
3constant IR3LversionNumber = 1                  //Data merging panel version number
4
5//*************************************************************************\
6//* Copyright (c) 2005 - 2019, Argonne National Laboratory
7//* This file is distributed subject to a Software License Agreement found
8//* in the file LICENSE that is included with this distribution.
9//*************************************************************************/
10
11//1.1 combined this ipf with "Simple fits models"
12//1.0 Simple Fits tool first release version
13
14
15
16///******************************************************************************************
17///******************************************************************************************
18///******************************************************************************************
19///******************************************************************************************
20Function IR3L_SimpleFits()
21
22        IN2G_CheckScreenSize("width",1200)
23        DoWIndow IR3L_SimpleFitsPanel
24        if(V_Flag)
25                DoWindow/F IR3L_SimpleFitsPanel
26                //DoWindow/K IR3L_SimpleFitsPanel
27                //Execute("IR3L_SimpleFitsPanel()")
28        else
29                IR3L_InitSimpleFits()
30                Execute("IR3L_SimpleFitsPanel()")
31//              setWIndow IR3L_SimpleFitsPanel, hook(CursorMoved)=IR3D_PanelHookFunction
32        endif
33//      UpdatePanelVersionNumber("IR3D_DataMergePanel", IR3DversionNumber)
34//      IR3D_UpdateListOfAvailFiles(1)
35//      IR3D_UpdateListOfAvailFiles(2)
36//      IR3D_RebuildListboxTables()
37end
38
39//************************************************************************************************************
40//************************************************************************************************************
41//************************************************************************************************************
42//************************************************************************************************************
43Proc IR3L_SimpleFitsPanel()
44        PauseUpdate; Silent 1           // building window...
45        NewPanel /K=1 /W=(2.25,43.25,1195,800) as "Simple Fits"
46        DoWIndow/C IR3L_SimpleFitsPanel
47        TitleBox MainTitle title="Linerization fits panel",pos={280,2},frame=0,fstyle=3, fixedSize=1,font= "Times New Roman", size={360,30},fSize=22,fColor=(0,0,52224)
48//      TitleBox FakeLine1 title=" ",fixedSize=1,size={330,3},pos={16,148},frame=0,fColor=(0,0,52224), labelBack=(0,0,52224)
49//      TitleBox FakeLine2 title=" ",fixedSize=1,size={330,3},pos={16,428},frame=0,fColor=(0,0,52224), labelBack=(0,0,52224)
50//      TitleBox FakeLine3 title=" ",fixedSize=1,size={330,3},pos={16,512},frame=0,fColor=(0,0,52224), labelBack=(0,0,52224)
51//      TitleBox FakeLine4 title=" ",fixedSize=1,size={330,3},pos={16,555},frame=0,fColor=(0,0,52224), labelBack=(0,0,52224)
52//      TitleBox Info1 title="Modify data 1                            Modify Data 2",pos={36,325},frame=0,fstyle=1, fixedSize=1,size={350,20},fSize=12
53//      TitleBox FakeLine5 title=" ",fixedSize=1,size={330,3},pos={16,300},frame=0,fColor=(0,0,52224), labelBack=(0,0,52224)
54        string UserDataTypes=""
55        string UserNameString=""
56        string XUserLookup=""
57        string EUserLookup=""
58        IR2C_AddDataControls("Irena:SimpleFits","IR3L_SimpleFitsPanel","DSM_Int;M_DSM_Int;SMR_Int;M_SMR_Int;","AllCurrentlyAllowedTypes",UserDataTypes,UserNameString,XUserLookup,EUserLookup, 0,1, DoNotAddControls=1)
59
60
61        DrawText 60,25,"Data selection"
62        Checkbox UseIndra2Data, pos={10,30},size={76,14},title="USAXS", proc=IR3L_LinearFitsCheckProc, variable=root:Packages:Irena:SimpleFits:UseIndra2Data
63        checkbox UseQRSData, pos={120,30}, title="QRS(QIS)", size={76,14},proc=IR3L_LinearFitsCheckProc, variable=root:Packages:Irena:SimpleFits:UseQRSdata
64        PopupMenu StartFolderSelection,pos={10,50},size={180,15},proc=IR3L_PopMenuProc,title="Start fldr"
65        PopupMenu StartFolderSelection,mode=1,popvalue=root:Packages:Irena:SimpleFits:DataStartFolder,value= #"\"root:;\"+IR2S_GenStringOfFolders2(root:Packages:Irena:SimpleFits:UseIndra2Data, root:Packages:Irena:SimpleFits:UseQRSdata,2,1)"
66        SetVariable FolderNameMatchString,pos={10,75},size={210,15}, proc=IR3L_SetVarProc,title="Folder Match (RegEx)"
67        Setvariable FolderNameMatchString,fSize=10,fStyle=2, variable=root:Packages:Irena:SimpleFits:DataMatchString
68        PopupMenu SortFolders,pos={10,100},size={180,20},fStyle=2,proc=IR3L_PopMenuProc,title="Sort Folders"
69        PopupMenu SortFolders,mode=1,popvalue=root:Packages:Irena:SimpleFits:FolderSortString,value= root:Packages:Irena:SimpleFits:FolderSortStringAll
70
71        ListBox DataFolderSelection,pos={4,135},size={250,480}, mode=10
72        ListBox DataFolderSelection,listWave=root:Packages:Irena:SimpleFits:ListOfAvailableData
73        ListBox DataFolderSelection,selWave=root:Packages:Irena:SimpleFits:SelectionOfAvailableData
74        ListBox DataFolderSelection,proc=IR3L_LinFitsListBoxProc
75
76        SetVariable DataQEnd,pos={280,90},size={200,15}, proc=IR3D_MergeDataSetVarProc,title="Fit Q max      ",bodyWidth=150
77        Setvariable DataQEnd, variable=root:Packages:Irena:SimpleFits:DataQEnd, limits={-inf,inf,0}
78        SetVariable DataQstart,pos={280,110},size={200,15}, proc=IR3D_MergeDataSetVarProc,title="Fit Q start      ",bodyWidth=150
79        Setvariable DataQstart, variable=root:Packages:Irena:SimpleFits:DataQstart, limits={-inf,inf,0}
80        SetVariable DataBackground,pos={280,130},size={200,15}, noproc,title="Background",bodyWidth=150
81        Setvariable DataBackground, variable=root:Packages:Irena:SimpleFits:DataBackground, limits={-inf,inf,0}
82//      ListOfVariables+="DataBackground;"
83//      ListOfVariables+="Guinier_Rg;Guinier_I0;"
84//      ListOfVariables+="ProcessManually;ProcessSequentially;OverwriteExistingData;AutosaveAfterProcessing;"
85//      ListOfVariables+="DataQEnd;DataQstart;"
86
87        PopupMenu SimpleModel,pos={280,175},size={180,20},fStyle=2,proc=IR3L_PopMenuProc,title="Model to fit : "
88        PopupMenu SimpleModel,mode=1,popvalue=root:Packages:Irena:SimpleFits:ListOfSimpleModels,value= root:Packages:Irena:SimpleFits:SimpleModel
89
90        SetVariable Guinier_Rg,pos={280,220},size={200,15}, proc=IR3D_MergeDataSetVarProc,title="Guinier  Rg    ",bodyWidth=150
91        Setvariable Guinier_Rg, variable=root:Packages:Irena:SimpleFits:Guinier_Rg, limits={-inf,inf,0}
92
93        SetVariable Guinier_I0,pos={280,200},size={200,15}, proc=IR3D_MergeDataSetVarProc,title="Guinier I0    ",bodyWidth=150
94        Setvariable Guinier_I0, variable=root:Packages:Irena:SimpleFits:Guinier_I0, limits={-inf,inf,0}
95
96
97//      Button ProcessSaveData, pos={490,135}, size={20,500}, title="S\rA\rV\rE\r\rD\rA\rT\rA", proc=IR3D_MergeButtonProc, help={"Saves data which were automtaticaly processed already. "}, labelBack=(65535,60076,49151)
98//      //TextBox/C/N=text1/O=90/A=MC "Save Data", TextBox/C/N=text1/A=MC "S\rA\rV\rE\r\rD\rA\rT\rA"
99//
100//      Checkbox ProcessTest, pos={520,30},size={76,14},title="Test mode", proc=IR3D_DatamergeCheckProc, variable=root:Packages:Irena:SASDataMerging:ProcessTest
101//      Checkbox ProcessMerge, pos={520,50},size={76,14},title="Merge mode", proc=IR3D_DatamergeCheckProc, variable=root:Packages:Irena:SASDataMerging:ProcessMerge
102//      Checkbox ProcessMerge2, pos={520,70},size={76,14},title="Merge 2 mode", proc=IR3D_DatamergeCheckProc, variable=root:Packages:Irena:SASDataMerging:ProcessMerge2
103//
104//      Checkbox ProcessManually, pos={650,30},size={76,14},title="Process individually", proc=IR3D_DatamergeCheckProc, variable=root:Packages:Irena:SASDataMerging:ProcessManually
105//      Checkbox ProcessSequentially, pos={650,50},size={76,14},title="Process as sequence", proc=IR3D_DatamergeCheckProc, variable=root:Packages:Irena:SASDataMerging:ProcessSequentially
106//
107//      Checkbox AutosaveAfterProcessing, pos={780,30},size={76,14},title="Save Immediately", proc=IR3D_DatamergeCheckProc, variable=root:Packages:Irena:SASDataMerging:AutosaveAfterProcessing, disable=!root:Packages:Irena:SASDataMerging:ProcessManually
108//      Checkbox OverwriteExistingData, pos={780,50},size={76,14},title="Overwrite existing data", proc=IR3D_DatamergeCheckProc, variable=root:Packages:Irena:SASDataMerging:OverwriteExistingData
109//      TitleBox SavedDataMessage title="",fixedSize=1,size={100,17}, pos={780,70}, variable= root:Packages:Irena:SASDataMerging:SavedDataMessage
110//      TitleBox SavedDataMessage help={"Are the data saved?"}, fColor=(65535,16385,16385), frame=0, fSize=12,fstyle=1
111//
112//      TitleBox UserMessage title="",fixedSize=1,size={470,20}, pos={480,90}, variable= root:Packages:Irena:SASDataMerging:UserMessageString
113//      TitleBox UserMessage help={"This is what will happen"}
114//
115//             
116//      Button AutoScale,pos={520,117},size={100,17}, proc=IR3D_MergeButtonProc,title="Test AutoScale", help={"Autoscales. Set cursors on data overlap and the data 2 will be scaled to Data 1 using integral intensity"}, disable=!root:Packages:Irena:SASDataMerging:ProcessTest
117//      Button MergeData,pos={640,117},size={100,17}, proc=IR3D_MergeButtonProc,title="Test Merge", help={"Scales data 2 to data 1 and sets background for data 1 for merging. Sets checkboxes and trims. Saves data also"}, disable=!root:Packages:Irena:SASDataMerging:ProcessTest
118//      Button MergeData2,pos={760,117},size={100,17}, proc=IR3D_MergeButtonProc,title="Test Merge 2", help={"Scales data 2 to data 1, optimizes Q shift for data 2 and sets background for data 1 for merging. Saves data also"}, disable=!root:Packages:Irena:SASDataMerging:ProcessTest
119
120        Display /W=(521,10,1183,340) /HOST=# /N=LogLogDataDisplay
121        SetActiveSubwindow ##
122        Display /W=(521,350,1183,410) /HOST=# /N=ResidualDataDisplay
123        SetActiveSubwindow ##
124        Display /W=(521,420,1183,750) /HOST=# /N=LinearizedDataDisplay
125        SetActiveSubwindow ##
126
127//      SetVariable DataFolderName1,pos={550,625},size={510,15}, noproc,variable=root:Packages:Irena:SASDataMerging:DataFolderName1, title="Data 1:       ", disable=2
128//      SetVariable DataFolderName2,pos={550,642},size={510,15}, noproc,variable=root:Packages:Irena:SASDataMerging:DataFolderName2, title="Data 2:       ", disable=2
129//      SetVariable NewDataFolderName,pos={550,659},size={510,15}, noproc,variable=root:Packages:Irena:SASDataMerging:NewDataFolderName, title="Merged Data: "
130
131        DrawText 4,650,"Double click to add data to graph."
132        DrawText 4,663,"Shift-click to select range of data."
133        DrawText 4,676,"Ctrl/Cmd-click to select one data set."
134        DrawText 4,689,"Regex for not contain: ^((?!string).)*$"
135        DrawText 4,702,"Regex for contain:  string"
136        DrawText 4,715,"Regex for case independent contain:  (?i)string"
137end
138//**********************************************************************************************************
139//**********************************************************************************************************
140//**********************************************************************************************************
141
142Function IR3L_InitSimpleFits() 
143
144
145        string oldDf=GetDataFolder(1)
146        string ListOfVariables
147        string ListOfStrings
148        variable i
149               
150        if (!DataFolderExists("root:Packages:Irena:SimpleFits"))                //create folder
151                NewDataFolder/O root:Packages
152                NewDataFolder/O root:Packages:Irena
153                NewDataFolder/O root:Packages:Irena:SimpleFits
154        endif
155        SetDataFolder root:Packages:Irena:SimpleFits                                    //go into the folder
156
157        //here define the lists of variables and strings needed, separate names by ;...
158        ListOfStrings="DataFolderName;IntensityWaveName;QWavename;ErrorWaveName;dQWavename;DataUnits;"
159        ListOfStrings+="DataStartFolder;DataMatchString;FolderSortString;FolderSortStringAll;"
160        ListOfStrings+="UserMessageString;SavedDataMessage;"
161        ListOfStrings+="SimpleModel;ListOfSimpleModels;"
162
163        ListOfVariables="UseIndra2Data1;UseQRSdata1;"
164        ListOfVariables+="DataBackground;"
165        ListOfVariables+="Guinier_Rg;Guinier_I0;"
166        ListOfVariables+="ProcessManually;ProcessSequentially;OverwriteExistingData;AutosaveAfterProcessing;"
167        ListOfVariables+="DataQEnd;DataQstart;"
168
169        //and here we create them
170        for(i=0;i<itemsInList(ListOfVariables);i+=1)   
171                IN2G_CreateItem("variable",StringFromList(i,ListOfVariables))
172        endfor         
173                                                               
174        for(i=0;i<itemsInList(ListOfStrings);i+=1)     
175                IN2G_CreateItem("string",StringFromList(i,ListOfStrings))
176        endfor 
177
178        ListOfStrings="DataFolderName;IntensityWaveName;QWavename;ErrorWaveName;dQWavename;"
179//      ListOfStrings+="NewDataFolderName;NewIntensityWaveName;NewQWavename;NewErrorWaveName;"
180        for(i=0;i<itemsInList(ListOfStrings);i+=1)     
181                SVAR teststr=$(StringFromList(i,ListOfStrings))
182                teststr =""
183        endfor         
184        ListOfStrings="DataMatchString;FolderSortString;FolderSortStringAll;"
185        for(i=0;i<itemsInList(ListOfStrings);i+=1)     
186                SVAR teststr=$(StringFromList(i,ListOfStrings))
187                if(strlen(teststr)<1)
188                        teststr =""
189                endif
190        endfor         
191        ListOfStrings="DataStartFolder;"
192        for(i=0;i<itemsInList(ListOfStrings);i+=1)     
193                SVAR teststr=$(StringFromList(i,ListOfStrings))
194                if(strlen(teststr)<1)
195                        teststr ="root:"
196                endif
197        endfor         
198        SVAR ListOfSimpleModels
199        ListOfSimpleModels="Guinier;"
200        SVAR FolderSortStringAll
201        FolderSortStringAll = "Alphabetical;Reverse Alphabetical;_xyz;_xyz.ext;Reverse _xyz;Reverse _xyz.ext;Sxyz_;Reverse Sxyz_;_xyzmin;_xyzC;_xyzpct;_xyz_000;Reverse _xyz_000;"
202        SVAR SimpleModel
203        if(strlen(SimpleModel)<1)
204                SimpleModel="Guinier"
205        endif
206//      NVAR OverwriteExistingData
207//      NVAR AutosaveAfterProcessing
208//      OverwriteExistingData=1
209//      AutosaveAfterProcessing=1
210//      if(ProcessTest)
211//              AutosaveAfterProcessing=0
212//      endif
213
214        Make/O/T/N=(0) ListOfAvailableData
215        Make/O/N=(0) SelectionOfAvailableData
216        SetDataFolder oldDf
217
218end
219//**************************************************************************************
220//**************************************************************************************
221//**************************************************************************************
222
223//*****************************************************************************************************************
224//*****************************************************************************************************************
225//**************************************************************************************
226//**************************************************************************************
227
228Function IR3L_LinearFitsCheckProc(cba) : CheckBoxControl
229        STRUCT WMCheckboxAction &cba
230
231        switch( cba.eventCode )
232                case 2: // mouse up
233                        Variable checked = cba.checked
234                        NVAR UseIndra2Data =  root:Packages:Irena:SimpleFits:UseIndra2Data
235                        NVAR UseQRSData =  root:Packages:Irena:SimpleFits:UseQRSData
236                        SVAR DataStartFolder = root:Packages:Irena:SimpleFits:DataStartFolder
237//                      SVAR UserMessageString=root:Packages:Irena:SASDataMerging:UserMessageString
238//                      NVAR ProcessManually =root:Packages:Irena:SASDataMerging:ProcessManually
239//                      NVAR ProcessSequentially=root:Packages:Irena:SASDataMerging:ProcessSequentially
240//                      NVAR OverwriteExistingData=root:Packages:Irena:SASDataMerging:OverwriteExistingData
241//                      NVAR AutosaveAfterProcessing=root:Packages:Irena:SASDataMerging:AutosaveAfterProcessing
242//                      Checkbox AutosaveAfterProcessing, win=IR3D_DataMergePanel, disable=0
243//                      Checkbox ProcessSequentially, win=IR3D_DataMergePanel, disable=0
244                        if(stringmatch(cba.ctrlName,"UseIndra2Data"))
245                                if(checked)
246                                        UseQRSData = 0
247                                endif
248                        endif
249                        if(stringmatch(cba.ctrlName,"UseQRSData"))
250                                if(checked)
251                                        UseIndra2Data = 0
252                                endif
253                        endif
254                        if(stringmatch(cba.ctrlName,"UseQRSData")||stringmatch(cba.ctrlName,"UseIndra2Data"))
255                                DataStartFolder = "root:"
256                                PopupMenu StartFolderSelection,win=IR3L_SimpleFitsPanel, mode=1,popvalue="root:"
257                                IR3L_UpdateListOfAvailFiles()
258                        endif
259//                      Checkbox AutosaveAfterProcessing, win=IR3D_DataMergePanel, disable=0
260//                      UserMessageString = ""
261//                      if(stringmatch(cba.ctrlName,"ProcessManually"))
262//                              if(checked)
263//                                      ProcessSequentially = 0
264//                              endif
265//                      endif
266//                      if(stringmatch(cba.ctrlName,"ProcessSequentially"))
267//                              if(checked)
268//                                      ProcessManually = 0
269//                                      ProcessTest = 0
270//                                      AutosaveAfterProcessing = 1
271//                                      if(ProcessTest+ProcessMerge+ProcessMerge2!=1)
272//                                              ProcessMerge2=1
273//                                              ProcessMerge =0
274//                                      endif
275//                                      //Checkbox AutosaveAfterProcessing, win=IR3D_DataMergePanel, disable=1
276//                              endif
277//                      endif
278//                      if(stringmatch(cba.ctrlName,"ProcessTest"))
279//                              if(checked)
280//                                      ProcessMerge = 0
281//                                      ProcessMerge2 = 0
282//                                      AutosaveAfterProcessing = 0
283//                                      ProcessManually = 1
284//                                      ProcessSequentially = 0
285//                              endif
286//                      endif
287//                      if(stringmatch(cba.ctrlName,"ProcessMerge"))
288//                              if(checked)
289//                                      ProcessTest = 0
290//                                      ProcessMerge2 = 0
291//                                      UserMessageString += "Using Merge. "
292//                              endif
293//                      endif
294//                      if(stringmatch(cba.ctrlName,"ProcessMerge2"))
295//                              if(checked)
296//                                      ProcessMerge = 0
297//                                      ProcessTest = 0
298//                                      UserMessageString += "Using Merge2. "
299//                              endif
300//                      endif
301//      //              if(stringmatch(cba.ctrlName,"ProcessMerge2")||stringmatch(cba.ctrlName,"ProcessMerge")||stringmatch(cba.ctrlName,"ProcessTest"))
302////                    endif
303//                      IR3D_SetGUIControls()
304                       
305                        break
306                case -1: // control being killed
307                        break
308        endswitch
309
310        return 0
311End
312//**************************************************************************************
313//**************************************************************************************
314//**************************************************************************************
315//**************************************************************************************
316//**************************************************************************************
317Function IR3L_UpdateListOfAvailFiles()
318
319
320        string OldDF=GetDataFolder(1)
321        setDataFolder root:Packages:Irena:SimpleFits
322       
323        NVAR UseIndra2Data=root:Packages:Irena:SimpleFits:UseIndra2Data
324        NVAR UseQRSdata=root:Packages:Irena:SimpleFits:UseQRSData
325        SVAR StartFolderName=root:Packages:Irena:SimpleFits:DataStartFolder
326        SVAR DataMatchString= root:Packages:Irena:SimpleFits:DataMatchString
327        string LStartFolder, FolderContent
328        if(stringmatch(StartFolderName,"---"))
329                LStartFolder="root:"
330        else
331                LStartFolder = StartFolderName
332        endif
333        string CurrentFolders=IR3D_GenStringOfFolders(LStartFolder,UseIndra2Data, UseQRSData, 2,0,DataMatchString)
334
335        Wave/T ListOfAvailableData=root:Packages:Irena:SimpleFits:ListOfAvailableData
336        Wave SelectionOfAvailableData=root:Packages:Irena:SimpleFits:SelectionOfAvailableData
337        variable i, j, match
338        string TempStr, FolderCont
339
340               
341        Redimension/N=(ItemsInList(CurrentFolders , ";")) ListOfAvailableData, SelectionOfAvailableData
342        j=0
343        For(i=0;i<ItemsInList(CurrentFolders , ";");i+=1)
344                //TempStr = RemoveFromList("USAXS",RemoveFromList("root",StringFromList(i, CurrentFolders , ";"),":"),":")
345                TempStr = ReplaceString(LStartFolder, StringFromList(i, CurrentFolders , ";"),"")
346                if(strlen(TempStr)>0)
347                        ListOfAvailableData[j] = tempStr
348                        j+=1
349                endif
350        endfor
351        if(j<ItemsInList(CurrentFolders , ";"))
352                DeletePoints j, numpnts(ListOfAvailableData)-j, ListOfAvailableData, SelectionOfAvailableData
353        endif
354        SelectionOfAvailableData = 0
355        IR3L_SortListOfAvailableFldrs()
356        setDataFolder OldDF
357end
358
359
360//**************************************************************************************
361//**************************************************************************************
362//**************************************************************************************
363//**************************************************************************************
364//**************************************************************************************
365//**************************************************************************************
366//**************************************************************************************
367//**************************************************************************************
368Function IR3L_SortListOfAvailableFldrs()
369       
370        SVAR FolderSortString=root:Packages:Irena:SimpleFits:FolderSortString
371        Wave/T ListOfAvailableData=root:Packages:Irena:SimpleFits:ListOfAvailableData
372        Wave SelectionOfAvailableData=root:Packages:Irena:SimpleFits:SelectionOfAvailableData
373        if(numpnts(ListOfAvailableData)<2)
374                return 0
375        endif
376        Duplicate/Free SelectionOfAvailableData, TempWv
377        variable i, InfoLoc, j=0
378        variable DIDNotFindInfo
379        DIDNotFindInfo =0
380        string tempstr
381        SelectionOfAvailableData=0
382        if(stringMatch(FolderSortString,"---"))
383                //nothing to do
384        elseif(stringMatch(FolderSortString,"Alphabetical"))
385                Sort /A ListOfAvailableData, ListOfAvailableData
386        elseif(stringMatch(FolderSortString,"Reverse Alphabetical"))
387                Sort /A /R ListOfAvailableData, ListOfAvailableData
388        elseif(stringMatch(FolderSortString,"_xyz"))
389                For(i=0;i<numpnts(TempWv);i+=1)
390                        TempWv[i] = str2num(StringFromList(ItemsInList(ListOfAvailableData[i]  , "_")-1, ListOfAvailableData[i]  , "_"))
391                endfor
392                Sort TempWv, ListOfAvailableData
393        elseif(stringMatch(FolderSortString,"Sxyz_"))
394                For(i=0;i<numpnts(TempWv);i+=1)
395                        TempWv[i] = str2num(ReplaceString("S", StringFromList(0, ListOfAvailableData[i], "_"), ""))
396                endfor
397                Sort TempWv, ListOfAvailableData
398        elseif(stringMatch(FolderSortString,"Reverse Sxyz_"))
399                For(i=0;i<numpnts(TempWv);i+=1)
400                        TempWv[i] = str2num(ReplaceString("S", StringFromList(0, ListOfAvailableData[i], "_"), ""))
401                endfor
402                Sort/R TempWv, ListOfAvailableData
403        elseif(stringMatch(FolderSortString,"_xyzmin"))
404                Do
405                        For(i=0;i<ItemsInList(ListOfAvailableData[j] , "_");i+=1)
406                                if(StringMatch(ReplaceString(":", StringFromList(i, ListOfAvailableData[j], "_"),""), "*min" ))
407                                        InfoLoc = i
408                                        break
409                                endif
410                        endfor
411                        j+=1
412                        if(j>(numpnts(ListOfAvailableData)-1))
413                                DIDNotFindInfo=1
414                                break
415                        endif
416                while (InfoLoc<1)
417                if(DIDNotFindInfo)
418                        DoALert /T="Information not found" 0, "Cannot find location of _xyzmin information, sorting alphabetically"
419                        Sort /A ListOfAvailableData, ListOfAvailableData
420                else
421                        For(i=0;i<numpnts(TempWv);i+=1)
422                                if(StringMatch(StringFromList(InfoLoc, ListOfAvailableData[i], "_"), "*min*" ))
423                                        TempWv[i] = str2num(ReplaceString("min", StringFromList(InfoLoc, ListOfAvailableData[i], "_"), ""))
424                                else    //data not found
425                                        TempWv[i] = inf
426                                endif
427                        endfor
428                        Sort TempWv, ListOfAvailableData
429                endif
430        elseif(stringMatch(FolderSortString,"_xyzpct"))
431                Do
432                        For(i=0;i<ItemsInList(ListOfAvailableData[j] , "_");i+=1)
433                                if(StringMatch(ReplaceString(":", StringFromList(i, ListOfAvailableData[j], "_"),""), "*pct" ))
434                                        InfoLoc = i
435                                        break
436                                endif
437                        endfor
438                        j+=1
439                        if(j>(numpnts(ListOfAvailableData)-1))
440                                DIDNotFindInfo=1
441                                break
442                        endif
443                while (InfoLoc<1)
444                if(DIDNotFindInfo)
445                        DoAlert/T="Information not found" 0, "Cannot find location of _xyzpct information, sorting alphabetically"
446                        Sort /A ListOfAvailableData, ListOfAvailableData
447                else
448                        For(i=0;i<numpnts(TempWv);i+=1)
449                                if(StringMatch(StringFromList(InfoLoc, ListOfAvailableData[i], "_"), "*pct*" ))
450                                        TempWv[i] = str2num(ReplaceString("pct", StringFromList(InfoLoc, ListOfAvailableData[i], "_"), ""))
451                                else    //data not found
452                                        TempWv[i] = inf
453                                endif
454                        endfor
455                        Sort TempWv, ListOfAvailableData
456                endif
457        elseif(stringMatch(FolderSortString,"_xyzC"))
458                Do
459                        For(i=0;i<ItemsInList(ListOfAvailableData[j] , "_");i+=1)
460                                if(StringMatch(ReplaceString(":", StringFromList(i, ListOfAvailableData[j], "_"),""), "*C" ))
461                                        InfoLoc = i
462                                        break
463                                endif
464                        endfor
465                        j+=1
466                        if(j>(numpnts(ListOfAvailableData)-1))
467                                DIDNotFindInfo=1
468                                break
469                        endif
470                while (InfoLoc<1)
471                if(DIDNotFindInfo)
472                        DoAlert /T="Information not found" 0, "Cannot find location of _xyzC information, sorting alphabetically"
473                        Sort /A ListOfAvailableData, ListOfAvailableData
474                else
475                        For(i=0;i<numpnts(TempWv);i+=1)
476                                if(StringMatch(StringFromList(InfoLoc, ListOfAvailableData[i], "_"), "*C*" ))
477                                        TempWv[i] = str2num(ReplaceString("C", StringFromList(InfoLoc, ListOfAvailableData[i], "_"), ""))
478                                else    //data not found
479                                        TempWv[i] = inf
480                                endif
481                        endfor
482                        Sort TempWv, ListOfAvailableData
483                endif
484        elseif(stringMatch(FolderSortString,"Reverse _xyz"))
485                For(i=0;i<numpnts(TempWv);i+=1)
486                        TempWv[i] = str2num(StringFromList(ItemsInList(ListOfAvailableData[i]  , "_")-1, ListOfAvailableData[i]  , "_"))
487                endfor
488                Sort /R  TempWv, ListOfAvailableData
489        elseif(stringMatch(FolderSortString,"_xyz.ext"))
490                For(i=0;i<numpnts(TempWv);i+=1)
491                        tempstr = StringFromList(ItemsInList(ListOfAvailableData[i]  , ".")-2, ListOfAvailableData[i]  , ".")
492                        TempWv[i] = str2num(StringFromList(ItemsInList(tempstr , "_")-1, tempstr , "_"))
493                endfor
494                Sort TempWv, ListOfAvailableData
495        elseif(stringMatch(FolderSortString,"Reverse _xyz.ext"))
496                For(i=0;i<numpnts(TempWv);i+=1)
497                        tempstr = StringFromList(ItemsInList(ListOfAvailableData[i]  , ".")-2, ListOfAvailableData[i]  , ".")
498                        TempWv[i] = str2num(StringFromList(ItemsInList(tempstr , "_")-1, tempstr , "_"))
499                endfor
500                Sort /R  TempWv, ListOfAvailableData
501        elseif(stringMatch(FolderSortString,"_xyz_000"))
502                For(i=0;i<numpnts(TempWv);i+=1)
503                        TempWv[i] = str2num(StringFromList(ItemsInList(ListOfAvailableData[i]  , "_")-2, ListOfAvailableData[i]  , "_"))
504                endfor
505                Sort TempWv, ListOfAvailableData
506        elseif(stringMatch(FolderSortString,"Reverse _xyz_000"))
507                For(i=0;i<numpnts(TempWv);i+=1)
508                        TempWv[i] = str2num(StringFromList(ItemsInList(ListOfAvailableData[i]  , "_")-2, ListOfAvailableData[i]  , "_"))
509                endfor
510                Sort /R  TempWv, ListOfAvailableData
511        endif
512
513end
514//**************************************************************************************
515//**************************************************************************************
516//**************************************************************************************
517//**************************************************************************************
518//**************************************************************************************
519
520Function IR3L_PopMenuProc(ctrlName,popNum,popStr) : PopupMenuControl
521        String ctrlName
522        Variable popNum
523        String popStr
524
525        if(stringmatch(ctrlName,"StartFolderSelection"))
526                //Update the listbox using start folde popStr
527                SVAR StartFolderName=root:Packages:Irena:SimpleFits:DataStartFolder
528                StartFolderName = popStr
529                IR3L_UpdateListOfAvailFiles()
530        endif
531        if(stringmatch(ctrlName,"SortFolders"))
532                //do something here
533                SVAR FolderSortString = root:Packages:Irena:SimpleFits:FolderSortString
534                FolderSortString = popStr
535                IR3L_UpdateListOfAvailFiles()
536        endif
537        if(stringmatch(ctrlName,"SimpleModel"))
538                //do something here
539                SVAR SimpleModel = root:Packages:Irena:SimpleFits:SimpleModel
540                SimpleModel = popStr
541                IR3L_CreateLinearizedData()
542                IR3L_AppendDataToGraphModel()
543        endif
544       
545end
546
547//**************************************************************************************
548//**************************************************************************************
549//**************************************************************************************
550//**************************************************************************************
551
552Function IR3L_SetVarProc(sva) : SetVariableControl
553        STRUCT WMSetVariableAction &sva
554
555        variable tempP
556        switch( sva.eventCode )
557                case 1: // mouse up
558                case 2: // Enter key
559                        if(stringmatch(sva.ctrlName,"FolderNameMatchString1"))
560                                IR3D_UpdateListOfAvailFiles(1)
561                                IR3D_RebuildListboxTables()
562//                              IR2S_SortListOfAvailableFldrs()
563                        endif
564                        NVAR DataQstart=root:Packages:Irena:SimpleFits:DataQstart
565                        NVAR DataQEnd=root:Packages:Irena:SimpleFits:DataQEnd
566                       
567                        if(stringmatch(sva.ctrlName,"DataQEnd"))
568                                WAVE OriginalDataQWave = root:Packages:Irena:SimpleFits:OriginalDataQWave
569                                tempP = BinarySearch(OriginalDataQWave, DataQEnd )
570                                if(tempP<1)
571                                        print "Wrong Q value set, Data Q max must be at most 1 point before the end of Data"
572                                        tempP = numpnts(OriginalDataQWave)-2
573                                        DataQEnd = OriginalDataQWave[tempP]
574                                endif
575        //                      cursor /W=IR3D_DataMergePanel#DataDisplay B, OriginalData1IntWave, tempP
576                        endif
577                        if(stringmatch(sva.ctrlName,"DataQstart"))
578                                WAVE OriginalDataQWave = root:Packages:Irena:SimpleFits:OriginalDataQWave
579                                tempP = BinarySearch(OriginalDataQWave, DataQstart )
580                                if(tempP<1)
581                                        print "Wrong Q value set, Data Q min must be at least 1 point from the start of Data"
582                                        tempP = 1
583                                        DataQstart = OriginalDataQWave[tempP]
584                                endif
585        //                      cursor /W=IR3D_DataMergePanel#DataDisplay A, OriginalData2IntWave, tempP
586                        endif
587                        break
588
589                case 3: // live update
590                        break
591                case -1: // control being killed
592                        break
593        endswitch
594
595        return 0
596End
597
598//**************************************************************************************
599//**************************************************************************************
600//**************************************************************************************
601//**************************************************************************************
602
603Function IR3L_LinFitsListBoxProc(lba) : ListBoxControl
604        STRUCT WMListboxAction &lba
605
606        Variable row = lba.row
607        WAVE/T/Z listWave = lba.listWave
608        WAVE/Z selWave = lba.selWave
609        string FoldernameStr
610        Variable isData1or2
611        switch( lba.eventCode )
612                case -1: // control being killed
613                        break
614                case 1: // mouse down
615                        break
616                case 3: // double click
617//                      NVAR ProcessTest=root:Packages:Irena:SASDataMerging:ProcessTest
618//                      NVAR ProcessManually=root:Packages:Irena:SASDataMerging:ProcessManually
619//                      NVAR AutosaveAfterProcessing = root:Packages:Irena:SASDataMerging:AutosaveAfterProcessing
620//                      if(col==0)
621//                              isData1or2=1
622//                      else
623//                              isData1or2=2
624//                      endif
625                        FoldernameStr=listWave[row]
626                        IR3L_CopyAndAppendData(FoldernameStr)
627//                      if(col==1&&!ProcessTest)                //this is second column of data
628//                              IR3D_MergeProcessData()
629//                      endif
630//                      if(col==1&&AutosaveAfterProcessing&&ProcessManually)
631//                              IR3D_SaveData()
632//                      endif
633                        break
634                case 4: // cell selection
635                case 5: // cell selection plus shift key
636                        break
637                case 6: // begin edit
638                        break
639                case 7: // finish edit
640                        break
641                case 13: // checkbox clicked (Igor 6.2 or later)
642                        break
643        endswitch
644
645        return 0
646End
647//**************************************************************************************
648//**************************************************************************************
649Function IR3L_CopyAndAppendData(FolderNameStr)
650        string FolderNameStr
651       
652        string oldDf=GetDataFolder(1)
653        SetDataFolder root:Packages:Irena:SimpleFits                                    //go into the folder
654        //IR3D_SetSavedNotSavedMessage(0)
655
656                SVAR DataStartFolder=root:Packages:Irena:SimpleFits:DataStartFolder
657                SVAR DataFolderName=root:Packages:Irena:SimpleFits:DataFolderName
658                SVAR IntensityWaveName=root:Packages:Irena:SimpleFits:IntensityWaveName
659                SVAR QWavename=root:Packages:Irena:SimpleFits:QWavename
660                SVAR ErrorWaveName=root:Packages:Irena:SimpleFits:ErrorWaveName
661                SVAR dQWavename=root:Packages:Irena:SimpleFits:dQWavename
662                NVAR UseIndra2Data=root:Packages:Irena:SimpleFits:UseIndra2Data
663                NVAR UseQRSdata=root:Packages:Irena:SimpleFits:UseQRSdata
664                //these are variables used by the control procedure
665                NVAR  UseResults=  root:Packages:Irena:SimpleFits:UseResults
666                NVAR  UseUserDefinedData=  root:Packages:Irena:SimpleFits:UseUserDefinedData
667                NVAR  UseModelData = root:Packages:Irena:SimpleFits:UseModelData
668                SVAR DataFolderName  = root:Packages:Irena:SimpleFits:DataFolderName
669                SVAR IntensityWaveName = root:Packages:Irena:SimpleFits:IntensityWaveName
670                SVAR QWavename = root:Packages:Irena:SimpleFits:QWavename
671                SVAR ErrorWaveName = root:Packages:Irena:SimpleFits:ErrorWaveName
672                UseResults = 0
673                UseUserDefinedData = 0
674                UseModelData = 0
675                //get the names of waves, assume this tool actually works. May not under some conditions. In that case this tool will not work.
676                DataFolderName = DataStartFolder+FolderNameStr
677                QWavename = stringFromList(0,IR2P_ListOfWaves("Xaxis","", "IR3L_SimpleFitsPanel"))
678                IntensityWaveName = stringFromList(0,IR2P_ListOfWaves("Yaxis","*", "IR3L_SimpleFitsPanel"))
679                ErrorWaveName = stringFromList(0,IR2P_ListOfWaves("Error","*", "IR3L_SimpleFitsPanel"))
680                if(UseIndra2Data)
681                        dQWavename = ReplaceString("Qvec", QWavename, "dQ")
682                elseif(UseQRSdata)
683                        dQWavename = "w"+QWavename[1,31]
684                else
685                        dQWavename = ""
686                endif
687                Wave/Z SourceIntWv=$(DataFolderName+IntensityWaveName)
688                Wave/Z SourceQWv=$(DataFolderName+QWavename)
689                Wave/Z SourceErrorWv=$(DataFolderName+ErrorWaveName)
690                Wave/Z SourcedQWv=$(DataFolderName+dQWavename)
691                if(!WaveExists(SourceIntWv)||   !WaveExists(SourceQWv)||!WaveExists(SourceErrorWv))
692                        Abort "Data selection failed for Data 1"
693                endif
694                Duplicate/O SourceIntWv, OriginalDataIntWave
695                Duplicate/O SourceQWv, OriginalDataQWave
696                Duplicate/O SourceErrorWv, OriginalDataErrorWave
697                if(WaveExists(SourcedQWv))
698                        Duplicate/O SourcedQWv, OriginalDatadQWave
699                else
700                        dQWavename=""
701                endif
702                IR3L_AppendDataToGraphLogLog()
703                IR3L_CreateLinearizedData()
704                IR3L_AppendDataToGraphModel()
705//              IR3D_PresetOutputStrings()
706//              Wave/Z ResultIntensity = root:Packages:Irena:SASDataMerging:ResultIntensity
707//              if(WaveExists(ResultIntensity))
708//                      ResultIntensity= NaN
709//              endif
710                print "Added Data from folder : "+DataFolderName
711        SetDataFolder oldDf
712end
713//**********************************************************************************************************
714//**********************************************************************************************************
715//**********************************************************************************************************
716Function IR3L_CreateLinearizedData()
717
718        string oldDf=GetDataFolder(1)
719        SetDataFolder root:Packages:Irena:SimpleFits                                    //go into the folder
720        Wave OriginalDataIntWave=root:Packages:Irena:SimpleFits:OriginalDataIntWave
721        Wave OriginalDataQWave=root:Packages:Irena:SimpleFits:OriginalDataQWave
722        Wave OriginalDataErrorWave=root:Packages:Irena:SimpleFits:OriginalDataErrorWave
723        SVAR SimpleModel=root:Packages:Irena:SimpleFits:SimpleModel
724        Duplicate/O OriginalDataIntWave, LinModelDataIntWave, ModelNormalizedResidual
725        Duplicate/O OriginalDataQWave, LinModelDataQWave, ModelNormResXWave
726        Duplicate/O OriginalDataErrorWave, LinModelDataEWave
727        ModelNormalizedResidual = 0
728        if(stringmatch(SimpleModel,"Guinier"))
729                LinModelDataQWave = OriginalDataQWave^2
730                ModelNormResXWave = OriginalDataQWave^2
731        endif
732       
733       
734        SetDataFolder oldDf
735end
736
737//**********************************************************************************************************
738//**********************************************************************************************************
739//**********************************************************************************************************
740
741
742
743Function IR3L_AppendDataToGraphModel()
744       
745        DoWindow IR3L_SimpleFitsPanel
746        if(!V_Flag)
747                return 0
748        endif
749        variable WhichLegend=0
750        variable startQp, endQp, tmpStQ
751
752//      Duplicate/O OriginalDataIntWave, LinModelDataIntWave, ModelNormalizedResidual
753//      Duplicate/O OriginalDataQWave, LinModelDataQWave, ModelNormResXWave
754//      Duplicate/O OriginalDataErrorWave, LinModelDataEWave
755
756        Wave LinModelDataIntWave=root:Packages:Irena:SimpleFits:LinModelDataIntWave
757        Wave LinModelDataQWave=root:Packages:Irena:SimpleFits:LinModelDataQWave
758        Wave LinModelDataEWave=root:Packages:Irena:SimpleFits:LinModelDataEWave
759        CheckDisplayed /W=IR3L_SimpleFitsPanel#LogLogDataDisplay LinModelDataIntWave
760        if(!V_flag)
761                AppendToGraph /W=IR3L_SimpleFitsPanel#LinearizedDataDisplay  LinModelDataIntWave  vs LinModelDataQWave
762                ModifyGraph /W=IR3L_SimpleFitsPanel#LinearizedDataDisplay log=1, mirror(bottom)=1
763                Label /W=IR3L_SimpleFitsPanel#LinearizedDataDisplay left "\\Z"+IN2G_LkUpDfltVar("AxisLabelSize")+"Intensity"
764                Label /W=IR3L_SimpleFitsPanel#LinearizedDataDisplay bottom "\\Z"+IN2G_LkUpDfltVar("AxisLabelSize")+"Q [A\\S-1\\M]"
765                ErrorBars /W=IR3L_SimpleFitsPanel#LinearizedDataDisplay LinModelDataIntWave Y,wave=(LinModelDataEWave,LinModelDataEWave)               
766        endif
767//      NVAR DataQEnd = root:Packages:Irena:SimpleFits:DataQEnd
768//      if(DataQEnd>0)                  //old Q max already set.
769//              endQp = BinarySearch(OriginalDataQWave, DataQEnd)
770//      endif
771//      if(endQp<1)     //Qmax not set or not found. Set to last point-1 on that wave.
772//              DataQEnd = OriginalDataQWave[numpnts(OriginalDataQWave)-2]
773//              endQp = numpnts(OriginalDataQWave)-2
774//      endif
775//      cursor /W=IR3L_SimpleFitsPanel#LogLogDataDisplay B, OriginalDataIntWave, endQp
776        DoUpdate
777
778        Wave/Z ModelNormalizedResidual=root:Packages:Irena:SimpleFits:ModelNormalizedResidual
779        Wave/Z ModelNormResXWave=root:Packages:Irena:SimpleFits:ModelNormResXWave
780        CheckDisplayed /W=IR3L_SimpleFitsPanel#ResidualDataDisplay ModelNormalizedResidual  //, ResultIntensity
781        if(!V_flag)
782                AppendToGraph /W=IR3L_SimpleFitsPanel#ResidualDataDisplay  ModelNormalizedResidual  vs ModelNormResXWave
783                ModifyGraph /W=IR3L_SimpleFitsPanel#LinearizedDataDisplay log=1, mirror(bottom)=1
784                Label /W=IR3L_SimpleFitsPanel#LinearizedDataDisplay left "\\Z"+IN2G_LkUpDfltVar("AxisLabelSize")+"Normalized res."
785                Label /W=IR3L_SimpleFitsPanel#LinearizedDataDisplay bottom "\\Z"+IN2G_LkUpDfltVar("AxisLabelSize")+"Q [A\\S-1\\M]"
786        endif
787
788
789
790        string Shortname1, ShortName2
791       
792        switch(V_Flag)  // numeric switch
793                case 0:         // execute if case matches expression
794                        Legend/W=IR3L_SimpleFitsPanel#LogLogDataDisplay /N=text0/K
795                        break                                           // exit from switch
796//              case 1:         // execute if case matches expression
797//                      SVAR DataFolderName=root:Packages:Irena:SimpleFits:DataFolderName
798//                      Shortname1 = StringFromList(ItemsInList(DataFolderName1, ":")-1, DataFolderName1  ,":")
799//                      Legend/W=IR3L_SimpleFitsPanel#LogLogDataDisplay /C/N=text0/J/A=LB "\\s(OriginalData1IntWave) "+Shortname1
800//                      break
801//              case 2:
802//                      SVAR DataFolderName=root:Packages:Irena:SimpleFits:DataFolderName
803//                      Shortname2 = StringFromList(ItemsInList(DataFolderName2, ":")-1, DataFolderName2  ,":")
804//                      Legend/W=IR3L_SimpleFitsPanel#LogLogDataDisplay /C/N=text0/J/A=LB "\\s(OriginalData2IntWave) " + Shortname2             
805//                      break
806//              case 3:
807//                      SVAR DataFolderName=root:Packages:Irena:SimpleFits:DataFolderName
808//                      Shortname1 = StringFromList(ItemsInList(DataFolderName1, ":")-1, DataFolderName1  ,":")
809//                      Legend/W=IR3L_SimpleFitsPanel#LogLogDataDisplay /C/N=text0/J/A=LB "\\s(OriginalData1IntWave) "+Shortname1+"\r\\s(OriginalData2IntWave) "+Shortname2
810//                      break
811//              case 7:
812//                      SVAR DataFolderName=root:Packages:Irena:SimpleFits:DataFolderName
813//                      Shortname1 = StringFromList(ItemsInList(DataFolderName1, ":")-1, DataFolderName1  ,":")
814//                      Legend/W=IR3L_SimpleFitsPanel#LogLogDataDisplay /C/N=text0/J/A=LB "\\s(OriginalData1IntWave) "+Shortname1+"\r\\s(OriginalData2IntWave) "+Shortname2+"\r\\s(ResultIntensity) Merged Data"
815                        break
816        endswitch
817
818       
819end
820//**********************************************************************************************************
821//**********************************************************************************************************
822//**********************************************************************************************************
823
824
825Function IR3L_AppendDataToGraphLogLog()
826       
827        DoWindow IR3L_SimpleFitsPanel
828        if(!V_Flag)
829                return 0
830        endif
831        variable WhichLegend=0
832        variable startQp, endQp, tmpStQ
833        Wave OriginalDataIntWave=root:Packages:Irena:SimpleFits:OriginalDataIntWave
834        Wave OriginalDataQWave=root:Packages:Irena:SimpleFits:OriginalDataQWave
835        Wave OriginalDataErrorWave=root:Packages:Irena:SimpleFits:OriginalDataErrorWave
836        CheckDisplayed /W=IR3L_SimpleFitsPanel#LogLogDataDisplay OriginalDataIntWave
837        if(!V_flag)
838                AppendToGraph /W=IR3L_SimpleFitsPanel#LogLogDataDisplay  OriginalDataIntWave  vs OriginalDataQWave
839                ModifyGraph /W=IR3L_SimpleFitsPanel#LogLogDataDisplay log=1, mirror(bottom)=1
840                Label /W=IR3L_SimpleFitsPanel#LogLogDataDisplay left "Intensity 1"
841                Label /W=IR3L_SimpleFitsPanel#LogLogDataDisplay bottom "Q [A\\S-1\\M]"
842                ErrorBars /W=IR3L_SimpleFitsPanel#LogLogDataDisplay OriginalDataIntWave Y,wave=(OriginalDataErrorWave,OriginalDataErrorWave)           
843        endif
844        NVAR DataQEnd = root:Packages:Irena:SimpleFits:DataQEnd
845        if(DataQEnd>0)                  //old Q max already set.
846                endQp = BinarySearch(OriginalDataQWave, DataQEnd)
847        endif
848        if(endQp<1)     //Qmax not set or not found. Set to last point-1 on that wave.
849                DataQEnd = OriginalDataQWave[numpnts(OriginalDataQWave)-2]
850                endQp = numpnts(OriginalDataQWave)-2
851        endif
852        cursor /W=IR3L_SimpleFitsPanel#LogLogDataDisplay B, OriginalDataIntWave, endQp
853        DoUpdate
854
855        Wave/Z OriginalDataIntWave=root:Packages:Irena:SimpleFits:OriginalDataIntWave
856        CheckDisplayed /W=IR3L_SimpleFitsPanel#LogLogDataDisplay OriginalDataIntWave  //, ResultIntensity
857        string Shortname1, ShortName2
858       
859        switch(V_Flag)  // numeric switch
860                case 0:         // execute if case matches expression
861                        Legend/W=IR3L_SimpleFitsPanel#LogLogDataDisplay /N=text0/K
862                        break                                           // exit from switch
863//              case 1:         // execute if case matches expression
864//                      SVAR DataFolderName=root:Packages:Irena:SimpleFits:DataFolderName
865//                      Shortname1 = StringFromList(ItemsInList(DataFolderName1, ":")-1, DataFolderName1  ,":")
866//                      Legend/W=IR3L_SimpleFitsPanel#LogLogDataDisplay /C/N=text0/J/A=LB "\\s(OriginalData1IntWave) "+Shortname1
867//                      break
868//              case 2:
869//                      SVAR DataFolderName=root:Packages:Irena:SimpleFits:DataFolderName
870//                      Shortname2 = StringFromList(ItemsInList(DataFolderName2, ":")-1, DataFolderName2  ,":")
871//                      Legend/W=IR3L_SimpleFitsPanel#LogLogDataDisplay /C/N=text0/J/A=LB "\\s(OriginalData2IntWave) " + Shortname2             
872//                      break
873//              case 3:
874//                      SVAR DataFolderName=root:Packages:Irena:SimpleFits:DataFolderName
875//                      Shortname1 = StringFromList(ItemsInList(DataFolderName1, ":")-1, DataFolderName1  ,":")
876//                      Legend/W=IR3L_SimpleFitsPanel#LogLogDataDisplay /C/N=text0/J/A=LB "\\s(OriginalData1IntWave) "+Shortname1+"\r\\s(OriginalData2IntWave) "+Shortname2
877//                      break
878//              case 7:
879//                      SVAR DataFolderName=root:Packages:Irena:SimpleFits:DataFolderName
880//                      Shortname1 = StringFromList(ItemsInList(DataFolderName1, ":")-1, DataFolderName1  ,":")
881//                      Legend/W=IR3L_SimpleFitsPanel#LogLogDataDisplay /C/N=text0/J/A=LB "\\s(OriginalData1IntWave) "+Shortname1+"\r\\s(OriginalData2IntWave) "+Shortname2+"\r\\s(ResultIntensity) Merged Data"
882                        break
883        endswitch
884
885       
886end
887//**********************************************************************************************************
888//**********************************************************************************************************
889//**********************************************************************************************************
Note: See TracBrowser for help on using the repository browser.