Rev 146 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 146 | Rev 173 | ||
---|---|---|---|
1 | #include "../include/sipmscan.h" |
1 | #include "../include/sipmscan.h" |
2 | #include "../include/workstation.h" |
2 | #include "../include/workstation.h" |
3 | 3 | ||
4 | #include <stdio.h> |
4 | #include <stdio.h> |
5 | #include <stdlib.h> |
5 | #include <stdlib.h> |
6 | 6 | ||
7 | // Title labels for each of the frame |
7 | // Title labels for each of the frame |
8 | void TGAppMainFrame::TGTitleLabel(TGWindow *parent, TGHorizontalFrame *fTitle, const char *title, Pixel_t foreColor, Pixel_t backColor, const char *font) |
8 | void TGAppMainFrame::TGTitleLabel(TGWindow *parent, TGHorizontalFrame *fTitle, const char *title, Pixel_t foreColor, Pixel_t backColor, const char *font) |
9 | { |
9 | { |
10 | TGLabel *lab = new TGLabel(fTitle, title); |
10 | TGLabel *lab = new TGLabel(fTitle, title); |
11 | lab->ChangeBackground(backColor); |
11 | lab->ChangeBackground(backColor); |
12 | lab->SetTextColor(foreColor); |
12 | lab->SetTextColor(foreColor); |
13 | lab->SetTextFont(font); |
13 | lab->SetTextFont(font); |
14 | fTitle->AddFrame(lab, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY) ); |
14 | fTitle->AddFrame(lab, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY) ); |
15 | fTitle->ChangeBackground(backColor); |
15 | fTitle->ChangeBackground(backColor); |
16 | } |
16 | } |
17 | 17 | ||
18 | // Splitter to a set number of frames |
18 | // Splitter to a set number of frames |
19 | bool TGAppMainFrame::TGSplitter(TGWindow *parent, const char *majorSplit, int *horSplits, int *vertSplits, const char *frameTitles[512], TGCompositeFrame **frames, int *frameWidth, int *frameHeight) |
19 | bool TGAppMainFrame::TGSplitter(TGWindow *parent, const char *majorSplit, int *horSplits, int *vertSplits, const char *frameTitles[512], TGCompositeFrame **frames, int *frameWidth, int *frameHeight) |
20 | { |
20 | { |
21 | // Number of Frames that are not the ones we supply |
21 | // Number of Frames that are not the ones we supply |
22 | int nrofmed = 0; |
22 | int nrofmed = 0; |
23 | // Number of all splits in the minor direction |
23 | // Number of all splits in the minor direction |
24 | int minorSplits = 0; |
24 | int minorSplits = 0; |
25 | int k = 0; |
25 | int k = 0; |
26 | 26 | ||
27 | // Title frame height |
27 | // Title frame height |
28 | int titHeight = 25; |
28 | int titHeight = 25; |
29 | 29 | ||
30 | if(strcmp("horizontal",majorSplit) == 0) |
30 | if(strcmp("horizontal",majorSplit) == 0) |
31 | { |
31 | { |
32 | fLayout[idtotal] = new TGCompositeFrame(parent, 300, 300, kHorizontalFrame); |
32 | fLayout[idtotal] = new TGCompositeFrame(parent, 300, 300, kHorizontalFrame); |
33 | for(int i = 0; i <= horSplits[0]; i++) |
33 | for(int i = 0; i <= horSplits[0]; i++) |
34 | { |
34 | { |
35 | minorSplits += vertSplits[i]; |
35 | minorSplits += vertSplits[i]; |
36 | if(vertSplits[i] > 0) |
36 | if(vertSplits[i] > 0) |
37 | nrofmed++; |
37 | nrofmed++; |
38 | } |
38 | } |
39 | 39 | ||
40 | if(DBGSIG > 1) printf("TGSplitter(): Number of intermediate frames = %d, all minor splits = %d\n", nrofmed, minorSplits); |
40 | if(DBGSIG > 1) printf("TGSplitter(): Number of intermediate frames = %d, all minor splits = %d\n", nrofmed, minorSplits); |
41 | 41 | ||
42 | 42 | ||
43 | TGCompositeFrame *fInter[nrofmed]; |
43 | TGCompositeFrame *fInter[nrofmed]; |
44 | TGVSplitter *vsplit[horSplits[0]]; |
44 | TGVSplitter *vsplit[horSplits[0]]; |
45 | TGHSplitter *hsplit[minorSplits]; |
45 | TGHSplitter *hsplit[minorSplits]; |
46 | 46 | ||
47 | nrofmed = 0; |
47 | nrofmed = 0; |
48 | 48 | ||
49 | for(int i = 0; i <= horSplits[0]; i++) |
49 | for(int i = 0; i <= horSplits[0]; i++) |
50 | { |
50 | { |
51 | if(DBGSIG > 1) printf("TGSplitter(): i = %d\n",i); |
51 | if(DBGSIG > 1) printf("TGSplitter(): i = %d\n",i); |
52 | for(int j = 0; j <= vertSplits[i]; j++) |
52 | for(int j = 0; j <= vertSplits[i]; j++) |
53 | { |
53 | { |
54 | if(DBGSIG > 1) printf("TGSplitter(): j = %d, vertSplits = %d\n",j, vertSplits[i]); |
54 | if(DBGSIG > 1) printf("TGSplitter(): j = %d, vertSplits = %d\n",j, vertSplits[i]); |
55 | if( vertSplits[i] > 0 ) |
55 | if( vertSplits[i] > 0 ) |
56 | { |
56 | { |
57 | if(j == 0) |
57 | if(j == 0) |
58 | { |
58 | { |
59 | if(DBGSIG > 1) printf("TGSplitter(): vertSplits - j = %d (nrofmed = %d)\n", (vertSplits[i]-j), nrofmed); |
59 | if(DBGSIG > 1) printf("TGSplitter(): vertSplits - j = %d (nrofmed = %d)\n", (vertSplits[i]-j), nrofmed); |
60 | if(i > 0) |
60 | if(i > 0) |
61 | { |
61 | { |
62 | fInter[nrofmed] = new TGCompositeFrame(fLayout[idtotal], frameWidth[k], 200, kVerticalFrame); |
62 | fInter[nrofmed] = new TGCompositeFrame(fLayout[idtotal], frameWidth[k], 200, kVerticalFrame); |
63 | fLayout[idtotal]->AddFrame(fInter[nrofmed], new TGLayoutHints(kLHintsExpandY | kLHintsExpandX)); |
63 | fLayout[idtotal]->AddFrame(fInter[nrofmed], new TGLayoutHints(kLHintsExpandY | kLHintsExpandX)); |
64 | } |
64 | } |
65 | else |
65 | else |
66 | { |
66 | { |
67 | fInter[nrofmed] = new TGCompositeFrame(fLayout[idtotal], frameWidth[k], 200, kVerticalFrame | kFixedWidth); |
67 | fInter[nrofmed] = new TGCompositeFrame(fLayout[idtotal], frameWidth[k], 200, kVerticalFrame | kFixedWidth); |
68 | fLayout[idtotal]->AddFrame(fInter[nrofmed], new TGLayoutHints(kLHintsExpandY)); |
68 | fLayout[idtotal]->AddFrame(fInter[nrofmed], new TGLayoutHints(kLHintsExpandY)); |
69 | } |
69 | } |
70 | } |
70 | } |
71 | 71 | ||
72 | if( (vertSplits[i]-j) > 0) |
72 | if( (vertSplits[i]-j) > 0) |
73 | { |
73 | { |
74 | if(DBGSIG > 1) printf("TGSplitter(): Step 0a (k = %d)\n", k); |
74 | if(DBGSIG > 1) printf("TGSplitter(): Step 0a (k = %d)\n", k); |
75 | 75 | ||
76 | frames[k] = new TGCompositeFrame(fInter[nrofmed], frameWidth[k], frameHeight[k], kVerticalFrame | kFixedHeight | kSunkenFrame); |
76 | frames[k] = new TGCompositeFrame(fInter[nrofmed], frameWidth[k], frameHeight[k], kVerticalFrame | kFixedHeight | kSunkenFrame); |
77 | fTitle = new TGHorizontalFrame(frames[k], 100, titHeight, kFixedHeight | kSunkenFrame); |
77 | fTitle = new TGHorizontalFrame(frames[k], 100, titHeight, kFixedHeight | kSunkenFrame); |
78 | TGTitleLabel(frames[k], fTitle, frameTitles[k], (Pixel_t)FORECOLOR, (Pixel_t)BACKCOLOR, FONT); |
78 | TGTitleLabel(frames[k], fTitle, frameTitles[k], (Pixel_t)FORECOLOR, (Pixel_t)BACKCOLOR, FONT); |
79 | frames[k]->AddFrame(fTitle, new TGLayoutHints(kLHintsExpandX | kLHintsTop) ); |
79 | frames[k]->AddFrame(fTitle, new TGLayoutHints(kLHintsExpandX | kLHintsTop) ); |
80 | fInter[nrofmed]->AddFrame(frames[k], new TGLayoutHints(kLHintsExpandX)); |
80 | fInter[nrofmed]->AddFrame(frames[k], new TGLayoutHints(kLHintsExpandX)); |
81 | 81 | ||
82 | if(DBGSIG > 1) printf("TGSplitter(): Step 1a\n"); |
82 | if(DBGSIG > 1) printf("TGSplitter(): Step 1a\n"); |
83 | 83 | ||
84 | hsplit[nrofmed] = new TGHSplitter(fInter[nrofmed]); |
84 | hsplit[nrofmed] = new TGHSplitter(fInter[nrofmed]); |
85 | hsplit[nrofmed]->SetFrame(frames[k], kTRUE); |
85 | hsplit[nrofmed]->SetFrame(frames[k], kTRUE); |
86 | fInter[nrofmed]->AddFrame(hsplit[nrofmed], new TGLayoutHints(kLHintsExpandX)); |
86 | fInter[nrofmed]->AddFrame(hsplit[nrofmed], new TGLayoutHints(kLHintsExpandX)); |
87 | 87 | ||
88 | if(DBGSIG > 1) printf("TGSplitter(): Step 2a\n"); |
88 | if(DBGSIG > 1) printf("TGSplitter(): Step 2a\n"); |
89 | 89 | ||
90 | k++; |
90 | k++; |
91 | } |
91 | } |
92 | else |
92 | else |
93 | { |
93 | { |
94 | if(DBGSIG > 1) printf("TGSplitter(): Step 0b (k = %d)\n", k); |
94 | if(DBGSIG > 1) printf("TGSplitter(): Step 0b (k = %d)\n", k); |
95 | 95 | ||
96 | frames[k] = new TGCompositeFrame(fInter[nrofmed], frameWidth[k], frameHeight[k], kVerticalFrame | kSunkenFrame); |
96 | frames[k] = new TGCompositeFrame(fInter[nrofmed], frameWidth[k], frameHeight[k], kVerticalFrame | kSunkenFrame); |
97 | fTitle = new TGHorizontalFrame(frames[k], 100, titHeight, kFixedHeight | kSunkenFrame); |
97 | fTitle = new TGHorizontalFrame(frames[k], 100, titHeight, kFixedHeight | kSunkenFrame); |
98 | TGTitleLabel(frames[k], fTitle, frameTitles[k], (Pixel_t)FORECOLOR, (Pixel_t)BACKCOLOR, FONT); |
98 | TGTitleLabel(frames[k], fTitle, frameTitles[k], (Pixel_t)FORECOLOR, (Pixel_t)BACKCOLOR, FONT); |
99 | frames[k]->AddFrame(fTitle, new TGLayoutHints(kLHintsExpandX | kLHintsTop) ); |
99 | frames[k]->AddFrame(fTitle, new TGLayoutHints(kLHintsExpandX | kLHintsTop) ); |
100 | fInter[nrofmed]->AddFrame(frames[k], new TGLayoutHints(kLHintsExpandX | kLHintsExpandY)); |
100 | fInter[nrofmed]->AddFrame(frames[k], new TGLayoutHints(kLHintsExpandX | kLHintsExpandY)); |
101 | 101 | ||
102 | if(DBGSIG > 1) printf("TGSplitter(): Step 1b\n"); |
102 | if(DBGSIG > 1) printf("TGSplitter(): Step 1b\n"); |
103 | k++; |
103 | k++; |
104 | } |
104 | } |
105 | } |
105 | } |
106 | else |
106 | else |
107 | { |
107 | { |
108 | if(DBGSIG > 1) printf("TGSplitter(): Step 0c (k = %d)\n", k); |
108 | if(DBGSIG > 1) printf("TGSplitter(): Step 0c (k = %d)\n", k); |
109 | 109 | ||
110 | frames[k] = new TGCompositeFrame(fLayout[idtotal], frameWidth[k], frameHeight[k], kVerticalFrame | kSunkenFrame); |
110 | frames[k] = new TGCompositeFrame(fLayout[idtotal], frameWidth[k], frameHeight[k], kVerticalFrame | kSunkenFrame); |
111 | fTitle = new TGHorizontalFrame(frames[k], 100, titHeight, kFixedHeight | kSunkenFrame); |
111 | fTitle = new TGHorizontalFrame(frames[k], 100, titHeight, kFixedHeight | kSunkenFrame); |
112 | TGTitleLabel(frames[k], fTitle, frameTitles[k], (Pixel_t)FORECOLOR, (Pixel_t)BACKCOLOR, FONT); |
112 | TGTitleLabel(frames[k], fTitle, frameTitles[k], (Pixel_t)FORECOLOR, (Pixel_t)BACKCOLOR, FONT); |
113 | frames[k]->AddFrame(fTitle, new TGLayoutHints(kLHintsExpandX | kLHintsTop) ); |
113 | frames[k]->AddFrame(fTitle, new TGLayoutHints(kLHintsExpandX | kLHintsTop) ); |
114 | fLayout[idtotal]->AddFrame(frames[k], new TGLayoutHints(kLHintsExpandX | kLHintsExpandY)); |
114 | fLayout[idtotal]->AddFrame(frames[k], new TGLayoutHints(kLHintsExpandX | kLHintsExpandY)); |
115 | 115 | ||
116 | if(DBGSIG > 1) printf("TGSplitter(): Step 1c\n"); |
116 | if(DBGSIG > 1) printf("TGSplitter(): Step 1c\n"); |
117 | k++; |
117 | k++; |
118 | } |
118 | } |
119 | } |
119 | } |
120 | 120 | ||
121 | if(DBGSIG > 1) printf("TGSplitter(): i = %d, horSplits = %d\n", i, horSplits[0]); |
121 | if(DBGSIG > 1) printf("TGSplitter(): i = %d, horSplits = %d\n", i, horSplits[0]); |
122 | 122 | ||
123 | if(i != horSplits[0]) |
123 | if(i != horSplits[0]) |
124 | { |
124 | { |
125 | vsplit[i] = new TGVSplitter(fLayout[idtotal]); |
125 | vsplit[i] = new TGVSplitter(fLayout[idtotal]); |
126 | if( vertSplits[i] > 0 ) |
126 | if( vertSplits[i] > 0 ) |
127 | vsplit[i]->SetFrame(fInter[nrofmed], kTRUE); |
127 | vsplit[i]->SetFrame(fInter[nrofmed], kTRUE); |
128 | else |
128 | else |
129 | vsplit[i]->SetFrame(frames[k], kTRUE); |
129 | vsplit[i]->SetFrame(frames[k], kTRUE); |
130 | fLayout[idtotal]->AddFrame(vsplit[nrofmed], new TGLayoutHints(kLHintsExpandY)); |
130 | fLayout[idtotal]->AddFrame(vsplit[nrofmed], new TGLayoutHints(kLHintsExpandY)); |
131 | } |
131 | } |
132 | 132 | ||
133 | nrofmed++; |
133 | nrofmed++; |
134 | } |
134 | } |
135 | 135 | ||
136 | if(DBGSIG > 1) printf("TGSplitter(): Finished horizontal layout\n"); |
136 | if(DBGSIG > 1) printf("TGSplitter(): Finished horizontal layout\n"); |
137 | } |
137 | } |
138 | else if(strcmp("vertical",majorSplit) == 0) |
138 | else if(strcmp("vertical",majorSplit) == 0) |
139 | { |
139 | { |
140 | /* for(int i = 0; i <= vertSplits[0]; i++) |
140 | /* for(int i = 0; i <= vertSplits[0]; i++) |
141 | { |
141 | { |
142 | minorSplits += horSplits[i]; |
142 | minorSplits += horSplits[i]; |
143 | if(horSplits[i] > 0) |
143 | if(horSplits[i] > 0) |
144 | nrofmed++; |
144 | nrofmed++; |
145 | } |
145 | } |
146 | 146 | ||
147 | printf("Number of intermediate frames = %d\n", nrofmed); |
147 | printf("Number of intermediate frames = %d\n", nrofmed); |
148 | 148 | ||
149 | TGCompositeFrame *fInter[nrofmed];*/ |
149 | TGCompositeFrame *fInter[nrofmed];*/ |
150 | } |
150 | } |
151 | else |
151 | else |
152 | return false; |
152 | return false; |
153 | 153 | ||
154 | return true; |
154 | return true; |
155 | } |
155 | } |
156 | 156 | ||
157 | // Function for setting up the layout |
157 | // Function for setting up the layout |
158 | void TGAppMainFrame::LayoutRead(int nrframes, int *w, int *h) |
158 | void TGAppMainFrame::LayoutRead(int nrframes, int *w, int *h) |
159 | { |
159 | { |
160 | int WM, HM, k = 0, start = 0; |
160 | int WM, HM, k = 0, start = 0; |
161 | 161 | ||
162 | std::ifstream ilayout; |
162 | std::ifstream ilayout; |
163 | 163 | ||
164 | char *cTemp, *cTemp2, readTemp[1024]; |
164 | char *cTemp, *cTemp2, readTemp[1024]; |
165 | cTemp = new char[512]; |
165 | cTemp = new char[512]; |
166 | cTemp2 = new char[512]; |
166 | cTemp2 = new char[512]; |
167 | sprintf(cTemp, "%s/layout/selected_layout.txt", rootdir); |
167 | sprintf(cTemp, "%s/layout/selected_layout.txt", rootdir); |
168 | ilayout.open(cTemp, std::ifstream::in); |
168 | ilayout.open(cTemp, std::ifstream::in); |
169 | if(ilayout.is_open()) |
169 | if(ilayout.is_open()) |
170 | { |
170 | { |
171 | ilayout >> cTemp2; |
171 | ilayout >> cTemp2; |
172 | } |
172 | } |
173 | ilayout.close(); |
173 | ilayout.close(); |
174 | printf("Loaded layout file is: %s\n", cTemp2); |
174 | printf("Loaded layout file is: %s\n", cTemp2); |
175 | 175 | ||
176 | sprintf(cTemp, "%s/layout/%s", rootdir, cTemp2); |
176 | sprintf(cTemp, "%s/layout/%s", rootdir, cTemp2); |
177 | ilayout.open(cTemp, std::ifstream::in); |
177 | ilayout.open(cTemp, std::ifstream::in); |
178 | if(ilayout.is_open()) |
178 | if(ilayout.is_open()) |
179 | { |
179 | { |
180 | while(1) |
180 | while(1) |
181 | { |
181 | { |
182 | if(ilayout.peek() == '#') |
182 | if(ilayout.peek() == '#') |
183 | { |
183 | { |
184 | ilayout.getline(readTemp, 1024, '\n'); |
184 | ilayout.getline(readTemp, 1024, '\n'); |
185 | if(DBGSIG > 1) printf("LayoutRead(): readTemp = %s\n", readTemp); |
185 | if(DBGSIG > 1) printf("LayoutRead(): readTemp = %s\n", readTemp); |
186 | } |
186 | } |
187 | else if(ilayout.peek() == '\n') |
187 | else if(ilayout.peek() == '\n') |
188 | ilayout.ignore(1, '\n'); |
188 | ilayout.ignore(1, '\n'); |
189 | else |
189 | else |
190 | { |
190 | { |
191 | if(start == 0) |
191 | if(start == 0) |
192 | { |
192 | { |
193 | ilayout >> WM >> HM >> readTemp; |
193 | ilayout >> WM >> HM >> readTemp; |
194 | ilayout.ignore(1, '\n'); |
194 | ilayout.ignore(1, '\n'); |
195 | start++; |
195 | start++; |
196 | if(DBGSIG > 1) printf("LayoutRead(): W = %d, H = %d, Name = %s\n", WM, HM, readTemp); |
196 | if(DBGSIG > 1) printf("LayoutRead(): W = %d, H = %d, Name = %s\n", WM, HM, readTemp); |
197 | } |
197 | } |
198 | else |
198 | else |
199 | { |
199 | { |
200 | ilayout >> w[k] >> h[k] >> readTemp; |
200 | ilayout >> w[k] >> h[k] >> readTemp; |
201 | ilayout.ignore(1, '\n'); |
201 | ilayout.ignore(1, '\n'); |
202 | if(DBGSIG > 1) printf("LayoutRead(): w[%d] = %d, h[%d] = %d, Name = %s\n", k, w[k], k, h[k], readTemp); |
202 | if(DBGSIG > 1) printf("LayoutRead(): w[%d] = %d, h[%d] = %d, Name = %s\n", k, w[k], k, h[k], readTemp); |
203 | k++; |
203 | k++; |
204 | 204 | ||
205 | if(k == nrframes) break; |
205 | if(k == nrframes) break; |
206 | } |
206 | } |
207 | } |
207 | } |
208 | } |
208 | } |
209 | } |
209 | } |
210 | 210 | ||
211 | ilayout.close(); |
211 | ilayout.close(); |
212 | delete[] cTemp; |
212 | delete[] cTemp; |
213 | delete[] cTemp2; |
213 | delete[] cTemp2; |
214 | } |
214 | } |
215 | 215 | ||
216 | // Function for saving the current layout |
216 | // Function for saving the current layout |
217 | void TGAppMainFrame::LayoutSave() |
217 | void TGAppMainFrame::LayoutSave() |
218 | { |
218 | { |
219 | TGFileInfo file_info; |
219 | TGFileInfo file_info; |
220 | const char *filetypes[] = {"Layout","*.layout",0,0}; |
220 | const char *filetypes[] = {"Layout","*.layout",0,0}; |
221 | char *cTemp; |
221 | char *cTemp; |
222 | file_info.fFileTypes = filetypes; |
222 | file_info.fFileTypes = filetypes; |
223 | cTemp = new char[1024]; |
223 | cTemp = new char[1024]; |
224 | sprintf(cTemp, "%s/layout", rootdir); |
224 | sprintf(cTemp, "%s/layout", rootdir); |
225 | file_info.fIniDir = StrDup(cTemp); |
225 | file_info.fIniDir = StrDup(cTemp); |
226 | new TGFileDialog(gClient->GetDefaultRoot(), fMain, kFDSave, &file_info); |
226 | new TGFileDialog(gClient->GetDefaultRoot(), fMain, kFDSave, &file_info); |
227 | delete[] cTemp; |
227 | delete[] cTemp; |
228 | 228 | ||
229 | if(file_info.fFilename != NULL) |
229 | if(file_info.fFilename != NULL) |
230 | { |
230 | { |
231 | if(DBGSIG) printf("LayoutSave(): The layout save name: %s\n", file_info.fFilename); |
231 | if(DBGSIG) printf("LayoutSave(): The layout save name: %s\n", file_info.fFilename); |
232 | 232 | ||
233 | std::ofstream olayout; |
233 | std::ofstream olayout; |
234 | 234 | ||
235 | olayout.open(file_info.fFilename, std::ofstream::out); |
235 | olayout.open(file_info.fFilename, std::ofstream::out); |
236 | if(olayout.is_open()) |
236 | if(olayout.is_open()) |
237 | { |
237 | { |
238 | olayout << "# Whole window width and height" << std::endl; |
238 | olayout << "# Whole window width and height" << std::endl; |
239 | olayout << fMain->GetWidth() << "\t" << fMain->GetHeight() << "\tmain" << std::endl << std::endl; |
239 | olayout << fMain->GetWidth() << "\t" << fMain->GetHeight() << "\tmain" << std::endl << std::endl; |
240 | olayout << "# Measurement subwindows width and height" << std::endl; |
240 | olayout << "# Measurement subwindows width and height" << std::endl; |
241 | for(int i = 0; i < measwin; i++) |
241 | for(int i = 0; i < measwin; i++) |
242 | olayout << measLayout[i]->GetWidth() << "\t" << measLayout[i]->GetHeight() << "\tmeasurementwindow" << i << std::endl; |
242 | olayout << measLayout[i]->GetWidth() << "\t" << measLayout[i]->GetHeight() << "\tmeasurementwindow" << i << std::endl; |
243 | olayout << std::endl; |
243 | olayout << std::endl; |
244 | olayout << "# Analysis subwindows width and height" << std::endl; |
244 | olayout << "# Analysis subwindows width and height" << std::endl; |
245 | for(int i = 0; i < analysiswin; i++) |
245 | for(int i = 0; i < analysiswin; i++) |
246 | olayout << analysisLayout[i]->GetWidth() << "\t" << analysisLayout[i]->GetHeight() << "\tanalysiswindow" << i << std::endl; |
246 | olayout << analysisLayout[i]->GetWidth() << "\t" << analysisLayout[i]->GetHeight() << "\tanalysiswindow" << i << std::endl; |
247 | } |
247 | } |
248 | else |
248 | else |
249 | printf("Error! Save file can not be opened (please do not use default.layout since it is write protected).\n"); |
249 | printf("Error! Save file can not be opened (please do not use default.layout since it is write protected).\n"); |
250 | olayout.close(); |
250 | olayout.close(); |
251 | } |
251 | } |
252 | } |
252 | } |
253 | 253 | ||
254 | // Function for setting a user created layout |
254 | // Function for setting a user created layout |
255 | void TGAppMainFrame::LayoutSet() |
255 | void TGAppMainFrame::LayoutSet() |
256 | { |
256 | { |
257 | TGFileInfo file_info; |
257 | TGFileInfo file_info; |
258 | int ret = 0; |
258 | int ret = 0; |
259 | const char *filetypes[] = {"Layout","*.layout",0,0}; |
259 | const char *filetypes[] = {"Layout","*.layout",0,0}; |
260 | char *cTemp, *layoutdir; |
260 | char *cTemp, *layoutdir; |
261 | file_info.fFileTypes = filetypes; |
261 | file_info.fFileTypes = filetypes; |
262 | layoutdir = new char[1024]; |
262 | layoutdir = new char[1024]; |
263 | sprintf(layoutdir, "%s/layout", rootdir); |
263 | sprintf(layoutdir, "%s/layout", rootdir); |
264 | file_info.fIniDir = StrDup(layoutdir); |
264 | file_info.fIniDir = StrDup(layoutdir); |
265 | new TGFileDialog(gClient->GetDefaultRoot(), fMain, kFDOpen, &file_info); |
265 | new TGFileDialog(gClient->GetDefaultRoot(), fMain, kFDOpen, &file_info); |
266 | 266 | ||
267 | if(file_info.fFilename != NULL) |
267 | if(file_info.fFilename != NULL) |
268 | { |
268 | { |
269 | if(DBGSIG) printf("LayoutSet(): The layout save name: %s\n", file_info.fFilename); |
269 | if(DBGSIG) printf("LayoutSet(): The layout save name: %s\n", file_info.fFilename); |
270 | cTemp = new char[512]; |
270 | cTemp = new char[512]; |
271 | remove_before_last(file_info.fFilename, '/', cTemp); |
271 | remove_before_last(file_info.fFilename, '/', cTemp); |
272 | if(DBGSIG) printf("LayoutSet(): New selected layout: %s\n", cTemp); |
272 | if(DBGSIG) printf("LayoutSet(): New selected layout: %s\n", cTemp); |
273 | 273 | ||
274 | FILE *fp; |
274 | FILE *fp; |
275 | sprintf(layoutdir, "%s/layout/selected_layout.txt", rootdir); |
275 | sprintf(layoutdir, "%s/layout/selected_layout.txt", rootdir); |
276 | fp = fopen(layoutdir, "w"); |
276 | fp = fopen(layoutdir, "w"); |
277 | fprintf(fp, "%s", cTemp); |
277 | fprintf(fp, "%s", cTemp); |
278 | fclose(fp); |
278 | fclose(fp); |
279 | 279 | ||
280 | sprintf(layoutdir, "Please restart the program to enable the selected layout (%s) for future use.", cTemp); |
280 | sprintf(layoutdir, "Please restart the program to enable the selected layout (%s) for future use.", cTemp); |
281 | new TGMsgBox(gClient->GetRoot(), fMain, "Setting new layout", layoutdir, kMBIconAsterisk, kMBOk, &ret); |
281 | new TGMsgBox(gClient->GetRoot(), fMain, "Setting new layout", layoutdir, kMBIconAsterisk, kMBOk, &ret); |
282 | delete[] cTemp; |
282 | delete[] cTemp; |
283 | } |
283 | } |
284 | delete[] layoutdir; |
284 | delete[] layoutdir; |
- | 285 | } |
|
- | 286 | ||
- | 287 | // Function for saving all current measurement settings in a file and reopening them on next program open |
|
- | 288 | void TGAppMainFrame::SaveMeasSettings() |
|
- | 289 | { |
|
- | 290 | char *cTemp; |
|
- | 291 | cTemp = new char[1024]; |
|
- | 292 | sprintf(cTemp, "%s/settings/measurement_settings.txt", rootdir); |
|
- | 293 | ||
- | 294 | std::ofstream osettings; |
|
- | 295 | ||
- | 296 | osettings.open(cTemp, std::ofstream::out); |
|
- | 297 | if(osettings.is_open()) |
|
- | 298 | { |
|
- | 299 | osettings << "# Settings pane" << std::endl; |
|
- | 300 | for(int i = 0; i < 4; i++) |
|
- | 301 | osettings << (int)scansOn->widgetChBox[i]->IsDown() << std::endl; |
|
- | 302 | osettings << vHardlimit->widgetNE[0]->GetNumber() << std::endl; |
|
- | 303 | osettings << NCH->widgetNE[0]->GetNumber() << std::endl; |
|
- | 304 | osettings << posUnits->widgetCB->GetSelected() << std::endl; |
|
- | 305 | osettings << rotUnits->widgetCB->GetSelected() << std::endl; |
|
- | 306 | osettings << oscConnect->widgetTE->GetText() << std::endl; |
|
- | 307 | osettings << laserInfo->widgetTE->GetText() << std::endl; |
|
- | 308 | osettings << chtemp->widgetNE[0]->GetNumber() << std::endl; |
|
- | 309 | osettings << (int)liveDisp->widgetChBox[0]->IsDown() << std::endl; |
|
- | 310 | osettings << std::endl; |
|
- | 311 | ||
- | 312 | osettings << "# Main measurement window" << std::endl; |
|
- | 313 | osettings << vOutCh->widgetCB->GetSelected() << std::endl; |
|
- | 314 | for(int i = 0; i < 2; i++) |
|
- | 315 | osettings << (int)vOutOpt->widgetChBox[i]->IsDown() << std::endl; |
|
- | 316 | osettings << vOutStart->widgetNE[0]->GetNumber() << std::endl; |
|
- | 317 | osettings << vOutStop->widgetNE[0]->GetNumber() << std::endl; |
|
- | 318 | osettings << vOutStep->widgetNE[0]->GetNumber() << std::endl; |
|
- | 319 | ||
- | 320 | osettings << zPosMin->widgetNE[0]->GetNumber() << std::endl; |
|
- | 321 | osettings << zPosMax->widgetNE[0]->GetNumber() << std::endl; |
|
- | 322 | osettings << zPosStep->widgetNE[0]->GetNumber() << std::endl; |
|
- | 323 | osettings << xPosMin->widgetNE[0]->GetNumber() << std::endl; |
|
- | 324 | osettings << xPosMax->widgetNE[0]->GetNumber() << std::endl; |
|
- | 325 | osettings << xPosStep->widgetNE[0]->GetNumber() << std::endl; |
|
- | 326 | osettings << yPosMin->widgetNE[0]->GetNumber() << std::endl; |
|
- | 327 | osettings << yPosMax->widgetNE[0]->GetNumber() << std::endl; |
|
- | 328 | osettings << yPosStep->widgetNE[0]->GetNumber() << std::endl; |
|
- | 329 | ||
- | 330 | osettings << rotPosMin->widgetNE[0]->GetNumber() << std::endl; |
|
- | 331 | osettings << rotPosMax->widgetNE[0]->GetNumber() << std::endl; |
|
- | 332 | osettings << rotPosStep->widgetNE[0]->GetNumber() << std::endl; |
|
- | 333 | ||
- | 334 | osettings << evtNum->widgetNE[0]->GetNumber() << std::endl; |
|
- | 335 | osettings << fileName->widgetTE->GetText() << std::endl; |
|
- | 336 | ||
- | 337 | printf("Saving measurement settings to file.\n"); |
|
- | 338 | } |
|
- | 339 | else |
|
- | 340 | printf("Error! Save file can not be opened.\n"); |
|
- | 341 | osettings.close(); |
|
- | 342 | } |
|
- | 343 | ||
- | 344 | // Function for saving all current analysis settings in a file and reopening them on next program open |
|
- | 345 | void TGAppMainFrame::SaveAnalSettings() |
|
- | 346 | { |
|
- | 347 | char *cTemp; |
|
- | 348 | cTemp = new char[1024]; |
|
- | 349 | sprintf(cTemp, "%s/settings/analysis_settings.txt", rootdir); |
|
- | 350 | ||
- | 351 | std::ofstream osettings; |
|
- | 352 | ||
- | 353 | osettings.open(cTemp, std::ofstream::out); |
|
- | 354 | if(osettings.is_open()) |
|
- | 355 | { |
|
- | 356 | osettings << "# Analysis" << std::endl; |
|
- | 357 | // Integrate spectrum |
|
- | 358 | for(int i = 0; i < 3; i++) |
|
- | 359 | osettings << (int)intSpect->widgetChBox[i]->IsDown() << std::endl; |
|
- | 360 | for(int i = 0; i < 2; i++) |
|
- | 361 | osettings << resol2d->widgetNE[i]->GetNumber() << std::endl; |
|
- | 362 | ||
- | 363 | // Relative PDE |
|
- | 364 | osettings << (int)relPde->widgetChBox[0]->IsDown() << std::endl; |
|
- | 365 | osettings << (int)midPeak->widgetChBox[0]->IsDown() << std::endl; |
|
- | 366 | osettings << zeroAngle->widgetNE[0]->GetNumber() << std::endl; |
|
- | 367 | ||
- | 368 | // Breakdown voltage |
|
- | 369 | osettings << minPeak->widgetNE[0]->GetNumber() << std::endl; |
|
- | 370 | osettings << peakSepCalc->widgetNE[0]->GetNumber() << std::endl; |
|
- | 371 | ||
- | 372 | // Surface scan |
|
- | 373 | for(int i = 0; i < 2; i++) |
|
- | 374 | osettings << (int)surfScanOpt->widgetChBox[i]->IsDown() << std::endl; |
|
- | 375 | for(int i = 0; i < 2; i++) |
|
- | 376 | osettings << resolSurf->widgetNE[i]->GetNumber() << std::endl; |
|
- | 377 | ||
- | 378 | // Fitting |
|
- | 379 | osettings << fitSigma->widgetNE[0]->GetNumber() << std::endl; |
|
- | 380 | osettings << fitTresh->widgetNE[0]->GetNumber() << std::endl; |
|
- | 381 | osettings << fitInter->widgetNE[0]->GetNumber() << std::endl; |
|
- | 382 | osettings << adcOffset->widgetNE[0]->GetNumber() << std::endl; |
|
- | 383 | osettings << accError->widgetNE[0]->GetNumber() << std::endl; |
|
- | 384 | osettings << pedesLow->widgetNE[0]->GetNumber() << std::endl; |
|
- | 385 | for(int i = 0; i < 2; i++) |
|
- | 386 | osettings << (int)fitChecks->widgetChBox[i]->IsDown() << std::endl; |
|
- | 387 | osettings << std::endl; |
|
- | 388 | ||
- | 389 | osettings << "# Histogram controls" << std::endl; |
|
- | 390 | for(int i = 0; i < 2; i++) |
|
- | 391 | osettings << adcRange->widgetNE[i]->GetNumber() << std::endl; |
|
- | 392 | for(int i = 0; i < 2; i++) |
|
- | 393 | osettings << tdcRange->widgetNE[i]->GetNumber() << std::endl; |
|
- | 394 | for(int i = 0; i < 2; i++) |
|
- | 395 | osettings << yRange->widgetNE[i]->GetNumber() << std::endl; |
|
- | 396 | osettings << selectCh->widgetNE[0]->GetNumber() << std::endl; |
|
- | 397 | for(int i = 0 ; i < 2; i++) |
|
- | 398 | osettings << (int)histOpt->widgetChBox[i]->IsDown() << std::endl; |
|
- | 399 | osettings << posUnitsPlot->widgetCB->GetSelected() << std::endl; |
|
- | 400 | ||
- | 401 | printf("Saving analysis settings to file.\n"); |
|
- | 402 | } |
|
- | 403 | else |
|
- | 404 | printf("Error! Save file can not be opened.\n"); |
|
- | 405 | osettings.close(); |
|
- | 406 | } |
|
- | 407 | ||
- | 408 | // Function for getting all measurement settings from a file |
|
- | 409 | void TGAppMainFrame::GetMeasSettings() |
|
- | 410 | { |
|
- | 411 | char *cTemp, readTemp[1024]; |
|
- | 412 | cTemp = new char[1024]; |
|
- | 413 | sprintf(cTemp, "%s/settings/measurement_settings.txt", rootdir); |
|
- | 414 | ||
- | 415 | int iTemp, k = 0; |
|
- | 416 | double dTemp; |
|
- | 417 | ||
- | 418 | std::ifstream isettings; |
|
- | 419 | ||
- | 420 | isettings.open(cTemp, std::ifstream::in); |
|
- | 421 | if(isettings.is_open()) |
|
- | 422 | { |
|
- | 423 | printf("Opening measurement settings from file.\n"); |
|
- | 424 | ||
- | 425 | while(1) |
|
- | 426 | { |
|
- | 427 | if(isettings.peek() == '#') |
|
- | 428 | { |
|
- | 429 | isettings.getline(readTemp, 1024, '\n'); |
|
- | 430 | if(DBGSIG > 1) printf("GetMeasSettings(): readTemp = %s\n", readTemp); |
|
- | 431 | } |
|
- | 432 | else if(isettings.peek() == '\n') |
|
- | 433 | isettings.ignore(1, '\n'); |
|
- | 434 | else |
|
- | 435 | { |
|
- | 436 | if(k == 0) |
|
- | 437 | { |
|
- | 438 | // Scan settings |
|
- | 439 | for(int i = 0; i < 4; i++) |
|
- | 440 | { |
|
- | 441 | isettings >> iTemp; |
|
- | 442 | isettings.ignore(1, '\n'); |
|
- | 443 | if(iTemp == 0) scansOn->widgetChBox[i]->SetState(kButtonUp); |
|
- | 444 | else if(iTemp == 1) scansOn->widgetChBox[i]->SetState(kButtonDown); |
|
- | 445 | } |
|
- | 446 | // Hard voltage limit |
|
- | 447 | isettings >> dTemp; |
|
- | 448 | isettings.ignore(1, '\n'); |
|
- | 449 | vHardlimit->widgetNE[0]->SetNumber(dTemp); |
|
- | 450 | // Number of channels |
|
- | 451 | isettings >> iTemp; |
|
- | 452 | isettings.ignore(1, '\n'); |
|
- | 453 | NCH->widgetNE[0]->SetNumber(iTemp); |
|
- | 454 | // Position units |
|
- | 455 | isettings >> iTemp; |
|
- | 456 | isettings.ignore(1, '\n'); |
|
- | 457 | posUnits->widgetCB->Select(iTemp); |
|
- | 458 | // Rotation units |
|
- | 459 | isettings >> iTemp; |
|
- | 460 | isettings.ignore(1, '\n'); |
|
- | 461 | rotUnits->widgetCB->Select(iTemp); |
|
- | 462 | // Oscilloscope IP address |
|
- | 463 | isettings.getline(readTemp, 1024, '\n'); |
|
- | 464 | oscConnect->widgetTE->SetText(readTemp); |
|
- | 465 | // Laser info |
|
- | 466 | isettings.getline(readTemp, 1024, '\n'); |
|
- | 467 | laserInfo->widgetTE->SetText(readTemp); |
|
- | 468 | // Chamber temperature |
|
- | 469 | isettings >> dTemp; |
|
- | 470 | isettings.ignore(1, '\n'); |
|
- | 471 | chtemp->widgetNE[0]->SetNumber(dTemp); |
|
- | 472 | // Live display |
|
- | 473 | isettings >> iTemp; |
|
- | 474 | isettings.ignore(1, '\n'); |
|
- | 475 | if(iTemp == 0) liveDisp->widgetChBox[0]->SetState(kButtonUp); |
|
- | 476 | else if(iTemp == 1) liveDisp->widgetChBox[0]->SetState(kButtonDown); |
|
- | 477 | ||
- | 478 | k++; |
|
- | 479 | } |
|
- | 480 | else if(k == 1) |
|
- | 481 | { |
|
- | 482 | // Voltage supply channel |
|
- | 483 | isettings >> iTemp; |
|
- | 484 | isettings.ignore(1, '\n'); |
|
- | 485 | vOutCh->widgetCB->Select(iTemp); |
|
- | 486 | // Voltage supply options |
|
- | 487 | for(int i = 0; i < 2; i++) |
|
- | 488 | { |
|
- | 489 | isettings >> iTemp; |
|
- | 490 | isettings.ignore(1, '\n'); |
|
- | 491 | if(iTemp == 0) vOutOpt->widgetChBox[i]->SetState(kButtonUp); |
|
- | 492 | else if(iTemp == 1) vOutOpt->widgetChBox[i]->SetState(kButtonDown); |
|
- | 493 | } |
|
- | 494 | // Voltage supply min, max and step |
|
- | 495 | isettings >> dTemp; |
|
- | 496 | isettings.ignore(1, '\n'); |
|
- | 497 | vOutStart->widgetNE[0]->SetNumber(dTemp); |
|
- | 498 | isettings >> dTemp; |
|
- | 499 | isettings.ignore(1, '\n'); |
|
- | 500 | vOutStop->widgetNE[0]->SetNumber(dTemp); |
|
- | 501 | isettings >> dTemp; |
|
- | 502 | isettings.ignore(1, '\n'); |
|
- | 503 | vOutStep->widgetNE[0]->SetNumber(dTemp); |
|
- | 504 | // Z axis scan min, max and step |
|
- | 505 | isettings >> dTemp; |
|
- | 506 | isettings.ignore(1, '\n'); |
|
- | 507 | zPosMin->widgetNE[0]->SetNumber(dTemp); |
|
- | 508 | isettings >> dTemp; |
|
- | 509 | isettings.ignore(1, '\n'); |
|
- | 510 | zPosMax->widgetNE[0]->SetNumber(dTemp); |
|
- | 511 | isettings >> dTemp; |
|
- | 512 | isettings.ignore(1, '\n'); |
|
- | 513 | zPosStep->widgetNE[0]->SetNumber(dTemp); |
|
- | 514 | // X axis scan min, max and step |
|
- | 515 | isettings >> dTemp; |
|
- | 516 | isettings.ignore(1, '\n'); |
|
- | 517 | xPosMin->widgetNE[0]->SetNumber(dTemp); |
|
- | 518 | isettings >> dTemp; |
|
- | 519 | isettings.ignore(1, '\n'); |
|
- | 520 | xPosMax->widgetNE[0]->SetNumber(dTemp); |
|
- | 521 | isettings >> dTemp; |
|
- | 522 | isettings.ignore(1, '\n'); |
|
- | 523 | xPosStep->widgetNE[0]->SetNumber(dTemp); |
|
- | 524 | // Y axis scan min, max and step |
|
- | 525 | isettings >> dTemp; |
|
- | 526 | isettings.ignore(1, '\n'); |
|
- | 527 | yPosMin->widgetNE[0]->SetNumber(dTemp); |
|
- | 528 | isettings >> dTemp; |
|
- | 529 | isettings.ignore(1, '\n'); |
|
- | 530 | yPosMax->widgetNE[0]->SetNumber(dTemp); |
|
- | 531 | isettings >> dTemp; |
|
- | 532 | isettings.ignore(1, '\n'); |
|
- | 533 | yPosStep->widgetNE[0]->SetNumber(dTemp); |
|
- | 534 | // Rotation min, max and step |
|
- | 535 | isettings >> dTemp; |
|
- | 536 | isettings.ignore(1, '\n'); |
|
- | 537 | rotPosMin->widgetNE[0]->SetNumber(dTemp); |
|
- | 538 | isettings >> dTemp; |
|
- | 539 | isettings.ignore(1, '\n'); |
|
- | 540 | rotPosMax->widgetNE[0]->SetNumber(dTemp); |
|
- | 541 | isettings >> dTemp; |
|
- | 542 | isettings.ignore(1, '\n'); |
|
- | 543 | rotPosStep->widgetNE[0]->SetNumber(dTemp); |
|
- | 544 | // Number of events |
|
- | 545 | isettings >> iTemp; |
|
- | 546 | isettings.ignore(1, '\n'); |
|
- | 547 | evtNum->widgetNE[0]->SetNumber(iTemp); |
|
- | 548 | // Save filename |
|
- | 549 | isettings.getline(readTemp, 1024, '\n'); |
|
- | 550 | fileName->widgetTE->SetText(readTemp); |
|
- | 551 | ||
- | 552 | k++; |
|
- | 553 | } |
|
- | 554 | else |
|
- | 555 | break; |
|
- | 556 | } |
|
- | 557 | } |
|
- | 558 | } |
|
- | 559 | else |
|
- | 560 | printf("Error! Measurement settings file can not be opened. Using defaults.\n"); |
|
- | 561 | } |
|
- | 562 | ||
- | 563 | // Function for getting all analysis settings from a file |
|
- | 564 | void TGAppMainFrame::GetAnalSettings() |
|
- | 565 | { |
|
- | 566 | char *cTemp, readTemp[1024]; |
|
- | 567 | cTemp = new char[1024]; |
|
- | 568 | sprintf(cTemp, "%s/settings/analysis_settings.txt", rootdir); |
|
- | 569 | ||
- | 570 | int iTemp, k = 0; |
|
- | 571 | double dTemp; |
|
- | 572 | ||
- | 573 | std::ifstream isettings; |
|
- | 574 | ||
- | 575 | isettings.open(cTemp, std::ifstream::in); |
|
- | 576 | if(isettings.is_open()) |
|
- | 577 | { |
|
- | 578 | printf("Opening analysis settings from file.\n"); |
|
- | 579 | ||
- | 580 | while(1) |
|
- | 581 | { |
|
- | 582 | if(isettings.peek() == '#') |
|
- | 583 | { |
|
- | 584 | isettings.getline(readTemp, 1024, '\n'); |
|
- | 585 | if(DBGSIG > 1) printf("GetAnalSettings(): readTemp = %s\n", readTemp); |
|
- | 586 | } |
|
- | 587 | else if(isettings.peek() == '\n') |
|
- | 588 | isettings.ignore(1, '\n'); |
|
- | 589 | else |
|
- | 590 | { |
|
- | 591 | if(k == 0) |
|
- | 592 | { |
|
- | 593 | // Integrate spectrum options |
|
- | 594 | for(int i = 0; i < 3; i++) |
|
- | 595 | { |
|
- | 596 | isettings >> iTemp; |
|
- | 597 | isettings.ignore(1, '\n'); |
|
- | 598 | if(iTemp == 0) intSpect->widgetChBox[i]->SetState(kButtonUp); |
|
- | 599 | else if(iTemp == 1) intSpect->widgetChBox[i]->SetState(kButtonDown); |
|
- | 600 | } |
|
- | 601 | // Integrate spectrum 2D resolution |
|
- | 602 | for(int i = 0; i < 2; i++) |
|
- | 603 | { |
|
- | 604 | isettings >> iTemp; |
|
- | 605 | isettings.ignore(1, '\n'); |
|
- | 606 | resol2d->widgetNE[i]->SetNumber(iTemp); |
|
- | 607 | } |
|
- | 608 | // Relative PDE normalization |
|
- | 609 | isettings >> iTemp; |
|
- | 610 | isettings.ignore(1, '\n'); |
|
- | 611 | if(iTemp == 0) relPde->widgetChBox[0]->SetState(kButtonUp); |
|
- | 612 | else if(iTemp == 1) relPde->widgetChBox[0]->SetState(kButtonDown); |
|
- | 613 | // Relative PDE middle peak |
|
- | 614 | isettings >> iTemp; |
|
- | 615 | isettings.ignore(1, '\n'); |
|
- | 616 | if(iTemp == 0) midPeak->widgetChBox[0]->SetState(kButtonUp); |
|
- | 617 | else if(iTemp == 1) midPeak->widgetChBox[0]->SetState(kButtonDown); |
|
- | 618 | // Relative PDE zero angle setting |
|
- | 619 | isettings >> dTemp; |
|
- | 620 | isettings.ignore(1, '\n'); |
|
- | 621 | zeroAngle->widgetNE[0]->SetNumber(dTemp); |
|
- | 622 | // Breakdown voltage minimum number of detected peaks |
|
- | 623 | isettings >> iTemp; |
|
- | 624 | isettings.ignore(1, '\n'); |
|
- | 625 | minPeak->widgetNE[0]->SetNumber(iTemp); |
|
- | 626 | // Breakdown voltage separation calculation |
|
- | 627 | isettings >> iTemp; |
|
- | 628 | isettings.ignore(1, '\n'); |
|
- | 629 | peakSepCalc->widgetNE[0]->SetNumber(iTemp); |
|
- | 630 | // Surface scan options |
|
- | 631 | for(int i = 0; i < 2; i++) |
|
- | 632 | { |
|
- | 633 | isettings >> iTemp; |
|
- | 634 | isettings.ignore(1, '\n'); |
|
- | 635 | if(iTemp == 0) surfScanOpt->widgetChBox[i]->SetState(kButtonUp); |
|
- | 636 | else if(iTemp == 1) surfScanOpt->widgetChBox[i]->SetState(kButtonDown); |
|
- | 637 | } |
|
- | 638 | // Surface scan 2D resolution |
|
- | 639 | for(int i = 0; i < 2; i++) |
|
- | 640 | { |
|
- | 641 | isettings >> iTemp; |
|
- | 642 | isettings.ignore(1, '\n'); |
|
- | 643 | resolSurf->widgetNE[i]->SetNumber(iTemp); |
|
- | 644 | } |
|
- | 645 | // Fitting - sigma |
|
- | 646 | isettings >> dTemp; |
|
- | 647 | isettings.ignore(1, '\n'); |
|
- | 648 | fitSigma->widgetNE[0]->SetNumber(dTemp); |
|
- | 649 | // Fitting - S/N ratio |
|
- | 650 | isettings >> dTemp; |
|
- | 651 | isettings.ignore(1, '\n'); |
|
- | 652 | fitTresh->widgetNE[0]->SetNumber(dTemp); |
|
- | 653 | // Fitting - interpolation |
|
- | 654 | isettings >> iTemp; |
|
- | 655 | isettings.ignore(1, '\n'); |
|
- | 656 | fitInter->widgetNE[0]->SetNumber(iTemp); |
|
- | 657 | // Fitting - ADC offset |
|
- | 658 | isettings >> dTemp; |
|
- | 659 | isettings.ignore(1, '\n'); |
|
- | 660 | adcOffset->widgetNE[0]->SetNumber(dTemp); |
|
- | 661 | // Fitting - Acceptable error |
|
- | 662 | isettings >> dTemp; |
|
- | 663 | isettings.ignore(1, '\n'); |
|
- | 664 | accError->widgetNE[0]->SetNumber(dTemp); |
|
- | 665 | // Fitting - Pedestal lower limit |
|
- | 666 | isettings >> dTemp; |
|
- | 667 | isettings.ignore(1, '\n'); |
|
- | 668 | pedesLow->widgetNE[0]->SetNumber(dTemp); |
|
- | 669 | // Fitting - settings |
|
- | 670 | for(int i = 0; i < 2; i++) |
|
- | 671 | { |
|
- | 672 | isettings >> iTemp; |
|
- | 673 | isettings.ignore(1, '\n'); |
|
- | 674 | if(iTemp == 0) fitChecks->widgetChBox[i]->SetState(kButtonUp); |
|
- | 675 | else if(iTemp == 1) fitChecks->widgetChBox[i]->SetState(kButtonDown); |
|
- | 676 | } |
|
- | 677 | ||
- | 678 | k++; |
|
- | 679 | } |
|
- | 680 | else if(k == 1) |
|
- | 681 | { |
|
- | 682 | // ADC range |
|
- | 683 | for(int i = 0; i < 2; i++) |
|
- | 684 | { |
|
- | 685 | isettings >> dTemp; |
|
- | 686 | isettings.ignore(1, '\n'); |
|
- | 687 | adcRange->widgetNE[i]->SetNumber(dTemp); |
|
- | 688 | } |
|
- | 689 | // TDC range |
|
- | 690 | for(int i = 0; i < 2; i++) |
|
- | 691 | { |
|
- | 692 | isettings >> dTemp; |
|
- | 693 | isettings.ignore(1, '\n'); |
|
- | 694 | tdcRange->widgetNE[i]->SetNumber(dTemp); |
|
- | 695 | } |
|
- | 696 | // Y axis range |
|
- | 697 | for(int i = 0; i < 2; i++) |
|
- | 698 | { |
|
- | 699 | isettings >> dTemp; |
|
- | 700 | isettings.ignore(1, '\n'); |
|
- | 701 | yRange->widgetNE[i]->SetNumber(dTemp); |
|
- | 702 | } |
|
- | 703 | // Displayed channel |
|
- | 704 | isettings >> iTemp; |
|
- | 705 | isettings.ignore(1, '\n'); |
|
- | 706 | selectCh->widgetNE[0]->SetNumber(iTemp); |
|
- | 707 | // Display options |
|
- | 708 | for(int i = 0; i < 2; i++) |
|
- | 709 | { |
|
- | 710 | isettings >> iTemp; |
|
- | 711 | isettings.ignore(1, '\n'); |
|
- | 712 | if(iTemp == 0) histOpt->widgetChBox[i]->SetState(kButtonUp); |
|
- | 713 | else if(iTemp == 1) histOpt->widgetChBox[i]->SetState(kButtonDown); |
|
- | 714 | } |
|
- | 715 | // Display position units |
|
- | 716 | isettings >> iTemp; |
|
- | 717 | isettings.ignore(1, '\n'); |
|
- | 718 | posUnitsPlot->widgetCB->Select(iTemp); |
|
- | 719 | ||
- | 720 | k++; |
|
- | 721 | } |
|
- | 722 | else |
|
- | 723 | break; |
|
- | 724 | } |
|
- | 725 | } |
|
- | 726 | } |
|
- | 727 | else |
|
- | 728 | printf("Error! Measurement settings file can not be opened. Using defaults.\n"); |
|
285 | } |
729 | } |
286 | 730 | ||
287 | // Layout function for the main window (width and height) |
731 | // Layout function for the main window (width and height) |
288 | void layoutMainWindow(int *w, int *h) |
732 | void layoutMainWindow(int *w, int *h) |
289 | { |
733 | { |
290 | std::ifstream ilayout; |
734 | std::ifstream ilayout; |
291 | 735 | ||
292 | char *cTemp, *cTemp2, readTemp[1024]; |
736 | char *cTemp, *cTemp2, readTemp[1024]; |
293 | cTemp = new char[512]; |
737 | cTemp = new char[512]; |
294 | cTemp2 = new char[512]; |
738 | cTemp2 = new char[512]; |
295 | sprintf(cTemp, "%s/layout/selected_layout.txt", rootdir); |
739 | sprintf(cTemp, "%s/layout/selected_layout.txt", rootdir); |
296 | ilayout.open(cTemp, std::ifstream::in); |
740 | ilayout.open(cTemp, std::ifstream::in); |
297 | if(ilayout.is_open()) |
741 | if(ilayout.is_open()) |
298 | { |
742 | { |
299 | ilayout >> cTemp2; |
743 | ilayout >> cTemp2; |
300 | } |
744 | } |
301 | ilayout.close(); |
745 | ilayout.close(); |
302 | if(DBGSIG) printf("layoutMainWindow(): Loaded layout file is: %s\n", cTemp2); |
746 | if(DBGSIG) printf("layoutMainWindow(): Loaded layout file is: %s\n", cTemp2); |
303 | 747 | ||
304 | sprintf(cTemp, "%s/layout/%s", rootdir, cTemp2); |
748 | sprintf(cTemp, "%s/layout/%s", rootdir, cTemp2); |
305 | ilayout.open(cTemp, std::ifstream::in); |
749 | ilayout.open(cTemp, std::ifstream::in); |
306 | if(ilayout.is_open()) |
750 | if(ilayout.is_open()) |
307 | { |
751 | { |
308 | while(1) |
752 | while(1) |
309 | { |
753 | { |
310 | if(ilayout.peek() == '#') |
754 | if(ilayout.peek() == '#') |
311 | ilayout.getline(readTemp, 1024, '\n'); |
755 | ilayout.getline(readTemp, 1024, '\n'); |
312 | else if(ilayout.peek() == '\n') |
756 | else if(ilayout.peek() == '\n') |
313 | ilayout.ignore(1, '\n'); |
757 | ilayout.ignore(1, '\n'); |
314 | else |
758 | else |
315 | { |
759 | { |
316 | ilayout >> *w >> *h; |
760 | ilayout >> *w >> *h; |
317 | if(DBGSIG > 1) printf("layoutMainWindow(): W = %d, H = %d\n", *w, *h); |
761 | if(DBGSIG > 1) printf("layoutMainWindow(): W = %d, H = %d\n", *w, *h); |
318 | break; |
762 | break; |
319 | } |
763 | } |
320 | } |
764 | } |
321 | } |
765 | } |
322 | 766 | ||
323 | ilayout.close(); |
767 | ilayout.close(); |
324 | delete[] cTemp; |
768 | delete[] cTemp; |
325 | delete[] cTemp2; |
769 | delete[] cTemp2; |
326 | } |
770 | } |
327 | 771 | ||
328 | 772 |