source: trunk/ToBeReviewed/HOPE/cw_selectinterval.pro @ 53

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

upgrade of ToBeReviewed?/HOPE according to cerbere.lodyc.jussieu.fr: /usr/home/smasson/SAXO_RD/

  • Property svn:executable set to *
File size: 3.9 KB
Line 
1
2PRO testwid_event, event
3   widget_control, event.id, get_uvalue=uval
4   if n_elements(uval) EQ 0 then return
5   case uval of
6      'done':widget_control, event.top, /destroy
7      'get':BEGIN
8         id = widget_info(event.top,find_by_uname = 'discret')
9         widget_control, id, get_value = value1
10         help, value1
11         print, 'value1', value1
12         id = widget_info(event.top,find_by_uname = 'continus')
13         widget_control, id, get_value = value2
14         help, value2
15         print, 'value2', value2
16      END
17      ELSE:
18   endcase
19   return
20end
21PRO testwid, _extra = ex
22   base=widget_base(/COLUMN)
23   nothing = widget_label(base, value = 'beginning of the test')
24;
25   nothing = cw_selectinterval(base, 10+indgen(5), _extra = ex, uname = 'discret', uvalue = 'discret')
26   print, nothing
27   nothing = cw_selectinterval(base, indgen(20), _extra = ex, uname = 'continus', uvalue = 'continus')
28   print, nothing
29;
30   nothing = widget_button(base, value = 'get', uvalue = 'get')
31   nothing = widget_button(base, value = 'done', uvalue = 'done')
32   widget_control, base, /REALIZE
33   xmanager,'testwid', base, /no_block
34   return
35end
36;--------------------------------------------------------------------------
37;--------------------------------------------------------------------------
38;--------------------------------------------------------------------------
39function cw_selectinterval_get_value, id
40   bgroupid=widget_info(id, find_by_uname = 'bgroup')
41; the widget is a set of button
42   if bgroupid ne 0 then begin
43      widget_control, bgroupid, get_value = selected
44      widget_control, bgroupid, get_uvalue = vecteur
45      vecteur = vecteur.vecteur
46   endif else begin
47; the widget is 2 sliders
48      Minid = Widget_Info(Id, Find_by_uname = 'min')
49      widget_control, minid, get_value = minval
50      minval = minval.value
51      maxid = widget_info(id, find_by_uname = 'max')
52      widget_control, maxid, get_value = maxval
53      maxval = maxval.value
54      widget_control, minid, get_uvalue = vecteur
55      vecteur = vecteur.vecteur
56      selected = where(vecteur ge minval and vecteur le maxval)
57   ENDELSE
58  if selected[0] eq -1 then return, -1 else return, vecteur[selected]
59END
60;--------------------------------------------------------------------------
61function cw_selectinterval_event, event
62   widget_control, event.id, get_uvalue=uval
63   case uval.name of
64      'min':begin               ; change the value if the minimum for the slider called max
65         maxid=widget_info(event.handler, find_by_uname = 'max')
66         widget_control, maxid, set_value={SLIDER_MIN:event.value+1}
67      end
68      'max':begin               ; change the value if the maximum for the slider called min
69         minid=widget_info(event.handler, find_by_uname = 'min')
70         widget_control, minid, set_value={SLIDER_MAX:event.value-1}
71      end
72      'bgroup':
73   endcase
74   return, {ID:event.handler, TOP:event.top, HANDLER:0L}
75END
76
77;--------------------------------------------------------------------------
78function cw_selectinterval, parent, vecteur, _extra = ex
79
80   base = widget_base(parent $
81                      , EVENT_FUNC = 'cw_selectinterval_event' $
82                      , FUNC_GET_VALUE='cw_selectinterval_get_value' $
83                      , PRO_SET_VALUE='cw_selectinterval_set_value' $
84                      , /ROW, _extra = ex)
85   if n_elements(vecteur) le 10 then begin
86      nothing = CW_BGROUP(base, strtrim(vecteur,1),/nonexclusive,/row, uvalue = {name:'bgroup', vecteur:vecteur}, uname='bgroup')
87      buttvalue=bytarr(n_elements(nothing))
88      buttvalue[0]=1
89      widget_control, nothing, set_value=buttvalue
90   endif else begin
91      min=min(floor(vecteur))
92      max=max(ceil(vecteur))
93      nothing=cw_slider_pm(base, value = min, min=min, max=max-1, uvalue = {name:'min', vecteur:vecteur}, uname='min')
94      nothing=cw_slider_pm(base, value = max, min=min+1, max=max, uvalue = {name:'max'}, uname='max')
95   endelse
96   return, base
97end
Note: See TracBrowser for help on using the repository browser.