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

FUNCTION CX_HEURES_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_HEURES_SET_VALUE,id,value

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

;**********************************************************
FUNCTION CX_HEURES_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.heure_deb ) THEN BEGIN
    WIDGET_CONTROL,state.heure_deb,GET_VALUE=heure_deb
    state.value(0)=heure_deb(0)
ENDIF ELSE BEGIN
    WIDGET_CONTROL,state.heure_fin,GET_VALUE=heure_fin
    state.value(1)=heure_fin(0)
ENDELSE

ret = { CX_HEURES_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

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

; A new kind of compound widget : The HOUR Widget
;     version 1.00 by Rozier de Linage Manuel / efrei.fr

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

IF NOT KEYWORD_SET ( uvalue ) THEN uvalue = 0
IF NOT KEYWORD_SET ( value ) THEN value = ['00:00:00','00:00:00']
IF NOT KEYWORD_SET ( frame ) THEN frame = 0

           

base = WIDGET_BASE ( parent,UVALUE=uvalue, $
                     EVENT_FUNC = 'CX_HEURES_EVENT', $
                     FUNC_GET_VALUE = 'CX_HEURES_GET_VALUE', $
                     PRO_SET_VALUE = 'CX_HEURES_SET_VALUE', $
                     /COLUMN,/FRAME)

base_time = WIDGET_BASE (base,/COLUMN) 

heure_deb=CW_FIELD(base_time,TITLE = "Start : ",/STRING,VALUE=value(0) $
                     ,/RETURN_EVENTS,XSIZE=12)
heure_fin=CW_FIELD(base_time,TITLE = "End   : ",/STRING,VALUE=value(1),$
                     /RETURN_EVENTS,XSIZE=12)





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

state = { value : value , heure_deb:heure_deb,  heure_fin:heure_fin }

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


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

