[2] | 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 |
---|