1 | ;********************************************************************* |
---|
2 | PRO whichread_event, event |
---|
3 | ; |
---|
4 | @common |
---|
5 | ; |
---|
6 | if tag_names(event, /structure_name) NE 'WIDGET_BUTTON' then return |
---|
7 | widget_control, event.id, get_uvalue = uvalue |
---|
8 | widget_control, event.handler, get_uvalue = messenger |
---|
9 | case uvalue of |
---|
10 | 'Cancel':*messenger = -1 |
---|
11 | 'ok finish':BEGIN |
---|
12 | widget_control, widget_info(event.handler, find_by_uname = 'funclec_name') $ |
---|
13 | , get_value = answer |
---|
14 | funclec_name = strtrim(answer[0], 2) |
---|
15 | widget_control, widget_info(event.handler, find_by_uname = 'xdta'), get_value = answer |
---|
16 | jpiglo = long(answer[0]) |
---|
17 | jpidta = long(answer[1]) |
---|
18 | ixmindta = long(answer[2]) |
---|
19 | ixmaxdta = long(answer[3]) |
---|
20 | widget_control, widget_info(event.handler, find_by_uname = 'ydta'), get_value = answer |
---|
21 | jpjglo = long(answer[0]) |
---|
22 | jpjdta = long(answer[1]) |
---|
23 | iymindta = long(answer[2]) |
---|
24 | iymaxdta = long(answer[3]) |
---|
25 | widget_control, widget_info(event.handler, find_by_uname = 'zdta'), get_value = answer |
---|
26 | jpkglo = long(answer[0]) |
---|
27 | jpkdta = long(answer[1]) |
---|
28 | izmindta = long(answer[2]) |
---|
29 | izmaxdta = long(answer[3]) |
---|
30 | ; |
---|
31 | ; |
---|
32 | *messenger = {funclec_name:funclec_name $ |
---|
33 | , jpidta:jpidta, jpjdta:jpjdta, jpkdta:jpkdta $ |
---|
34 | , ixmindta:ixmindta, ixmaxdta:ixmaxdta $ |
---|
35 | , iymindta:iymindta, iymaxdta:iymaxdta $ |
---|
36 | , izmindta:izmindta, izmaxdta:izmaxdta $ |
---|
37 | } |
---|
38 | END |
---|
39 | endcase |
---|
40 | widget_control,event.handler,/destroy |
---|
41 | ; |
---|
42 | return |
---|
43 | end |
---|
44 | ;********************************************************************* |
---|
45 | FUNCTION whichread, FUNCLEC_NAME = funclec_name, PARENT = parent, _EXTRA = ex |
---|
46 | ; |
---|
47 | @common |
---|
48 | ; |
---|
49 | ; pour recuperer les reponses possees lors de l''utilisation de ce |
---|
50 | ; widget on cree un pointeur que l''on place dans la uvalue. Comme ca |
---|
51 | ; une fois que le widget est detruit dans la procedure ...event.pro, |
---|
52 | ; la variable surlaquelle pointait le pointeur (contenue ds la uvalue |
---|
53 | ; du widget) n''est pas detruite est on peut recuperer le resultat! |
---|
54 | ; |
---|
55 | messenger = ptr_new(/allocate_heap) |
---|
56 | ; |
---|
57 | ; |
---|
58 | if keyword_set(parent) then BEGIN |
---|
59 | base=widget_base(parent, /COLUMN, title = 'whichread', /align_center, uvalue = messenger, _EXTRA = ex) |
---|
60 | ENDIF ELSE BEGIN |
---|
61 | base=widget_base(/COLUMN, title = 'whichread', /align_center, uvalue = messenger, _EXTRA = ex) |
---|
62 | nothing = widget_button(base, value = 'Cancel', uvalue = 'Cancel') |
---|
63 | ENDELSE |
---|
64 | ; |
---|
65 | basea=widget_base(base, /row, /align_center) |
---|
66 | nothing = widget_label(basea, value = 'Read Function name:') |
---|
67 | if NOT keyword_set(funclec_name) then funclec_name = 'read_ncdf' |
---|
68 | nothing = widget_text(basea, value = funclec_name, uname = 'funclec_name', xsize = 10, /EDITABLE) |
---|
69 | nothing = cw_fourparameter(base, jpiglo, jpidta, ixmindta, ixmaxdta, 'x', 'dta', /EDITABLE, uname = 'xdta') |
---|
70 | nothing = cw_fourparameter(base, jpjglo, jpjdta, iymindta, iymaxdta, 'y', 'dta', /EDITABLE, uname = 'ydta') |
---|
71 | nothing = cw_fourparameter(base, jpkglo, jpkdta, izmindta, izmaxdta, 'z', 'dta', /EDITABLE, uname = 'zdta') |
---|
72 | nothing = widget_button(base, value = 'Ok, Get the Read parameters!', uvalue = 'ok finish') |
---|
73 | ; |
---|
74 | widget_control,base,/realize |
---|
75 | xmanager,'whichread', base,event_handler = 'whichread_event' |
---|
76 | res = *messenger |
---|
77 | ptr_free, messenger |
---|
78 | |
---|
79 | return, res |
---|
80 | ; |
---|
81 | end |
---|