source: sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/Initialize.ipf @ 412

Last change on this file since 412 was 412, checked in by ajj, 14 years ago

More reorg.

File size: 5.5 KB
Line 
1#pragma rtGlobals=1             // Use modern global access method.
2#pragma version=5.1
3#pragma IgorVersion=6.0
4
5//***********************
6// 091901 Vers 1.2
7//
8// Initialization procedures that must be run before any analysis is started
9// this is accomplished by placing:
10//
11// Initialize()
12// #include "includes"
13//
14// in the built-in procedure window of the .pxt (template) experiment
15// IGOR recognizes this, and executes Initialize() immediately after
16// compiling all of the included procedures. This is all done as the blank
17// template is opened
18//
19// Choosing initialize from the SANS menu will do the same, and no harm is done
20// to the experiment by re- initializing. no data or folders are overwritten
21//
22//************************
23
24//this is the main initualization procedure that must be the first thing
25//done when opening a new Data reduction experiment
26//
27//sets up data folders, globals, protocols, and draws the main panel
28Proc Initialize()
29
30        Variable/G root:SANS_RED_VERSION=5.10
31       
32        if(itemsinlist(WinList("Includes.ipf", ";","INCLUDE:6"),";") != 0)
33                //must be opening a v4.2 or earlier template
34                DoAlert 0,"This experiment was created with an old version of the macros. I'll try to make this work, but please start new work with a current template"
35        endif
36       
37        InitFolders()
38        InitFakeProtocols()
39        InitGlobals()   
40        InitFacilityGlobals()
41        DoWindow/F Main_Panel
42        If(V_flag == 0)
43                //draw panel
44                Main_Panel()
45        Endif
46        ResizeCmdWindow()
47End
48
49//creates all the necessary data folders in the root folder
50//does not overwrite any existing folders of the same name
51//it leaves data in them untouched
52Function InitFolders()
53       
54        NewDataFolder/O root:myGlobals
55        NewDataFolder/O root:myGlobals:CatVSHeaderInfo
56        NewDataFolder/O root:RAW
57        NewDataFolder/O root:SAM
58        NewDataFolder/O root:EMP
59        NewDataFolder/O root:BGD
60        NewDataFolder/O root:COR
61        NewDataFolder/O root:DIV
62        NewDataFolder/O root:MSK
63        NewDataFolder/O root:ABS
64        NewDataFolder/O root:CAL
65        NewDataFolder/O root:STO
66        NewDataFolder/O root:SUB
67        NewDataFolder/O root:DRK
68       
69        Return(0)
70End
71
72//Global folder already exists...
73//adds appropriate globals to the newly created myGlobals folder
74//return data folder to root: before leaving
75//
76// global parameters used for detector constants are facility specific
77// and have been moved
78//
79Function InitGlobals()
80       
81        Variable/G root:myGlobals:gIsLogScale = 0
82        String/G root:myGlobals:gDataDisplayType = "RAW"
83       
84        //check platform, so Angstrom can be drawn correctly
85       
86        if(cmpstr("Macintosh",IgorInfo(2)) == 0)
87                String/G root:myGlobals:gAngstStr = num2char(-127)
88                Variable/G root:myGlobals:gIsMac = 1
89        else
90                //either Windows or Windows NT
91                String/G root:myGlobals:gAngstStr = num2char(-59)
92                Variable/G root:myGlobals:gIsMac = 0
93                //SetIgorOption to keep some PC's (graphics cards?) from smoothing the 2D image
94                Execute "SetIgorOption WinDraw,forceCOLORONCOLOR=1"
95        endif
96       
97        //global to set log scale as the default for display of RAW data
98        //these can be set using the Misc->Preferences panel
99        Variable/G root:myGlobals:gLogScalingAsDefault=1
100        Variable/G root:myGlobals:gAllowDRK=0                   //don't show DRK as default
101        Variable/G root:myGlobals:gDoTransCheck=1
102        Variable/G root:myGlobals:gBinWidth=1
103        Variable/G root:myGlobals:gNPhiSteps=72
104       
105        // flags to turn detector corrections on/off for testing (you should leave these ON)
106        Variable/G root:myGlobals:gDoDetectorEffCorr = 1
107        Variable/G root:myGlobals:gDoTransmissionCorr = 1
108
109        //set flag if Demo Version is detected
110        Variable/G root:myGlobals:isDemoVersion = isDemo()
111       
112        Return(0)
113End
114
115//creates the "base" protocols that should be available, after creating the data folder
116//
117//all protocols are kept in the root:myGlobals:Protocols folder, created here
118//
119Function InitFakeProtocols()
120       
121        //*****as of 0901, protocols are 8 points long, [6] is used for work.drk, [7] is unused
122        NewDataFolder/O root:myGlobals:Protocols
123        Make/O/T $"root:myGlobals:Protocols:Base"={"none","none","ask","ask","none","AVTYPE=Circular;SAVE=Yes;NAME=Manual;PLOT=Yes","DRK=none,DRKMODE=0,",""}
124        Make/O/T $"root:myGlobals:Protocols:DoAll"={"ask","ask","ask","ask","ask","AVTYPE=Circular;SAVE=Yes;NAME=Manual;PLOT=Yes","DRK=none,DRKMODE=0,",""}
125        Make/O/T/N=8 $"root:myGlobals:Protocols:CreateNew"                      //null wave
126        //Initialize waves to store values in
127       
128        String/G root:myGlobals:Protocols:gProtoStr=""
129        String/G root:myGlobals:Protocols:gNewStr=""
130        String/G root:myGlobals:Protocols:gAvgInfoStr = "AVTYPE=Circular;SAVE=Yes;NAME=Auto;PLOT=Yes;"
131       
132        Return(0)
133End
134
135//simple function to resize the comand window to a nice size, no matter what the resolution
136//need to test out on several different monitors and both platforms
137//
138// could easily be incorporated into the initialization routines to ensure that the
139// command window is always visible at startup of the macros. No need for a hook function
140//
141Function ResizeCmdWindow()
142
143        String str=IgorInfo(0),rect="",platform=igorinfo(2)
144        Variable depth,left,top,right,bottom,factor
145       
146        if(cmpstr(platform,"Macintosh")==0)
147                factor=1
148        else
149                factor = 0.6            //fudge factor to get command window on-screen on Windows
150        endif
151        rect = StringByKey("SCREEN1", str  ,":",";")   
152        sscanf rect,"DEPTH=%d,RECT=%d,%d,%d,%d",depth, left,top,right,bottom
153        MoveWindow/C  (left+3)*factor,(bottom-150)*factor,(right-50)*factor,(bottom-10)*factor
154End
155
156
157//returns 1 if demo version, 0 if full version
158Function IsDemo()
159
160        // create small offscreen graph
161        Display/W=(3000,3000,3010,3010)
162        DoWindow/C IsDemoGraph
163
164        // try to save a PICT or bitmap of it to the clipboard
165        SavePICT/Z  as "Clipboard"
166        Variable isDemo= V_Flag != 0    // if error: must be demo
167        DoWindow/K IsDemoGraph
168        return isDemo
169End
Note: See TracBrowser for help on using the repository browser.