source: trunk/SRC/ToBeReviewed/HOPE/cw_selectinterval.pro @ 114

Last change on this file since 114 was 114, checked in by smasson, 18 years ago

new compilation options (compile_opt idl2, strictarrsubs) in each routine

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