
;+ ***********************************************************************
; NAME:
;	MENUTRACEPROF
;
; PURPOSE:
;	Cette procedure contient les WIDGETS pour le trace des images
;	1 dimension
;	"Button" SCAN du menu principal
;
; CATEGORY:
;	NRH1 Menu
;
; CALLING SEQUENCE:
;	MENUTRACEPROF
;
; INPUTS:
;	Non
;
; KEYWORD PARAMETERS:
;	Non
;
; OUTPUTS:
;	Non
;
; COMMON BLOCKS:
;	NRH1_GLOBAL
;	NRH1_HELIO
;
; MODIFICATION HISTORY: (bonmartin@obspm.fr)
;	16/11/98 adapte du logiciel XHELIO
;	09/04/99 ajout message a la sortie de PROFDECOMP1D (liste positions)
;       31/08/00 ajout possibilite d'ecrire resultats de la decomposition
;                en sources elementaires dans fichier ASCII
;       09/12/02 ajout !p.position=0 avant appel des programmes de trace
;                pour assurer separation trace - texte dans PROF+DECOMP

;-*******************************************************************


PRO MENUTRACEPROF_EVENT, ev

common NRH1_GLOBAL,nomfich,fichinfo
common NRH1_HELIO,mainstruct

stash = WIDGET_INFO ( ev.top, /CHILD )
WIDGET_CONTROL, stash, GET_UVALUE = state


IF (ev.id EQ state.file) THEN BEGIN
   WIDGET_CONTROL, state.file, GET_VALUE = fichier
   err = newlitentete(1,fichier(0),fileinfo)
   IF (err EQ 1) THEN BEGIN
	R = WIDGET_MESSAGE('Read ERROR on file '+ fichier)
   RETURN & END
   hdeb=MSH(fileinfo.heurdeb)
   hfin=MSH(fileinfo.heurfin)
   cnldeb=fix(fileinfo.valorg(0))
   cnlfin=fix( fileinfo.valorg(0) + fileinfo.paspix(0)*fileinfo.nbpix(0) - 1 )

   	   S= STR_SEP(fichier(0), '.')
	   Sz= SIZE(s)
	   IF S(1) EQ 'fts' THEN WIDGET_CONTROL, state.id_ewns, SENSITIVE = 1 $
		ELSE   WIDGET_CONTROL, state.id_ewns, SENSITIVE = 0

   WIDGET_CONTROL, state.canaux, SET_VALUE = [cnldeb,cnlfin]
   WIDGET_CONTROL, state.heures, SET_VALUE = [hdeb,hfin]
   WIDGET_CONTROL, state.maxvalue, SET_VALUE= fileinfo.valmax
   WIDGET_CONTROL, state.minvalue, SET_VALUE= fileinfo.valmin
   WIDGET_CONTROL, state.timestep, SET_VALUE=fileinfo.paspix(1)
   WIDGET_CONTROL, state.txt_heurp, SET_VALUE = hdeb
   WIDGET_CONTROL, state.sli_heurp, SET_SLIDER_MIN =0, $
	SET_SLIDER_MAX = fileinfo.nbpix(1)/fileinfo.facbloc(1)
ENDIF

IF Ev.id EQ State.Id_ewns THEN $
	Mainstruct.array = ev.value

