1 | PRO changefile, base, newfilename, BOXZOOM = boxzoom, DATE1 = date1, DATE2 = date2, FIELDNAME = fieldname |
---|
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? |
---|
16 | if oldfile EQ newfile AND NOT (keyword_set(BOXZOOM) OR keyword_set(DATE1) OR keyword_set(DATE2) OR keyword_set(FIELDNAME)) then return |
---|
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 |
---|
42 | changefield, base, newfieldname, BOXZOOM = boxzoom |
---|
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 |
---|
56 | if (where(newcalendar EQ juldate(date1)))[0] EQ -1 then date1 = newcalendar[0] |
---|
57 | date2id = widget_info(base, find_by_uname = 'calendar2') |
---|
58 | if NOT keyword_set(date2) then widget_control, date2id, get_value = date2 |
---|
59 | if (where(newcalendar EQ juldate(date2)))[0] EQ -1 then date2 = date1 |
---|
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') |
---|
64 | rien = cw_calendar(base12,newcalendar, juldate(date1), uname = 'calendar1' $ |
---|
65 | , uvalue = {name:'calendar1'}, /frame) |
---|
66 | rien = cw_calendar(base12,newcalendar, juldate(date2), uname = 'calendar2' $ |
---|
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) |
---|
83 | if change OR keyword_set(boxzoom) then BEGIN |
---|
84 | if NOT keyword_set(boxzoom) then boxzoom = -1 |
---|
85 | domainid = widget_info(base, find_by_uname = 'domain') |
---|
86 | widget_control, domainid, set_value = boxzoom |
---|
87 | endif |
---|
88 | ;-------------- |
---|
89 | widget_control, base, update = 1 |
---|
90 | ;-------------- |
---|
91 | return |
---|
92 | end |
---|