source: trunk/User Procedures/Irena/IR3_MultiDataPlot.ipf @ 857

Last change on this file since 857 was 857, checked in by ilavsky, 22 months ago

Working on MultiDataFit? tool

  • Property svn:eol-style set to native
File size: 44.2 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 test version
13
14
15
16///******************************************************************************************
17///******************************************************************************************
18///******************************************************************************************
19///******************************************************************************************
20Function IR3L_MultiSaPlotFit()
21
22        IN2G_CheckScreenSize("width",1200)
23        DoWIndow IR3L_MultiSaPlotFitPanel
24        if(V_Flag)
25                DoWindow/F IR3L_MultiSaPlotFitPanel
26                //DoWindow/K IR3L_MultiSaPlotFitPanel
27                //Execute("IR3L_MultiSaPlotFitPanel()")
28        else
29                IR3L_InitMultiSaPlotFit()
30                IR3L_MultiSaPlotFitPanelFnct()
31//              setWIndow IR3L_MultiSaPlotFitPanel, 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//************************************************************************************************************
43Function IR3L_MultiSaPlotFitPanelFnct()
44        PauseUpdate; Silent 1           // building window...
45        NewPanel /K=1 /W=(2.25,43.25,600,800) as "Simple Fits"
46        DoWIndow/C IR3L_MultiSaPlotFitPanel
47        TitleBox MainTitle title="Multi Sample plots",pos={200,2},frame=0,fstyle=3, fixedSize=1,font= "Times New Roman", size={360,30},fSize=22,fColor=(0,0,52224)
48//      TitleBox FakeLine2 title=" ",fixedSize=1,size={330,3},pos={16,428},frame=0,fColor=(0,0,52224), labelBack=(0,0,52224)
49//      TitleBox FakeLine3 title=" ",fixedSize=1,size={330,3},pos={16,512},frame=0,fColor=(0,0,52224), labelBack=(0,0,52224)
50//      TitleBox FakeLine4 title=" ",fixedSize=1,size={330,3},pos={16,555},frame=0,fColor=(0,0,52224), labelBack=(0,0,52224)
51//      TitleBox Info1 title="Modify data 1                            Modify Data 2",pos={36,325},frame=0,fstyle=1, fixedSize=1,size={350,20},fSize=12
52//      TitleBox FakeLine5 title=" ",fixedSize=1,size={330,3},pos={16,300},frame=0,fColor=(0,0,52224), labelBack=(0,0,52224)
53        string UserDataTypes=""
54        string UserNameString=""
55        string XUserLookup=""
56        string EUserLookup=""
57        IR2C_AddDataControls("Irena:MultiSaPlotFit","IR3L_MultiSaPlotFitPanel","DSM_Int;M_DSM_Int;SMR_Int;M_SMR_Int;","AllCurrentlyAllowedTypes",UserDataTypes,UserNameString,XUserLookup,EUserLookup, 0,1, DoNotAddControls=1)
58
59
60        DrawText 60,25,"Data selection"
61        Checkbox UseIndra2Data, pos={10,30},size={76,14},title="USAXS", proc=IR3L_MultiPlotCheckProc, variable=root:Packages:Irena:MultiSaPlotFit:UseIndra2Data
62        checkbox UseQRSData, pos={120,30}, title="QRS(QIS)", size={76,14},proc=IR3L_MultiPlotCheckProc, variable=root:Packages:Irena:MultiSaPlotFit:UseQRSdata
63        PopupMenu StartFolderSelection,pos={10,50},size={180,15},proc=IR3L_PopMenuProc,title="Start fldr"
64        SVAR DataStartFolder = root:Packages:Irena:MultiSaPlotFit:DataStartFolder
65        PopupMenu StartFolderSelection,mode=1,popvalue=DataStartFolder,value= #"\"root:;\"+IR2S_GenStringOfFolders2(root:Packages:Irena:MultiSaPlotFit:UseIndra2Data, root:Packages:Irena:MultiSaPlotFit: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:MultiSaPlotFit:DataMatchString
68        PopupMenu SortFolders,pos={10,100},size={180,20},fStyle=2,proc=IR3L_PopMenuProc,title="Sort Folders"
69        SVAR FolderSortString = root:Packages:Irena:MultiSaPlotFit:FolderSortString
70        PopupMenu SortFolders,mode=1,popvalue=FolderSortString,value= #"root:Packages:Irena:MultiSaPlotFit:FolderSortStringAll"
71
72        PopupMenu SubTypeData,pos={10,120},size={180,20},fStyle=2,proc=IR3L_PopMenuProc,title="Sub-type Data"
73        SVAR DataSubType = root:Packages:Irena:MultiSaPlotFit:DataSubType
74        PopupMenu SubTypeData,mode=1,popvalue=DataSubType,value= ""
75
76
77        ListBox DataFolderSelection,pos={4,165},size={250,495}, mode=10
78        ListBox DataFolderSelection,listWave=root:Packages:Irena:MultiSaPlotFit:ListOfAvailableData
79        ListBox DataFolderSelection,selWave=root:Packages:Irena:MultiSaPlotFit:SelectionOfAvailableData
80        ListBox DataFolderSelection,proc=IR3L_LinFitsListBoxProc
81
82
83        //Plotting controls...
84        TitleBox FakeLine1 title=" ",fixedSize=1,size={330,3},pos={260,165},frame=0,fColor=(0,0,52224), labelBack=(0,0,52224)
85       
86        Button NewGraphPlotData,pos={270,170},size={140,20}, proc=IR3L_ButtonProc,title="Graph (new graph)", help={"Plot selected data in new graph"}
87        Button AppendPlotData,pos={430,170},size={140,20}, proc=IR3L_ButtonProc,title="Append (to top graph)", help={"Append selected data to top graph"}
88        Button ApplyPresetFormating,pos={430,190},size={140,20}, proc=IR3L_ButtonProc,title="Apply Preset Formating", help={"Apply Preset Formating to update graph based on these choices"}
89
90
91
92        TitleBox GraphAxesControls title="Graph Axes Options",fixedSize=1,size={150,20},pos={350,220},frame=0,fstyle=1, fixedSize=1,fSize=12
93
94        TitleBox XAxisLegendTB title="X Axis Legend",fixedSize=1,size={150,20},pos={280,240},frame=0,fstyle=1, fixedSize=1,fSize=12
95        TitleBox YAxisLegendTB title="Y Axis Legend",fixedSize=1,size={150,20},pos={450,240},frame=0,fstyle=1, fixedSize=1,fSize=12
96
97        SetVariable XAxisLegend,pos={260,260},size={160,15}, proc=IR3L_SetVarProc,title=" "
98        Setvariable XAxisLegend,fSize=10,fStyle=2, variable=root:Packages:Irena:MultiSaPlotFit:XAxisLegend
99        SetVariable YAxislegend,pos={430,260},size={160,15}, proc=IR3L_SetVarProc,title=" "
100        Setvariable YAxislegend,fSize=10,fStyle=2, variable=root:Packages:Irena:MultiSaPlotFit:YAxislegend
101       
102        Checkbox LogXAxis, pos={280,280},size={76,14},title="LogXAxis?", proc=IR3L_MultiPlotCheckProc, variable=root:Packages:Irena:MultiSaPlotFit:LogXAxis
103        Checkbox LogYAxis, pos={450,280},size={76,14},title="LogYAxis?", proc=IR3L_MultiPlotCheckProc, variable=root:Packages:Irena:MultiSaPlotFit:LogYAxis
104
105
106        TitleBox GraphTraceControls title="Graph Trace Options",fixedSize=1,size={150,20},pos={350,420},frame=0,fstyle=1, fixedSize=1,fSize=12
107
108        Checkbox Colorize, pos={280,440},size={76,14},title="Colorize?", proc=IR3L_MultiPlotCheckProc, variable=root:Packages:Irena:MultiSaPlotFit:Colorize
109        Checkbox AddLegend, pos={280,460},size={76,14},title="AddLegend?", proc=IR3L_MultiPlotCheckProc, variable=root:Packages:Irena:MultiSaPlotFit:AddLegend
110
111
112
113        DrawText 4,678,"Double click to add data to graph."
114        DrawText 4,695,"Shift-click to select range of data."
115        DrawText 4,710,"Ctrl/Cmd-click to select one data set."
116        DrawText 4,725,"Regex for not contain: ^((?!string).)*$"
117        DrawText 4,740,"Regex for contain:  string"
118        DrawText 4,755,"Regex for case independent contain:  (?i)string"
119       
120        IR3L_FixPanelControls()
121end
122//**********************************************************************************************************
123//**********************************************************************************************************
124//**********************************************************************************************************
125Function IR3L_FixPanelControls()
126
127        NVAR UseIndra2Data = root:Packages:Irena:MultiSaPlotFit:UseIndra2Data
128        NVAR UseQRSData=root:Packages:Irena:MultiSaPlotFit:UseQRSdata
129        SVAR DataSubType = root:Packages:Irena:MultiSaPlotFit:DataSubType
130        SVAR DataSubTypeResultsList=root:Packages:Irena:MultiSaPlotFit:DataSubTypeResultsList
131        SVAR DataSubTypeUSAXSList = root:Packages:Irena:MultiSaPlotFit:DataSubTypeUSAXSList
132        if(UseIndra2Data)
133                        PopupMenu SubTypeData, disable =0
134                        PopupMenu SubTypeData,mode=1,popvalue=DataSubType,value=#"root:Packages:Irena:MultiSaPlotFit:DataSubTypeUSAXSList"
135        else
136                        PopupMenu SubTypeData,mode=1,popvalue=DataSubType,value= ""
137                        PopupMenu SubTypeData, disable=1
138        endif
139end
140
141//**********************************************************************************************************
142//**********************************************************************************************************
143//**********************************************************************************************************
144
145Function IR3L_InitMultiSaPlotFit()     
146
147
148        string oldDf=GetDataFolder(1)
149        string ListOfVariables
150        string ListOfStrings
151        variable i
152               
153        if (!DataFolderExists("root:Packages:Irena:MultiSaPlotFit"))            //create folder
154                NewDataFolder/O root:Packages
155                NewDataFolder/O root:Packages:Irena
156                NewDataFolder/O root:Packages:Irena:MultiSaPlotFit
157        endif
158        SetDataFolder root:Packages:Irena:MultiSaPlotFit                                        //go into the folder
159
160        //here define the lists of variables and strings needed, separate names by ;...
161        ListOfStrings="DataFolderName;IntensityWaveName;QWavename;ErrorWaveName;dQWavename;DataUnits;"
162        ListOfStrings+="DataStartFolder;DataMatchString;FolderSortString;FolderSortStringAll;"
163        ListOfStrings+="UserMessageString;SavedDataMessage;"
164        ListOfStrings+="SimpleModel;ListOfSimpleModels;"
165        ListOfStrings+="DataSubTypeUSAXSList;DataSubTypeResultsList;DataSubType;"
166        ListOfStrings+="XAxisLegend;YAxislegend;"
167
168        ListOfVariables="UseIndra2Data1;UseQRSdata1;"
169        ListOfVariables+="DataBackground;"
170        ListOfVariables+="LogXAxis;LogYAxis;Colorize;AddLegend;"
171       
172        //ListOfVariables+="Guinier_Rg;Guinier_I0;"
173        //ListOfVariables+="ProcessManually;ProcessSequentially;OverwriteExistingData;AutosaveAfterProcessing;"
174        ///ListOfVariables+="DataQEnd;DataQstart;"
175
176        //and here we create them
177        for(i=0;i<itemsInList(ListOfVariables);i+=1)   
178                IN2G_CreateItem("variable",StringFromList(i,ListOfVariables))
179        endfor         
180                                                               
181        for(i=0;i<itemsInList(ListOfStrings);i+=1)     
182                IN2G_CreateItem("string",StringFromList(i,ListOfStrings))
183        endfor 
184
185        ListOfStrings="DataFolderName;IntensityWaveName;QWavename;ErrorWaveName;dQWavename;"
186        for(i=0;i<itemsInList(ListOfStrings);i+=1)     
187                SVAR teststr=$(StringFromList(i,ListOfStrings))
188                teststr =""
189        endfor         
190        ListOfStrings="DataMatchString;FolderSortString;FolderSortStringAll;"
191        for(i=0;i<itemsInList(ListOfStrings);i+=1)     
192                SVAR teststr=$(StringFromList(i,ListOfStrings))
193                if(strlen(teststr)<1)
194                        teststr =""
195                endif
196        endfor         
197        ListOfStrings="DataStartFolder;"
198        for(i=0;i<itemsInList(ListOfStrings);i+=1)     
199                SVAR teststr=$(StringFromList(i,ListOfStrings))
200                if(strlen(teststr)<1)
201                        teststr ="root:"
202                endif
203        endfor         
204        SVAR ListOfSimpleModels
205        ListOfSimpleModels="Guinier;"
206        SVAR FolderSortStringAll
207        FolderSortStringAll = "Alphabetical;Reverse Alphabetical;_xyz;_xyz.ext;Reverse _xyz;Reverse _xyz.ext;Sxyz_;Reverse Sxyz_;_xyzmin;_xyzC;_xyzpct;_xyz_000;Reverse _xyz_000;"
208        SVAR SimpleModel
209        if(strlen(SimpleModel)<1)
210                SimpleModel="Guinier"
211        endif
212        SVAR DataSubTypeUSAXSList
213        DataSubTypeUSAXSList="DSM_Int;SMR_Int;R_Int;BL_R_Int;USAXS_PD;Monitor;"
214        SVAR DataSubTypeResultsList
215        DataSubTypeResultsList="Size"
216        SVAR DataSubType
217        DataSubType="DSM_Int"
218
219
220//      NVAR OverwriteExistingData
221//      NVAR AutosaveAfterProcessing
222//      OverwriteExistingData=1
223//      AutosaveAfterProcessing=1
224//      if(ProcessTest)
225//              AutosaveAfterProcessing=0
226//      endif
227
228        Make/O/T/N=(0) ListOfAvailableData
229        Make/O/N=(0) SelectionOfAvailableData
230        SetDataFolder oldDf
231
232end
233//**************************************************************************************
234//**************************************************************************************
235//**************************************************************************************
236
237//*****************************************************************************************************************
238//*****************************************************************************************************************
239//**************************************************************************************
240//**************************************************************************************
241
242Function IR3L_MultiPlotCheckProc(cba) : CheckBoxControl
243        STRUCT WMCheckboxAction &cba
244
245        switch( cba.eventCode )
246                case 2: // mouse up
247                        Variable checked = cba.checked
248                        NVAR UseIndra2Data =  root:Packages:Irena:MultiSaPlotFit:UseIndra2Data
249                        NVAR UseQRSData =  root:Packages:Irena:MultiSaPlotFit:UseQRSData
250                        SVAR DataStartFolder = root:Packages:Irena:MultiSaPlotFit:DataStartFolder
251                        if(stringmatch(cba.ctrlName,"UseIndra2Data"))
252                                if(checked)
253                                        UseQRSData = 0
254                                        IR3L_FixPanelControls()
255                                endif
256                        endif
257                        if(stringmatch(cba.ctrlName,"UseQRSData"))
258                                if(checked)
259                                        UseIndra2Data = 0
260                                        IR3L_FixPanelControls()
261                                endif
262                        endif
263                        if(stringmatch(cba.ctrlName,"UseQRSData")||stringmatch(cba.ctrlName,"UseIndra2Data"))
264                                DataStartFolder = "root:"
265                                PopupMenu StartFolderSelection,win=IR3L_MultiSaPlotFitPanel, mode=1,popvalue="root:"
266                                IR3L_UpdateListOfAvailFiles()
267                        endif
268                        if(stringmatch(cba.ctrlName,"LogXAxis"))
269                                if(checked)
270                                        ModifyGraph/W=MultiSamplePlotGraph log(bottom)=1
271                                else
272                                        ModifyGraph/W=MultiSamplePlotGraph log(bottom)=0
273                                endif
274                        endif
275                        if(stringmatch(cba.ctrlName,"LogYAxis"))
276                                if(checked)
277                                        ModifyGraph/W=MultiSamplePlotGraph log(left)=1
278                                else
279                                        ModifyGraph/W=MultiSamplePlotGraph log(left)=0
280                                endif
281                        endif
282                        if(stringmatch(cba.ctrlName,"Colorize"))
283                                if(checked)
284                                        DoWIndow/F MultiSamplePlotGraph
285                                        IN2G_ColorTopGrphRainbow()
286                                else
287                ModifyGraph/W=MultiSamplePlotGraph rgb=(0,0,0)
288                                endif
289                        endif
290                        if(stringmatch(cba.ctrlName,"AddLegend"))
291                                if(checked)
292                                        DoWIndow/F MultiSamplePlotGraph
293                                        //IN2G_LegendTopGrphFldr(fontsize, numberofItems, UseFolderName, UseWavename)
294                                        IN2G_LegendTopGrphFldr(str2num(IN2G_LkUpDfltVar("defaultFontSize")), 20, 1, 1)
295                                else
296                                        Legend/K/N=text0/W=MultiSamplePlotGraph
297                                endif
298                        endif
299               
300               
301                        break
302                case -1: // control being killed
303                        break
304        endswitch
305
306        return 0
307End
308//**************************************************************************************
309//**************************************************************************************
310//**************************************************************************************
311//**************************************************************************************
312//**************************************************************************************
313Function IR3L_UpdateListOfAvailFiles()
314
315
316        string OldDF=GetDataFolder(1)
317        setDataFolder root:Packages:Irena:MultiSaPlotFit
318       
319        NVAR UseIndra2Data=root:Packages:Irena:MultiSaPlotFit:UseIndra2Data
320        NVAR UseQRSdata=root:Packages:Irena:MultiSaPlotFit:UseQRSData
321        SVAR StartFolderName=root:Packages:Irena:MultiSaPlotFit:DataStartFolder
322        SVAR DataMatchString= root:Packages:Irena:MultiSaPlotFit:DataMatchString
323        string LStartFolder, FolderContent
324        if(stringmatch(StartFolderName,"---"))
325                LStartFolder="root:"
326        else
327                LStartFolder = StartFolderName
328        endif
329        string CurrentFolders=IR3D_GenStringOfFolders(LStartFolder,UseIndra2Data, UseQRSData, 2,0,DataMatchString)
330
331        Wave/T ListOfAvailableData=root:Packages:Irena:MultiSaPlotFit:ListOfAvailableData
332        Wave SelectionOfAvailableData=root:Packages:Irena:MultiSaPlotFit:SelectionOfAvailableData
333        variable i, j, match
334        string TempStr, FolderCont
335
336               
337        Redimension/N=(ItemsInList(CurrentFolders , ";")) ListOfAvailableData, SelectionOfAvailableData
338        j=0
339        For(i=0;i<ItemsInList(CurrentFolders , ";");i+=1)
340                //TempStr = RemoveFromList("USAXS",RemoveFromList("root",StringFromList(i, CurrentFolders , ";"),":"),":")
341                TempStr = ReplaceString(LStartFolder, StringFromList(i, CurrentFolders , ";"),"")
342                if(strlen(TempStr)>0)
343                        ListOfAvailableData[j] = tempStr
344                        j+=1
345                endif
346        endfor
347        if(j<ItemsInList(CurrentFolders , ";"))
348                DeletePoints j, numpnts(ListOfAvailableData)-j, ListOfAvailableData, SelectionOfAvailableData
349        endif
350        SelectionOfAvailableData = 0
351        IR3L_SortListOfAvailableFldrs()
352        setDataFolder OldDF
353end
354
355
356//**************************************************************************************
357//**************************************************************************************
358//**************************************************************************************
359//**************************************************************************************
360//**************************************************************************************
361//**************************************************************************************
362//**************************************************************************************
363//**************************************************************************************
364Function IR3L_SortListOfAvailableFldrs()
365       
366        SVAR FolderSortString=root:Packages:Irena:MultiSaPlotFit:FolderSortString
367        Wave/T ListOfAvailableData=root:Packages:Irena:MultiSaPlotFit:ListOfAvailableData
368        Wave SelectionOfAvailableData=root:Packages:Irena:MultiSaPlotFit:SelectionOfAvailableData
369        if(numpnts(ListOfAvailableData)<2)
370                return 0
371        endif
372        Duplicate/Free SelectionOfAvailableData, TempWv
373        variable i, InfoLoc, j=0
374        variable DIDNotFindInfo
375        DIDNotFindInfo =0
376        string tempstr
377        SelectionOfAvailableData=0
378        if(stringMatch(FolderSortString,"---"))
379                //nothing to do
380        elseif(stringMatch(FolderSortString,"Alphabetical"))
381                Sort /A ListOfAvailableData, ListOfAvailableData
382        elseif(stringMatch(FolderSortString,"Reverse Alphabetical"))
383                Sort /A /R ListOfAvailableData, ListOfAvailableData
384        elseif(stringMatch(FolderSortString,"_xyz"))
385                For(i=0;i<numpnts(TempWv);i+=1)
386                        TempWv[i] = str2num(StringFromList(ItemsInList(ListOfAvailableData[i]  , "_")-1, ListOfAvailableData[i]  , "_"))
387                endfor
388                Sort TempWv, ListOfAvailableData
389        elseif(stringMatch(FolderSortString,"Sxyz_"))
390                For(i=0;i<numpnts(TempWv);i+=1)
391                        TempWv[i] = str2num(ReplaceString("S", StringFromList(0, ListOfAvailableData[i], "_"), ""))
392                endfor
393                Sort TempWv, ListOfAvailableData
394        elseif(stringMatch(FolderSortString,"Reverse Sxyz_"))
395                For(i=0;i<numpnts(TempWv);i+=1)
396                        TempWv[i] = str2num(ReplaceString("S", StringFromList(0, ListOfAvailableData[i], "_"), ""))
397                endfor
398                Sort/R TempWv, ListOfAvailableData
399        elseif(stringMatch(FolderSortString,"_xyzmin"))
400                Do
401                        For(i=0;i<ItemsInList(ListOfAvailableData[j] , "_");i+=1)
402                                if(StringMatch(ReplaceString(":", StringFromList(i, ListOfAvailableData[j], "_"),""), "*min" ))
403                                        InfoLoc = i
404                                        break
405                                endif
406                        endfor
407                        j+=1
408                        if(j>(numpnts(ListOfAvailableData)-1))
409                                DIDNotFindInfo=1
410                                break
411                        endif
412                while (InfoLoc<1)
413                if(DIDNotFindInfo)
414                        DoALert /T="Information not found" 0, "Cannot find location of _xyzmin information, sorting alphabetically"
415                        Sort /A ListOfAvailableData, ListOfAvailableData
416                else
417                        For(i=0;i<numpnts(TempWv);i+=1)
418                                if(StringMatch(StringFromList(InfoLoc, ListOfAvailableData[i], "_"), "*min*" ))
419                                        TempWv[i] = str2num(ReplaceString("min", StringFromList(InfoLoc, ListOfAvailableData[i], "_"), ""))
420                                else    //data not found
421                                        TempWv[i] = inf
422                                endif
423                        endfor
424                        Sort TempWv, ListOfAvailableData
425                endif
426        elseif(stringMatch(FolderSortString,"_xyzpct"))
427                Do
428                        For(i=0;i<ItemsInList(ListOfAvailableData[j] , "_");i+=1)
429                                if(StringMatch(ReplaceString(":", StringFromList(i, ListOfAvailableData[j], "_"),""), "*pct" ))
430                                        InfoLoc = i
431                                        break
432                                endif
433                        endfor
434                        j+=1
435                        if(j>(numpnts(ListOfAvailableData)-1))
436                                DIDNotFindInfo=1
437                                break
438                        endif
439                while (InfoLoc<1)
440                if(DIDNotFindInfo)
441                        DoAlert/T="Information not found" 0, "Cannot find location of _xyzpct information, sorting alphabetically"
442                        Sort /A ListOfAvailableData, ListOfAvailableData
443                else
444                        For(i=0;i<numpnts(TempWv);i+=1)
445                                if(StringMatch(StringFromList(InfoLoc, ListOfAvailableData[i], "_"), "*pct*" ))
446                                        TempWv[i] = str2num(ReplaceString("pct", StringFromList(InfoLoc, ListOfAvailableData[i], "_"), ""))
447                                else    //data not found
448                                        TempWv[i] = inf
449                                endif
450                        endfor
451                        Sort TempWv, ListOfAvailableData
452                endif
453        elseif(stringMatch(FolderSortString,"_xyzC"))
454                Do
455                        For(i=0;i<ItemsInList(ListOfAvailableData[j] , "_");i+=1)
456                                if(StringMatch(ReplaceString(":", StringFromList(i, ListOfAvailableData[j], "_"),""), "*C" ))
457                                        InfoLoc = i
458                                        break
459                                endif
460                        endfor
461                        j+=1
462                        if(j>(numpnts(ListOfAvailableData)-1))
463                                DIDNotFindInfo=1
464                                break
465                        endif
466                while (InfoLoc<1)
467                if(DIDNotFindInfo)
468                        DoAlert /T="Information not found" 0, "Cannot find location of _xyzC information, sorting alphabetically"
469                        Sort /A ListOfAvailableData, ListOfAvailableData
470                else
471                        For(i=0;i<numpnts(TempWv);i+=1)
472                                if(StringMatch(StringFromList(InfoLoc, ListOfAvailableData[i], "_"), "*C*" ))
473                                        TempWv[i] = str2num(ReplaceString("C", StringFromList(InfoLoc, ListOfAvailableData[i], "_"), ""))
474                                else    //data not found
475                                        TempWv[i] = inf
476                                endif
477                        endfor
478                        Sort TempWv, ListOfAvailableData
479                endif
480        elseif(stringMatch(FolderSortString,"Reverse _xyz"))
481                For(i=0;i<numpnts(TempWv);i+=1)
482                        TempWv[i] = str2num(StringFromList(ItemsInList(ListOfAvailableData[i]  , "_")-1, ListOfAvailableData[i]  , "_"))
483                endfor
484                Sort /R  TempWv, ListOfAvailableData
485        elseif(stringMatch(FolderSortString,"_xyz.ext"))
486                For(i=0;i<numpnts(TempWv);i+=1)
487                        tempstr = StringFromList(ItemsInList(ListOfAvailableData[i]  , ".")-2, ListOfAvailableData[i]  , ".")
488                        TempWv[i] = str2num(StringFromList(ItemsInList(tempstr , "_")-1, tempstr , "_"))
489                endfor
490                Sort TempWv, ListOfAvailableData
491        elseif(stringMatch(FolderSortString,"Reverse _xyz.ext"))
492                For(i=0;i<numpnts(TempWv);i+=1)
493                        tempstr = StringFromList(ItemsInList(ListOfAvailableData[i]  , ".")-2, ListOfAvailableData[i]  , ".")
494                        TempWv[i] = str2num(StringFromList(ItemsInList(tempstr , "_")-1, tempstr , "_"))
495                endfor
496                Sort /R  TempWv, ListOfAvailableData
497        elseif(stringMatch(FolderSortString,"_xyz_000"))
498                For(i=0;i<numpnts(TempWv);i+=1)
499                        TempWv[i] = str2num(StringFromList(ItemsInList(ListOfAvailableData[i]  , "_")-2, ListOfAvailableData[i]  , "_"))
500                endfor
501                Sort TempWv, ListOfAvailableData
502        elseif(stringMatch(FolderSortString,"Reverse _xyz_000"))
503                For(i=0;i<numpnts(TempWv);i+=1)
504                        TempWv[i] = str2num(StringFromList(ItemsInList(ListOfAvailableData[i]  , "_")-2, ListOfAvailableData[i]  , "_"))
505                endfor
506                Sort /R  TempWv, ListOfAvailableData
507        endif
508
509end
510//**************************************************************************************
511//**************************************************************************************
512//**************************************************************************************
513//**************************************************************************************
514//**************************************************************************************
515
516Function IR3L_PopMenuProc(ctrlName,popNum,popStr) : PopupMenuControl
517        String ctrlName
518        Variable popNum
519        String popStr
520
521        if(stringmatch(ctrlName,"StartFolderSelection"))
522                //Update the listbox using start folde popStr
523                SVAR StartFolderName=root:Packages:Irena:MultiSaPlotFit:DataStartFolder
524                StartFolderName = popStr
525                IR3L_UpdateListOfAvailFiles()
526        endif
527        if(stringmatch(ctrlName,"SortFolders"))
528                //do something here
529                SVAR FolderSortString = root:Packages:Irena:MultiSaPlotFit:FolderSortString
530                FolderSortString = popStr
531                IR3L_UpdateListOfAvailFiles()
532        endif
533        if(stringmatch(ctrlName,"SimpleModel"))
534                //do something here
535                SVAR SimpleModel = root:Packages:Irena:MultiSaPlotFit:SimpleModel
536                SimpleModel = popStr
537                IR3L_CreateLinearizedData()
538                IR3L_AppendDataToGraphModel()
539        endif
540
541        if(stringmatch(ctrlName,"SubTypeData"))
542                //do something here
543                SVAR DataSubType = root:Packages:Irena:MultiSaPlotFit:DataSubType
544                DataSubType = popStr
545        endif
546end
547
548//**************************************************************************************
549//**************************************************************************************
550//**************************************************************************************
551//**************************************************************************************
552
553Function IR3L_SetVarProc(sva) : SetVariableControl
554        STRUCT WMSetVariableAction &sva
555
556        variable tempP
557        switch( sva.eventCode )
558                case 1: // mouse up
559                case 2: // Enter key
560                        if(stringmatch(sva.ctrlName,"FolderNameMatchString1"))
561                                IR3D_UpdateListOfAvailFiles(1)
562                                IR3D_RebuildListboxTables()
563//                              IR2S_SortListOfAvailableFldrs()
564                        endif
565                        NVAR DataQstart=root:Packages:Irena:MultiSaPlotFit:DataQstart
566                        NVAR DataQEnd=root:Packages:Irena:MultiSaPlotFit:DataQEnd
567                       
568                        if(stringmatch(sva.ctrlName,"DataQEnd"))
569                                WAVE OriginalDataQWave = root:Packages:Irena:MultiSaPlotFit:OriginalDataQWave
570                                tempP = BinarySearch(OriginalDataQWave, DataQEnd )
571                                if(tempP<1)
572                                        print "Wrong Q value set, Data Q max must be at most 1 point before the end of Data"
573                                        tempP = numpnts(OriginalDataQWave)-2
574                                        DataQEnd = OriginalDataQWave[tempP]
575                                endif
576        //                      cursor /W=IR3D_DataMergePanel#DataDisplay B, OriginalData1IntWave, tempP
577                        endif
578                        if(stringmatch(sva.ctrlName,"DataQstart"))
579                                WAVE OriginalDataQWave = root:Packages:Irena:MultiSaPlotFit:OriginalDataQWave
580                                tempP = BinarySearch(OriginalDataQWave, DataQstart )
581                                if(tempP<1)
582                                        print "Wrong Q value set, Data Q min must be at least 1 point from the start of Data"
583                                        tempP = 1
584                                        DataQstart = OriginalDataQWave[tempP]
585                                endif
586        //                      cursor /W=IR3D_DataMergePanel#DataDisplay A, OriginalData2IntWave, tempP
587                        endif
588                        break
589
590                case 3: // live update
591                        break
592                case -1: // control being killed
593                        break
594        endswitch
595
596        return 0
597End
598
599//**************************************************************************************
600//**************************************************************************************
601//**************************************************************************************
602//**************************************************************************************
603
604Function IR3L_LinFitsListBoxProc(lba) : ListBoxControl
605        STRUCT WMListboxAction &lba
606
607        Variable row = lba.row
608        WAVE/T/Z listWave = lba.listWave
609        WAVE/Z selWave = lba.selWave
610        string FoldernameStr
611        Variable isData1or2
612        switch( lba.eventCode )
613                case -1: // control being killed
614                        break
615                case 1: // mouse down
616                        break
617                case 3: // double click
618//                      NVAR ProcessTest=root:Packages:Irena:SASDataMerging:ProcessTest
619//                      NVAR ProcessManually=root:Packages:Irena:SASDataMerging:ProcessManually
620//                      NVAR AutosaveAfterProcessing = root:Packages:Irena:SASDataMerging:AutosaveAfterProcessing
621//                      if(col==0)
622//                              isData1or2=1
623//                      else
624//                              isData1or2=2
625//                      endif
626                        FoldernameStr=listWave[row]
627                        IR3L_AppendData(FoldernameStr,"MultiSamplePlotGraph")
628//                      if(col==1&&!ProcessTest)                //this is second column of data
629//                              IR3D_MergeProcessData()
630//                      endif
631//                      if(col==1&&AutosaveAfterProcessing&&ProcessManually)
632//                              IR3D_SaveData()
633//                      endif
634                        break
635                case 4: // cell selection
636                case 5: // cell selection plus shift key
637                        break
638                case 6: // begin edit
639                        break
640                case 7: // finish edit
641                        break
642                case 13: // checkbox clicked (Igor 6.2 or later)
643                        break
644        endswitch
645
646        return 0
647End
648//**************************************************************************************
649//**************************************************************************************
650Function IR3L_AppendData(FolderNameStr, GraphNameString)
651        string FolderNameStr, GraphNameString
652       
653        string oldDf=GetDataFolder(1)
654        SetDataFolder root:Packages:Irena:MultiSaPlotFit                                        //go into the folder
655        //IR3D_SetSavedNotSavedMessage(0)
656
657                SVAR DataStartFolder=root:Packages:Irena:MultiSaPlotFit:DataStartFolder
658                SVAR DataFolderName=root:Packages:Irena:MultiSaPlotFit:DataFolderName
659                SVAR IntensityWaveName=root:Packages:Irena:MultiSaPlotFit:IntensityWaveName
660                SVAR QWavename=root:Packages:Irena:MultiSaPlotFit:QWavename
661                SVAR ErrorWaveName=root:Packages:Irena:MultiSaPlotFit:ErrorWaveName
662                SVAR dQWavename=root:Packages:Irena:MultiSaPlotFit:dQWavename
663                NVAR UseIndra2Data=root:Packages:Irena:MultiSaPlotFit:UseIndra2Data
664                NVAR UseQRSdata=root:Packages:Irena:MultiSaPlotFit:UseQRSdata
665                SVAR DataSubType = root:Packages:Irena:MultiSaPlotFit:DataSubType
666                //these are variables used by the control procedure
667                NVAR  UseResults=  root:Packages:Irena:MultiSaPlotFit:UseResults
668                NVAR  UseUserDefinedData=  root:Packages:Irena:MultiSaPlotFit:UseUserDefinedData
669                NVAR  UseModelData = root:Packages:Irena:MultiSaPlotFit:UseModelData
670                SVAR DataFolderName  = root:Packages:Irena:MultiSaPlotFit:DataFolderName
671                SVAR IntensityWaveName = root:Packages:Irena:MultiSaPlotFit:IntensityWaveName
672                SVAR QWavename = root:Packages:Irena:MultiSaPlotFit:QWavename
673                SVAR ErrorWaveName = root:Packages:Irena:MultiSaPlotFit:ErrorWaveName
674                UseResults = 0
675                UseUserDefinedData = 0
676                UseModelData = 0
677                DataFolderName = DataStartFolder+FolderNameStr
678                if(UseQRSdata)
679                        //get the names of waves, assume this tool actually works. May not under some conditions. In that case this tool will not work.
680                        QWavename = stringFromList(0,IR2P_ListOfWaves("Xaxis","", "IR3L_MultiSaPlotFitPanel"))
681                        IntensityWaveName = stringFromList(0,IR2P_ListOfWaves("Yaxis","*", "IR3L_MultiSaPlotFitPanel"))
682                        ErrorWaveName = stringFromList(0,IR2P_ListOfWaves("Error","*", "IR3L_MultiSaPlotFitPanel"))
683                        if(UseIndra2Data)
684                                dQWavename = ReplaceString("Qvec", QWavename, "dQ")
685                        elseif(UseQRSdata)
686                                dQWavename = "w"+QWavename[1,31]
687                        else
688                                dQWavename = ""
689                        endif
690                elseif(UseIndra2Data)
691                        string DataSubTypeInt = DataSubType
692                        string QvecLookup="R_Int=R_Qvec;BL_R_Int=BL_R_Qvec;SMR_Int=SMR_Qvec;DSM_Int=DSM_Qvec;USAXS_PD=Ar_encoder;Monitor=Ar_encoder;"
693                        string ErrorLookup="R_Int=R_Error;BL_R_Int=BL_R_error;SMR_Int=SMR_Error;DSM_Int=DSM_error;"
694                        string dQLookup="SMR_Int=SMR_dQ;DSM_Int=DSM_dQ;"
695                        string DataSubTypeQvec = StringByKey(DataSubTypeInt, QvecLookup,"=",";")
696                        string DataSubTypeError = StringByKey(DataSubTypeInt, ErrorLookup,"=",";")
697                        string DataSubTypedQ = StringByKey(DataSubTypeInt, dQLookup,"=",";")
698                        IntensityWaveName = DataSubTypeInt
699                        QWavename = DataSubTypeQvec
700                        ErrorWaveName = DataSubTypeError
701                        dQWavename = DataSubTypedQ
702                endif
703                Wave/Z SourceIntWv=$(DataFolderName+IntensityWaveName)
704                Wave/Z SourceQWv=$(DataFolderName+QWavename)
705                Wave/Z SourceErrorWv=$(DataFolderName+ErrorWaveName)
706                Wave/Z SourcedQWv=$(DataFolderName+dQWavename)
707                if(!WaveExists(SourceIntWv)||   !WaveExists(SourceQWv))
708                        print "Data selection failed for "+DataFolderName
709                        return 0
710                endif
711               
712                DoWIndow  $(GraphNameString)
713                if(V_Flag==0)
714                                        IR3L_CreateNewGraph(GraphNameString)
715                endif
716                CheckDisplayed /W=$(GraphNameString) SourceIntWv
717                if(V_Flag==0)
718                        AppendToGraph /W=$(GraphNameString) SourceIntWv vs  SourceQWv
719                        print "Appended : "+DataFolderName+IntensityWaveName +" topp the graph : "+GraphNameString
720                else
721                        print "Could not append "+DataFolderName+IntensityWaveName+" to the graph : "+GraphNameString+" this wave is already displayed int eh graph"
722                endif
723                //append data to graph
724        SetDataFolder oldDf
725        return 1
726end
727//**********************************************************************************************************
728//**********************************************************************************************************
729//**********************************************************************************************************
730Function IR3L_CreateLinearizedData()
731
732        string oldDf=GetDataFolder(1)
733        SetDataFolder root:Packages:Irena:MultiSaPlotFit                                        //go into the folder
734        Wave OriginalDataIntWave=root:Packages:Irena:MultiSaPlotFit:OriginalDataIntWave
735        Wave OriginalDataQWave=root:Packages:Irena:MultiSaPlotFit:OriginalDataQWave
736        Wave OriginalDataErrorWave=root:Packages:Irena:MultiSaPlotFit:OriginalDataErrorWave
737        SVAR SimpleModel=root:Packages:Irena:MultiSaPlotFit:SimpleModel
738        Duplicate/O OriginalDataIntWave, LinModelDataIntWave, ModelNormalizedResidual
739        Duplicate/O OriginalDataQWave, LinModelDataQWave, ModelNormResXWave
740        Duplicate/O OriginalDataErrorWave, LinModelDataEWave
741        ModelNormalizedResidual = 0
742        if(stringmatch(SimpleModel,"Guinier"))
743                LinModelDataQWave = OriginalDataQWave^2
744                ModelNormResXWave = OriginalDataQWave^2
745        endif
746       
747       
748        SetDataFolder oldDf
749end
750
751//**********************************************************************************************************
752//**********************************************************************************************************
753//**********************************************************************************************************
754Function IR3L_ButtonProc(ba) : ButtonControl
755        STRUCT WMButtonAction &ba
756
757        variable i
758        string FoldernameStr
759        switch( ba.eventCode )
760                case 2: // mouse up
761                        // click code here
762                        if(stringmatch(ba.ctrlname,"NewGraphPlotData"))
763                                //Create new graph and append data to graph
764                                //use MultiSamplePlotGraph for now... To be changed.
765                                KillWindow/Z MultiSamplePlotGraph
766                                IR3L_CreateNewGraph("MultiSamplePlotGraph")
767                                //now, append the data to it...
768                                Wave/T ListOfAvailableData = root:Packages:Irena:MultiSaPlotFit:ListOfAvailableData
769                                Wave SelectionOfAvailableData = root:Packages:Irena:MultiSaPlotFit:SelectionOfAvailableData     
770                                for(i=0;i<numpnts(ListOfAvailableData);i+=1)
771                                        if(SelectionOfAvailableData[i]>0.5)
772                                                IR3L_AppendData(ListOfAvailableData[i],"MultiSamplePlotGraph")
773                                        endif
774                                endfor                                         
775                                IR3L_ApplyPresetFormating("MultiSamplePlotGraph")
776                        endif
777
778
779                        if(stringmatch(ba.ctrlname,"AppendPlotData"))
780                                //append data to graph
781                                DoWIndow MultiSamplePlotGraph
782                                if(V_Flag==0)
783                                IR3L_CreateNewGraph("MultiSamplePlotGraph")
784                                endif
785                                Wave/T ListOfAvailableData = root:Packages:Irena:MultiSaPlotFit:ListOfAvailableData
786                                Wave SelectionOfAvailableData = root:Packages:Irena:MultiSaPlotFit:SelectionOfAvailableData     
787                                for(i=0;i<numpnts(ListOfAvailableData);i+=1)    // Initialize variables;continue test
788                                        if(SelectionOfAvailableData[i]>0.5)
789                                                IR3L_AppendData(ListOfAvailableData[i],"MultiSamplePlotGraph")
790                                        endif
791                                endfor                                          // Execute body code until continue test is FALSE
792                        endif
793
794                        if(stringmatch(ba.ctrlname,"ApplyPresetFormating"))
795                                //append data to graph
796                                DoWIndow MultiSamplePlotGraph
797                                if(V_Flag)
798                                        IR3L_ApplyPresetFormating("MultiSamplePlotGraph")
799                                endif
800                        endif
801
802                        break
803                case -1: // control being killed
804                        break
805        endswitch
806        return 0
807End
808//**********************************************************************************************************
809//**********************************************************************************************************
810//**********************************************************************************************************
811Function IR3L_CreateNewGraph(GraphNameString)
812                string GraphNameString
813
814                DoWIndow $(GraphNameString)
815                if(V_Flag==0)
816                                Display /K=1/W=(1297,231,2097,841) as "Multi Sample Plot Graph"
817                                DoWindow/C $(GraphNameString)
818                endif
819
820
821end
822//**********************************************************************************************************
823//**********************************************************************************************************
824//**********************************************************************************************************
825
826Function IR3L_ApplyPresetFormating(GraphNameString)
827                string GraphNameString
828
829        DoWIndow $(GraphNameString)
830        if(V_Flag)
831                NVAR LogXAxis=root:Packages:Irena:MultiSaPlotFit:LogXAxis
832                NVAR LogYAxis=root:Packages:Irena:MultiSaPlotFit:LogYAxis
833                NVAR Colorize=root:Packages:Irena:MultiSaPlotFit:Colorize
834                NVAR AddLegend=root:Packages:Irena:MultiSaPlotFit:AddLegend
835                                if(LogXAxis)
836                                        ModifyGraph/W= $(GraphNameString) log(bottom)=1
837                                else
838                                        ModifyGraph/W= $(GraphNameString) log(bottom)=0
839                                endif
840
841                                if(LogYAxis)
842                                        ModifyGraph/W= $(GraphNameString) log(left)=1
843                                else
844                                        ModifyGraph/W= $(GraphNameString) log(left)=0
845                                endif
846
847                                if(Colorize)
848                                        DoWIndow/F  $(GraphNameString)
849                                        IN2G_ColorTopGrphRainbow()
850                                else
851                ModifyGraph/W= $(GraphNameString) rgb=(0,0,0)
852                                endif
853
854                                if(AddLegend)
855                                        DoWIndow/F  $(GraphNameString)
856                                        //IN2G_LegendTopGrphFldr(fontsize, numberofItems, UseFolderName, UseWavename)
857                                        IN2G_LegendTopGrphFldr(str2num(IN2G_LkUpDfltVar("defaultFontSize")), 20, 1, 1)
858                                else
859                                        Legend/K/N=text0/W= $(GraphNameString)
860                                endif
861        endif
862end
863
864//**********************************************************************************************************
865//**********************************************************************************************************
866//**********************************************************************************************************
867
868Function IR3L_AppendDataToGraphModel()
869       
870        DoWindow IR3L_MultiSaPlotFitPanel
871        if(!V_Flag)
872                return 0
873        endif
874        variable WhichLegend=0
875        variable startQp, endQp, tmpStQ
876
877//      Duplicate/O OriginalDataIntWave, LinModelDataIntWave, ModelNormalizedResidual
878//      Duplicate/O OriginalDataQWave, LinModelDataQWave, ModelNormResXWave
879//      Duplicate/O OriginalDataErrorWave, LinModelDataEWave
880
881        Wave LinModelDataIntWave=root:Packages:Irena:MultiSaPlotFit:LinModelDataIntWave
882        Wave LinModelDataQWave=root:Packages:Irena:MultiSaPlotFit:LinModelDataQWave
883        Wave LinModelDataEWave=root:Packages:Irena:MultiSaPlotFit:LinModelDataEWave
884        CheckDisplayed /W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay LinModelDataIntWave
885        if(!V_flag)
886                AppendToGraph /W=IR3L_MultiSaPlotFitPanel#LinearizedDataDisplay  LinModelDataIntWave  vs LinModelDataQWave
887                ModifyGraph /W=IR3L_MultiSaPlotFitPanel#LinearizedDataDisplay log=1, mirror(bottom)=1
888                Label /W=IR3L_MultiSaPlotFitPanel#LinearizedDataDisplay left "\\Z"+IN2G_LkUpDfltVar("AxisLabelSize")+"Intensity"
889                Label /W=IR3L_MultiSaPlotFitPanel#LinearizedDataDisplay bottom "\\Z"+IN2G_LkUpDfltVar("AxisLabelSize")+"Q [A\\S-1\\M]"
890                ErrorBars /W=IR3L_MultiSaPlotFitPanel#LinearizedDataDisplay LinModelDataIntWave Y,wave=(LinModelDataEWave,LinModelDataEWave)           
891        endif
892//      NVAR DataQEnd = root:Packages:Irena:MultiSaPlotFit:DataQEnd
893//      if(DataQEnd>0)                  //old Q max already set.
894//              endQp = BinarySearch(OriginalDataQWave, DataQEnd)
895//      endif
896//      if(endQp<1)     //Qmax not set or not found. Set to last point-1 on that wave.
897//              DataQEnd = OriginalDataQWave[numpnts(OriginalDataQWave)-2]
898//              endQp = numpnts(OriginalDataQWave)-2
899//      endif
900//      cursor /W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay B, OriginalDataIntWave, endQp
901        DoUpdate
902
903        Wave/Z ModelNormalizedResidual=root:Packages:Irena:MultiSaPlotFit:ModelNormalizedResidual
904        Wave/Z ModelNormResXWave=root:Packages:Irena:MultiSaPlotFit:ModelNormResXWave
905        CheckDisplayed /W=IR3L_MultiSaPlotFitPanel#ResidualDataDisplay ModelNormalizedResidual  //, ResultIntensity
906        if(!V_flag)
907                AppendToGraph /W=IR3L_MultiSaPlotFitPanel#ResidualDataDisplay  ModelNormalizedResidual  vs ModelNormResXWave
908                ModifyGraph /W=IR3L_MultiSaPlotFitPanel#LinearizedDataDisplay log=1, mirror(bottom)=1
909                Label /W=IR3L_MultiSaPlotFitPanel#LinearizedDataDisplay left "\\Z"+IN2G_LkUpDfltVar("AxisLabelSize")+"Normalized res."
910                Label /W=IR3L_MultiSaPlotFitPanel#LinearizedDataDisplay bottom "\\Z"+IN2G_LkUpDfltVar("AxisLabelSize")+"Q [A\\S-1\\M]"
911        endif
912
913
914
915        string Shortname1, ShortName2
916       
917        switch(V_Flag)  // numeric switch
918                case 0:         // execute if case matches expression
919                        Legend/W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay /N=text0/K
920                        break                                           // exit from switch
921//              case 1:         // execute if case matches expression
922//                      SVAR DataFolderName=root:Packages:Irena:MultiSaPlotFit:DataFolderName
923//                      Shortname1 = StringFromList(ItemsInList(DataFolderName1, ":")-1, DataFolderName1  ,":")
924//                      Legend/W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay /C/N=text0/J/A=LB "\\s(OriginalData1IntWave) "+Shortname1
925//                      break
926//              case 2:
927//                      SVAR DataFolderName=root:Packages:Irena:MultiSaPlotFit:DataFolderName
928//                      Shortname2 = StringFromList(ItemsInList(DataFolderName2, ":")-1, DataFolderName2  ,":")
929//                      Legend/W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay /C/N=text0/J/A=LB "\\s(OriginalData2IntWave) " + Shortname2         
930//                      break
931//              case 3:
932//                      SVAR DataFolderName=root:Packages:Irena:MultiSaPlotFit:DataFolderName
933//                      Shortname1 = StringFromList(ItemsInList(DataFolderName1, ":")-1, DataFolderName1  ,":")
934//                      Legend/W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay /C/N=text0/J/A=LB "\\s(OriginalData1IntWave) "+Shortname1+"\r\\s(OriginalData2IntWave) "+Shortname2
935//                      break
936//              case 7:
937//                      SVAR DataFolderName=root:Packages:Irena:MultiSaPlotFit:DataFolderName
938//                      Shortname1 = StringFromList(ItemsInList(DataFolderName1, ":")-1, DataFolderName1  ,":")
939//                      Legend/W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay /C/N=text0/J/A=LB "\\s(OriginalData1IntWave) "+Shortname1+"\r\\s(OriginalData2IntWave) "+Shortname2+"\r\\s(ResultIntensity) Merged Data"
940                        break
941        endswitch
942
943       
944end
945//**********************************************************************************************************
946//**********************************************************************************************************
947//**********************************************************************************************************
948
949
950Function IR3L_AppendDataToGraphLogLog()
951       
952        DoWindow IR3L_MultiSaPlotFitPanel
953        if(!V_Flag)
954                return 0
955        endif
956        variable WhichLegend=0
957        variable startQp, endQp, tmpStQ
958        Wave OriginalDataIntWave=root:Packages:Irena:MultiSaPlotFit:OriginalDataIntWave
959        Wave OriginalDataQWave=root:Packages:Irena:MultiSaPlotFit:OriginalDataQWave
960        Wave OriginalDataErrorWave=root:Packages:Irena:MultiSaPlotFit:OriginalDataErrorWave
961        CheckDisplayed /W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay OriginalDataIntWave
962        if(!V_flag)
963                AppendToGraph /W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay  OriginalDataIntWave  vs OriginalDataQWave
964                ModifyGraph /W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay log=1, mirror(bottom)=1
965                Label /W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay left "Intensity 1"
966                Label /W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay bottom "Q [A\\S-1\\M]"
967                ErrorBars /W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay OriginalDataIntWave Y,wave=(OriginalDataErrorWave,OriginalDataErrorWave)               
968        endif
969        NVAR DataQEnd = root:Packages:Irena:MultiSaPlotFit:DataQEnd
970        if(DataQEnd>0)                  //old Q max already set.
971                endQp = BinarySearch(OriginalDataQWave, DataQEnd)
972        endif
973        if(endQp<1)     //Qmax not set or not found. Set to last point-1 on that wave.
974                DataQEnd = OriginalDataQWave[numpnts(OriginalDataQWave)-2]
975                endQp = numpnts(OriginalDataQWave)-2
976        endif
977        cursor /W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay B, OriginalDataIntWave, endQp
978        DoUpdate
979
980        Wave/Z OriginalDataIntWave=root:Packages:Irena:MultiSaPlotFit:OriginalDataIntWave
981        CheckDisplayed /W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay OriginalDataIntWave  //, ResultIntensity
982        string Shortname1, ShortName2
983       
984        switch(V_Flag)  // numeric switch
985                case 0:         // execute if case matches expression
986                        Legend/W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay /N=text0/K
987                        break                                           // exit from switch
988//              case 1:         // execute if case matches expression
989//                      SVAR DataFolderName=root:Packages:Irena:MultiSaPlotFit:DataFolderName
990//                      Shortname1 = StringFromList(ItemsInList(DataFolderName1, ":")-1, DataFolderName1  ,":")
991//                      Legend/W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay /C/N=text0/J/A=LB "\\s(OriginalData1IntWave) "+Shortname1
992//                      break
993//              case 2:
994//                      SVAR DataFolderName=root:Packages:Irena:MultiSaPlotFit:DataFolderName
995//                      Shortname2 = StringFromList(ItemsInList(DataFolderName2, ":")-1, DataFolderName2  ,":")
996//                      Legend/W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay /C/N=text0/J/A=LB "\\s(OriginalData2IntWave) " + Shortname2         
997//                      break
998//              case 3:
999//                      SVAR DataFolderName=root:Packages:Irena:MultiSaPlotFit:DataFolderName
1000//                      Shortname1 = StringFromList(ItemsInList(DataFolderName1, ":")-1, DataFolderName1  ,":")
1001//                      Legend/W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay /C/N=text0/J/A=LB "\\s(OriginalData1IntWave) "+Shortname1+"\r\\s(OriginalData2IntWave) "+Shortname2
1002//                      break
1003//              case 7:
1004//                      SVAR DataFolderName=root:Packages:Irena:MultiSaPlotFit:DataFolderName
1005//                      Shortname1 = StringFromList(ItemsInList(DataFolderName1, ":")-1, DataFolderName1  ,":")
1006//                      Legend/W=IR3L_MultiSaPlotFitPanel#LogLogDataDisplay /C/N=text0/J/A=LB "\\s(OriginalData1IntWave) "+Shortname1+"\r\\s(OriginalData2IntWave) "+Shortname2+"\r\\s(ResultIntensity) Merged Data"
1007                        break
1008        endswitch
1009
1010       
1011end
1012//**********************************************************************************************************
1013//**********************************************************************************************************
1014//**********************************************************************************************************
Note: See TracBrowser for help on using the repository browser.