IF ( ev.id EQ state.bgroup_control ) THEN BEGIN 
; ******** update ********* on recupere les variables globales
    IF ( ev.value EQ 0 ) THEN BEGIN
         WIDGET_CONTROL, state.heures, SET_VALUE = mainstruct.heures
         WIDGET_CONTROL, state.canaux, SET_VALUE = mainstruct.canaux
     ENDIF
  ; ******* quit *********

     IF ( ev.value EQ 1 ) THEN BEGIN 
         WIDGET_CONTROL,state.file,GET_VALUE = temp             
         WIDGET_CONTROL, stash, SET_UVALUE = state
         WIDGET_CONTROL, ev.top,/DESTROY   
         RETURN
     ENDIF
    IF ( ev.value EQ 2 ) THEN BEGIN

        WIDGET_CONTROL, state.heures, GET_VALUE = heures
        WIDGET_CONTROL, state.canaux, GET_VALUE = canaux
        WIDGET_CONTROL, state.file, GET_VALUE = fichier

        choix_repres=intarr(4)
        WIDGET_CONTROL,state.bg_repres,GET_VALUE=index_repres
        choix_repres(index_repres)=1
        profil=Choix_repres(0)
	animation=Choix_repres(1)
        serie=Choix_repres(2)
	profildecomp = Choix_repres(3)
	IF(profil EQ 1 OR profildecomp EQ 1) THEN BEGIN
		WIDGET_CONTROL, state.txt_heurp, GET_VALUE = heurp
	ENDIF
        WIDGET_CONTROL,state.bg_qualifiers,GET_VALUE=choix_qualifiers
        polar=Choix_Qualifiers(0)
        intensite=Choix_Qualifiers(1)
        smooth=Choix_Qualifiers(2)

        choix_serie=intarr(3)
        WIDGET_CONTROL,state.bg_serie_prof,GET_VALUE=index_serie
        choix_serie(index_serie)=1

        win=intarr(2)
        hd=hms(heures(0))
        hf=hms(heures(1))

        lun=2
        err = newlec1d(lun,a,sa,FICHIER=fichier(0))
        IF (err EQ 1) THEN BEGIN
		R=WIDGET_MESSAGE('Read Error for '+fichier(0))
	RETURN & END

        IF (smooth EQ 1) THEN BEGIN
           a=SMOOTH(a,5)
        ENDIF
  

       xsize=400
       ysize=400
       IF (profil EQ 1 OR profildecomp EQ 1) THEN BEGIN 
           title='PROFIL'
           xsize=400
           ysize=400
       ENDIF  
       IF (animation EQ 1) THEN title='ANIMATION'
       IF (serie EQ 1) THEN title='SERIE'

       IF ((Choix_serie(0) EQ 1) AND (serie EQ 1)) THEN $
          title=title+' '+'/CLASSIC'
       IF ((Choix_serie(1) EQ 1) AND (serie EQ 1)) THEN $
          title=title+' '+'/SURFACE'
       IF ((Choix_serie(2) EQ 1) AND (serie EQ 1)) THEN $
          title=title+' '+'/SHADE'

       IF (smooth EQ 1) THEN title=title+' '+'/SMOOTHED'

; Trace le contenu du fichier
       IF KEYWORD_SET(noerase) THEN $
          win=CALL_FUNCTION('get_oldwindow',1,4) $
       ELSE $
          win=CALL_FUNCTION('get_window',1,4,TITLE=title)

       !p.position=0
       IF (profil EQ 1) THEN BEGIN
          IF (mainstruct.laser EQ 1) THEN BEGIN
            NRH1_postscript,/on 
    
            prof1d,a,lun, HEURE=heurp(0),CANAUX=canaux,$
                   POLAR=polar,INTENSITE=intensite,$
                   NOERASE=noerase
             NRH1_postscript,/off
          ENDIF
          prof1d,a,lun, HEURE=heurp(0),CANAUX=canaux,$
                 POLAR=polar,INTENSITE=intensite, $
                 NOERASE=noerase        
        ENDIF


	IF (profildecomp EQ 1) THEN BEGIN      
		IF (KEYWORD_SET(intensite)) THEN polar=0
		IF (KEYWORD_SET(polar)) THEN intensite=0
;		WIDGET_CONTROL, state.txt_decomp, GET_VALUE = itype
itype = state.txt_decomp
		fittype = intarr(4) & fittype(itype) = 1
		WIDGET_CONTROL, state.txt_decompcan, GET_VALUE = gliss 
		WIDGET_CONTROL, state.txt_decompsig, GET_VALUE = poids
		WIDGET_CONTROL, state.txt_decompnbr, GET_VALUE = nposmax
		WIDGET_CONTROL, state.txt_asci, GET_VALUE = writeasci
		writeasci=writeasci-1
