source: sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_MainPanel.ipf @ 1048

Last change on this file since 1048 was 1048, checked in by srkline, 5 years ago

routines to make it easy to fit the nonlinear spatial coeficients to data from the tube detectors. Assumes that there will be 5 peaks, but this can be adjusted.

  • Property svn:executable set to *
File size: 17.7 KB
Line 
1#pragma rtGlobals=1             // Use modern global access method.
2
3
4//*********************
5//
6//draws main panel of buttons for all data reduction operations
7//panel can't be killed (without really trying)
8// V_initialize() from the VSANS menu will redraw the panel
9//panel simply dispatches to previously written procedures (not functions)
10//
11// **function names are really self-explanatory...see the called function for the real details
12//
13//**********************
14
15
16// TODO
17//
18// -- update this to be VSANS-specific, eliminating junk that is SANS only or VAX-specific
19//
20
21
22// TODO-- decide whether to automatically read in the mask, or not
23// -- there could be a default mask, or look for the mask that is speficied in the
24// next file that is read in from the path
25Proc PickPath_MainButtonProc(ctrlName) : ButtonControl
26        String ctrlName
27       
28        V_PickPath()
29        // read in DEFAULT.MASK, if it exists, otherwise, do nothing
30        //
31//      PathInfo catPathName
32//      if(V_flag==1)
33//              String str = S_Path + "DEFAULT.MASK"
34//              Variable refnum
35//              Open/R/Z=1 refnum as str
36//              if(strlen(S_filename) != 0)
37//                      Close refnum            //file can be found OK
38//                      ReadMCID_MASK(str)
39//              else
40//                      // file not found, close just in case
41//                      Close/A
42//              endif
43//      endif
44End
45
46Proc DrawMask_MainButtonProc(ctrlName) : ButtonControl
47        String ctrlName
48       
49        V_Edit_a_Mask()
50End
51
52
53//
54// this will only load the data into RAW, overwriting whatever is there. no copy is put in rawVSANS
55//
56Proc DisplayMainButtonProc(ctrlName) : ButtonControl
57        String ctrlName
58
59        Variable err=   V_LoadHDF5Data("","RAW")                        // load the data
60//      Print "Load err = "+num2str(err)
61        if(!err)
62                String hdfDF = root:file_name                   // last file loaded, may not be the safest way to pass
63                String folder = StringFromList(0,hdfDF,".")
64               
65                // this (in SANS) just passes directly to fRawWindowHook()
66                V_UpdateDisplayInformation("RAW")               // plot the data in whatever folder type
67                               
68                // set the global to display ONLY if the load was called from here, not from the
69                // other routines that load data (to read in values)
70                root:Packages:NIST:VSANS:Globals:gLastLoadedFile = root:file_name
71               
72        endif
73End
74
75Proc PatchMainButtonProc(ctrlName) : ButtonControl
76        String ctrlName
77
78        V_PatchFiles()
79End
80
81Proc Patch_XY_MainButtonProc(ctrlName) : ButtonControl
82        String ctrlName
83
84        V_PatchDet_xyCenters_Panel()
85End
86
87Proc Patch_DeadTime_MainButtonProc(ctrlName) : ButtonControl
88        String ctrlName
89
90        V_PatchDetectorDeadtimePanel()
91End
92
93Proc Patch_Calib_MainButtonProc(ctrlName) : ButtonControl
94        String ctrlName
95
96        V_PatchDetectorCalibrationPanel()
97End
98
99
100Proc TransMainButtonProc(ctrlName) : ButtonControl
101        String ctrlName
102
103         V_InitTransmissionPanel()
104End
105
106Proc BuildProtocol_MainButtonProc(ctrlName) : ButtonControl
107        String ctrlName
108
109        V_ReductionProtocolPanel()
110End
111
112Proc ReduceAFile_MainButtonProc(ctrlName) : ButtonControl
113        String ctrlName
114
115        ReduceAFile()
116End
117
118Proc ReduceMultiple_MainButtonProc(ctrlName) : ButtonControl
119        String ctrlName
120
121        V_ReduceMultipleFiles()
122End
123
124Proc Plot1D_MainButtonProc(ctrlName) : ButtonControl
125        String ctrlName
126
127        //LoadOneDData()
128        Show_Plot_Manager()
129End
130
131Proc Sort1D_MainButtonProc(ctrlName) : ButtonControl
132        String ctrlName
133
134//      ShowNSORTPanel()
135       
136End
137
138Proc Combine1D_MainButtonProc(ctrlName) : ButtonControl
139        String ctrlName
140
141//      ShowCombinePanel()
142        V_CombineDataGraph()
143End
144
145
146Proc Fit1D_MainButtonProc(ctrlName) : ButtonControl
147        String ctrlName
148
149        OpenFITPanel()
150End
151
152//Proc FitRPA_MainButtonProc(ctrlName) : ButtonControl
153//      String ctrlName
154//
155//      OpenFITRPAPanel()
156//End
157
158Proc Subtract1D_MainButtonProc(ctrlName) : ButtonControl
159        String ctrlName
160
161        OpenSubtract1DPanel()
162End
163
164Proc Arithmetic1D_MainButtonProc(ctrlName) : ButtonControl
165        String ctrlName
166
167        MakeDAPanel()
168End
169
170Proc DisplayInterm_MainButtonProc(ctrlName) : ButtonControl
171        String ctrlName
172
173        V_ChangeDisplay()
174End
175
176// TODO -- fill in with a proper reader that will display the mask(s)
177Proc ReadMask_MainButtonProc(ctrlName) : ButtonControl
178        String ctrlName
179
180        DoAlert 0, "Loading MASK data"
181        V_LoadMASKData()
182End
183
184Proc Draw3D_MainButtonProc(ctrlName) : ButtonControl
185        String ctrlName
186
187        Plot3DSurface()
188End
189
190////on Misc Ops tab, generates a notebook
191//Proc CatShort_MainButtonProc(ctrlName) : ButtonControl
192//      String ctrlName
193//
194//      BuildCatShortNotebook()
195//End
196
197//button is labeled "File Catalog"
198Proc CatVShort_MainButtonProc(ctrlName) : ButtonControl
199        String ctrlName
200
201        V_BuildCatVeryShortTable()
202End
203
204Proc CatSort_MainButtonProc(ctrlName) : ButtonControl
205        String ctrlName
206       
207        V_Catalog_Sort()
208End
209
210Proc ShowCatShort_MainButtonProc(ctrlName) : ButtonControl
211        String ctrlName
212
213        ShowCATWindow()
214End
215
216Proc ShowSchematic_MainButtonProc(ctrlName) : ButtonControl
217        String ctrlName
218       
219        if(root:myGlobals:isDemoVersion == 1)
220                //      comment out in DEMO_MODIFIED version, and show the alert
221                DoAlert 0,"This operation is not available in the Demo version of IGOR"
222        else
223                ShowSchematic()
224        endif
225End
226
227Proc ShowAvePanel_MainButtonProc(ctrlName) : ButtonControl
228        String ctrlName
229
230        ShowAveragePanel()
231End
232
233Proc HelpMainButtonProc(ctrlName) : ButtonControl
234        String ctrlName
235        DisplayHelpTopic/Z/K=1 "VSANS Data Reduction Tutorial"
236        if(V_flag !=0)
237                DoAlert 0,"The VSANS Data Reduction Tutorial Help file could not be found"
238        endif
239End
240
241Proc ShowTilePanel_MainButtonProc(ctrlName) : ButtonControl
242        String ctrlName
243       
244        if(root:myGlobals:isDemoVersion == 1)
245                //      comment out in DEMO_MODIFIED version, and show the alert
246                DoAlert 0,"This operation is not available in the Demo version of IGOR"
247        else
248                Show_Tile_2D_Panel()
249        endif
250End
251
252Proc NonLinTubes_MainButtonProc(ctrlName) : ButtonControl
253        String ctrlName
254
255        V_TubeCoefPanel()
256End
257
258Proc CopyWork_MainButtonProc(ctrlName) : ButtonControl
259        String ctrlName
260
261        V_CopyWorkFolder()              //will put up missing param dialog
262End
263
264Proc PRODIV_MainButtonProc(ctrlName) : ButtonControl
265        String ctrlName
266
267        //new, May 2009. show a full panel for input
268        BuildDIVPanel()
269//      MakeDIVFile("","")                     
270End
271
272
273Proc WorkMath_MainButtonProc(ctrlName) : ButtonControl
274        String ctrlName
275
276        Show_WorkMath_Panel()
277End
278
279//Proc TISANE_MainButtonProc(ctrlName) : ButtonControl
280//      String ctrlName
281//     
282//      if(exists("Show_TISANE_Panel")==0)
283//              // procedure file was not loaded
284//              DoAlert 0,"This operation is not available in this set of macros"
285//      else
286//              Show_TISANE_Panel()
287//      endif
288//     
289//End
290
291Proc Event_MainButtonProc(ctrlName) : ButtonControl
292        String ctrlName
293       
294        if(exists("V_Show_Event_Panel")==0)
295                // procedure file was not loaded
296                DoAlert 0,"Only test procedures exist. See V_VSANS_Event_Testing.ipf"
297        else
298                V_Show_Event_Panel()
299        endif
300       
301End
302
303Proc Raw2ASCII_MainButtonProc(ctrlName) : ButtonControl
304        String ctrlName
305
306        Export_RAW_Ascii_Panel()
307End
308
309Proc RealTime_MainButtonProc(ctrlName) : ButtonControl
310        String ctrlName
311
312        if(exists("V_Init_RT")==0)
313                // procedure file was not loaded
314                DoAlert 0,"This operation is not available in this set of macros"
315        else
316                Show_RealTime_Panel()
317        endif
318End
319
320Proc RTReduce_MainButtonProc(ctrlName) : ButtonControl
321        String ctrlName
322
323        V_ShowOnlineReductionPanel()
324End
325
326Proc Preferences_MainButtonProc(ctrlName) : ButtonControl
327        String ctrlName
328
329        Show_VSANSPreferences_Panel()
330End
331
332
333Proc DataTree_MainButtonProc(ctrlName) : ButtonControl
334        String ctrlName
335
336        V_ShowDataFolderTree()
337End
338
339////////////////////////////////////////////////
340//************* NEW version of Main control Panel *****************
341//
342// button management for the different tabs is handled by consistent
343// naming of each button with its tab number as documented below
344// then MainTabProc() can enable/disable the appropriate buttons for the
345// tab that is displayed
346//
347// panel must be killed and redrawn for new buttons to appear
348//
349Window Main_VSANS_Panel()
350        PauseUpdate; Silent 1           // building window...
351        NewPanel /W=(500,60,924,320) /K=2 as "VSANS Reduction Controls"
352        ModifyPanel cbRGB=(49694,61514,27679)
353        ModifyPanel fixedSize=1
354//////
355//on main portion of panel
356        Button MainButtonA,pos={8,8},size={80,20},title="Pick Path",proc=PickPath_MainButtonProc
357        Button MainButtonA,help={"Pick the local data folder that contains the SANS data"}
358        Button MainButtonB,pos={100,8},size={90,20},proc=CatVShort_MainButtonProc,title="File Catalog"
359        Button MainButtonB,help={"This will generate a condensed CATalog table of all files in a specified local folder"}
360        Button MainButtonC,pos={250,8},size={50,20},proc=HelpMainButtonProc,title="Help"
361        Button MainButtonC,help={"Display the help file"}
362        Button MainButtonD,pos={320,8},size={80,20},proc=SR_OpenTracTicketPage,title="Feedback"
363        Button MainButtonD,help={"Submit bug reports or feature requests"}
364       
365        TabControl MainTab,pos={7,49},size={410,202},tabLabel(0)="Raw Data",proc=MainTabProc
366        TabControl MainTab,tabLabel(1)="Reduction",tabLabel(2)="1-D Ops",tabLabel(3)="2-D Ops",tabLabel(4)="Misc Ops"
367        TabControl MainTab,value=0
368        //
369        TabControl MainTab labelBack=(47748,57192,54093)
370       
371//on tab(0) - Raw Data - initially visible
372        Button MainButton_0a,pos={15,90},size={130,20},proc=DisplayMainButtonProc,title="Display Raw Data"
373        Button MainButton_0a,help={"Display will load and plot a single 2-D raw data file"}
374        Button MainButton_0b,pos={15,120},size={70,20},proc=PatchMainButtonProc,title="Patch"
375        Button MainButton_0b,help={"Patch will update incorrect information in raw data headers"}
376        Button MainButton_0c,pos={15,150},size={110,20},proc=TransMainButtonProc,title="Transmission"
377        Button MainButton_0c,help={"Shows the panel which allows calculation of sample transmissions and entering these values into raw data headers"}
378        Button MainButton_0d,pos={15,180},size={130,20},proc=RealTime_MainButtonProc,title="RealTime Display"
379        Button MainButton_0d,help={"Shows the panel for control of the RealTime data display. Only used during data collection"}
380        Button MainButton_0e,pos={15,210},size={130,20},proc=CatSort_MainButtonProc,title="Sort Catalog"
381        Button MainButton_0e,help={"Sort the Data Catalog, courtesy of ANSTO"}
382        Button MainButton_0f,pos={300,90},size={90,20},proc=DataTree_MainButtonProc,title="Data Tree"
383        Button MainButton_0f,help={"Show the header and data tree"}
384        Button MainButton_0g,pos={170,180},size={110,20},proc=RTReduce_MainButtonProc,title="RT Reduction"
385        Button MainButton_0g,help={"Reduce live (incomplete) data files during acquisition"}
386        Button MainButton_0h,pos={170,90},size={90,20},proc=Patch_XY_MainButtonProc,title="Patch XY"
387        Button MainButton_0h,help={"Patch will update incorrect information in raw data headers"}
388        Button MainButton_0i,pos={170,120},size={110,20},proc=Patch_DeadTime_MainButtonProc,title="Patch DeadTime"
389        Button MainButton_0i,help={"Patch will update incorrect information in raw data headers"}
390        Button MainButton_0j,pos={170,150},size={90,20},proc=Patch_Calib_MainButtonProc,title="Patch Calib"
391        Button MainButton_0j,help={"Patch will update incorrect information in raw data headers"}
392
393//on tab(1) - Reduction
394        Button MainButton_1a,pos={15,90},size={110,20},proc=BuildProtocol_MainButtonProc,title="Build Protocol"
395        Button MainButton_1a,help={"Shows a panel where the CATalog window is used as input for creating a protocol. Can also be used for standard reductions"}
396        Button MainButton_1b,pos={15,120},size={110,20},proc=ReduceAFile_MainButtonProc,title="Reduce a File"
397        Button MainButton_1b,help={"Presents a questionnare for creating a reduction protocol, then reduces a single file"}
398        Button MainButton_1c,pos={15,150},size={160,20},proc=ReduceMultiple_MainButtonProc,title="Reduce Multiple Files"
399        Button MainButton_1c,help={"Use for reducing multiple raw datasets after protocol(s) have been created"}
400//      Button MainButton_1d,pos={15,180},size={110,20},proc=ShowCatShort_MainButtonProc,title="Show CAT Table"
401//      Button MainButton_1d,help={"This button will bring the CATalog window to the front, if it exists"}
402        Button MainButton_1a,disable=1
403        Button MainButton_1b,disable=1
404        Button MainButton_1c,disable=1
405//      Button MainButton_1d,disable=1
406
407//on tab(2) - 1-D operations
408        Button MainButton_2a,pos={15,90},size={60,20},proc=Plot1D_MainButtonProc,title="Plot"
409        Button MainButton_2a,help={"Loads and plots a 1-D dataset in the format expected by \"FIT\""}
410//      Button MainButton_2b,pos={15,120},size={60,20},proc=Sort1D_MainButtonProc,title="Sort"
411//      Button MainButton_2b,help={"Sorts and combines 2 or 3 separate 1-D datasets into a single file. Use \"Plot\" button to import 1-D data files"}
412        Button MainButton_2c,pos={15,150},size={60,20},proc=Fit1D_MainButtonProc,title="FIT"
413        Button MainButton_2c,help={"Shows panel for performing a variety of linearized fits to 1-D data files. Use \"Plot\" button to import 1-D data files"}
414//      Button MainButton_2d,pos={15,180},size={60,20},proc=FITRPA_MainButtonProc,title="FIT/RPA"
415//      Button MainButton_2d,help={"Shows panel for performing a fit to a polymer standard."}
416//      Button MainButton_2e,pos={120,90},size={90,20},proc=Subtract1D_MainButtonProc,title="Subtract 1D"
417//      Button MainButton_2e,help={"Shows panel for subtracting two 1-D data sets"}
418        Button MainButton_2e,pos={120,90},size={110,20},proc=Arithmetic1D_MainButtonProc,title="1D Arithmetic"
419        Button MainButton_2e,help={"Shows panel for doing arithmetic on 1D data sets"}
420        Button MainButton_2f,pos={120,120},size={130,20},proc=Combine1D_MainButtonProc,title="Combine 1D Files"
421        Button MainButton_2f,help={"Shows panel for batch combination of 1D data files. Use after you're comfortable with NSORT"}
422        Button MainButton_2a,disable=1
423//      Button MainButton_2b,disable=1
424        Button MainButton_2c,disable=1
425//      Button MainButton_2d,disable=1
426        Button MainButton_2e,disable=1
427        Button MainButton_2f,disable=1
428
429
430
431//on tab(3) - 2-D Operations
432        Button MainButton_3a,pos={15,90},size={90,20},proc=DisplayInterm_MainButtonProc,title="Display 2D"
433        Button MainButton_3a,help={"Display will plot a 2-D work data file that has previously been created during data reduction"}
434        Button MainButton_3b,pos={15,120},size={90,20},title="Draw Mask",proc=DrawMask_MainButtonProc
435        Button MainButton_3b,help={"Draw a mask file and save it."}
436        Button MainButton_3c,pos={15,150},size={90,20},proc=ReadMask_MainButtonProc,title="Read Mask"
437        Button MainButton_3c,help={"Reads a mask file into the proper work folder, and displays a small image of the mask. Yellow areas will be excluded from the data"}
438//      Button MainButton_3d,pos={15,180},size={100,20},title="Tile RAW 2D",proc=ShowTilePanel_MainButtonProc
439//      Button MainButton_3d,help={"Adds selected RAW data files to a layout."}
440        Button MainButton_3e,pos={150,90},size={100,20},title="Copy Work",proc=CopyWork_MainButtonProc
441        Button MainButton_3e,help={"Copies WORK data from specified folder to destination folder."}
442//      Button MainButton_3f,pos={150,120},size={110,20},title="WorkFile Math",proc=WorkMath_MainButtonProc
443//      Button MainButton_3f,help={"Perfom simple math operations on workfile data"}
444        Button MainButton_3g,pos={150,180},size={100,20},title="Event Data",proc=Event_MainButtonProc
445        Button MainButton_3g,help={"Manipulate TISANE Timeslice data"}
446       
447        Button MainButton_3a,disable=1
448        Button MainButton_3b,disable=1
449        Button MainButton_3c,disable=1
450//      Button MainButton_3d,disable=1
451        Button MainButton_3e,disable=1
452//      Button MainButton_3f,disable=1
453        Button MainButton_3g,disable=1
454
455//on tab(4) - Miscellaneous operations
456        Button MainButton_4a,pos={15,90},size={80,20},proc=Draw3D_MainButtonProc,title="3D Display"
457        Button MainButton_4a,help={"Plots a 3-D surface of the selected file type"}
458//      Button MainButton_4b,pos={15,120},size={120,20},proc=ShowSchematic_MainButtonProc,title="Show Schematic"
459//      Button MainButton_4b,help={"Use this to show a schematic of the data reduction process for a selected sample file and reduction protocol"}
460//      Button MainButton_4c,pos={15,150},size={80,20},proc=ShowAvePanel_MainButtonProc,title="Average"
461//      Button MainButton_4c,help={"Shows a panel for interactive selection of the 1-D averaging step"}
462//      Button MainButton_4d,pos={15,180},size={110,20},proc=CatShort_MainButtonProc,title="CAT/Notebook"
463//      Button MainButton_4d,help={"This will generate a CATalog notebook of all files in a specified local folder"}
464        Button MainButton_4e,pos={180,90},size={130,20},proc=NonLinTubes_MainButtonProc,title="Fit NonLinear Tubes"
465        Button MainButton_4e,help={""}
466        Button MainButton_4f,pos={180,120},size={130,20},proc=PRODIV_MainButtonProc,title="Make DIV file"
467        Button MainButton_4f,help={"Merges two stored workfiles (CORrected) into a DIV file, and saves the result"}
468//      Button MainButton_4g,pos={180,150},size={130,20},proc=Raw2ASCII_MainButtonProc,title="RAW ASCII Export"
469//      Button MainButton_4g,help={"Exports selected RAW (2D) data file(s) as ASCII, either as pixel values or I(Qx,Qy)"}
470        Button MainButton_4h,pos={180,180},size={130,20},proc=Preferences_MainButtonProc,title="Preferences"
471        Button MainButton_4h,help={"Sets user preferences for selected parameters"}
472       
473        Button MainButton_4a,disable=1
474//      Button MainButton_4b,disable=1
475//      Button MainButton_4c,disable=1
476//      Button MainButton_4d,disable=1
477        Button MainButton_4e,disable=1
478        Button MainButton_4f,disable=1
479//      Button MainButton_4g,disable=1
480        Button MainButton_4h,disable=1
481//     
482EndMacro
483
484// function to control the drawing of buttons in the TabControl on the main panel
485// Naming scheme for the buttons MUST be strictly adhered to... else buttons will
486// appear in odd places...
487// all buttons are named MainButton_NA where N is the tab number and A is the letter denoting
488// the button's position on that particular tab.
489// in this way, buttons will always be drawn correctly..
490//
491Function MainTabProc(name,tab)
492        String name
493        Variable tab
494       
495//      Print "name,number",name,tab
496        String ctrlList = ControlNameList("",";"),item="",nameStr=""
497        Variable num = ItemsinList(ctrlList,";"),ii,onTab
498        for(ii=0;ii<num;ii+=1)
499                //items all start w/"MainButton_"
500                item=StringFromList(ii, ctrlList ,";")
501                nameStr=item[0,10]
502                if(cmpstr(nameStr,"MainButton_")==0)
503                        onTab = str2num(item[11])
504                        Button $item,disable=(tab!=onTab)
505                endif
506        endfor
507End
508
509//
510Function SR_OpenTracTicketPage(ctrlName)
511        String ctrlName
512        DoAlert 1,"Your web browser will open to a page where you can submit your bug report or feature request. OK?"
513        if(V_flag==1)
514                BrowseURL "http://danse.chem.utk.edu/trac/newticket"
515        endif
516End
517
Note: See TracBrowser for help on using the repository browser.