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

Last change on this file since 984 was 984, checked in by srkline, 7 years ago

lots of changes to 1D averaging and the plotting routines, detector corrections, and basic reads

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