; AJOUTER INTERRUPTEUR WRITEASCI
		profdecomp1d,a,lun, LASER=mainstruct.laser, $
			gliss, poids, nposmax, $
			HEURE=heurp(0),CANAUX=canaux,$
			POLAR=polar,INTENSITE=intensite,$
			 NOERASE=noerase, WRITEASCI=writeasci, $
			SIMPLE=fittype(0), CONST=fittype(1), $
			DROITE=fittype(2), PARABOLE=fittype(3), MESSAGE=message
		WIDGET_CONTROL, state.txt_message, SET_VALUE=message, /APPEND
        ENDIF


	IF (ANIMATION EQ 1) THEN BEGIN
; lecture de la duree d'arret sur une image
		WIDGET_CONTROL, state.arrimage, GET_VALUE=attente
		IF attente LT 0. THEN BEGIN
			attente = 0.1
			WIDGET_CONTROL, state.arrimage, SET_VALUE=attente
		ENDIF
		animprof,a,lun, HEURES=heures,CANAUX=canaux,$
			POLAR=polar,INTENSITE=intensite, ATTENTE=attente
	ENDIF

        IF (serie EQ 1) THEN BEGIN

       
		IF (KEYWORD_SET(intensite)) THEN polar=0
		IF (KEYWORD_SET(polar)) THEN intensite=0

          WIDGET_CONTROL, state.pas_serie,GET_VALUE=step
          WIDGET_CONTROL, state.rot_ax,GET_VALUE=ax
          WIDGET_CONTROL, state.rot_az,GET_VALUE=az

          classic=Choix_Serie(0)
          Surface=Choix_serie(1)
          Shade=Choix_Serie(2)
          IF (mainstruct.laser EQ 1) THEN BEGIN
             NRH1_postscript,/on
             TraceSerieProf,a,lun,$
                         HEURES=heures,CANAUX=canaux,$
                         STEP=step(0),INTENSITE=intensite,$
                         POLAR=polar,WIN=win,CLASSIC=classic,$
                         SURFACE=surface,SHADE=shade,$
                         AX=ax(0),AZ=az(0)
             NRH1_postscript,/off
           ENDIF
           TraceSerieProf,a,lun,$
                         HEURES=heures,CANAUX=canaux,$
                         STEP=step(0),INTENSITE=intensite,$
                         POLAR=polar,WIN=win,CLASSIC=classic,$
                         SURFACE=surface,SHADE=shade,$
                         AX=ax(0),AZ=az(0)
        ENDIF
        mainstruct.heures=heures
        mainstruct.canaux=canaux
   ENDIF
ENDIF


;------------------------------------------------------
;       Traitement sur le type de visualisation
;       1 Profil, Animation, serie
;------------------------------------------------------
IF ( ev.id EQ state.bg_repres) THEN BEGIN


	IF(ev.value EQ 1 OR ev.value EQ 2) THEN BEGIN
		WIDGET_CONTROL, state.base_time, SENSITIVE = 1
		WIDGET_CONTROL, state.base_heurp, SENSITIVE = 0
		WIDGET_CONTROL, state.arrimage, SENSITIVE = 1
	ENDIF ELSE BEGIN
		WIDGET_CONTROL, state.base_time, SENSITIVE = 0
		WIDGET_CONTROL, state.base_heurp, SENSITIVE = 1
		WIDGET_CONTROL, state.arrimage, SENSITIVE = 0
	ENDELSE
; *** modif klk
	IF(ev.value EQ 3) THEN $
		WIDGET_CONTROL, state.base_decomp,SENSITIVE=1 ELSE $
			WIDGET_CONTROL, state.base_decomp,SENSITIVE=0
