[2] | 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 |
---|