source: trunk/WIDGET/AUTOUR_de_XXX/selectfile.pro @ 2

Last change on this file since 2 was 2, checked in by opalod, 22 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 4.0 KB
Line 
1;*********************************************************************
2PRO 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
50end
51;*********************************************************************
52FUNCTION 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}
97end
Note: See TracBrowser for help on using the repository browser.