
;*******************************************************

FUNCTION CX_CANAUX_GET_VALUE,id,value

stash = WIDGET_INFO ( id , /CHILD )

WIDGET_CONTROL, stash, GET_UVALUE = state;,/NO_COPY
ret = state.value
WIDGET_CONTROL, stash, SET_UVALUE = state;,/NO_COPY
RETURN, ret
END

;*********************************************************

PRO CX_CANAUX_SET_VALUE,id,value

stash = WIDGET_INFO ( id , /CHILD )
WIDGET_CONTROL, stash, GET_UVALUE = state;,/NOCOPY
state.value = value
WIDGET_CONTROL, state.canal_deb, SET_VALUE = state.value(0)
WIDGET_CONTROL, state.canal_fin, SET_VALUE = state.value(1)
WIDGET_CONTROL, stash, SET_UVALUE = state;,/NOCOPY
END

;********************************************************
FUNCTION CX_CANAUX_EVENT,ev

base = ev.handler                         ; we get back useful information 
stash = WIDGET_INFO ( base, /CHILD)       ; stored in the first child of
WIDGET_CONTROL, stash, GET_UVALUE = state;,/NO_COPY 
                                         


IF ( ev.id EQ state.canal_deb ) THEN BEGIN
    WIDGET_CONTROL,state.canal_deb,GET_VALUE=canal_deb
    state.value(0)=canal_deb(0)
ENDIF ELSE BEGIN
    WIDGET_CONTROL,state.canal_fin,GET_VALUE=canal_fin
    state.value(1)=canal_fin(0)
ENDELSE

ret = { CX_CANAUX_EVENT, ID:base, TOP:ev.top, $
        HANDLER:0L, VALUE:state.value }
WIDGET_CONTROL, stash, SET_UVALUE = state;,/NO_COPY

;       We send back an event with the new value
RETURN, ret
END

;********************************************************

;*******************************************************
FUNCTION CX_CANAUX,parent,VALUE=value,UVALUE=uvalue

IF NOT KEYWORD_SET ( uvalue ) THEN uvalue = 0
IF NOT KEYWORD_SET ( value ) THEN value = [-512.,512.]
IF NOT KEYWORD_SET ( frame ) THEN frame = 0

           

base = WIDGET_BASE ( parent,UVALUE=uvalue, $
                     EVENT_FUNC = 'CX_CANAUX_EVENT', $
                     FUNC_GET_VALUE = 'CX_CANAUX_GET_VALUE', $
                     PRO_SET_VALUE = 'CX_CANAUX_SET_VALUE', $
                     /COLUMN,/FRAME)

;label = WIDGET_LABEL(base,VALUE='canaux',XSIZE=12)

base_time = WIDGET_BASE (base,/COLUMN) 

;canal_deb=CW_FIELD(base_time,TITLE = "min : ",/INTEGER,VALUE=value(0) $
canal_deb=CW_FIELD(base_time,TITLE = "min : ",/FLOAT,VALUE=value(0) $
                     ,/RETURN_EVENTS,XSIZE=6)
;canal_fin=CW_FIELD(base_time,TITLE = "max  : ",/INTEGER,VALUE=value(1),$
canal_fin=CW_FIELD(base_time,TITLE = "max  : ",/FLOAT,VALUE=value(1),$
                     /RETURN_EVENTS,XSIZE=6)


;     We store useful information in the state variable to avoid COMMONs.

state = { value : value , canal_deb:canal_deb,  canal_fin:canal_fin }

WIDGET_CONTROL, WIDGET_INFO ( base, /CHILD ), SET_UVALUE = state;,/NO_COPY


RETURN, base      ; A compound widget always return is main base id.
END