; *** fin modif


	IF (ev.value EQ 2) THEN BEGIN
		WIDGET_CONTROL, state.Base_Serie, SENSITIVE=1
	ENDIF ELSE BEGIN
		WIDGET_CONTROL, state.Base_Serie, SENSITIVE=0
	ENDELSE
ENDIF

IF ( ev.id EQ state.bg_qualifiers) THEN BEGIN
    IF (ev.value EQ 3) THEN BEGIN
       WIDGET_CONTROL,state.bg_qualifiers,GET_VALUE=choix_qualifiers
    ENDIF
ENDIF

; *** ajout klk1
IF(ev.id EQ state.bg_heurp OR ev.id EQ state.txt_heurp $
		OR ev.id EQ state.sli_heurp) THEN BEGIN
	WIDGET_CONTROL, state.timestep, GET_VALUE=deltat
	WIDGET_CONTROL, state.heures, GET_VALUE = heures
	hdeb = HMS(heures(0)) & hfin = HMS(heures(1))
	WIDGET_CONTROL, state.txt_heurp, GET_VALUE = heurp
	h = HMS(heurp(0))
	IF(ev.id EQ state.bg_heurp) THEN $
		IF(ev.value EQ 0) THEN h = h + deltat $
			ELSE $
				h = h - deltat
	IF(ev.id EQ state.sli_heurp) THEN $
		h = hdeb + ev.value*deltat

;		Evaluation de l'heure exacte du profil :
	If( h LT hdeb) THEN h = hdeb & IF (h GT hfin) THEN h = hfin
	num = indice(hdeb, h, deltat, heurelue)
	h = heurelue
	heurp(0) = MSH(h)
	WIDGET_CONTROL, state.txt_heurp, SET_VALUE = heurp 
	WIDGET_CONTROL, state.sli_heurp, SET_VALUE = num 
ENDIF

;IF(ev.id EQ state.bg_decomp) THEN BEGIN		; Choix de la fonction ajustee

IF ( ev.id EQ state.bg_decomp) THEN BEGIN ; choix de la fonction a ajuster
    state.txt_decomp = ev.index
ENDIF

; *** fin ajout


IF (ev.id EQ state.zoom) THEN BEGIN
   result=NRH1_getzone()
   IF (N_ELEMENTS(result) LT 1) THEN RETURN
   IF (result(0) LT result(2)) THEN BEGIN
      mainstruct.canaux(0)=result(0)
      mainstruct.canaux(1)=result(2)
   ENDIF ELSE BEGIN
        mainstruct.canaux(0)=result(2)
        mainstruct.canaux(1)=result(0)
   ENDELSE
   WIDGET_CONTROL, state.canaux, SET_VALUE = mainstruct.canaux
ENDIF

IF ( ev.id EQ state.curseur ) THEN BEGIN
	message = "Click on a point of the plot"
	WIDGET_CONTROL, state.txt_message, SET_VALUE=message, /APPEND
	result=NRH1_getzone(SINGLE=1)
	message = "   Channel: " + STRCOMPRESS(STRING(result(0))) + $
		", value: " + STRCOMPRESS(STRING(result(1)))
	WIDGET_CONTROL, state.txt_message, SET_VALUE=message, /APPEND
ENDIF

IF ( ev.id EQ state.heures ) THEN BEGIN
mainstruct.heures = ev.value
ENDIF

IF ( ev.id EQ state.canaux ) THEN BEGIN
mainstruct.canaux = ev.value
ENDIF
  

WIDGET_CONTROL, stash, SET_UVALUE = state
END

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

PRO MENUTRACEPROF

common NRH1_GLOBAL,nomfich,fichinfo
common NRH1_HELIO,mainstruct



;LOADCT,0

Title = "SCAN PLOT parameters"

Choix_Qualifiers = intarr(3)
Choix_Repres = intarr(4)
Choix_Serie = intarr(3)

FOR i = 0, 2 DO Choix_Qualifiers(i) = 0
Choix_Qualifiers(1)=1


