[49] | 1 | PRO changefile, base, newfilename, BOXZOOM = boxzoom, DATE1 = date1, DATE2 = date2, FIELDNAME = fieldname |
---|
| 2 | ; |
---|
[2] | 3 | widget_control, base, /hourglass |
---|
| 4 | widget_control, base, get_uvalue = top_uvalue |
---|
| 5 | filelist = extractatt(top_uvalue, 'filelist') |
---|
| 6 | newfile = (where(filelist EQ newfilename))[0] |
---|
| 7 | if newfile EQ -1 then begin |
---|
| 8 | nothing, report('invalid filename') |
---|
| 9 | return |
---|
| 10 | endif |
---|
| 11 | listid = widget_info(base, find_by_uname = 'filelist') |
---|
| 12 | widget_control, listid, set_list_select = newfile |
---|
| 13 | oldfile = extractatt(top_uvalue, 'currentfile') |
---|
| 14 | oldfilename = filelist[oldfile] |
---|
| 15 | ; a-t-on reelement change de fichier? |
---|
[49] | 16 | if oldfile EQ newfile AND NOT (keyword_set(BOXZOOM) OR keyword_set(DATE1) OR keyword_set(DATE2) OR keyword_set(FIELDNAME)) then return |
---|
[2] | 17 | ;-------------- |
---|
| 18 | widget_control, base, update = 0 |
---|
| 19 | ;-------------- |
---|
| 20 | ; |
---|
| 21 | ; on update l''element currentfile de la top_uvalue |
---|
| 22 | ; |
---|
| 23 | *top_uvalue[1, findline(top_uvalue, 'currentfile')] = newfile |
---|
| 24 | ; on s''occupe du nom de la variable |
---|
| 25 | oldlistvar = (*(extractatt(top_uvalue, 'fileparameters'))[oldfile]).listvar |
---|
| 26 | newlistvar = (*(extractatt(top_uvalue, 'fileparameters'))[newfile]).listvar |
---|
| 27 | ; |
---|
| 28 | champid = widget_info(base, find_by_uname = 'champ') |
---|
| 29 | oldindexvar = widget_info(champid,/droplist_select) |
---|
| 30 | oldfieldname = oldlistvar[oldindexvar] |
---|
| 31 | ; a-t-on change de liste de variables ? |
---|
| 32 | if n_elements(oldlistvar) NE n_elements(newlistvar) $ |
---|
| 33 | OR total(oldlistvar NE newlistvar) NE 0 THEN $ |
---|
| 34 | widget_control, champid, set_value = newlistvar |
---|
| 35 | ; |
---|
| 36 | if keyword_set(fieldname) then newfieldname = fieldname ELSE newfieldname = oldfieldname |
---|
| 37 | indexvar = where(newlistvar EQ newfieldname) & indexvar = 0 > indexvar[0] |
---|
| 38 | if oldindexvar NE indexvar then widget_control, champid, set_droplist_select = indexvar |
---|
| 39 | newfieldname = newlistvar[indexvar] |
---|
| 40 | ; on a modifiee le nom de la variable? |
---|
| 41 | if newfieldname NE oldfieldname then BEGIN |
---|
[49] | 42 | changefield, base, newfieldname, BOXZOOM = boxzoom |
---|
[2] | 43 | widget_control, champid, set_droplist_select = indexvar |
---|
| 44 | ENDIF |
---|
| 45 | ; |
---|
| 46 | ; on s''occupe du calendrier |
---|
| 47 | ; |
---|
| 48 | oldcalendar = (*(extractatt(top_uvalue, 'fileparameters'))[oldfile]).time_counter |
---|
| 49 | newcalendar = (*(extractatt(top_uvalue, 'fileparameters'))[newfile]).time_counter |
---|
| 50 | ; a-t-on change de calendrier ? |
---|
| 51 | if n_elements(oldcalendar) NE n_elements(newcalendar) $ |
---|
| 52 | OR total(oldcalendar NE newcalendar) NE 0 then begin |
---|
| 53 | ; quelles etaient les dates selectionnees ? |
---|
| 54 | date1id = widget_info(base, find_by_uname = 'calendar1') |
---|
| 55 | if NOT keyword_set(date1) then widget_control, date1id, get_value = date1 |
---|
[49] | 56 | if (where(newcalendar EQ juldate(date1)))[0] EQ -1 then date1 = newcalendar[0] |
---|
[2] | 57 | date2id = widget_info(base, find_by_uname = 'calendar2') |
---|
| 58 | if NOT keyword_set(date2) then widget_control, date2id, get_value = date2 |
---|
[49] | 59 | if (where(newcalendar EQ juldate(date2)))[0] EQ -1 then date2 = date1 |
---|
[2] | 60 | if date2 LT date1 THEN date2 = date1 |
---|
| 61 | widget_control, date1id, /destroy |
---|
| 62 | widget_control, date2id, /destroy |
---|
| 63 | base12 = widget_info(base, find_by_uname = 'base12') |
---|
[49] | 64 | rien = cw_calendar(base12,newcalendar, juldate(date1), uname = 'calendar1' $ |
---|
[2] | 65 | , uvalue = {name:'calendar1'}, /frame) |
---|
[49] | 66 | rien = cw_calendar(base12,newcalendar, juldate(date2), uname = 'calendar2' $ |
---|
[2] | 67 | , uvalue = {name:'calendar2'}, /frame) |
---|
| 68 | ENDIF ELSE BEGIN |
---|
| 69 | if keyword_set(date1) then begin |
---|
| 70 | date1id = widget_info(base, find_by_uname = 'calendar1') |
---|
| 71 | widget_control, date1id, set_value = date1 |
---|
| 72 | endif |
---|
| 73 | if keyword_set(date2) then begin |
---|
| 74 | date2id = widget_info(base, find_by_uname = 'calendar2') |
---|
| 75 | widget_control, date2id, set_value = date2 |
---|
| 76 | endif |
---|
| 77 | ENDELSE |
---|
| 78 | ; |
---|
| 79 | ; parametres de la grille |
---|
| 80 | ; |
---|
| 81 | newgrid = *(extractatt(top_uvalue, 'meshparameters'))[newfile] |
---|
| 82 | change = changegrid(newgrid) |
---|
[49] | 83 | if change OR keyword_set(boxzoom) then BEGIN |
---|
| 84 | if NOT keyword_set(boxzoom) then boxzoom = -1 |
---|
[2] | 85 | domainid = widget_info(base, find_by_uname = 'domain') |
---|
[49] | 86 | widget_control, domainid, set_value = boxzoom |
---|
[2] | 87 | endif |
---|
| 88 | ;-------------- |
---|
| 89 | widget_control, base, update = 1 |
---|
| 90 | ;-------------- |
---|
| 91 | return |
---|
| 92 | end |
---|