source: trunk/WIDGET/COMPOUND_WIDGET/cw_fourparameter.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: 4.6 KB
Line 
1;*********************************************************************************
2FUNCTION 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]])
8end
9;*********************************************************************************
10FUNCTION 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}
50end
51;*********************************************************************************
52FUNCTION 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
105end
Note: See TracBrowser for help on using the repository browser.