[2] | 1 | ;********************************************************************* |
---|
| 2 | PRO selectfile_event, event |
---|
| 3 | ; |
---|
| 4 | @common |
---|
| 5 | ; |
---|
| 6 | widget_control, event.id, get_uvalue = eventuvalue |
---|
| 7 | IF chkstru(eventuvalue,'name') EQ 0 THEN return |
---|
| 8 | case eventuvalue.name of |
---|
| 9 | 'Global Cancel':BEGIN |
---|
| 10 | widget_control, event.handler, get_uvalue = messenger |
---|
| 11 | *messenger = -1 |
---|
| 12 | widget_control,event.handler,/destroy |
---|
| 13 | END |
---|
| 14 | 'datafilename':BEGIN |
---|
| 15 | widget_control, event.id, get_value = filename |
---|
| 16 | filename = isafile(filename = filename[0]) |
---|
| 17 | if size(filename, /type) NE 7 then return |
---|
| 18 | widget_control, event.id, set_value = filename |
---|
| 19 | END |
---|
| 20 | 'browse datafilename':BEGIN |
---|
| 21 | filename = isafile(iodir = iodir) |
---|
| 22 | if size(filename, /type) NE 7 then return |
---|
| 23 | widget_control, widget_info(event.handler, find_by_uname = 'datafilename') $ |
---|
| 24 | , set_value = filename |
---|
| 25 | END |
---|
| 26 | 'meshfilename':BEGIN |
---|
| 27 | widget_control, event.id, get_value = filename |
---|
| 28 | filename = isafile(filename = filename[0]) |
---|
| 29 | if size(filename, /type) NE 7 then return |
---|
| 30 | widget_control, event.id, set_value = filename |
---|
| 31 | END |
---|
| 32 | 'browse meshfilename':BEGIN |
---|
| 33 | filename = isafile(iodir = homedir) |
---|
| 34 | if size(filename, /type) NE 7 then return |
---|
| 35 | widget_control, widget_info(event.handler, find_by_uname = 'meshfilename') $ |
---|
| 36 | , set_value = filename |
---|
| 37 | END |
---|
| 38 | 'Lets Go!':BEGIN |
---|
| 39 | widget_control, widget_info(event.handler, find_by_uname = 'datafilename') $ |
---|
| 40 | , get_value = datafilename & datafilename = datafilename[0] |
---|
| 41 | widget_control, widget_info(event.handler, find_by_uname = 'meshfilename') $ |
---|
| 42 | , get_value = meshfilename & meshfilename = meshfilename[0] |
---|
| 43 | widget_control, event.handler, get_uvalue = messenger |
---|
| 44 | *messenger = create_struct('datafilename', datafilename, 'meshfilename', meshfilename) |
---|
| 45 | widget_control,event.handler,/destroy |
---|
| 46 | END |
---|
| 47 | |
---|
| 48 | endcase |
---|
| 49 | return |
---|
| 50 | end |
---|
| 51 | ;********************************************************************* |
---|
| 52 | FUNCTION selectfile |
---|
| 53 | ; |
---|
| 54 | @common |
---|
| 55 | ;------------------------------------------------------------ |
---|
| 56 | ; |
---|
| 57 | ; pour recuperer les reponses possees lors de l''utilisation de ce |
---|
| 58 | ; widget on cree un pointeur que l''on place dans la uvalue. Comme ca |
---|
| 59 | ; une fois que le widget est detruit dans la procedure ...event.pro, |
---|
| 60 | ; la variable surlaquelle pointait le pointeur (contenue ds la uvalue |
---|
| 61 | ; du widget) n''est pas detruite est on peut recuperer le resultat! |
---|
| 62 | ; |
---|
| 63 | messenger = ptr_new(/allocate_heap) |
---|
| 64 | base=widget_base(/COLUMN, title = 'selectfile', /align_center, uvalue = messenger, _EXTRA = ex) |
---|
| 65 | ; |
---|
| 66 | nothing = widget_button(base, value = 'Cancel', uvalue = {name:'Global Cancel'}) |
---|
| 67 | ; |
---|
| 68 | basea=widget_base(base, /row, /align_center) |
---|
| 69 | nothing = widget_label(basea, value = 'Data file name: ') |
---|
| 70 | nothing = widget_text(basea, value = '', uvalue = {name:'datafilename'}, uname = 'datafilename', xsize = 45, /EDITABLE) |
---|
| 71 | nothing = widget_button(basea, value = 'Browse', uvalue = {name:'browse datafilename'}) |
---|
| 72 | ; |
---|
| 73 | baseb=widget_base(base, /row, /align_center) |
---|
| 74 | nothing = widget_label(baseb, value = 'Mesh file or IDL batch file: ') |
---|
| 75 | nothing = widget_text(baseb, value = '', uvalue = {name:'meshfilename'}, uname = 'meshfilename', xsize = 45, /EDITABLE) |
---|
| 76 | nothing = widget_button(baseb, value = 'Browse', uvalue = {name:'browse meshfilename'}) |
---|
| 77 | ; |
---|
| 78 | nothing = widget_button(base, value = 'Lets Go!', uvalue = {name:'Lets Go!'}) |
---|
| 79 | |
---|
| 80 | ;------------------------------------------------------------ |
---|
| 81 | widget_control,base,/realize |
---|
| 82 | xmanager,'selectfile', base,event_handler = 'selectfile_event', no_block = 0 |
---|
| 83 | ; |
---|
| 84 | ; |
---|
| 85 | res = *messenger |
---|
| 86 | ptr_free, messenger |
---|
| 87 | if size(res, /type) NE 8 then return, -1 |
---|
| 88 | ; |
---|
| 89 | res1 = whichgrid(res.meshfilename, iodir = iodir) |
---|
| 90 | if size(res1, /type) NE 8 then return, -1 |
---|
| 91 | res2 = whichread() |
---|
| 92 | if size(res2, /type) NE 8 then return, -1 |
---|
| 93 | res3 = scanfile(res.datafilename, iodir = iodir) |
---|
| 94 | if size(res3, /type) NE 8 then return, -1 |
---|
| 95 | |
---|
| 96 | return, {fileparameters:res3, readparameters:res2, meshparameters:res1} |
---|
| 97 | end |
---|