1 | ;********************************************************************************* |
---|
2 | FUNCTION cw_fourparameter_get_value, id |
---|
3 | widget_control, widget_info(id, find_by_uname = 'glo'), get_value = glo |
---|
4 | widget_control, widget_info(id, find_by_uname = 'used'), get_value = used |
---|
5 | widget_control, widget_info(id, find_by_uname = 'min'), get_value = min |
---|
6 | widget_control, widget_info(id, find_by_uname = 'max'), get_value = max |
---|
7 | return, fix([glo[0], used[0], min[0], max[0]]) |
---|
8 | end |
---|
9 | ;********************************************************************************* |
---|
10 | FUNCTION cw_fourparameter_event, event |
---|
11 | widget_control, event.id, get_uvalue=uval |
---|
12 | value = cw_fourparameter_get_value(event.handler) |
---|
13 | case uval of |
---|
14 | 'glo': |
---|
15 | 'used':BEGIN |
---|
16 | widget_control, event.id, get_value = used |
---|
17 | value[1] = fix(used[0]) |
---|
18 | if value[1] GT value[0] then begin |
---|
19 | value[1] = value[0] |
---|
20 | widget_control, event.id, set_value = strtrim(value[1], 1) |
---|
21 | value[2] = 0 |
---|
22 | widget_control, widget_info(event.handler, find_by_uname = 'min'), set_value = strtrim(value[2], 1) |
---|
23 | value[3] = value[0]-1 |
---|
24 | widget_control, widget_info(event.handler, find_by_uname = 'max'),set_value=strtrim(value[3], 1) |
---|
25 | ENDIF |
---|
26 | if value[1] GT value[3]-value[2] then begin |
---|
27 | value[2] = 0 |
---|
28 | widget_control, widget_info(event.handler, find_by_uname = 'min'), set_value = strtrim(value[2], 1) |
---|
29 | value[3] = value[1]-1 |
---|
30 | widget_control, widget_info(event.handler, find_by_uname = 'max'),set_value=strtrim(value[3], 1) |
---|
31 | ENDIF |
---|
32 | END |
---|
33 | 'min':BEGIN |
---|
34 | widget_control, event.id, get_value = minv |
---|
35 | value[2] = 0 > fix(minv[0]) < (value[3]-1) |
---|
36 | widget_control, event.id, set_value = strtrim(value[2], 1) |
---|
37 | value[1] = fix(value[3]-value[2]+1) |
---|
38 | widget_control, widget_info(event.handler, find_by_uname = 'used'), set_value = strtrim(value[1], 1) |
---|
39 | END |
---|
40 | 'max':BEGIN |
---|
41 | widget_control, event.id, get_value = maxv |
---|
42 | value[3] = (value[2]+1) > fix(maxv[0]) < (value[0]-1) |
---|
43 | widget_control, event.id, set_value = strtrim(value[3], 1) |
---|
44 | value[1] = fix(value[3]-value[2]+1) |
---|
45 | widget_control, widget_info(event.handler, find_by_uname = 'used'), set_value = strtrim(value[1], 1) |
---|
46 | END |
---|
47 | endcase |
---|
48 | return, {ID:event.handler, TOP:event.top, HANDLER:0L $ |
---|
49 | , VALUE:value} |
---|
50 | end |
---|
51 | ;********************************************************************************* |
---|
52 | FUNCTION cw_fourparameter, parent, xgloin, xin, xminin, xmaxin, direction, type, CLEAR = clear, EDITABLE = editable, UVALUE = uvalue, UNAME = uname |
---|
53 | ; |
---|
54 | @common |
---|
55 | ; |
---|
56 | xglo = xgloin |
---|
57 | x = xin |
---|
58 | xmin = xminin |
---|
59 | xmax = xmaxin |
---|
60 | ; |
---|
61 | if keyword_set(clear) then begin |
---|
62 | x = 0 |
---|
63 | xmin = 0 |
---|
64 | xmax = 0 |
---|
65 | ENDIF |
---|
66 | ; |
---|
67 | if NOT keyword_set(uvalue) then uvalue = '' |
---|
68 | if NOT keyword_set(uname) then uname = '' |
---|
69 | base = widget_base(parent, /column, UVALUE = uvalue, UNAME = uname $ |
---|
70 | , EVENT_FUNC = 'cw_fourparameter_event' $ |
---|
71 | , FUNC_GET_VALUE='cw_fourparameter_get_value' $ |
---|
72 | , PRO_SET_VALUE='cw_fourparameter_set_value' ) |
---|
73 | ; |
---|
74 | ; case type of |
---|
75 | ; 'mesh':nothing = widget_label(base, value = 'parametres de position de la grille par rapport') |
---|
76 | ; 'dta':nothing = widget_label(base, value = 'parametres de position des donnees par rapport') |
---|
77 | ; endcase |
---|
78 | ; nothing = widget_label(base, value = 'au domaine de calcul suivant '+direction) |
---|
79 | baserow = widget_base(base, /row) |
---|
80 | case direction of |
---|
81 | 'x':letter = 'i' |
---|
82 | 'y':letter = 'j' |
---|
83 | 'z':letter = 'k' |
---|
84 | ENDCASE |
---|
85 | case type of |
---|
86 | 'mesh':used = '' |
---|
87 | 'dta':used = 'dta' |
---|
88 | endcase |
---|
89 | ; |
---|
90 | nothing = widget_label(baserow, value = 'jp'+letter+'glo') |
---|
91 | nothing = widget_text(baserow, value = strtrim(xglo, 1), uname = 'glo', uvalue = 'glo', xsize = 4, EDITABLE = editable) |
---|
92 | |
---|
93 | nothing = widget_label(baserow, value = 'jp'+letter+used) |
---|
94 | nothing = widget_text(baserow, value = strtrim(x, 1), uname = 'used', uvalue = 'used', xsize = 4, EDITABLE = editable) |
---|
95 | |
---|
96 | nothing = widget_label(baserow, value = 'i'+direction+'min'+type) |
---|
97 | rien = execute('value = strtrim(i'+direction+'min'+type+'*(1-keyword_set(editable)), 1)') |
---|
98 | nothing = widget_text(baserow, value = strtrim(xmin, 1), uname = 'min', uvalue = 'min', xsize = 4, EDITABLE = editable) |
---|
99 | |
---|
100 | nothing = widget_label(baserow, value = 'i'+direction+'max'+type) |
---|
101 | nothing = widget_text(baserow, value = strtrim(xmax, 1), uname = 'max', uvalue = 'max', xsize = 4, EDITABLE = editable) |
---|
102 | |
---|
103 | |
---|
104 | return, base |
---|
105 | end |
---|