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

Last change on this file since 1039 was 1039, checked in by srkline, 6 years ago

changes to incorporate trimming and plotting of data that has been saved as individual detector I(q), as Igor .itx format. This allows the trimming parameters to be set for each detector panel, which can then be used during the reduction protocol to automatically trim and combine the panels. Next step is to incorporate this into the actual protocol definintion by expanding the current definition.

  • Property svn:executable set to *
File size: 16.8 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 TransMainButtonProc(ctrlName) : ButtonControl
82        String ctrlName
83
84         V_InitTransmissionPanel()
85End
86
87Proc BuildProtocol_MainButtonProc(ctrlName) : ButtonControl
88        String ctrlName
89
90        V_ReductionProtocolPanel()
91End
92
93Proc ReduceAFile_MainButtonProc(ctrlName) : ButtonControl
94        String ctrlName
95
96        ReduceAFile()
97End
98
99Proc ReduceMultiple_MainButtonProc(ctrlName) : ButtonControl
100        String ctrlName
101
102        ReduceMultipleFiles()
103End
104
105Proc Plot1D_MainButtonProc(ctrlName) : ButtonControl
106        String ctrlName
107
108        //LoadOneDData()
109        Show_Plot_Manager()
110End
111
112Proc Sort1D_MainButtonProc(ctrlName) : ButtonControl
113        String ctrlName
114
115//      ShowNSORTPanel()
116        V_CombineDataGraph()
117End
118
119Proc Combine1D_MainButtonProc(ctrlName) : ButtonControl
120        String ctrlName
121
122        ShowCombinePanel()
123End
124
125
126Proc Fit1D_MainButtonProc(ctrlName) : ButtonControl
127        String ctrlName
128
129        OpenFITPanel()
130End
131
132//Proc FitRPA_MainButtonProc(ctrlName) : ButtonControl
133//      String ctrlName
134//
135//      OpenFITRPAPanel()
136//End
137
138Proc Subtract1D_MainButtonProc(ctrlName) : ButtonControl
139        String ctrlName
140
141        OpenSubtract1DPanel()
142End
143
144Proc Arithmetic1D_MainButtonProc(ctrlName) : ButtonControl
145        String ctrlName
146
147        MakeDAPanel()
148End
149
150Proc DisplayInterm_MainButtonProc(ctrlName) : ButtonControl
151        String ctrlName
152
153        V_ChangeDisplay()
154End
155
156// TODO -- fill in with a proper reader that will display the mask(s)
157Proc ReadMask_MainButtonProc(ctrlName) : ButtonControl
158        String ctrlName
159
160        DoAlert 0, "Loading MASK data"
161        V_LoadMASKData()
162End
163
164Proc Draw3D_MainButtonProc(ctrlName) : ButtonControl
165        String ctrlName
166
167        Plot3DSurface()
168End
169
170////on Misc Ops tab, generates a notebook
171//Proc CatShort_MainButtonProc(ctrlName) : ButtonControl
172//      String ctrlName
173//
174//      BuildCatShortNotebook()
175//End
176
177//button is labeled "File Catalog"
178Proc CatVShort_MainButtonProc(ctrlName) : ButtonControl
179        String ctrlName
180
181        V_BuildCatVeryShortTable()
182End
183
184Proc CatSort_MainButtonProc(ctrlName) : ButtonControl
185        String ctrlName
186       
187        V_Catalog_Sort()
188End
189
190Proc ShowCatShort_MainButtonProc(ctrlName) : ButtonControl
191        String ctrlName
192
193        ShowCATWindow()
194End
195
196Proc ShowSchematic_MainButtonProc(ctrlName) : ButtonControl
197        String ctrlName
198       
199        if(root:myGlobals:isDemoVersion == 1)
200                //      comment out in DEMO_MODIFIED version, and show the alert
201                DoAlert 0,"This operation is not available in the Demo version of IGOR"
202        else
203                ShowSchematic()
204        endif
205End
206
207Proc ShowAvePanel_MainButtonProc(ctrlName) : ButtonControl
208        String ctrlName
209
210        ShowAveragePanel()
211End
212
213Proc HelpMainButtonProc(ctrlName) : ButtonControl
214        String ctrlName
215        DisplayHelpTopic/Z/K=1 "VSANS Data Reduction Tutorial"
216        if(V_flag !=0)
217                DoAlert 0,"The VSANS Data Reduction Tutorial Help file could not be found"
218        endif
219End
220
221Proc ShowTilePanel_MainButtonProc(ctrlName) : ButtonControl
222        String ctrlName
223       
224        if(root:myGlobals:isDemoVersion == 1)
225                //      comment out in DEMO_MODIFIED version, and show the alert
226                DoAlert 0,"This operation is not available in the Demo version of IGOR"
227        else
228                Show_Tile_2D_Panel()
229        endif
230End
231
232Proc NG1TransConv_MainButtonProc(ctrlName) : ButtonControl
233        String ctrlName
234
235        TransformToTransFile()
236End
237
238Proc CopyWork_MainButtonProc(ctrlName) : ButtonControl
239        String ctrlName
240
241        V_CopyWorkFolder()              //will put up missing param dialog
242End
243
244Proc PRODIV_MainButtonProc(ctrlName) : ButtonControl
245        String ctrlName
246
247        //new, May 2009. show a full panel for input
248        BuildDIVPanel()
249//      MakeDIVFile("","")                     
250End
251
252
253Proc WorkMath_MainButtonProc(ctrlName) : ButtonControl
254        String ctrlName
255
256        Show_WorkMath_Panel()
257End
258
259//Proc TISANE_MainButtonProc(ctrlName) : ButtonControl
260//      String ctrlName
261//     
262//      if(exists("Show_TISANE_Panel")==0)
263//              // procedure file was not loaded
264//              DoAlert 0,"This operation is not available in this set of macros"
265//      else
266//              Show_TISANE_Panel()
267//      endif
268//     
269//End
270
271Proc Event_MainButtonProc(ctrlName) : ButtonControl
272        String ctrlName
273       
274        if(exists("Show_Event_Panel")==0)
275                // procedure file was not loaded
276                DoAlert 0,"This operation is not available in this set of macros"
277        else
278                Show_Event_Panel()
279        endif
280       
281End
282
283Proc Raw2ASCII_MainButtonProc(ctrlName) : ButtonControl
284        String ctrlName
285
286        Export_RAW_Ascii_Panel()
287End
288
289Proc RealTime_MainButtonProc(ctrlName) : ButtonControl
290        String ctrlName
291
292        if(exists("V_Init_RT")==0)
293                // procedure file was not loaded
294                DoAlert 0,"This operation is not available in this set of macros"
295        else
296                Show_RealTime_Panel()
297        endif
298End
299
300Proc RTReduce_MainButtonProc(ctrlName) : ButtonControl
301        String ctrlName
302
303        V_ShowOnlineReductionPanel()
304End
305
306Proc Preferences_MainButtonProc(ctrlName) : ButtonControl
307        String ctrlName
308
309        Show_VSANSPreferences_Panel()
310End
311
312
313Proc DataTree_MainButtonProc(ctrlName) : ButtonControl
314        String ctrlName
315
316        V_ShowDataFolderTree()
317End
318
319////////////////////////////////////////////////
320//************* NEW version of Main control Panel *****************
321//
322// button management for the different tabs is handled by consistent
323// naming of each button with its tab number as documented below
324// then MainTabProc() can enable/disable the appropriate buttons for the
325// tab that is displayed
326//
327// panel must be killed and redrawn for new buttons to appear
328//
329Window Main_VSANS_Panel()
330        PauseUpdate; Silent 1           // building window...
331        NewPanel /W=(500,60,924,320) /K=2 as "VSANS Reduction Controls"
332        ModifyPanel cbRGB=(49694,61514,27679)
333        ModifyPanel fixedSize=1
334//////
335//on main portion of panel
336        Button MainButtonA,pos={8,8},size={80,20},title="Pick Path",proc=PickPath_MainButtonProc
337        Button MainButtonA,help={"Pick the local data folder that contains the SANS data"}
338        Button MainButtonB,pos={100,8},size={90,20},proc=CatVShort_MainButtonProc,title="File Catalog"
339        Button MainButtonB,help={"This will generate a condensed CATalog table of all files in a specified local folder"}
340        Button MainButtonC,pos={250,8},size={50,20},proc=HelpMainButtonProc,title="Help"
341        Button MainButtonC,help={"Display the help file"}
342        Button MainButtonD,pos={320,8},size={80,20},proc=SR_OpenTracTicketPage,title="Feedback"
343        Button MainButtonD,help={"Submit bug reports or feature requests"}
344       
345        TabControl MainTab,pos={7,49},size={410,202},tabLabel(0)="Raw Data",proc=MainTabProc
346        TabControl MainTab,tabLabel(1)="Reduction",tabLabel(2)="1-D Ops",tabLabel(3)="2-D Ops",tabLabel(4)="Misc Ops"
347        TabControl MainTab,value=0
348        //
349        TabControl MainTab labelBack=(47748,57192,54093)
350       
351//on tab(0) - Raw Data - initially visible
352        Button MainButton_0a,pos={15,90},size={130,20},proc=DisplayMainButtonProc,title="Display Raw Data"
353        Button MainButton_0a,help={"Display will load and plot a single 2-D raw data file"}
354        Button MainButton_0b,pos={15,120},size={70,20},proc=PatchMainButtonProc,title="Patch"
355        Button MainButton_0b,help={"Patch will update incorrect information in raw data headers"}
356        Button MainButton_0c,pos={15,150},size={110,20},proc=TransMainButtonProc,title="Transmission"
357        Button MainButton_0c,help={"Shows the \"Patch\" panel which allows calculation of sample transmissions and entering these values into raw data headers"}
358        Button MainButton_0d,pos={15,180},size={130,20},proc=RealTime_MainButtonProc,title="RealTime Display"
359        Button MainButton_0d,help={"Shows the panel for control of the RealTime data display. Only used during data collection"}
360        Button MainButton_0e,pos={15,210},size={130,20},proc=CatSort_MainButtonProc,title="Sort Catalog"
361        Button MainButton_0e,help={"Sort the Data Catalog, courtesy of ANSTO"}
362        Button MainButton_0f,pos={170,90},size={90,20},proc=DataTree_MainButtonProc,title="Data Tree"
363        Button MainButton_0f,help={"Show the header and data tree"}
364        Button MainButton_0g,pos={170,180},size={110,20},proc=RTReduce_MainButtonProc,title="RT Reduction"
365        Button MainButton_0g,help={"Reduce live (incomplete) data files during acquisition"}
366
367
368//on tab(1) - Reduction
369        Button MainButton_1a,pos={15,90},size={110,20},proc=BuildProtocol_MainButtonProc,title="Build Protocol"
370        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"}
371        Button MainButton_1b,pos={15,120},size={110,20},proc=ReduceAFile_MainButtonProc,title="Reduce a File"
372        Button MainButton_1b,help={"Presents a questionnare for creating a reduction protocol, then reduces a single file"}
373        Button MainButton_1c,pos={15,150},size={160,20},proc=ReduceMultiple_MainButtonProc,title="Reduce Multiple Files"
374        Button MainButton_1c,help={"Use for reducing multiple raw datasets after protocol(s) have been created"}
375//      Button MainButton_1d,pos={15,180},size={110,20},proc=ShowCatShort_MainButtonProc,title="Show CAT Table"
376//      Button MainButton_1d,help={"This button will bring the CATalog window to the front, if it exists"}
377        Button MainButton_1a,disable=1
378        Button MainButton_1b,disable=1
379        Button MainButton_1c,disable=1
380//      Button MainButton_1d,disable=1
381
382//on tab(2) - 1-D operations
383        Button MainButton_2a,pos={15,90},size={60,20},proc=Plot1D_MainButtonProc,title="Plot"
384        Button MainButton_2a,help={"Loads and plots a 1-D dataset in the format expected by \"FIT\""}
385        Button MainButton_2b,pos={15,120},size={60,20},proc=Sort1D_MainButtonProc,title="Sort"
386        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"}
387        Button MainButton_2c,pos={15,150},size={60,20},proc=Fit1D_MainButtonProc,title="FIT"
388        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"}
389//      Button MainButton_2d,pos={15,180},size={60,20},proc=FITRPA_MainButtonProc,title="FIT/RPA"
390//      Button MainButton_2d,help={"Shows panel for performing a fit to a polymer standard."}
391//      Button MainButton_2e,pos={120,90},size={90,20},proc=Subtract1D_MainButtonProc,title="Subtract 1D"
392//      Button MainButton_2e,help={"Shows panel for subtracting two 1-D data sets"}
393        Button MainButton_2e,pos={120,90},size={110,20},proc=Arithmetic1D_MainButtonProc,title="1D Arithmetic"
394        Button MainButton_2e,help={"Shows panel for doing arithmetic on 1D data sets"}
395        Button MainButton_2f,pos={120,120},size={130,20},proc=Combine1D_MainButtonProc,title="Combine 1D Files"
396        Button MainButton_2f,help={"Shows panel for batch combination of 1D data files. Use after you're comfortable with NSORT"}
397        Button MainButton_2a,disable=1
398        Button MainButton_2b,disable=1
399        Button MainButton_2c,disable=1
400//      Button MainButton_2d,disable=1
401        Button MainButton_2e,disable=1
402        Button MainButton_2f,disable=1
403
404
405
406//on tab(3) - 2-D Operations
407        Button MainButton_3a,pos={15,90},size={90,20},proc=DisplayInterm_MainButtonProc,title="Display 2D"
408        Button MainButton_3a,help={"Display will plot a 2-D work data file that has previously been created during data reduction"}
409        Button MainButton_3b,pos={15,120},size={90,20},title="Draw Mask",proc=DrawMask_MainButtonProc
410        Button MainButton_3b,help={"Draw a mask file and save it."}
411        Button MainButton_3c,pos={15,150},size={90,20},proc=ReadMask_MainButtonProc,title="Read Mask"
412        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"}
413        Button MainButton_3d,pos={15,180},size={100,20},title="Tile RAW 2D",proc=ShowTilePanel_MainButtonProc
414        Button MainButton_3d,help={"Adds selected RAW data files to a layout."}
415        Button MainButton_3e,pos={150,90},size={100,20},title="Copy Work",proc=CopyWork_MainButtonProc
416        Button MainButton_3e,help={"Copies WORK data from specified folder to destination folder."}
417        Button MainButton_3f,pos={150,120},size={110,20},title="WorkFile Math",proc=WorkMath_MainButtonProc
418        Button MainButton_3f,help={"Perfom simple math operations on workfile data"}
419        Button MainButton_3g,pos={150,180},size={100,20},title="Event Data",proc=Event_MainButtonProc
420        Button MainButton_3g,help={"Manipulate TISANE Timeslice data"}
421       
422        Button MainButton_3a,disable=1
423        Button MainButton_3b,disable=1
424        Button MainButton_3c,disable=1
425        Button MainButton_3d,disable=1
426        Button MainButton_3e,disable=1
427        Button MainButton_3f,disable=1
428        Button MainButton_3g,disable=1
429
430//on tab(4) - Miscellaneous operations
431        Button MainButton_4a,pos={15,90},size={80,20},proc=Draw3D_MainButtonProc,title="3D Display"
432        Button MainButton_4a,help={"Plots a 3-D surface of the selected file type"}
433        Button MainButton_4b,pos={15,120},size={120,20},proc=ShowSchematic_MainButtonProc,title="Show Schematic"
434        Button MainButton_4b,help={"Use this to show a schematic of the data reduction process for a selected sample file and reduction protocol"}
435        Button MainButton_4c,pos={15,150},size={80,20},proc=ShowAvePanel_MainButtonProc,title="Average"
436        Button MainButton_4c,help={"Shows a panel for interactive selection of the 1-D averaging step"}
437//      Button MainButton_4d,pos={15,180},size={110,20},proc=CatShort_MainButtonProc,title="CAT/Notebook"
438//      Button MainButton_4d,help={"This will generate a CATalog notebook of all files in a specified local folder"}
439//      Button MainButton_4e,pos={180,90},size={130,20},proc=NG1TransConv_MainButtonProc,title="NG1 Files to Trans"
440//      Button MainButton_4e,help={"Converts NG1 transmission data files to be interpreted as such"}
441        Button MainButton_4f,pos={180,120},size={130,20},proc=PRODIV_MainButtonProc,title="Make DIV file"
442        Button MainButton_4f,help={"Merges two stored workfiles (CORrected) into a DIV file, and saves the result"}
443        Button MainButton_4g,pos={180,150},size={130,20},proc=Raw2ASCII_MainButtonProc,title="RAW ASCII Export"
444        Button MainButton_4g,help={"Exports selected RAW (2D) data file(s) as ASCII, either as pixel values or I(Qx,Qy)"}
445        Button MainButton_4h,pos={180,180},size={130,20},proc=Preferences_MainButtonProc,title="Preferences"
446        Button MainButton_4h,help={"Sets user preferences for selected parameters"}
447       
448        Button MainButton_4a,disable=1
449        Button MainButton_4b,disable=1
450        Button MainButton_4c,disable=1
451//      Button MainButton_4d,disable=1
452//      Button MainButton_4e,disable=1
453        Button MainButton_4f,disable=1
454        Button MainButton_4g,disable=1
455        Button MainButton_4h,disable=1
456//     
457EndMacro
458
459// function to control the drawing of buttons in the TabControl on the main panel
460// Naming scheme for the buttons MUST be strictly adhered to... else buttons will
461// appear in odd places...
462// all buttons are named MainButton_NA where N is the tab number and A is the letter denoting
463// the button's position on that particular tab.
464// in this way, buttons will always be drawn correctly..
465//
466Function MainTabProc(name,tab)
467        String name
468        Variable tab
469       
470//      Print "name,number",name,tab
471        String ctrlList = ControlNameList("",";"),item="",nameStr=""
472        Variable num = ItemsinList(ctrlList,";"),ii,onTab
473        for(ii=0;ii<num;ii+=1)
474                //items all start w/"MainButton_"
475                item=StringFromList(ii, ctrlList ,";")
476                nameStr=item[0,10]
477                if(cmpstr(nameStr,"MainButton_")==0)
478                        onTab = str2num(item[11])
479                        Button $item,disable=(tab!=onTab)
480                endif
481        endfor
482End
483
484//
485Function SR_OpenTracTicketPage(ctrlName)
486        String ctrlName
487        DoAlert 1,"Your web browser will open to a page where you can submit your bug report or feature request. OK?"
488        if(V_flag==1)
489                BrowseURL "http://danse.chem.utk.edu/trac/newticket"
490        endif
491End
492
Note: See TracBrowser for help on using the repository browser.