Choix_repres(*) = 0
Choix_repres(0)=1

FOR i = 0, 2 DO Choix_Serie(i) = 0
Choix_Serie(0)=1

QUALIFIERS = ['STOKES V','STOKES I', 'SMOOTH']
REPRESENTATION = ['SCAN','ANIMATION','SERIES','SCAN+DECOMP']
SERIE=['SIMPLE','SURFACE','SHADE']

Exclusive = 0

;-----------------------------------------------------------------
;
;		DECLARATION DES BASES
;
;-----------------------------------------------------------------

ISCROLL = 0
DEVICE, GET_SCREEN_SIZE = SCR_SIZE
RETBASE:			;Retour pour  Ascenseur
IF ISCROLL THEN $
    base = WIDGET_BASE (TITLE = title,/FRAME,/COLUMN, XOFFSET = 400,$
       /SCROLL,X_SCROLL_SIZE = Xss,Y_SCROLL_SIZE = Yss ) $
ELSE $
    base = WIDGET_BASE (TITLE = title,/FRAME,/COLUMN, XOFFSET = 400)


base_file = WIDGET_BASE ( base,/COLUMN,/FRAME )
  ;PROFIL, SERIE, ANIMATION
base_info = WIDGET_BASE (base,/ROW)
     base_time = WIDGET_BASE(base_info,/COLUMN,/FRAME)   ; Saisie hdeb, hfin
    base_canal = WIDGET_BASE(base_info,/COLUMN,/FRAME); Saisie canal deb et fin
    zoom = WIDGET_BUTTON(base_info,VALUE='ZOOM')
    curseur = WIDGET_BUTTON(base_info,VALUE='CURSOR')
base_qualifiers = WIDGET_BASE ( base,/ROW,/FRAME )
    base_menu = WIDGET_BASE ( base_qualifiers )
base_param = WIDGET_BASE (base,COLUMN=2)

base_repres=WIDGET_BASE(base,/ROW,/FRAME)    ;controle sur 
                              ;PROFIL, SERIE, ANIMATION, DECOMPOSITION
; *** ajout klk
base_heurp = WIDGET_BASE(base,ROW=2,/FRAME)
                                         ; Choix des heures, profil individuel
base_decomp = WIDGET_BASE(base, /COLUMN, /FRAME)	; modif 9/1/97
; *** fin ajout

base_serie=WIDGET_BASE(base,/COLUMN,/FRAME)
  ;Options pour le trace de series

;-----------------------------
; FIN DE DECLARATION DES BASES
;-----------------------------


fichier=mainstruct.ewfile

file= CW_PICKFILE_NRH(base_file, TITLE = 'Input file:', $
                  VALUE = fichier, FILTER = '*.[e,.n,.f]*')
	EWNS= [0,0]
Id_ewns = CW_BGROUP(base_file,['E-W','N-S'],$
	COLUMN=2, /EXCLUSIVE,SET_VALUE = Mainstruct.array) 

IF NOT KEYWORD_SET ( column  ) THEN column = 2

; Lecture du fichier      

err = newlitentete(1,fichier,fileinfo)
IF err EQ 0 THEN BEGIN
   valmax = fileinfo.valmax
   valmin = fileinfo.valmin
   heure = [MSH(fileinfo.heurdeb),MSH(fileinfo.heurfin)]
   canal = [fix(fileinfo.valorg(0)),$
           fix(fileinfo.valorg(0)+fileinfo.paspix(0)*fileinfo.nbpix(0)-1)]
; *** ajout klk
   deltat = fileinfo.paspix(1)
; *** fin ajout
ENDIF ELSE BEGIN
   valmax = 0
   valmin =0
   canal = [-512,512]
   heure = ['00:00:00','00:00:00']
; *** ajout klk
   deltat = 0
; *** fin ajout
ENDELSE
attente = 0.1

; Parametrage des valeurs maximum a l'affichage

