source: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefile.pro @ 254

Last change on this file since 254 was 254, checked in by pinsard, 17 years ago

improvements/corrections of some *.pro headers

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 5.1 KB
Line 
1;+
2;
3; @file_comments
4;
5; @categories
6;
7; @param BASE {in}{required}
8; The id of the widget where apply the drawing.
9;
10; @param NEWFILENAME
11;
12; @keyword BOXZOOM
13; Vector indicating the geographic zone on which we want to cut the map.
14; If BOXZOOM has :
15;   1 element : The extraction is made on [lon1, lon2, lat1, lat2, 0.,boxzoom[0]]
16;   2 elements: The extraction is made on [lon1, lon2, lat1, lat2, boxzoom[0],boxzoom[1]]
17;   4 elements: The extraction is made on [Boxzoom, 0, max([gdept, gdepw])]
18;   5 elements: The extraction is made on [Boxzoom[0:3], 0, Boxzoom[4]]
19;   6 elements: The extraction is made on Boxzoom
20; Where lon1, lon2,lat1,lat2 are global variables defined at the last
21; <pro>domdef</pro> !
22;
23; @keyword DATE1
24;
25; @keyword DATE2
26;
27; @keyword FIELDNAME
28;
29; @returns
30;
31; @uses
32;
33; @restrictions
34;
35; @examples
36;
37; @history
38;
39; @version
40; $Id$
41;
42; @todo
43; seb
44;
45;-
46PRO changefile, base, newfilename, BOXZOOM = boxzoom, DATE1 = date1, DATE2 = date2, FIELDNAME = fieldname
47;
48;
49  compile_opt idl2, strictarrsubs
50;
51  widget_control, base, /hourglass
52  widget_control, base, get_uvalue = top_uvalue
53  filelist = extractatt(top_uvalue, 'filelist')
54  IF size(newfilename, /type) EQ 7 THEN newfile = (where(filelist EQ newfilename))[0] $
55  ELSE newfile = newfilename    ; it is already the index of the new file
56  if newfile EQ -1 then begin
57    nothing = report('invalid filename')
58    return
59  endif
60  oldfile = extractatt(top_uvalue, 'currentfile')
61  oldfilename = filelist[oldfile]
62
63; did we really change the file???
64  if oldfile EQ newfile AND NOT (keyword_set(BOXZOOM) OR keyword_set(DATE1) OR keyword_set(DATE2) OR keyword_set(FIELDNAME)) then return
65
66;--------------
67  widget_control, base, update = 0
68;--------------
69;
70; we update currentfile element of the top_uvalue
71;
72  *top_uvalue[1, findline(top_uvalue, 'currentfile')] = newfile
73;
74; Calendar
75;
76  oldcalendar = (*(extractatt(top_uvalue, 'fileparameters'))[oldfile]).time_counter
77  newcalendar = (*(extractatt(top_uvalue, 'fileparameters'))[newfile]).time_counter
78; Did we change the calendar?
79  if array_equal(oldcalendar, newcalendar) NE 1 then begin
80@cm_4cal
81; for key_caltype
82    key_caltype = (*(extractatt(top_uvalue, 'fileparameters'))[newfile]).caltype
83; fake or real calendar???
84    fakecal = (*(extractatt(top_uvalue, 'fileparameters'))[newfile]).fakecal
85; Which dates were selected?
86    date1id = widget_info(base, find_by_uname = 'calendar1')
87    if NOT keyword_set(date1) then widget_control, date1id, get_value = date1
88    jdate1 = date2jul(date1)
89    if (where(newcalendar EQ jdate1))[0] EQ -1 then jdate1 = newcalendar[0]
90    date2id = widget_info(base, find_by_uname = 'calendar2')
91    if NOT keyword_set(date2) then widget_control, date2id, get_value = date2
92    jdate2 = date2jul(date2)
93    if (where(newcalendar EQ jdate2))[0] EQ -1 then jdate2 = date1
94    if jdate2 LT jdate1 THEN jdate2 = jdate1
95    widget_control, date1id, /destroy
96    widget_control, date2id, /destroy
97    basecal = widget_info(base, find_by_uname = 'basecal')
98    rien = cw_calendar(basecal, newcalendar, jdate1, uname = 'calendar1' $
99                       , FAKECAL = fakecal, uvalue = {name:'calendar1'}, /frame)
100    rien = cw_calendar(basecal, newcalendar, jdate2, uname = 'calendar2' $
101                       , FAKECAL = fakecal, uvalue = {name:'calendar2'}, /frame)
102  ENDIF ELSE BEGIN
103    if keyword_set(date1) then begin
104      date1id = widget_info(base, find_by_uname = 'calendar1')
105      widget_control, date1id, set_value = date1
106    endif
107    if keyword_set(date2) then begin
108      date2id = widget_info(base, find_by_uname = 'calendar2')
109      widget_control, date2id, set_value = date2
110    endif
111  ENDELSE
112;
113; Grid parameters and domain
114;
115  newgrid = *(extractatt(top_uvalue, 'meshparameters'))[newfile]
116  change = changegrid(newgrid)
117  if change OR keyword_set(boxzoom) then BEGIN
118    if NOT keyword_set(boxzoom) then boxzoom = -1
119    domainid = widget_info(base, find_by_uname = 'domain')
120    widget_control, domainid, set_value = boxzoom
121  endif
122;
123; file name
124;
125  IF oldfile NE newfile THEN BEGIN
126    flstid = widget_info(base, find_by_uname = 'filelist')
127    widget_control, flstid, set_combobox_select =  newfile
128  ENDIF
129;
130; Variables name
131;
132  vlstid = widget_info(base, find_by_uname = 'varlist')
133  oldfieldname = widget_info(vlstid, /combobox_gettext)
134; did we really change the liste of variables?
135  oldlistvar = (*(extractatt(top_uvalue, 'fileparameters'))[oldfile]).listvar
136  newlistvar = (*(extractatt(top_uvalue, 'fileparameters'))[newfile]).listvar
137  if array_equal(oldlistvar, newlistvar) NE 1 THEN $
138     widget_control, vlstid, set_value = newlistvar
139; set the liste of variables to the new variable name
140  if keyword_set(fieldname) then newfieldname = fieldname ELSE newfieldname = oldfieldname
141  indexvar = where(newlistvar EQ newfieldname) & indexvar = 0 > indexvar[0]
142  widget_control, vlstid, set_combobox_select = indexvar
143  newfieldname = newlistvar[indexvar]
144; did we change the name of the variable?
145  if newfieldname NE oldfieldname then BEGIN
146    changefield, base, newfieldname, BOXZOOM = boxzoom
147  ENDIF
148;
149;--------------
150  widget_control, base, update = 1
151;--------------
152  return
153end
Note: See TracBrowser for help on using the repository browser.