source: sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/MainPanel.ipf @ 570

Last change on this file since 570 was 570, checked in by srkline, 13 years ago

Change (1):
In preparation for release, updated pragma IgorVersion?=6.1 in all procedures

Change (2):
As a side benefit of requiring 6.1, we can use the MultiThread? keyword to thread any model function we like. The speed benefit is only noticeable on functions that require at least one integration and at least 100 points (resolution smearing is NOT threaded, too many threadSafe issues, too little benefit). I have chosen to use the MultiThread? only on the XOP assignment. In the Igor code there are too many functions that are not explicitly declared threadsafe, making for a mess.

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