;------------------------------------------------------------------
;		CODE DES CHAMPS DE SAISIE
;------------------------------------------------------------------
maxvalue=CW_FIELD(base_param,TITLE="Max value: ",VALUE = $
         valmax, /LONG, /RETURN_EVENT,XSIZE=12)

timestep = CW_FIELD(base_param, TITLE = 'Delta t [ms] : ', VALUE=deltat, $
	/LONG, /RETURN_EVENT, XSIZE=12)

minvalue=CW_FIELD(base_param,TITLE="min : ",VALUE = $
         valmin,/LONG,/RETURN_EVENT,XSIZE=12)

arrimage  = CW_FIELD(base_param, TITLE = 'Pause [s] : ', VALUE=attente, $
	/FLOATING, /RETURN_EVENT, XSIZE=10)

	;------------------------------------------------------------------
	;Groupe de saisie des horaires de debut et de fin de visualisation
	;------------------------------------------------------------------
heures = CX_HEURES(base_time,VALUE = heure)

	;------------------------------------------------------------------
	;Groupe de saisie des canaux de debut et de fin
	;------------------------------------------------------------------
canaux = CX_CANAUX(base_canal,VALUE=canal)


;---------------------------------------------------------------------
;		CODE POUR LES GROUPES DE BOUTONS
;---------------------------------------------------------------------
IF (exclusive EQ 0) THEN BEGIN
    bg_qualifiers = CW_BGROUP(base_qualifiers,Qualifiers,$
	/ROW, /NONEXCLUSIVE,SET_VALUE = choix_qualifiers) 
ENDIF ELSE BEGIN
    bg_qualifiers = CW_BGROUP(base_qualifiers,Qualifiers,/ROW, $
                      /EXCLUSIVE,/FRAME,SET_VALUE = choix_qualifiers)
ENDELSE

bgroup_control = CW_BGROUP( base, ['UPDATE','QUIT','PLOT'], /ROW,$ 
                                SPACE = 50 )

bg_repres_lab = WIDGET_LABEL(base_repres, VALUE = 'Plot type:')
bg_repres = CW_BGROUP( base_repres,REPRESENTATION,ROW=1,$
                     /EXCLUSIVE,SET_VALUE=0)

base_serie1 = WIDGET_BASE(base_serie, /ROW)
bg_serie_prof_lab = WIDGET_LABEL(base_serie1, VALUE = 'Type of SERIES plot :')
bg_serie_prof = CW_BGROUP(base_serie1,SERIE,ROW=1, $
                    /EXCLUSIVE,SET_VALUE=0)
base_orient=WIDGET_BASE(base_serie, /ROW) 
; Saisie de l'orientation des graphiques 3D
pas_serie=WIDGET_SLIDER(base_serie,MAXIMUM=100,VALUE=10, $
                        TITLE='Plot every n-th scan (option SIMPLE)')

;-----------------------------------------------------------------------
;		FIN DU CODE POUR LES GROUPES DE BOUTONS
;-----------------------------------------------------------------------

base_heurp_lab=WIDGET_LABEL(base_heurp, $
	VALUE='Select individual scan')
bg_heurp = CW_BGROUP(base_heurp, ['next', 'previous'], /ROW)
txt_heurp = CW_FIELD(base_heurp, Title='UT: ', /STRING, $
	VALUE = '00:00:00.000', /RETURN_EVENT, XSIZE = 12)
sli_heurp = WIDGET_SLIDER(base_heurp, Title="Scan number", $
	XSIZE=300, VALUE = 0)

; essai d'une presentation alternative des fcts. d'ajustement 9/1/97
bg_decomplab = WIDGET_LABEL(base_decomp, $
	VALUE = 'Identify localized sources (option DECOMP):')
base_decomppar1 = WIDGET_BASE(base_decomp, /ROW)	; modif 9/1/97
GAUSS = ['Gaussian', 'G + const', 'G + line', $
	'G + parabola']
