1 | ;------------------------------------------------------------ |
---|
2 | ;------------------------------------------------------------ |
---|
3 | ;------------------------------------------------------------ |
---|
4 | ;+ |
---|
5 | ; NAME:xxx |
---|
6 | ; |
---|
7 | ; PURPOSE:un maximum de possibilites avec un minimum de clics |
---|
8 | ; |
---|
9 | ; CATEGORY:super widget |
---|
10 | ; |
---|
11 | ; CALLING SEQUENCE:xxx |
---|
12 | ; |
---|
13 | ; INPUTS:none |
---|
14 | ; |
---|
15 | ; KEYWORD PARAMETERS: |
---|
16 | ; |
---|
17 | ; /SEPARATE: pour separer la partie boutons de la partie dessin |
---|
18 | ; en 2 fenetres. Utile pour les petits ecrans, mais attention |
---|
19 | ; peut saturer la memoire video de certains Tx un peu vetustes. |
---|
20 | ; |
---|
21 | ; RESTORE='toto.dat' ou toto.dat est un fichier cree lors d''une |
---|
22 | ; precedente utilisation de xxx grace a la commande "Widget" du |
---|
23 | ; menu "save as". |
---|
24 | ; |
---|
25 | ; OUTPUTS: |
---|
26 | ; |
---|
27 | ; COMMON BLOCKS:common.pro |
---|
28 | ; |
---|
29 | ; SIDE EFFECTS: |
---|
30 | ; |
---|
31 | ; RESTRICTIONS: |
---|
32 | ; |
---|
33 | ; EXAMPLE: |
---|
34 | ; |
---|
35 | ; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr) |
---|
36 | ; |
---|
37 | ;- |
---|
38 | ;------------------------------------------------------------ |
---|
39 | ;------------------------------------------------------------ |
---|
40 | ;------------------------------------------------------------ |
---|
41 | |
---|
42 | PRO xxx_event, event |
---|
43 | ;------------------------------------------------------------ |
---|
44 | @common |
---|
45 | ;------------------------------------------------------------ |
---|
46 | ; = widget_info(event.top,find_by_uname = '') |
---|
47 | ; quel est le type d''evenement? |
---|
48 | ; if event.id EQ 622 then help, event, /struct |
---|
49 | widget_control, event.id, get_uvalue=uval |
---|
50 | if (tag_names(event, /structure_name))[0] EQ 'WIDGET_TRACKING' then uval = {name:'ActiverFenetre'} |
---|
51 | if keyword_set(uval) EQ 0 then return |
---|
52 | ;help, event, /struct |
---|
53 | ;help, uval , /struct |
---|
54 | ; case sur le type d''evenement |
---|
55 | widget_control, event.top, get_uvalue = top_uvalue |
---|
56 | ; si on a active le mot cles separate a l''appelle de xxx |
---|
57 | if size(top_uvalue, /type) EQ 3 then begin |
---|
58 | event.top = top_uvalue |
---|
59 | widget_control, event.top, get_uvalue = top_uvalue |
---|
60 | endif |
---|
61 | ; on tue le petit widget cree par notice.pro si il existe |
---|
62 | noticebase = extractatt(top_uvalue, 'noticebase') |
---|
63 | if noticebase NE 0 then BEGIN |
---|
64 | widget_control, noticebase, /destroy |
---|
65 | *top_uvalue[1, findline(top_uvalue, 'noticebase')] = 0l |
---|
66 | endif |
---|
67 | ; |
---|
68 | ; |
---|
69 | options = extractatt(top_uvalue, 'options') |
---|
70 | index = where(options EQ 'Ok button') & index = index[0] |
---|
71 | currentplot = (extractatt(top_uvalue, 'petitout'))[2]-1 |
---|
72 | okbutton = extractatt(top_uvalue, 'optionsflag') |
---|
73 | okbutton = okbutton[index, currentplot] |
---|
74 | case uval.name OF |
---|
75 | 'menubar':xxxmenubar_event, event |
---|
76 | 'ok':nouveaudessin = 1 |
---|
77 | 'specifie':nouveaudessin = event.ok*(1-okbutton) |
---|
78 | 'action':nouveaudessin = 1-okbutton |
---|
79 | 'calendar1':BEGIN |
---|
80 | date2id = widget_info(event.top, find_by_uname = 'calendar2') |
---|
81 | widget_control, date2id, get_value = date2 |
---|
82 | if event.value GT date2 then widget_control, date2id, set_value = event.value |
---|
83 | |
---|
84 | nouveaudessin = 1-okbutton |
---|
85 | END |
---|
86 | 'calendar2':BEGIN |
---|
87 | date1id = widget_info(event.top, find_by_uname = 'calendar1') |
---|
88 | widget_control, date1id, get_value = date1 |
---|
89 | if event.value LT date1 then widget_control, date1id, set_value = event.value |
---|
90 | |
---|
91 | nouveaudessin = 1-okbutton |
---|
92 | END |
---|
93 | 'domain':nouveaudessin = 1-okbutton |
---|
94 | 'champ':BEGIN |
---|
95 | currentfile = extractatt(top_uvalue, 'currentfile') |
---|
96 | listvar = (*(extractatt(top_uvalue, 'fileparameters'))[currentfile]).listvar |
---|
97 | name = listvar[event.index] |
---|
98 | changefield, event.top, name |
---|
99 | nouveaudessin = 1-okbutton |
---|
100 | END |
---|
101 | 'nom_exp':nouveaudessin = 1-okbutton |
---|
102 | 'filelist':BEGIN |
---|
103 | filelist = extractatt(top_uvalue, 'filelist') |
---|
104 | newfilename = filelist[event.index] |
---|
105 | changefile, event.top, newfilename |
---|
106 | END |
---|
107 | 'ActiverFenetre':BEGIN |
---|
108 | if event.enter EQ 1 AND !d.name NE 'PS' then BEGIN |
---|
109 | ; graphid = widget_info(event.top,find_by_uname = 'graph') |
---|
110 | graphid = extractatt(top_uvalue, 'graphid') |
---|
111 | widget_control,graphid,get_value=win |
---|
112 | wset, win |
---|
113 | widget_control,event.top,get_uvalue=top_uvalue |
---|
114 | numdessinin = (extractatt(top_uvalue, 'petitin'))[2]-1 |
---|
115 | !p = (extractatt(top_uvalue, 'penvs'))[numdessinin] |
---|
116 | !x = (extractatt(top_uvalue, 'xenvs'))[numdessinin] |
---|
117 | !y = (extractatt(top_uvalue, 'yenvs'))[numdessinin] |
---|
118 | endif |
---|
119 | END |
---|
120 | 'graph':BEGIN |
---|
121 | quelclick = identifyclick(event) |
---|
122 | case quelclick.type of |
---|
123 | 'inutile':return |
---|
124 | 'long':longclickaction, event |
---|
125 | 'single':BEGIN |
---|
126 | print, quelclick.type |
---|
127 | END |
---|
128 | 'double':doubleclickaction, event |
---|
129 | endcase |
---|
130 | END |
---|
131 | endcase |
---|
132 | if keyword_set(nouveaudessin) then letsdraw, event.top |
---|
133 | return |
---|
134 | end |
---|
135 | ;------------------------------------------------------------ |
---|
136 | ;------------------------------------------------------------ |
---|
137 | ;------------------------------------------------------------ |
---|
138 | ;------------------------------------------------------------ |
---|
139 | ;------------------------------------------------------------ |
---|
140 | ;------------------------------------------------------------ |
---|
141 | PRO xxx, BOITE = boite, CALLERWIDID = CallerWidId, DATE1 = date1, DATE2 = date2, PETIT = petit, MULTISTRUCTURE = multistructure, REDRAW = redraw, SEPARATE = separate, UVALUE = uvalue, RESTORE = restore, _EXTRA = ex |
---|
142 | ;------------------------------------------------------------ |
---|
143 | @common |
---|
144 | ;------------------------------------------------------------ |
---|
145 | ; initialisation de l''environnement |
---|
146 | ;------------------------------------------------------------ |
---|
147 | reinitplt |
---|
148 | ;------------------------------------------------------------ |
---|
149 | ; on va recupere la uvalue attache au widget qui a |
---|
150 | ; appele le nouveau widget que l''on est en train de mettre en place |
---|
151 | if keyword_set(restore) then BEGIN |
---|
152 | restore = isafile(filename = restore, iodir = homedir) |
---|
153 | if size(restore, /type) NE 7 then restore = 0 ELSE BEGIN |
---|
154 | restore, isafile(file = restore, io = homedir) |
---|
155 | newgrid = *(extractatt(uvalue, 'meshparameters'))[0] |
---|
156 | change = changegrid(newgrid) |
---|
157 | ENDELSE |
---|
158 | endif |
---|
159 | if n_elements(CallerWidId) NE 0 THEN $ |
---|
160 | widget_control, CallerWidId, get_uvalue = uvalue ELSE CallerWidId = 0 |
---|
161 | ;------------------------------------------------------------ |
---|
162 | ; on commmence la definition du widget... |
---|
163 | ;------------------------------------------------------------ |
---|
164 | ; sa base |
---|
165 | base = widget_base(column = 1-(key_portrait OR keyword_set(SEPARATE)) $ |
---|
166 | , row = key_portrait OR keyword_set(SEPARATE), title='xxx' $ |
---|
167 | , GROUP_LEADER = group, /tracking_events, uname = 'base', mbar = mbarid) |
---|
168 | ; la barre de menu |
---|
169 | if keyword_set(uvalue) then begin |
---|
170 | options = extractatt(uvalue, 'options') |
---|
171 | ENDIF ELSE options = ['Ok button', 'Portrait/Landscape', 'Overlay', 'Vecteur', 'Longitude / x index', 'Latitude / y index'] |
---|
172 | xxxmenubar, mbarid, options = options |
---|
173 | ;------------------------------------------------------------ |
---|
174 | ; on passe a la definition de tout ce qui est au dessus du dessin |
---|
175 | ;------------------------------------------------------------ |
---|
176 | ; base contenant les boutons au dessus, a gauche du dessin |
---|
177 | base1 = widget_base(base, /column) |
---|
178 | base1bis = widget_base(base1, column = key_portrait OR keyword_set(SEPARATE) $ |
---|
179 | , row = 1-(key_portrait OR keyword_set(SEPARATE))) |
---|
180 | ;------------------------------------------------------------ |
---|
181 | ; sous base separant les boutons du widget_domain |
---|
182 | base11=widget_base(base1bis, /row) |
---|
183 | ; |
---|
184 | base111=widget_base(base11, /column) |
---|
185 | ; boutton 'OK' |
---|
186 | baseok = widget_base(base111, /row, /align_right $ |
---|
187 | , map = 0, uname = 'base ok button') |
---|
188 | rien = widget_button(baseok, /align_right, value = ' OK ', uvalue = {name:'ok'}, /frame) |
---|
189 | ; droplist des types de plots possibles |
---|
190 | graphtype = ['plt','pltz', 'pltt', 'xy', 'xz', 'yz', 'xt', 'yt', 'zt', 'x', 'y', 'z', 't'] |
---|
191 | graphtypeid = widget_droplist(base111, value = graphtype, uname = 'action', uvalue = {name:'action', choix:graphtype}) |
---|
192 | ; configuration de la page |
---|
193 | if n_elements(petit) eq 0 then BEGIN |
---|
194 | petitin = [1, 1, 1] |
---|
195 | petitout = [1, 1, 1] |
---|
196 | endif |
---|
197 | if keyword_set(uvalue) then begin |
---|
198 | petitin = extractatt(uvalue, 'petitin') |
---|
199 | petitout = extractatt(uvalue, 'petitout') |
---|
200 | endif |
---|
201 | nbredessin = petitin[0]*petitin[1] |
---|
202 | numdessinin = petitin[2]-1 |
---|
203 | ; |
---|
204 | rien = cw_miseenpage(base11, petitin, /row, /frame) |
---|
205 | ; mapping du boutton 'OK' |
---|
206 | if keyword_set(uvalue) then flag = extractatt(uvalue,'optionsflag') $ |
---|
207 | ; ELSE flag = [0, key_portrait, 0, 1, 0, 0, 0]#replicate(1, petitin[2]-1) |
---|
208 | ELSE flag = [1, key_portrait, 0, 0, 0, 0]#replicate(1, nbredessin) |
---|
209 | currentflag = flag[*, petitin[2]-1] |
---|
210 | widget_control, baseok, map = currentflag[0] |
---|
211 | ; |
---|
212 | ; liste des fichiers que l''on veut regarder |
---|
213 | ; |
---|
214 | if keyword_set(uvalue) then BEGIN |
---|
215 | currentfile = extractatt(uvalue,'currentfile') |
---|
216 | filelist = extractatt(uvalue,'filelist') |
---|
217 | fileparameters = extractatt(uvalue,'fileparameters') |
---|
218 | readparameters = extractatt(uvalue,'readparameters') |
---|
219 | meshparameters = extractatt(uvalue,'meshparameters') |
---|
220 | ENDIF ELSE BEGIN |
---|
221 | if keyword_set(multistructure) then newfile = multistructure ELSE newfile = selectfile() |
---|
222 | if size(newfile, /type) NE 8 then return |
---|
223 | fileparameters = ptrarr(1, /allocate_heap) |
---|
224 | *fileparameters[0] = newfile.fileparameters |
---|
225 | readparameters = ptrarr(1, /allocate_heap) |
---|
226 | *readparameters[0] = newfile.readparameters |
---|
227 | meshparameters = ptrarr(1, /allocate_heap) |
---|
228 | *meshparameters[0] = newfile.meshparameters |
---|
229 | currentfile = 0 |
---|
230 | filelist = newfile.fileparameters.filename |
---|
231 | ENDELSE |
---|
232 | ; liste des fichiers |
---|
233 | rien = widget_list(base11, value = filelist, uname = 'filelist', uvalue = {name:'filelist'}, scr_xsize = 100) |
---|
234 | ; specification de l''operation que l''on veut faire sur les fichiers |
---|
235 | if keyword_set(CallerWidId) then begin |
---|
236 | widget_control, widget_info(CallerWidId, find_by_uname = 'nom_exp'), get_value = value |
---|
237 | value = value[0] |
---|
238 | ENDIF ELSE value = prefix |
---|
239 | rien=widget_text(base11, value = value, uvalue={name:'nom_exp'}, uname='nom_exp', /editable) |
---|
240 | ; liste des variables |
---|
241 | currentlistvar = (*fileparameters[currentfile]).listvar |
---|
242 | ; |
---|
243 | if keyword_set(separate) then basechamp = widget_base(base1bis, /row) |
---|
244 | base12=widget_base(base1bis, /row , uname = 'base12') |
---|
245 | if NOT keyword_set(separate) then basechamp = base12 |
---|
246 | ; |
---|
247 | rien=widget_droplist(basechamp, value=currentlistvar, title ='champ' $ |
---|
248 | , uvalue ={name:'champ'}, uname='champ') |
---|
249 | if keyword_set(CallerWidId) then begin |
---|
250 | selectvar = widget_info(widget_info(CallerWidId, find_by_uname = 'champ'), /droplist_select) |
---|
251 | ENDIF ELSE selectvar = 0 |
---|
252 | widget_control, rien, set_droplist_select = selectvar |
---|
253 | ; calendrier |
---|
254 | currentcalendar = (*fileparameters[currentfile]).time_counter |
---|
255 | if keyword_set(CallerWidId) then begin |
---|
256 | widget_control, widget_info(CallerWidId, find_by_uname = 'calendar1'), get_value = date1 |
---|
257 | widget_control, widget_info(CallerWidId, find_by_uname = 'calendar2'), get_value = date2 |
---|
258 | date1 = juldate(date1) |
---|
259 | date2 = juldate(date2) |
---|
260 | ENDIF |
---|
261 | rien = cw_calendar(base12,currentcalendar, date1, uname = 'calendar1', uvalue = {name:'calendar1'}, /frame) |
---|
262 | rien = cw_calendar(base12,currentcalendar, date2, uname = 'calendar2', uvalue = {name:'calendar2'}, /frame) |
---|
263 | ;------------------------------------------------------------ |
---|
264 | ; 2eme ligne |
---|
265 | ;------------------------------------------------------------ |
---|
266 | vargrid = strupcase((*fileparameters[currentfile]).listgrid[selectvar]) |
---|
267 | IF vargrid EQ 'W' then zgrid = 'W' ELSE zgrid = 'T' |
---|
268 | rien = cw_domain(base1, uname = 'domain', uvalue = {name:'domain'}, /unzoom, /frame, boite = boite, row = 1-(key_portrait OR keyword_set(SEPARATE)), column = key_portrait OR keyword_set(SEPARATE)) |
---|
269 | ;------------------------------------------------------------ |
---|
270 | ; 3eme ligne |
---|
271 | ;------------------------------------------------------------ |
---|
272 | rien = cw_specifie(base1, uname = 'specifie', uvalue = {name:'specifie'}, /frame, column = key_portrait OR keyword_set(SEPARATE), /forxxx) |
---|
273 | if keyword_set(CallerWidId) then BEGIN |
---|
274 | widget_control, widget_info(CallerWidId, find_by_uname = 'specifie'), get_value = specifie_value |
---|
275 | widget_control, widget_info(base, find_by_uname = 'specifie'), set_value = specifie_value |
---|
276 | ENDIF |
---|
277 | ;------------------------------------------------------------ |
---|
278 | ; partie graph |
---|
279 | ;------------------------------------------------------------ |
---|
280 | if keyword_set(separate) then $ |
---|
281 | basegraph = widget_base(title = 'xxx window', group_leader = base, uvalue = base) $ |
---|
282 | ELSE basegraph = widget_base(base, /row) |
---|
283 | |
---|
284 | windsize = givewindowsize() |
---|
285 | graphid = widget_draw(basegraph, uname = 'graph' $ |
---|
286 | , uvalue = {name:'graph', press:0, click:0, x:[0., 0.], y:[0., 0.]} $ |
---|
287 | , /button_events, retain = 2 $ |
---|
288 | , xsize=windsize[0], ysize=windsize[1]) |
---|
289 | if keyword_set(separate) then begin |
---|
290 | widget_control,basegraph,/realize |
---|
291 | xmanager,'xxx',basegraph, /no_block |
---|
292 | endif |
---|
293 | ;------------------------------------------------------------ |
---|
294 | ;------------------------------------------------------------ |
---|
295 | ; base3 = widget_base(base, row = 1-key_portrait, column = key_portrait, /align_right) |
---|
296 | ; ;------------------------------------------------------------ |
---|
297 | ; base31 = widget_base(base3, row = 1-key_portrait, column = key_portrait, /align_right, map = 0, uname = 'base ok button') |
---|
298 | ; rien = widget_button(base31, /align_right, value = ' OK ', uvalue = {name:'ok'}, /frame) |
---|
299 | ; rien = cw_to(base3, /frame, row = 1-key_portrait, column = key_portrait) |
---|
300 | ; rien = cw_conclu(base3, /align_right, row = 1-key_portrait, column = key_portrait, /frame) |
---|
301 | ;------------------------------------------------------------ |
---|
302 | ;execution de la fentre de base et des sous-fenetres |
---|
303 | widget_control,base,/realize |
---|
304 | ;------------------------------------------------------------ |
---|
305 | if keyword_set(uvalue) then BEGIN ; |
---|
306 | ; on recopie le pointeur uvalue dans top_uvalue. |
---|
307 | ; Attention, il faut completement redefinir top_uvalue a partir des |
---|
308 | ; variables pointees par uvalue. Sinon si on fait simplement |
---|
309 | ; top_uvalue = uvalue, qd on detruit par uvalue et les variables |
---|
310 | ; surlesquelles il pointe on detruit aussi les variables sur |
---|
311 | ; lesquelles pointent top_uvalue. |
---|
312 | case 1 of |
---|
313 | keyword_set(redraw):BEGIN |
---|
314 | top_uvalue = uvalue |
---|
315 | widget_control, base, set_uvalue = top_uvalue |
---|
316 | ; we find homedir |
---|
317 | homedir = isadirectory(io = homedir, title = 'Bad definition of homedir') |
---|
318 | ; portrait ou landscape ??? |
---|
319 | options = extractatt(top_uvalue, 'options') |
---|
320 | optionsflag = extractatt(top_uvalue, 'optionsflag') |
---|
321 | portrait = (optionsflag[where(options EQ 'Portrait/Landscape'), 0])[0] |
---|
322 | ; on recupere la liste des instructions |
---|
323 | globalcommand = extractatt(top_uvalue, 'globalcommand') |
---|
324 | ; on complete par le premiere et les dernieres lignes du programme |
---|
325 | globalcommand = ['pro xxx2ps, NOERASE = noerase, POSTSCRIPT = postscript, PORTRAIT = portrait, LANDSCAPE = landscape' $ |
---|
326 | , globalcommand $ |
---|
327 | , 'return', 'end'] |
---|
328 | putfile, homedir+'xxx2ps.pro', globalcommand ; on l''ecrit |
---|
329 | resolve_routine, 'xxx2ps' ; on le compile |
---|
330 | xxx2ps, /noerase, portrait = portrait ; on l''applique |
---|
331 | END |
---|
332 | keyword_set(restore):begin |
---|
333 | top_uvalue = uvalue |
---|
334 | widget_control, base, set_uvalue = top_uvalue |
---|
335 | widget_control, graphid,get_value=win |
---|
336 | wshow, win |
---|
337 | wset, win |
---|
338 | tv, image, /true |
---|
339 | ; etat des widgets |
---|
340 | updatewidget, base |
---|
341 | ; menage |
---|
342 | END |
---|
343 | ELSE:BEGIN |
---|
344 | top_uvalue = ptrarr(2, 29, /allocate_heap) |
---|
345 | FOR i = 0, 28 do *top_uvalue[0, i] = *uvalue[0, i] |
---|
346 | FOR i = 0, 14 do *top_uvalue[1, i] = *uvalue[1, i] |
---|
347 | FOR i = 18, 27 do *top_uvalue[1, i] = *uvalue[1, i] |
---|
348 | numfile = n_elements(extractatt(uvalue, 'filelist')) |
---|
349 | *top_uvalue[1, 15] = ptrarr(numfile, /allocate_heap) |
---|
350 | *top_uvalue[1, 16] = ptrarr(numfile, /allocate_heap) |
---|
351 | *top_uvalue[1, 17] = ptrarr(numfile, /allocate_heap) |
---|
352 | for i = 0, numfile-1 do begin |
---|
353 | *(*top_uvalue[1, 15])[i] = *(*uvalue[1, 15])[i] |
---|
354 | *(*top_uvalue[1, 16])[i] = *(*uvalue[1, 16])[i] |
---|
355 | *(*top_uvalue[1, 17])[i] = *(*uvalue[1, 17])[i] |
---|
356 | endfor |
---|
357 | *top_uvalue[1, 28] = ptrarr(nbredessin, /allocate_heap) |
---|
358 | for i = 0, nbredessin-1 do *(*top_uvalue[1, 28])[i] = *(*uvalue[1, 28])[i] |
---|
359 | widget_control, base, set_uvalue = top_uvalue |
---|
360 | ; copie l''ecran du widget de uvalue dans celui de top_uvalue |
---|
361 | if keyword_set(CallerWidId) then begin |
---|
362 | widget_control, extractatt(uvalue, 'graphid'),get_value=win |
---|
363 | wshow, win |
---|
364 | wset, win |
---|
365 | image = tvrd(/true) |
---|
366 | widget_control, graphid,get_value=win |
---|
367 | wshow, win |
---|
368 | wset, win |
---|
369 | tv, image, /true |
---|
370 | ENDIF |
---|
371 | END |
---|
372 | endcase |
---|
373 | *top_uvalue[1, findline(top_uvalue, 'graphid')] = graphid |
---|
374 | ; |
---|
375 | ENDIF ELSE BEGIN |
---|
376 | ; sinon on va definit tous les elements que l''on acroche au widget |
---|
377 | ; grace a la top_uvalue qui est un tableau de pointeurs a 2 colonnes: |
---|
378 | ; les noms et des variables |
---|
379 | ; on initialie tous ces elements. |
---|
380 | ; variables concernant le widget ds sa generalite |
---|
381 | if NOT keyword_set(ex) then ex = {nothing:0} |
---|
382 | ; variables se rapportant aux differents fichiers que l''on peut lire |
---|
383 | ; variables specifiques a chaque dessin |
---|
384 | ; |
---|
385 | types = strarr(nbredessin) |
---|
386 | champs = strarr(2, nbredessin) |
---|
387 | domaines = fltarr(6, nbredessin) |
---|
388 | nameprocedures = strarr(nbredessin) |
---|
389 | dates = lonarr(2, nbredessin) |
---|
390 | prefixes = strarr(nbredessin) |
---|
391 | exextra = ptrarr(nbredessin, /allocate_heap) |
---|
392 | ; creation du pointeur que l''on va attache au widget. |
---|
393 | top_uvalue = ptrarr(2, 29, /allocate_heap) |
---|
394 | ; variables se rapportant au widget en general |
---|
395 | *top_uvalue[0, 0] = 'options' & *top_uvalue[1, 0] = options |
---|
396 | *top_uvalue[0, 1] = 'petitin' & *top_uvalue[1, 1] = petitin |
---|
397 | *top_uvalue[0, 2] = 'petitout' & *top_uvalue[1, 2] = petitout |
---|
398 | *top_uvalue[0, 3] = 'graphid' & *top_uvalue[1, 3] = graphid |
---|
399 | *top_uvalue[0, 4] = 'alreadyvector' & *top_uvalue[1, 4] = -1 |
---|
400 | *top_uvalue[0, 5] = 'alreadyover' & *top_uvalue[1, 5] = -1 |
---|
401 | *top_uvalue[0, 6] = 'alreadyread' & *top_uvalue[1, 6] = -1 |
---|
402 | *top_uvalue[0, 7] = 'currentreadcommand' & *top_uvalue[1, 7] = '' |
---|
403 | *top_uvalue[0, 8] = 'globalcommand' & *top_uvalue[1, 8] = '' |
---|
404 | *top_uvalue[0, 9] = 'globaloldcommand' & *top_uvalue[1, 9] = '' |
---|
405 | *top_uvalue[0, 10] = 'zgrid' & *top_uvalue[1, 10] = zgrid |
---|
406 | *top_uvalue[0, 11] = 'noticebase' & *top_uvalue[1, 11] = 0l |
---|
407 | *top_uvalue[0, 12] = 'extra' & *top_uvalue[1, 12] = ex |
---|
408 | ; variables se rapportant aux differents fichiers que l''on peut lire |
---|
409 | *top_uvalue[0, 13] = 'currentfile' & *top_uvalue[1, 13] = currentfile |
---|
410 | *top_uvalue[0, 14] = 'filelist' & *top_uvalue[1, 14] = filelist |
---|
411 | *top_uvalue[0, 15] = 'fileparameters' & *top_uvalue[1, 15] = fileparameters |
---|
412 | *top_uvalue[0, 16] = 'readparameters' & *top_uvalue[1, 16] = readparameters |
---|
413 | *top_uvalue[0, 17] = 'meshparameters' & *top_uvalue[1, 17] = meshparameters |
---|
414 | ; variables se rapportant aux differents dessins que l''on peut faire |
---|
415 | *top_uvalue[0, 18] = 'penvs' & *top_uvalue[1, 18] = replicate(!p, nbredessin) |
---|
416 | *top_uvalue[0, 19] = 'xenvs' & *top_uvalue[1, 19] = replicate(!x, nbredessin) |
---|
417 | *top_uvalue[0, 20] = 'yenvs' & *top_uvalue[1, 20] = replicate(!y, nbredessin) |
---|
418 | *top_uvalue[0, 21] = 'nameprocedures' & *top_uvalue[1, 21] = nameprocedures |
---|
419 | *top_uvalue[0, 22] = 'types' & *top_uvalue[1, 22] = types |
---|
420 | *top_uvalue[0, 23] = 'champs' & *top_uvalue[1, 23] = champs |
---|
421 | *top_uvalue[0, 24] = 'domaines' & *top_uvalue[1, 24] = domaines |
---|
422 | *top_uvalue[0, 25] = 'dates' & *top_uvalue[1, 25] = dates |
---|
423 | *top_uvalue[0, 26] = 'prefixes' & *top_uvalue[1, 26] = prefixes |
---|
424 | *top_uvalue[0, 27] = 'optionsflag' & *top_uvalue[1, 27] = flag |
---|
425 | *top_uvalue[0, 28] = 'exextra' & *top_uvalue[1, 28] = exextra |
---|
426 | ; |
---|
427 | widget_control, base, set_uvalue = top_uvalue |
---|
428 | createhistory, base, petitin |
---|
429 | ; |
---|
430 | ENDELSE |
---|
431 | ;------------------------------------------------------------ |
---|
432 | xmanager,'xxx',base, /no_block |
---|
433 | ;------------------------------------------------------------ |
---|
434 | ;------------------------------------------------------------ |
---|
435 | return |
---|
436 | end |
---|