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

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

more changes and additons to display VSANS data

adding functions for IvsQ plotting

coverted much of VCALC to have similar folder structure as HDF to allow re-use of the Q-binning procedures from VCALC with real data in work files.

re-working the beam center finder to get it to work with work file data rather then only VCALC.

new plotting routines for the panels to rescale to the beam center (still in pixels, though)

  • 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
124Proc FitRPA_MainButtonProc(ctrlName) : ButtonControl
125        String ctrlName
126
127        OpenFITRPAPanel()
128End
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.