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 |
---|