1 | // Copyright (c) 2004 - 2005 Kai Bader <baderk@in.tum.de> |
---|
2 | // |
---|
3 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
---|
4 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
---|
5 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
---|
6 | // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN |
---|
7 | // AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
---|
8 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
---|
9 | |
---|
10 | // CVS REVISION TAG -- $Revision: 5725 $ |
---|
11 | |
---|
12 | |
---|
13 | #include <time.h> |
---|
14 | #include "arb_interface.hxx" |
---|
15 | #include "config_dialog.hxx" |
---|
16 | |
---|
17 | |
---|
18 | /**************************************************************************** |
---|
19 | * CONFIG DIALOG - CONSTRUCTOR |
---|
20 | ****************************************************************************/ |
---|
21 | configDialog::configDialog(MDialog *d) |
---|
22 | : MDialog(d) |
---|
23 | { |
---|
24 | // PRDEFINE VARIABLES |
---|
25 | m_top= NULL; |
---|
26 | m_crosshairText= NULL; |
---|
27 | m_crosshairArea= NULL; |
---|
28 | m_unmarkedText= NULL; |
---|
29 | m_unmarkedArea= NULL; |
---|
30 | m_markedText= NULL; |
---|
31 | m_markedArea= NULL; |
---|
32 | m_selectedText= NULL; |
---|
33 | m_selectedArea= NULL; |
---|
34 | m_textText= NULL; |
---|
35 | m_textArea= NULL; |
---|
36 | m_ID_ProteinText= NULL; |
---|
37 | m_ID_GeneText= NULL; |
---|
38 | // |
---|
39 | m_crosshairColorString= NULL; |
---|
40 | m_unmarkedColorString= NULL; |
---|
41 | m_markedColorString= NULL; |
---|
42 | m_selectedColorString= NULL; |
---|
43 | m_textColorString= NULL; |
---|
44 | m_id_protein= NULL; |
---|
45 | m_id_gene= NULL; |
---|
46 | m_info_protein= NULL; |
---|
47 | m_info_gene= NULL; |
---|
48 | |
---|
49 | // CHECK THE PGT AWARS (SET DEFAULT IF NEEDED) |
---|
50 | checkCreateAWARS(); |
---|
51 | |
---|
52 | // CREATE SHELL FOR THIS DIALOG |
---|
53 | createShell(""); |
---|
54 | |
---|
55 | // CALL CREATE WINDOW FUNCTION |
---|
56 | createWindow(); |
---|
57 | |
---|
58 | // SET WINDOW WIDTH |
---|
59 | XtVaSetValues(m_shell, |
---|
60 | XmNwidth, 300, |
---|
61 | XmNheight, 500, |
---|
62 | NULL); |
---|
63 | |
---|
64 | // REALIZE WINDOW |
---|
65 | realizeShell(); |
---|
66 | |
---|
67 | // SET WINDOW LABEL |
---|
68 | setDialogTitle("PGT - Configuration"); |
---|
69 | |
---|
70 | // DESELECT ALL WINDOW BUTTONS EXCEPT CLOSE AND MOVE |
---|
71 | XtVaSetValues(m_shell, XmNmwmFunctions, MWM_FUNC_MOVE | MWM_FUNC_CLOSE, NULL); |
---|
72 | |
---|
73 | // FETCH CONFIGURATION (AWARS) |
---|
74 | getCONFIGS(); |
---|
75 | } |
---|
76 | |
---|
77 | |
---|
78 | /**************************************************************************** |
---|
79 | * CONFIG DIALOG - DESTRUCTOR |
---|
80 | ****************************************************************************/ |
---|
81 | configDialog::~configDialog() |
---|
82 | { |
---|
83 | // FREE UNNECESSARY STRINGS |
---|
84 | freeStrings(); |
---|
85 | } |
---|
86 | |
---|
87 | |
---|
88 | /**************************************************************************** |
---|
89 | * CONFIG DIALOG - FREE LOCAL STRINGS (IF NECESSARY) |
---|
90 | ****************************************************************************/ |
---|
91 | void configDialog::freeStrings() |
---|
92 | { |
---|
93 | if(m_crosshairColorString) free(m_crosshairColorString); |
---|
94 | if(m_unmarkedColorString) free(m_unmarkedColorString); |
---|
95 | if(m_markedColorString) free(m_markedColorString); |
---|
96 | if(m_textColorString) free(m_textColorString); |
---|
97 | if(m_id_protein) free(m_id_protein); |
---|
98 | if(m_id_gene) free(m_id_gene); |
---|
99 | if(m_info_protein) free(m_info_protein); |
---|
100 | if(m_info_gene) free(m_info_gene); |
---|
101 | } |
---|
102 | |
---|
103 | |
---|
104 | /**************************************************************************** |
---|
105 | * CONFIG DIALOG - CREATE WINDOW |
---|
106 | ****************************************************************************/ |
---|
107 | void configDialog::createWindow() |
---|
108 | { |
---|
109 | // TOP LEVEL WIDGET |
---|
110 | m_top= XtVaCreateManagedWidget("top", |
---|
111 | xmFormWidgetClass, m_shell, |
---|
112 | XmNorientation, XmVERTICAL, |
---|
113 | XmNmarginHeight, 0, |
---|
114 | XmNmarginWidth, 0, |
---|
115 | NULL); |
---|
116 | |
---|
117 | // LABEL WIDGET |
---|
118 | Widget label_01= XtVaCreateManagedWidget("label", |
---|
119 | xmLabelWidgetClass, m_top, |
---|
120 | XmNlabelString, CreateDlgString("VISUALIZATION COLORS (#RGB)"), |
---|
121 | XmNheight, 30, |
---|
122 | XmNalignment, XmALIGNMENT_CENTER, |
---|
123 | XmNtopAttachment, XmATTACH_FORM, |
---|
124 | XmNleftAttachment, XmATTACH_FORM, |
---|
125 | XmNrightAttachment, XmATTACH_FORM, |
---|
126 | NULL); |
---|
127 | |
---|
128 | // LABEL WIDGET (COLOR ROW 01 -- CROSSHAIR COLOR) |
---|
129 | Widget label_02= XtVaCreateManagedWidget("label", |
---|
130 | xmLabelWidgetClass, m_top, |
---|
131 | XmNlabelString, CreateDlgString("Crosshair color:"), |
---|
132 | XmNheight, 30, |
---|
133 | XmNwidth, 150, |
---|
134 | XmNalignment, XmALIGNMENT_BEGINNING, |
---|
135 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
136 | XmNtopWidget, label_01, |
---|
137 | XmNleftAttachment, XmATTACH_FORM, |
---|
138 | NULL); |
---|
139 | |
---|
140 | // TEXT FIELD - CROSSHAIR COLOR |
---|
141 | m_crosshairText= XtVaCreateManagedWidget("textField", |
---|
142 | xmTextWidgetClass, m_top, |
---|
143 | XmNheight, 30, |
---|
144 | XmNwidth, 100, |
---|
145 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
146 | XmNtopWidget, label_01, |
---|
147 | XmNleftAttachment, XmATTACH_WIDGET, |
---|
148 | XmNleftWidget, label_02, |
---|
149 | NULL); |
---|
150 | XtAddCallback(m_crosshairText, XmNvalueChangedCallback, staticTextChangedCallback, this); |
---|
151 | |
---|
152 | // DRAWING AREA WIDGET - CROSSHAIR COLOR |
---|
153 | m_crosshairArea= XtVaCreateManagedWidget("drawingArea", |
---|
154 | xmDrawingAreaWidgetClass, m_top, |
---|
155 | XmNheight, 30, |
---|
156 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
157 | XmNtopWidget, label_01, |
---|
158 | XmNleftAttachment, XmATTACH_WIDGET, |
---|
159 | XmNleftWidget, m_crosshairText, |
---|
160 | XmNrightAttachment, XmATTACH_FORM, |
---|
161 | NULL); |
---|
162 | XtAddCallback(m_crosshairArea, XmNexposeCallback, staticTextChangedCallback, this); |
---|
163 | |
---|
164 | // LABEL WIDGET (COLOR ROW 02 -- UNMARKED COLOR) |
---|
165 | Widget label_03= XtVaCreateManagedWidget("label", |
---|
166 | xmLabelWidgetClass, m_top, |
---|
167 | XmNlabelString, CreateDlgString("Unmarked protein color:"), |
---|
168 | XmNheight, 30, |
---|
169 | XmNwidth, 150, |
---|
170 | XmNalignment, XmALIGNMENT_BEGINNING, |
---|
171 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
172 | XmNtopWidget, label_02, |
---|
173 | XmNleftAttachment, XmATTACH_FORM, |
---|
174 | NULL); |
---|
175 | |
---|
176 | // TEXT FIELD - UNMARKED COLOR |
---|
177 | m_unmarkedText= XtVaCreateManagedWidget("textField", |
---|
178 | xmTextWidgetClass, m_top, |
---|
179 | XmNheight, 30, |
---|
180 | XmNwidth, 100, |
---|
181 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
182 | XmNtopWidget, m_crosshairText, |
---|
183 | XmNleftAttachment, XmATTACH_WIDGET, |
---|
184 | XmNleftWidget, label_03, |
---|
185 | NULL); |
---|
186 | XtAddCallback(m_unmarkedText, XmNvalueChangedCallback, staticTextChangedCallback, this); |
---|
187 | |
---|
188 | // DRAWING AREA WIDGET - UNMARKED COLOR |
---|
189 | m_unmarkedArea= XtVaCreateManagedWidget("drawingArea", |
---|
190 | xmDrawingAreaWidgetClass, m_top, |
---|
191 | XmNheight, 30, |
---|
192 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
193 | XmNtopWidget, m_crosshairArea, |
---|
194 | XmNleftAttachment, XmATTACH_WIDGET, |
---|
195 | XmNleftWidget, m_unmarkedText, |
---|
196 | XmNrightAttachment, XmATTACH_FORM, |
---|
197 | NULL); |
---|
198 | XtAddCallback(m_unmarkedArea, XmNexposeCallback, staticTextChangedCallback, this); |
---|
199 | |
---|
200 | // LABEL WIDGET (COLOR ROW 03 -- MARKED COLOR) |
---|
201 | Widget label_04= XtVaCreateManagedWidget("label", |
---|
202 | xmLabelWidgetClass, m_top, |
---|
203 | XmNlabelString, CreateDlgString("Marked protein color:"), |
---|
204 | XmNheight, 30, |
---|
205 | XmNwidth, 150, |
---|
206 | XmNalignment, XmALIGNMENT_BEGINNING, |
---|
207 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
208 | XmNtopWidget, label_03, |
---|
209 | XmNleftAttachment, XmATTACH_FORM, |
---|
210 | NULL); |
---|
211 | |
---|
212 | // TEXT FIELD - MARKED COLOR |
---|
213 | m_markedText= XtVaCreateManagedWidget("textField", |
---|
214 | xmTextWidgetClass, m_top, |
---|
215 | XmNheight, 30, |
---|
216 | XmNwidth, 100, |
---|
217 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
218 | XmNtopWidget, m_unmarkedText, |
---|
219 | XmNleftAttachment, XmATTACH_WIDGET, |
---|
220 | XmNleftWidget, label_04, |
---|
221 | NULL); |
---|
222 | XtAddCallback(m_markedText, XmNvalueChangedCallback, staticTextChangedCallback, this); |
---|
223 | |
---|
224 | // DRAWING AREA WIDGET - MARKED COLOR |
---|
225 | m_markedArea= XtVaCreateManagedWidget("drawingArea", |
---|
226 | xmDrawingAreaWidgetClass, m_top, |
---|
227 | XmNheight, 30, |
---|
228 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
229 | XmNtopWidget, m_unmarkedArea, |
---|
230 | XmNleftAttachment, XmATTACH_WIDGET, |
---|
231 | XmNleftWidget, m_markedText, |
---|
232 | XmNrightAttachment, XmATTACH_FORM, |
---|
233 | NULL); |
---|
234 | XtAddCallback(m_markedArea, XmNexposeCallback, staticTextChangedCallback, this); |
---|
235 | |
---|
236 | // LABEL WIDGET (COLOR ROW 04 -- PROTEIN COLOR) |
---|
237 | Widget label_05= XtVaCreateManagedWidget("label", |
---|
238 | xmLabelWidgetClass, m_top, |
---|
239 | XmNlabelString, CreateDlgString("Selected protein color:"), |
---|
240 | XmNheight, 30, |
---|
241 | XmNwidth, 150, |
---|
242 | XmNalignment, XmALIGNMENT_BEGINNING, |
---|
243 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
244 | XmNtopWidget, label_04, |
---|
245 | XmNleftAttachment, XmATTACH_FORM, |
---|
246 | NULL); |
---|
247 | |
---|
248 | // TEXT FIELD - CROSSHAIR COLOR |
---|
249 | m_selectedText= XtVaCreateManagedWidget("textField", |
---|
250 | xmTextWidgetClass, m_top, |
---|
251 | XmNheight, 30, |
---|
252 | XmNwidth, 100, |
---|
253 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
254 | XmNtopWidget, m_markedText, |
---|
255 | XmNleftAttachment, XmATTACH_WIDGET, |
---|
256 | XmNleftWidget, label_05, |
---|
257 | NULL); |
---|
258 | XtAddCallback(m_selectedText, XmNvalueChangedCallback, staticTextChangedCallback, this); |
---|
259 | |
---|
260 | // DRAWING AREA WIDGET - CROSSHAIR COLOR |
---|
261 | m_selectedArea= XtVaCreateManagedWidget("drawingArea", |
---|
262 | xmDrawingAreaWidgetClass, m_top, |
---|
263 | XmNheight, 30, |
---|
264 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
265 | XmNtopWidget, m_markedArea, |
---|
266 | XmNleftAttachment, XmATTACH_WIDGET, |
---|
267 | XmNleftWidget, m_selectedText, |
---|
268 | XmNrightAttachment, XmATTACH_FORM, |
---|
269 | NULL); |
---|
270 | XtAddCallback(m_selectedArea, XmNexposeCallback, staticTextChangedCallback, this); |
---|
271 | |
---|
272 | // LABEL WIDGET (COLOR ROW 05 -- TEXT COLOR) |
---|
273 | Widget label_0a= XtVaCreateManagedWidget("label", |
---|
274 | xmLabelWidgetClass, m_top, |
---|
275 | XmNlabelString, CreateDlgString("Text color:"), |
---|
276 | XmNheight, 30, |
---|
277 | XmNwidth, 150, |
---|
278 | XmNalignment, XmALIGNMENT_BEGINNING, |
---|
279 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
280 | XmNtopWidget, label_05, |
---|
281 | XmNleftAttachment, XmATTACH_FORM, |
---|
282 | NULL); |
---|
283 | |
---|
284 | // TEXT FIELD - TEXT COLOR |
---|
285 | m_textText= XtVaCreateManagedWidget("textField", |
---|
286 | xmTextWidgetClass, m_top, |
---|
287 | XmNheight, 30, |
---|
288 | XmNwidth, 100, |
---|
289 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
290 | XmNtopWidget, m_selectedText, |
---|
291 | XmNleftAttachment, XmATTACH_WIDGET, |
---|
292 | XmNleftWidget, label_0a, |
---|
293 | NULL); |
---|
294 | XtAddCallback(m_textText, XmNvalueChangedCallback, staticTextChangedCallback, this); |
---|
295 | |
---|
296 | // DRAWING AREA WIDGET - TEXT COLOR |
---|
297 | m_textArea= XtVaCreateManagedWidget("drawingArea", |
---|
298 | xmDrawingAreaWidgetClass, m_top, |
---|
299 | XmNheight, 30, |
---|
300 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
301 | XmNtopWidget, m_selectedArea, |
---|
302 | XmNleftAttachment, XmATTACH_WIDGET, |
---|
303 | XmNleftWidget, m_textText, |
---|
304 | XmNrightAttachment, XmATTACH_FORM, |
---|
305 | NULL); |
---|
306 | XtAddCallback(m_textArea, XmNexposeCallback, staticTextChangedCallback, this); |
---|
307 | |
---|
308 | // CREATE HORIZONTAL SEPARATOR |
---|
309 | Widget separator_01= XtVaCreateManagedWidget("separator", |
---|
310 | xmSeparatorWidgetClass, m_top, |
---|
311 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
312 | XmNtopWidget, label_0a, |
---|
313 | XmNleftAttachment, XmATTACH_FORM, |
---|
314 | XmNrightAttachment, XmATTACH_FORM, |
---|
315 | XmNorientation, XmHORIZONTAL, |
---|
316 | NULL); |
---|
317 | |
---|
318 | // LABEL WIDGET (PROTEIN ID TEXT) |
---|
319 | Widget label_06= XtVaCreateManagedWidget("label", |
---|
320 | xmLabelWidgetClass, m_top, |
---|
321 | XmNlabelString, CreateDlgString("PROTEIN IDENTIFIER"), |
---|
322 | XmNheight, 30, |
---|
323 | XmNwidth, 150, |
---|
324 | XmNalignment, XmALIGNMENT_CENTER, |
---|
325 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
326 | XmNtopWidget, separator_01, |
---|
327 | XmNleftAttachment, XmATTACH_FORM, |
---|
328 | NULL); |
---|
329 | |
---|
330 | // LABEL WIDGET (GENE ID TEXT) |
---|
331 | Widget label_07= XtVaCreateManagedWidget("label", |
---|
332 | xmLabelWidgetClass, m_top, |
---|
333 | XmNlabelString, CreateDlgString("GENE IDENTIFIER"), |
---|
334 | XmNheight, 30, |
---|
335 | XmNwidth, 150, |
---|
336 | XmNalignment, XmALIGNMENT_CENTER, |
---|
337 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
338 | XmNtopWidget, separator_01, |
---|
339 | XmNleftAttachment, XmATTACH_WIDGET, |
---|
340 | XmNleftWidget, label_06, |
---|
341 | XmNrightAttachment, XmATTACH_FORM, |
---|
342 | NULL); |
---|
343 | |
---|
344 | // TEXT FIELD - PROTEIN IDENTIFIER |
---|
345 | m_ID_ProteinText= XtVaCreateManagedWidget("textField", |
---|
346 | xmTextWidgetClass, m_top, |
---|
347 | XmNheight, 30, |
---|
348 | XmNwidth, 150, |
---|
349 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
350 | XmNtopWidget, label_06, |
---|
351 | XmNleftAttachment, XmATTACH_FORM, |
---|
352 | NULL); |
---|
353 | XtAddCallback(m_ID_ProteinText, XmNvalueChangedCallback, staticTextChangedCallback, this); |
---|
354 | |
---|
355 | // TEXT FIELD - GENE IDENTIFIER |
---|
356 | m_ID_GeneText= XtVaCreateManagedWidget("textField", |
---|
357 | xmTextWidgetClass, m_top, |
---|
358 | XmNheight, 30, |
---|
359 | XmNwidth, 150, |
---|
360 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
361 | XmNtopWidget, label_07, |
---|
362 | XmNleftAttachment, XmATTACH_WIDGET, |
---|
363 | XmNleftWidget, m_ID_ProteinText, |
---|
364 | XmNrightAttachment, XmATTACH_FORM, |
---|
365 | NULL); |
---|
366 | XtAddCallback(m_ID_GeneText, XmNvalueChangedCallback, staticTextChangedCallback, this); |
---|
367 | |
---|
368 | // CREATE HORIZONTAL SEPARATOR |
---|
369 | Widget separator_02= XtVaCreateManagedWidget("separator", |
---|
370 | xmSeparatorWidgetClass, m_top, |
---|
371 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
372 | XmNtopWidget, m_ID_ProteinText, |
---|
373 | XmNleftAttachment, XmATTACH_FORM, |
---|
374 | XmNrightAttachment, XmATTACH_FORM, |
---|
375 | XmNorientation, XmHORIZONTAL, |
---|
376 | NULL); |
---|
377 | |
---|
378 | // LABEL WIDGET (PROTEIN INFOS) |
---|
379 | Widget label_08= XtVaCreateManagedWidget("label", |
---|
380 | xmLabelWidgetClass, m_top, |
---|
381 | XmNlabelString, CreateDlgString("DISPLAYED PROTEIN INFO"), |
---|
382 | XmNheight, 30, |
---|
383 | XmNalignment, XmALIGNMENT_CENTER, |
---|
384 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
385 | XmNtopWidget, separator_02, |
---|
386 | XmNleftAttachment, XmATTACH_FORM, |
---|
387 | XmNrightAttachment, XmATTACH_FORM, |
---|
388 | NULL); |
---|
389 | |
---|
390 | // TEXT FIELD - PROTEIN INFOS |
---|
391 | m_info_ProteinText= XtVaCreateManagedWidget("textField", |
---|
392 | xmTextWidgetClass, m_top, |
---|
393 | XmNheight, 80, |
---|
394 | XmNeditMode, XmMULTI_LINE_EDIT, |
---|
395 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
396 | XmNtopWidget, label_08, |
---|
397 | XmNleftAttachment, XmATTACH_FORM, |
---|
398 | XmNrightAttachment, XmATTACH_FORM, |
---|
399 | NULL); |
---|
400 | XtAddCallback(m_info_ProteinText, XmNvalueChangedCallback, staticTextChangedCallback, this); |
---|
401 | |
---|
402 | // LABEL WIDGET (GENE INFOS) |
---|
403 | Widget label_09= XtVaCreateManagedWidget("label", |
---|
404 | xmLabelWidgetClass, m_top, |
---|
405 | XmNlabelString, CreateDlgString("DISPLAYED GENE INFO"), |
---|
406 | XmNheight, 30, |
---|
407 | XmNalignment, XmALIGNMENT_CENTER, |
---|
408 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
409 | XmNtopWidget, m_info_ProteinText, |
---|
410 | XmNleftAttachment, XmATTACH_FORM, |
---|
411 | XmNrightAttachment, XmATTACH_FORM, |
---|
412 | NULL); |
---|
413 | |
---|
414 | // TEXT FIELD - GENE INFOS |
---|
415 | m_info_GeneText= XtVaCreateManagedWidget("textField", |
---|
416 | xmTextWidgetClass, m_top, |
---|
417 | XmNheight, 80, |
---|
418 | XmNeditMode, XmMULTI_LINE_EDIT, |
---|
419 | XmNtopAttachment, XmATTACH_WIDGET, |
---|
420 | XmNtopWidget, label_09, |
---|
421 | XmNleftAttachment, XmATTACH_FORM, |
---|
422 | XmNrightAttachment, XmATTACH_FORM, |
---|
423 | NULL); |
---|
424 | XtAddCallback(m_info_GeneText, XmNvalueChangedCallback, staticTextChangedCallback, this); |
---|
425 | |
---|
426 | m_cancelButton= XtVaCreateManagedWidget("button", |
---|
427 | xmPushButtonWidgetClass, m_top, |
---|
428 | XmNlabelString, CreateDlgString("Cancel"), |
---|
429 | XmNwidth, 100, |
---|
430 | XmNheight, 30, |
---|
431 | XmNleftAttachment, XmATTACH_FORM, |
---|
432 | XmNbottomAttachment, XmATTACH_FORM, |
---|
433 | NULL); |
---|
434 | XtAddCallback(m_cancelButton, XmNactivateCallback, staticCancelButtonCallback, this); |
---|
435 | |
---|
436 | m_okButton= XtVaCreateManagedWidget("button", |
---|
437 | xmPushButtonWidgetClass, m_top, |
---|
438 | XmNlabelString, CreateDlgString("Ok"), |
---|
439 | XmNwidth, 100, |
---|
440 | XmNheight, 30, |
---|
441 | XmNrightAttachment, XmATTACH_FORM, |
---|
442 | XmNbottomAttachment, XmATTACH_FORM, |
---|
443 | NULL); |
---|
444 | XtAddCallback(m_okButton, XmNactivateCallback, staticOkButtonCallback, this); |
---|
445 | |
---|
446 | m_defaultButton= XtVaCreateManagedWidget("button", |
---|
447 | xmPushButtonWidgetClass, m_top, |
---|
448 | XmNlabelString, CreateDlgString("Default"), |
---|
449 | XmNwidth, 100, |
---|
450 | XmNheight, 30, |
---|
451 | XmNleftAttachment, XmATTACH_WIDGET, |
---|
452 | XmNleftWidget, m_cancelButton, |
---|
453 | XmNrightAttachment, XmATTACH_WIDGET, |
---|
454 | XmNrightWidget, m_okButton, |
---|
455 | XmNbottomAttachment, XmATTACH_FORM, |
---|
456 | NULL); |
---|
457 | XtAddCallback(m_defaultButton, XmNactivateCallback, staticDefaultButtonCallback, this); |
---|
458 | |
---|
459 | } |
---|
460 | |
---|
461 | |
---|
462 | bool configDialog::setDefault(bool global) |
---|
463 | { |
---|
464 | // SET DEFAULT VALUES |
---|
465 | m_crosshairColorString= const_cast<char*>(DEFAULT_COLOR_CROSSHAIR); |
---|
466 | m_unmarkedColorString= const_cast<char*>(DEFAULT_COLOR_UNMARKED); |
---|
467 | m_markedColorString= const_cast<char*>(DEFAULT_COLOR_MARKED); |
---|
468 | m_selectedColorString= const_cast<char*>(DEFAULT_COLOR_SELECTED); |
---|
469 | m_textColorString= const_cast<char*>(DEFAULT_COLOR_TEXT); |
---|
470 | m_id_protein= const_cast<char*>(DEFAULT_ID_PROTEIN); |
---|
471 | m_id_gene= const_cast<char*>(DEFAULT_ID_GENE); |
---|
472 | m_info_protein= const_cast<char*>(DEFAULT_INFO_PROTEIN); |
---|
473 | m_info_gene= const_cast<char*>(DEFAULT_INFO_GENE); |
---|
474 | |
---|
475 | // SET GLOBAL SETTINGS ALSO TO DEFAULT? |
---|
476 | if(global) |
---|
477 | { |
---|
478 | set_CONFIG(CONFIG_PGT_COLOR_CROSSHAIR, m_crosshairColorString); |
---|
479 | set_CONFIG(CONFIG_PGT_COLOR_UNMARKED, m_unmarkedColorString); |
---|
480 | set_CONFIG(CONFIG_PGT_COLOR_MARKED, m_markedColorString); |
---|
481 | set_CONFIG(CONFIG_PGT_COLOR_SELECTED, m_selectedColorString); |
---|
482 | set_CONFIG(CONFIG_PGT_COLOR_TEXT, m_textColorString); |
---|
483 | set_CONFIG(CONFIG_PGT_ID_PROTEIN, m_id_protein); |
---|
484 | set_CONFIG(CONFIG_PGT_ID_GENE, m_id_gene); |
---|
485 | set_CONFIG(CONFIG_PGT_INFO_PROTEIN, m_info_protein); |
---|
486 | set_CONFIG(CONFIG_PGT_INFO_GENE, m_info_gene); |
---|
487 | } |
---|
488 | |
---|
489 | // UPDATE TEXT FIELD ENTRIES |
---|
490 | if(m_crosshairText) XtVaSetValues(m_crosshairText, XmNvalue, m_crosshairColorString, NULL); |
---|
491 | if(m_unmarkedText) XtVaSetValues(m_unmarkedText, XmNvalue, m_unmarkedColorString, NULL); |
---|
492 | if(m_markedText) XtVaSetValues(m_markedText, XmNvalue, m_markedColorString, NULL); |
---|
493 | if(m_selectedText) XtVaSetValues(m_selectedText, XmNvalue, m_selectedColorString, NULL); |
---|
494 | if(m_textText) XtVaSetValues(m_textText, XmNvalue, m_textColorString, NULL); |
---|
495 | if(m_ID_ProteinText) XtVaSetValues(m_ID_ProteinText, XmNvalue, m_id_protein, NULL); |
---|
496 | if(m_ID_GeneText) XtVaSetValues(m_ID_GeneText, XmNvalue, m_id_gene, NULL); |
---|
497 | if(m_info_ProteinText) XtVaSetValues(m_info_ProteinText, XmNvalue, m_info_protein, NULL); |
---|
498 | if(m_info_GeneText) XtVaSetValues(m_info_GeneText, XmNvalue, m_info_gene, NULL); |
---|
499 | |
---|
500 | // UPDATE THE DRAWING AREA COLORS |
---|
501 | updateColors(); |
---|
502 | |
---|
503 | return true; |
---|
504 | } |
---|
505 | |
---|
506 | |
---|
507 | void configDialog::updateColors() |
---|
508 | { |
---|
509 | if(!m_crosshairArea || !m_unmarkedArea || |
---|
510 | !m_markedArea || !m_selectedArea || !m_textArea) return; |
---|
511 | |
---|
512 | int r, g, b; |
---|
513 | |
---|
514 | if(hex2rgb(&r, &g, &b, m_crosshairColorString)) |
---|
515 | drawColoredSpot(m_crosshairArea, r, g, b); |
---|
516 | |
---|
517 | if(hex2rgb(&r, &g, &b, m_unmarkedColorString)) |
---|
518 | drawColoredSpot(m_unmarkedArea, r, g, b); |
---|
519 | |
---|
520 | if(hex2rgb(&r, &g, &b, m_markedColorString)) |
---|
521 | drawColoredSpot(m_markedArea, r, g, b); |
---|
522 | |
---|
523 | if(hex2rgb(&r, &g, &b, m_selectedColorString)) |
---|
524 | drawColoredSpot(m_selectedArea, r, g, b); |
---|
525 | |
---|
526 | if(hex2rgb(&r, &g, &b, m_textColorString)) |
---|
527 | drawColoredSpot(m_textArea, r, g, b); |
---|
528 | } |
---|
529 | |
---|
530 | |
---|
531 | /**************************************************************************** |
---|
532 | * IMAGE DIALOG - SET FOREGROUND COLOR |
---|
533 | ****************************************************************************/ |
---|
534 | void configDialog::setColor(Display *display, GC gc, int r, int g, int b) |
---|
535 | { |
---|
536 | XColor xc; |
---|
537 | |
---|
538 | xc.red= r << 8; xc.green= g << 8; xc.blue= b << 8; |
---|
539 | xc.flags = DoRed | DoGreen | DoBlue; |
---|
540 | XAllocColor(display, DefaultColormap(display, DefaultScreen(display)), &xc); |
---|
541 | XSetForeground(display, gc, xc.pixel); |
---|
542 | } |
---|
543 | |
---|
544 | |
---|
545 | void configDialog::drawColoredSpot(Widget area, int r , int g , int b) |
---|
546 | { |
---|
547 | if(!area) return; |
---|
548 | |
---|
549 | // GET DISPLAY + GC |
---|
550 | Display *display= XtDisplay(area); |
---|
551 | Window win = XtWindow(area); |
---|
552 | GC gc= XCreateGC(display, win, 0, 0); |
---|
553 | |
---|
554 | // GET BACKGROUND COLOR |
---|
555 | Pixel bg; |
---|
556 | XtVaGetValues(m_top, XmNbackground, &bg, NULL); |
---|
557 | |
---|
558 | // FILL BACKGROUND WITH COLOR BG |
---|
559 | XtVaSetValues(area, XmNbackground, bg, NULL); |
---|
560 | |
---|
561 | // DRAW THE FILLED CIRCLE |
---|
562 | setColor(display, gc, r, g, b); |
---|
563 | XFillArc(display, win, gc, 4, 4, 20, 20, 0, 360*64); |
---|
564 | |
---|
565 | // DRAW A BLACK BORDER AROUND THE CIRCLE |
---|
566 | setColor(display, gc, 0, 0, 0); |
---|
567 | XDrawArc(display, win, gc, 4, 4, 20, 20, 0, 360*64); |
---|
568 | |
---|
569 | XFlush(display); |
---|
570 | |
---|
571 | // FREE OUR GC AS WE DONT NEED IT ANYMORE |
---|
572 | XFreeGC(display, gc); |
---|
573 | } |
---|
574 | |
---|
575 | |
---|
576 | void configDialog::getCONFIGS() |
---|
577 | { |
---|
578 | // FREE OLD STRING ENTRIES BEFORE ADDING NEW ONES |
---|
579 | freeStrings(); |
---|
580 | |
---|
581 | // FETCH AWARS |
---|
582 | m_crosshairColorString= get_CONFIG(CONFIG_PGT_COLOR_CROSSHAIR); |
---|
583 | m_unmarkedColorString= get_CONFIG(CONFIG_PGT_COLOR_UNMARKED); |
---|
584 | m_markedColorString= get_CONFIG(CONFIG_PGT_COLOR_MARKED); |
---|
585 | m_selectedColorString= get_CONFIG(CONFIG_PGT_COLOR_SELECTED); |
---|
586 | m_textColorString= get_CONFIG(CONFIG_PGT_COLOR_TEXT); |
---|
587 | m_id_protein= get_CONFIG(CONFIG_PGT_ID_PROTEIN); |
---|
588 | m_id_gene= get_CONFIG(CONFIG_PGT_ID_GENE); |
---|
589 | m_info_protein= get_CONFIG(CONFIG_PGT_INFO_PROTEIN); |
---|
590 | m_info_gene= get_CONFIG(CONFIG_PGT_INFO_GENE); |
---|
591 | |
---|
592 | // UPDATE TEXT FIELD ENTRIES |
---|
593 | if(m_crosshairText) XtVaSetValues(m_crosshairText, XmNvalue, m_crosshairColorString, NULL); |
---|
594 | if(m_unmarkedText) XtVaSetValues(m_unmarkedText, XmNvalue, m_unmarkedColorString, NULL); |
---|
595 | if(m_markedText) XtVaSetValues(m_markedText, XmNvalue, m_markedColorString, NULL); |
---|
596 | if(m_selectedText) XtVaSetValues(m_selectedText, XmNvalue, m_selectedColorString, NULL); |
---|
597 | if(m_textText) XtVaSetValues(m_textText, XmNvalue, m_textColorString, NULL); |
---|
598 | if(m_ID_ProteinText) XtVaSetValues(m_ID_ProteinText, XmNvalue, m_id_protein, NULL); |
---|
599 | if(m_ID_GeneText) XtVaSetValues(m_ID_GeneText, XmNvalue, m_id_gene, NULL); |
---|
600 | if(m_info_ProteinText) XtVaSetValues(m_info_ProteinText, XmNvalue, m_info_protein, NULL); |
---|
601 | if(m_info_GeneText) XtVaSetValues(m_info_GeneText, XmNvalue, m_info_gene, NULL); |
---|
602 | |
---|
603 | // UPDATE THE DRAWING AREA COLORS |
---|
604 | updateColors(); |
---|
605 | } |
---|
606 | |
---|
607 | |
---|
608 | void configDialog::setCONFIGS() |
---|
609 | { |
---|
610 | // CONFIGS - WRITE BACK |
---|
611 | set_CONFIG(CONFIG_PGT_COLOR_CROSSHAIR, m_crosshairColorString); |
---|
612 | set_CONFIG(CONFIG_PGT_COLOR_UNMARKED, m_unmarkedColorString); |
---|
613 | set_CONFIG(CONFIG_PGT_COLOR_MARKED, m_markedColorString); |
---|
614 | set_CONFIG(CONFIG_PGT_COLOR_SELECTED, m_selectedColorString); |
---|
615 | set_CONFIG(CONFIG_PGT_COLOR_TEXT, m_textColorString); |
---|
616 | set_CONFIG(CONFIG_PGT_ID_PROTEIN, m_id_protein); |
---|
617 | set_CONFIG(CONFIG_PGT_ID_GENE, m_id_gene); |
---|
618 | set_CONFIG(CONFIG_PGT_INFO_PROTEIN, m_info_protein); |
---|
619 | set_CONFIG(CONFIG_PGT_INFO_GENE, m_info_gene); |
---|
620 | |
---|
621 | // GET LOCAL TIME CODE (-> SET TIME OF LAST CHANGE) |
---|
622 | time_t ttime= time(NULL); |
---|
623 | char *stime= asctime(localtime(&ttime)); |
---|
624 | |
---|
625 | // TRIGGER SIGNAL: CONFIG HAS CHANGED... |
---|
626 | set_config_AWAR(stime); |
---|
627 | } |
---|
628 | |
---|
629 | |
---|
630 | /**************************************************************************** |
---|
631 | * CALLBACK - CANCEL BUTTON PRESSED |
---|
632 | * !!! CAUTION: THIS IS A WRAPPER FUNCTION !!! |
---|
633 | ****************************************************************************/ |
---|
634 | void staticCancelButtonCallback(Widget, XtPointer clientData, XtPointer) |
---|
635 | { |
---|
636 | // GET POINTER OF THE ORIGINAL CALLER |
---|
637 | configDialog *cD= (configDialog *)clientData; |
---|
638 | |
---|
639 | // DESTROY OBJECT |
---|
640 | cD->~configDialog(); |
---|
641 | } |
---|
642 | |
---|
643 | |
---|
644 | /**************************************************************************** |
---|
645 | * CALLBACK - DEFAULT BUTTON PRESSED |
---|
646 | * !!! CAUTION: THIS IS A WRAPPER FUNCTION !!! |
---|
647 | ****************************************************************************/ |
---|
648 | void staticDefaultButtonCallback(Widget, XtPointer clientData, XtPointer) |
---|
649 | { |
---|
650 | // GET POINTER OF THE ORIGINAL CALLER |
---|
651 | configDialog *cD= (configDialog *)clientData; |
---|
652 | |
---|
653 | // SET VALUES TO DEFAULT |
---|
654 | cD->setDefault(false); |
---|
655 | } |
---|
656 | |
---|
657 | |
---|
658 | /**************************************************************************** |
---|
659 | * CALLBACK - COLOR CHANGED |
---|
660 | * !!! CAUTION: THIS IS A WRAPPER FUNCTION !!! |
---|
661 | ****************************************************************************/ |
---|
662 | void staticOkButtonCallback(Widget, XtPointer clientData, XtPointer) |
---|
663 | { |
---|
664 | // GET POINTER OF THE ORIGINAL CALLER |
---|
665 | configDialog *cD= (configDialog *)clientData; |
---|
666 | |
---|
667 | // SAVE AWARS TO ARB |
---|
668 | cD->setCONFIGS(); |
---|
669 | |
---|
670 | // DESTROY OBJECT |
---|
671 | cD->~configDialog(); |
---|
672 | } |
---|
673 | |
---|
674 | |
---|
675 | /**************************************************************************** |
---|
676 | * CALLBACK - COLOR/TEXT CHANGED |
---|
677 | * !!! CAUTION: THIS IS A WRAPPER FUNCTION !!! |
---|
678 | ****************************************************************************/ |
---|
679 | void staticTextChangedCallback(Widget widget, XtPointer clientData, XtPointer) |
---|
680 | { |
---|
681 | // GET POINTER OF THE ORIGINAL CALLER |
---|
682 | configDialog *cD= (configDialog *)clientData; |
---|
683 | |
---|
684 | // CALL TEXT CHANGED FUNCTION |
---|
685 | cD->textChangedCallback(widget); |
---|
686 | } |
---|
687 | |
---|
688 | |
---|
689 | /**************************************************************************** |
---|
690 | * CALLBACK - COLOR/TEXT CHANGED |
---|
691 | ****************************************************************************/ |
---|
692 | |
---|
693 | inline void setColorFromTextWidget(Widget widget, char *& colorStringVar) { |
---|
694 | int r, g, b; // DUMMY RGB VALUES |
---|
695 | char *colorString = XmTextGetString(widget); |
---|
696 | if(hex2rgb(&r, &g, &b, colorString)) freeset(colorStringVar, colorString); |
---|
697 | else free(colorString); |
---|
698 | } |
---|
699 | |
---|
700 | void configDialog::textChangedCallback(Widget widget) { |
---|
701 | if (widget == m_crosshairText) setColorFromTextWidget(m_crosshairText, m_crosshairColorString); // CROSSHAIR TEXT-WIDGET CHANGED? |
---|
702 | else if (widget == m_unmarkedText) setColorFromTextWidget(m_unmarkedText, m_unmarkedColorString); // UNMARKED TEXT-WIDGET CHANGED? |
---|
703 | else if (widget == m_markedText) setColorFromTextWidget(m_markedText, m_markedColorString); // MARKED TEXT-WIDGET CHANGED? |
---|
704 | else if (widget == m_selectedText) setColorFromTextWidget(m_selectedText, m_selectedColorString); // SELECTED TEXT-WIDGET CHANGED? |
---|
705 | else if (widget == m_textText) setColorFromTextWidget(m_textText, m_textColorString); // INFOTEXT TEXT-WIDGET CHANGED? |
---|
706 | else if (widget == m_ID_ProteinText) freeset(m_id_protein, XmTextGetString(m_ID_ProteinText)); // PROTEIN-ID TEXT-WIDGET CHANGED? |
---|
707 | else if (widget == m_ID_GeneText) freeset(m_id_gene, XmTextGetString(m_ID_GeneText)); // GENE-ID TEXT-WIDGET CHANGED? |
---|
708 | else if (widget == m_info_ProteinText) freeset(m_info_protein, XmTextGetString(m_info_ProteinText)); // PROTEIN-TEXT TEXT-WIDGET CHANGED? |
---|
709 | else if (widget == m_info_GeneText) freeset(m_info_gene, XmTextGetString(m_info_GeneText)); // GENE-TEXT TEXT-WIDGET CHANGED? |
---|
710 | |
---|
711 | updateColors(); // UPDATE THE COLORS |
---|
712 | } |
---|
713 | |
---|
714 | |
---|
715 | /**************************************************************************** |
---|
716 | * CONVERT INT RGB -> HEX COLOR STRING |
---|
717 | ****************************************************************************/ |
---|
718 | char *rgb2hex(int r, int g, int b) |
---|
719 | { |
---|
720 | // ALL INPUT VALUES IN RANGE? |
---|
721 | if((r < 0) || (g < 0) || (b < 0) || |
---|
722 | (r > 255) || (g > 255) || (b > 255)) return NULL; |
---|
723 | |
---|
724 | // ALLOCATE MEM FOR HEX COLOR STRING |
---|
725 | char *hex= (char *)malloc(8 * sizeof(char)); |
---|
726 | if(!hex) return NULL; |
---|
727 | |
---|
728 | // WRITE COLORS INTO MEM |
---|
729 | if(sprintf(hex, "#%2X%2X%2X", r, g, b) != 3) return NULL; |
---|
730 | |
---|
731 | // RETURN POINTER TO HEX STRING |
---|
732 | return hex; |
---|
733 | } |
---|
734 | |
---|
735 | |
---|
736 | /**************************************************************************** |
---|
737 | * CONVERT HEX STRING -> INT RGB |
---|
738 | ****************************************************************************/ |
---|
739 | bool hex2rgb(int *r, int *g, int *b, char *hex) |
---|
740 | { |
---|
741 | // SPLIT THE THREE COLORS |
---|
742 | if(sscanf(hex, "#%2X%2X%2X", r, g, b) != 3) return false; |
---|
743 | |
---|
744 | // RETURN TRUE IF SUCCESSFUL |
---|
745 | return true; |
---|
746 | } |
---|