bg_decomp = WIDGET_LIST(base_decomppar1,VALUE=Gauss, $
	SCR_XSIZE=20*!d.x_ch_size, SCR_YSIZE=8*!d.y_ch_size)
txt_decomp = 0	; defaut: ajustement d'une Gaussienne
base_decomppar2 = WIDGET_BASE(base_decomppar1, row=2)
txt_decompcan = CW_FIELD(base_decomppar2, Title = "Mean [chan]", /COLUMN, $
	/FLOAT, VALUE = 6., /RETURN_EVENT, XSIZE=4)
; *** il faudrait pouvoir indiquer un format ou augmenter XSIZE***

txt_decompsig = CW_FIELD(base_decomppar2, Title = "   Weight   ", /COLUMN, $
	/FLOAT, VALUE = 3., /RETURN_EVENT, XSIZE=12)
txt_decompnbr = CW_FIELD(base_decomppar2, Title = 'Iterations', /COLUMN, $
	 /INTEGER, VALUE = 4, /RETURN_EVENT, XSIZE=3)
txt_asci = CW_SWITCH(base_decomppar2,['  NO ASCII  ', 'WRITE ASCII'],VALUE = 1)
; *** ajout klk

rot_AX=CW_FIELD(base_orient,TITLE='Elevation : ',/INTEGER,VALUE=30,$
                /RETURN_EVENTS,XSIZE=12)
rot_AZ=CW_FIELD(base_orient,TITLE='Azimuth   : ',/INTEGER,VALUE=30,$
                /RETURN_EVENTS,XSIZE=12)

nb = N_ELEMENTS (Qualifiers)

txt_message = WIDGET_TEXT( base, VALUE = ' ', YSIZE=3, /SCROLL)

state = { bg_qualifiers:bg_qualifiers, bgroup_control:bgroup_control, $
          bg_serie_prof:bg_serie_prof,pas_serie:pas_serie,file:file,$
	 zoom:zoom, curseur:curseur, $
; *** ajout JB
	Id_ewns:Id_ewns, $	;pour les fichiers FITS
; *** ajout klk
	base_time:base_time, base_heurp:base_heurp, bg_heurp:bg_heurp, $
	txt_heurp:txt_heurp, timestep:timestep, arrimage:arrimage, $
	sli_heurp:sli_heurp, txt_message:txt_message, $
	base_decomp:base_decomp, bg_decomp:bg_decomp, $
	txt_decompcan:txt_decompcan, txt_decompsig:txt_decompsig, $
	txt_decompnbr:txt_decompnbr, txt_asci:txt_asci, $
txt_decomp:txt_decomp, $
; *** fin ajout
          bg_repres:bg_repres, $
          base_serie:base_serie,$
          rot_ax:rot_ax,rot_az:rot_az,$,
          base_orient:base_orient,$ 
          maxvalue:maxvalue, minvalue:minvalue,$
          heures:heures,canaux:canaux,$
          base_qualifiers:base_qualifiers }


WIDGET_CONTROL, WIDGET_INFO ( base, /CHILD ), SET_UVALUE = state 
WIDGET_CONTROL, base_serie,SENSITIVE=0
WIDGET_CONTROL, base_time,SENSITIVE=0
WIDGET_CONTROL, arrimage, SENSITIVE = 0
WIDGET_CONTROL, base_decomp,SENSITIVE=0
WIDGET_CONTROL, Id_ewns,SENSITIVE=0

WIDGET_CONTROL, base ,/REALIZE,TLB_GET_SIZE = Wid_size

       IF(Wid_size(1) GT  Scr_size(1)*0.9 $
			AND NOT Iscroll ) THEN BEGIN
		WIDGET_CONTROL, Base, /DESTROY
		Iscroll = 1
		XSS = Scr_size(0) * 0.44
		YSS = Scr_size(1) * 0.8
				GOTO, RETBASE
	ENDIF

XMANAGER,'MENUTRACEPROF', base,GROUP_LEADER = mainstruct.root, /NO_BLOCK

END
