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

Last change on this file since 163 was 163, checked in by navarro, 18 years ago

header improvements : type of parameters and keywords, default values, spell checking + idldoc assistant (IDL online_help)

  • Property svn:keywords set to Id
File size: 4.9 KB
Line 
1;+
2;
3; @todo seb
4;
5;-
6; PRO testwid_event, event
7; ;
8;   compile_opt idl2, strictarrsubs
9; ;
10;    widget_control, event.id, get_uvalue=uval
11;    if n_elements(uval) EQ 0 then return
12;    case uval of
13;       'done':widget_control, event.top, /destroy
14;       'get':BEGIN
15;          id = widget_info(event.top,find_by_uname = 'discret')
16;          widget_control, id, get_value = value1
17;          help, value1
18;          print, 'value1', value1
19;          id = widget_info(event.top,find_by_uname = 'continus')
20;          widget_control, id, get_value = value2
21;          help, value2
22;          print, 'value2', value2
23;       END
24;       ELSE:
25;    endcase
26;    return
27; end
28; PRO testwid, _extra = ex
29; ;
30;   compile_opt idl2, strictarrsubs
31; ;
32;    base=widget_base(/COLUMN)
33;    nothing = widget_label(base, value = 'beginning of the test')
34; ;
35;    nothing = cw_selectinterval(base, 10+indgen(5), _extra = ex, uname = 'discret', uvalue = 'discret')
36;    print, nothing
37;    nothing = cw_selectinterval(base, indgen(20), _extra = ex, uname = 'continus', uvalue = 'continus')
38;    print, nothing
39; ;
40;    nothing = widget_button(base, value = 'get', uvalue = 'get')
41;    nothing = widget_button(base, value = 'done', uvalue = 'done')
42;    widget_control, base, /REALIZE
43;    xmanager,'testwid', base, /no_block
44;    return
45; end
46;--------------------------------------------------------------------------
47;--------------------------------------------------------------------------
48;--------------------------------------------------------------------------
49;+
50; @file_comments
51;
52;
53; @categories
54; Compound widget
55;
56; @param ID
57;
58;
59; @returns
60;
61;
62; @restrictions
63;
64;
65; @examples
66;
67;
68; @history
69;
70;
71; @version
72; $Id$
73;-
74function cw_selectinterval_get_value, id
75;
76  compile_opt idl2, strictarrsubs
77;
78   bgroupid=widget_info(id, find_by_uname = 'bgroup')
79; the widget is a set of button
80   if bgroupid ne 0 then begin
81      widget_control, bgroupid, get_value = selected
82      widget_control, bgroupid, get_uvalue = vecteur
83      vecteur = vecteur.vecteur
84   endif else begin
85; the widget is 2 sliders
86      Minid = Widget_Info(Id, Find_by_uname = 'min')
87      widget_control, minid, get_value = minval
88      minval = minval.value
89      maxid = widget_info(id, find_by_uname = 'max')
90      widget_control, maxid, get_value = maxval
91      maxval = maxval.value
92      widget_control, minid, get_uvalue = vecteur
93      vecteur = vecteur.vecteur
94      selected = where(vecteur ge minval and vecteur le maxval)
95   ENDELSE
96  if selected[0] eq -1 then return, -1 else return, vecteur[selected]
97END
98;--------------------------------------------------------------------------
99;+
100; @file_comments
101;
102;
103; @categories
104; Compound widget
105;
106; @param EVENT
107;
108;
109; @returns
110;
111;
112; @restrictions
113;
114;
115; @examples
116;
117;
118; @history
119;
120;
121; @version
122; $Id$
123;-
124 function cw_selectinterval_event, event
125;
126  compile_opt idl2, strictarrsubs
127;
128   widget_control, event.id, get_uvalue=uval
129   case uval.name of
130      'min':begin               ; change the value if the minimum for the slider called max
131         maxid=widget_info(event.handler, find_by_uname = 'max')
132         widget_control, maxid, set_value={SLIDER_MIN:event.value+1}
133      end
134      'max':begin               ; change the value if the maximum for the slider called min
135         minid=widget_info(event.handler, find_by_uname = 'min')
136         widget_control, minid, set_value={SLIDER_MAX:event.value-1}
137      end
138      'bgroup':
139   endcase
140   return, {ID:event.handler, TOP:event.top, HANDLER:0L}
141END
142
143;--------------------------------------------------------------------------
144;+
145; @file_comments
146;
147;
148; @categories
149; Compound widget
150;
151; @param PARENT
152; The widget ID of the parent widget.
153;
154; @param VECTEUR {type=vector}
155; A vector whose the first element must be the smallest one and the last
156; must be the biggest one.
157;
158; @keyword _EXTRA
159; Used to pass your keywords
160;
161; @returns
162;
163;
164; @restrictions
165;
166;
167; @examples
168;
169;
170; @history
171;
172;
173; @version
174; $Id$
175;-
176function cw_selectinterval, parent, vecteur, _extra = ex
177;
178  compile_opt idl2, strictarrsubs
179;
180
181   base = widget_base(parent $
182                      , EVENT_FUNC = 'cw_selectinterval_event' $
183                      , FUNC_GET_VALUE='cw_selectinterval_get_value' $
184                      , PRO_SET_VALUE='cw_selectinterval_set_value' $
185                      , /ROW, _extra = ex)
186   if n_elements(vecteur) le 10 then begin
187      nothing = CW_BGROUP(base, strtrim(vecteur,1),/nonexclusive,/row, uvalue = {name:'bgroup', vecteur:vecteur}, uname='bgroup')
188      buttvalue=bytarr(n_elements(nothing))
189      buttvalue[0]=1
190      widget_control, nothing, set_value=buttvalue
191   endif else begin
192      min=min(floor(vecteur))
193      max=max(ceil(vecteur))
194      nothing=cw_slider_pm(base, value = min, min=min, max=max-1, uvalue = {name:'min', vecteur:vecteur}, uname='min')
195      nothing=cw_slider_pm(base, value = max, min=min+1, max=max, uvalue = {name:'max'}, uname='max')
196   endelse
197   return, base
198end
Note: See TracBrowser for help on using the repository browser.