source: trunk/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice.pro @ 51

Last change on this file since 51 was 51, checked in by pinsard, 18 years ago

upgrade of COMPOUND_WIDGET according to cerbere.lodyc.jussieu.fr: /usr/home/smasson/SAXO_RD/ : files

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 7.3 KB
Line 
1pro cw_slide_slice_set_value, id, value
2@common
3   topid = findtopid(id)
4   domainid = widget_info(topid, find_by_uname = 'domain')
5   widget_control, domainid, get_value = boxzoom
6   if boxzoom[1]-boxzoom[0] LT boxzoom[3]-boxzoom[2] then type = 'y' ELSE type = 'x'
7   thickid  = widget_info(topid, find_by_uname = 'thickness')
8   widget_control, thickid, get_uvalue = thicknessuval
9   widget_control, thickid, get_value = thickness
10   thickness = thicknessuval.choix[thickness.droplist_select]
11   sliderid = widget_info(topid, find_by_uname = 'slider')
12   if type EQ 'y' then BEGIN
13      mini = floor(min([glamt, glamf], max = maxi))
14      maxi = ceil(maxi)-thickness
15      widget_control, sliderid, set_value = {slider_min:mini, slider_max:maxi, value:boxzoom[0]<maxi}
16      thickness = boxzoom[1]-boxzoom[0]
17   ENDIF ELSE BEGIN
18      mini = floor(min([gphit, gphif], max = maxi))
19      maxi = ceil(maxi)-thickness
20      widget_control, sliderid, set_value = {slider_min:mini, slider_max:maxi, value:boxzoom[2]<maxi}
21      thickness = boxzoom[3]-boxzoom[2]
22   ENDELSE
23   thicknessval = thicknessuval.choix
24   index = where(thicknessval EQ thickness) & index = index[0]
25   if index EQ -1 then BEGIN
26      index = 20
27      thicknessval[20] = strtrim(thickness, 1)
28      widget_control, thickid, set_value = thicknessval
29      widget_control, thickid, set_uvalue ={name:'thickness', choix:thicknessval}
30   endif
31   widget_control, thickid, set_value = {droplist_select:index}
32   return
33end
34;----------------------------------------------------------------------
35FUNCTION cw_slide_slice_event,  event
36@common
37   widget_control, event.id, get_uvalue=uval
38   domainid = widget_info(event.top, find_by_uname = 'domain')
39   thickid  = widget_info(event.handler, find_by_uname = 'thickness')
40   sliderid = widget_info(event.handler, find_by_uname = 'slider')
41;   uniteid  = widget_info(event.handler, find_by_uname = 'unite')
42   widget_control, domainid, get_value = boxzoom
43   if boxzoom[1]-boxzoom[0] LT boxzoom[3]-boxzoom[2] then type = 'y' ELSE type = 'x'
44   widget_control, thickid, get_uvalue = thicknessuval
45   widget_control, thickid, get_value = thickness
46   thickness = thicknessuval.choix[thickness.droplist_select]
47   widget_control, sliderid, get_value = slider & slider = slider.value
48
49   if uval.name EQ 'thickness' then begin
50      if boxzoom[1]-boxzoom[0] LT boxzoom[3]-boxzoom[2] then type = 'y' ELSE type = 'x'
51      if type EQ 'y' then BEGIN
52         mini = floor(min([glamt, glamf], max = maxi))
53         maxi = ceil(maxi)-thickness
54      ENDIF ELSE BEGIN
55         mini = floor(min([gphit, gphif], max = maxi))
56         maxi = ceil(maxi)-thickness
57      ENDELSE
58      slider = slider<maxi
59      widget_control, sliderid, set_value = {slider_min:mini, slider_max:maxi, value:slider}
60   endif
61
62;   widget_control, uniteid, get_value = unite
63;
64;
65;    if uval.name EQ 'unite' then begin
66;       domdef, boxzoom, gridtype = 'T'
67;       if unite EQ 'degre' then BEGIN
68;          if strpos(type,'y') NE -1 then begin
69;             mini = floor(min([glamt, glamf], max = maxi))
70;             maxi = ceil(maxi)
71; print, lon1, mini, maxi
72;             widget_control, sliderid, set_value = {value:lon1, slider_min_max:[mini, maxi]}
73;          ENDIF ELSE BEGIN
74;             mini = floor(min([gphit, glamf], max = maxi))
75;             maxi = ceil(maxi)
76;             widget_control, sliderid, set_value = {value:lat1, slider_min_max:[mini, maxi]}
77;          ENDELSE
78;       ENDIF ELSE BEGIN
79;          if strpos(type,'y') NE -1 then BEGIN
80; print, 'ds if',firstxt, 0, jpi-1
81;             widget_control, sliderid, set_value = {value:firstxt, slider_min_max:[0, jpi-1]}
82;          ENDIF ELSE BEGIN
83;             widget_control, sliderid, set_value = {value:firstyt, slider_min_max:[0, jpj-1]}
84;          ENDELSE
85;       ENDELSE
86;    endif
87;
88;   if unite EQ 'degre' then BEGIN
89   if type EQ 'y' then begin
90      boxzoom[0] = slider &  boxzoom[1] = slider+thickness
91   ENDIF ELSE BEGIN
92      boxzoom[2] = slider &  boxzoom[3] = slider+thickness
93   ENDELSE
94;    ENDIF ELSE BEGIN
95;       if strpos(type,'y') NE -1 then begin
96;          boxzoom[0] = glamt[slider, 0] &  boxzoom[1] = glamf[slider+thickness, 0]
97;       ENDIF ELSE BEGIN
98;          boxzoom[2] = gphit[0, slider] &  boxzoom[3] = gphif[0, slider+thickness]
99;       ENDELSE
100;    ENDELSE
101   widget_control, domainid, set_value = boxzoom
102   return, {CW_SLIDE_SLICE, ID:event.handler, TOP:event.top, HANDLER:0L}
103end
104;--------------------------------------------------------------------------------
105FUNCTION cw_slide_slice, parent, boxzoom = boxzoom, UVALUE = uvalue, UNAME = uname, FRAME = frame, ROW = row, COLUMN = column, _extra = ex
106@common
107;------------------------------------------------
108; cheking exclusive keywords
109   column = keyword_set(column)*(1-keyword_set(row))
110   row = keyword_set(row)*(1-keyword_set(column)) +(keyword_set(row) EQ column)
111   if NOT keyword_set(uvalue) then uvalue = ''
112   if NOT keyword_set(uname) then uname = ''
113;
114   base = widget_base(parent, ROW = row, COLUMN = column  $
115                      , EVENT_FUNC = 'cw_slide_slice_event' $
116                      , FUNC_GET_VALUE='cw_slide_slice_get_value' $
117                      , PRO_SET_VALUE='cw_slide_slice_set_value' $
118                      , ROW = row, COLUMN = column, UVALUE = uvalue, UNAME = uname $
119                      , FRAME = frame, _extra = ex)   
120;------------------------------------------------
121   if NOT keyword_set(boxzoom) then boxzoom = [lon1, lon2, lat1, lat2]
122;    rien = cw_bgroup(base, ['degre', 'points'],/exclusive, /column, uname = 'unite', uvalue = {name:'unite'}, /return_name, set_value = 0, /no_release)
123   thicknessval = indgen(21)+1
124   thicknessval = string(thicknessval)
125   for i = 0, n_elements(thicknessval)-1 do thicknessval[i] = strtrim(thicknessval[i], 1)
126   droplistid = cw_droplist_pm(base, value = thicknessval, uname = 'thickness', uvalue = {name:'thickness', choix:thicknessval})
127;
128   if boxzoom[1]-boxzoom[0] LT boxzoom[3]-boxzoom[2] then type = 'y' ELSE type = 'x'
129   if type EQ 'y' then BEGIN
130      mini = floor(min([glamt, glamf], max = maxi))
131      thickness = boxzoom[1]-boxzoom[0]
132      maxi = ceil(maxi)-thickness
133      rien = cw_slider_pm(base, minimum = mini, maximum = (mini+1) > maxi $
134                          , value = mini > boxzoom[0] < maxi, /column, uname = 'slider' $
135                          , uvalue = {name:'slider'})
136   ENDIF ELSE BEGIN
137      mini = floor(min([gphit, gphif], max = maxi))
138      thickness = boxzoom[3]-boxzoom[2]
139      maxi = ceil(maxi)-thickness
140      rien = cw_slider_pm(base, minimum = mini, maximum =  (mini+1) > maxi $
141                          , value = mini > boxzoom[2] < maxi, /column, uname = 'slider' $
142                          , uvalue = {name:'slider'})
143   ENDELSE
144   index = where(thicknessval EQ thickness) & index = index[0]
145   if index EQ -1 then BEGIN
146      index = 20
147      thicknessval[20] = strtrim(thickness, 1)
148      widget_control, droplistid, set_value = thicknessval
149      widget_control, droplistid, set_uvalue ={name:'thickness', choix:thicknessval}
150   endif
151   widget_control, droplistid, set_value = {droplist_select:index}
152   
153;   if type EQ 'xt' then begin
154;       mini = floor(min([glamt,glamf], max = maxi))
155;       maxi = ceil(maxi)
156;    ENDIF ELSE BEGIN
157;       mini = floor(min([gphit,gphif], max = maxi))
158;       maxi = ceil(maxi)
159;    ENDELSE
160   
161;------------------------------------------------
162   return, base
163end
Note: See TracBrowser for help on using the repository browser.