source: trunk/WIDGET/AUTOUR_de_XXX/changefile.pro @ 2

Last change on this file since 2 was 2, checked in by opalod, 22 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 4.1 KB
Line 
1PRO changefile, base, newfilename, BOITE = boite, 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(BOITE) 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, BOITE = boite
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,/vraidate)))[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,/vraidate)))[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,/vraidate), uname = 'calendar1' $
65                         , uvalue = {name:'calendar1'}, /frame)
66      rien = cw_calendar(base12,newcalendar, juldate(date2,/vraidate), 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(boite) then BEGIN
84      if NOT keyword_set(boite) then boite = -1
85      domainid = widget_info(base, find_by_uname = 'domain')
86      widget_control, domainid, set_value = boite
87   endif
88;--------------
89   widget_control, base, update = 1
90;--------------
91   return
92end
Note: See TracBrowser for help on using the repository browser.