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