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

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

many additions.

Moved unused igor/nexus testing files to Vx_ prefix since they're garbage. Pulled out the useful bits for mask and div R/W and moved those to theire appropriate procedures.

Testing the simple correction of data, only tested basic subtraction. All of it still needs to be verified since I don't have any real header numbers and units yet.

Adjusted the columns on the file catalog to be more appropriate, and added a hook to allow loading of raw data files directly from the table and a popup contextual menu. May add more functionality to it later.

Corrected how the 1D data is plotted so that it correctly uses the binning type. I(q) save now also uses the binning as specified.

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