source: trunk/WIDGET/COMPOUND_WIDGET/cw_slide_slice.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: 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 = boite
6   if boite[1]-boite[0] LT boite[3]-boite[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, glamu], max = maxi))
14      maxi = ceil(maxi)-thickness
15      widget_control, sliderid, set_value = {slider_min:mini, slider_max:maxi, value:boite[0]<maxi}
16      thickness = boite[1]-boite[0]
17   ENDIF ELSE BEGIN
18      mini = floor(min([gphit, gphiv], max = maxi))
19      maxi = ceil(maxi)-thickness
20      widget_control, sliderid, set_value = {slider_min:mini, slider_max:maxi, value:boite[2]<maxi}
21      thickness = boite[3]-boite[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 = boite
43   if boite[1]-boite[0] LT boite[3]-boite[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 boite[1]-boite[0] LT boite[3]-boite[2] then type = 'y' ELSE type = 'x'
51      if type EQ 'y' then BEGIN
52         mini = floor(min([glamt, glamu], max = maxi))
53         maxi = ceil(maxi)-thickness
54      ENDIF ELSE BEGIN
55         mini = floor(min([gphit, gphiv], 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, boite, grille = 'T'
67;       if unite EQ 'degre' then BEGIN
68;          if strpos(type,'y') NE -1 then begin
69;             mini = floor(min([glamt, glamu], 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, glamv], 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',premierxt, 0, jpi-1
81;             widget_control, sliderid, set_value = {value:premierxt, slider_min_max:[0, jpi-1]}
82;          ENDIF ELSE BEGIN
83;             widget_control, sliderid, set_value = {value:premieryt, 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      boite[0] = slider &  boite[1] = slider+thickness
91   ENDIF ELSE BEGIN
92      boite[2] = slider &  boite[3] = slider+thickness
93   ENDELSE
94;    ENDIF ELSE BEGIN
95;       if strpos(type,'y') NE -1 then begin
96;          boite[0] = glamt[slider, 0] &  boite[1] = glamu[slider+thickness, 0]
97;       ENDIF ELSE BEGIN
98;          boite[2] = gphit[0, slider] &  boite[3] = gphiv[0, slider+thickness]
99;       ENDELSE
100;    ENDELSE
101   widget_control, domainid, set_value = boite
102   return, {CW_SLIDE_SLICE, ID:event.handler, TOP:event.top, HANDLER:0L}
103end
104;--------------------------------------------------------------------------------
105FUNCTION cw_slide_slice, parent, boite = boite, 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(boite) then boite = [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 boite[1]-boite[0] LT boite[3]-boite[2] then type = 'y' ELSE type = 'x'
129   if type EQ 'y' then BEGIN
130      mini = floor(min([glamt, glamu], max = maxi))
131      thickness = boite[1]-boite[0]
132      maxi = ceil(maxi)-thickness
133      rien = cw_slider_pm(base, minimum = mini, maximum = (mini+1) > maxi $
134                          , value = mini > boite[0] < maxi, /column, uname = 'slider' $
135                          , uvalue = {name:'slider'})
136   ENDIF ELSE BEGIN
137      mini = floor(min([gphit, gphiv], max = maxi))
138      thickness = boite[3]-boite[2]
139      maxi = ceil(maxi)-thickness
140      rien = cw_slider_pm(base, minimum = mini, maximum =  (mini+1) > maxi $
141                          , value = mini > boite[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,glamu,glamv], max = maxi))
155;       maxi = ceil(maxi)
156;    ENDIF ELSE BEGIN
157;       mini = floor(min([gphit,gphiu,gphiv], max = maxi))
158;       maxi = ceil(maxi)
159;    ENDELSE
160   
161;------------------------------------------------
162   return, base
163end
Note: See TracBrowser for help on using the repository browser.