
;+ ***********************************************************************
; NAME:
;	NRHRCAL
;
; PURPOSE:
;	Cette procedure contient les widgets pour la calibration des 
;routines NRH
;
; CATEGORY:
;	Routine
;
; CALLING SEQUENCE:
;	NRHRCAL
;
; INPUTS:
;	Non
;
; KEYWORD PARAMETERS:
;	GROUP	Identifieur du widget appelant
;
; MODIFICATION HISTORY:
;	Ecrit par:J Bonmartin le 22/02/01
;-*******************************************************************

PRO NRHRCAL_EVENT, Event

COMMON Com_NRHRCAL, Tab, Calib, Lfreq

WIDGET_CONTROL,Event.top, GET_UVALUE = Str, /NO_COPY
WIDGET_CONTROL, Event.id, GET_UVALUE = Ev

CASE Ev OF
	'Rep':	BEGIN
		Str.Rep = Event.Value
		WIDGET_CONTROL, EVENT.TOP, SET_UVALUE= Str
		END
	'File':	BEGIN
		File= DIALOG_PICKFILE(FILTER='nr*.fts',PATH=Str.rep)
		IF File NE '' THEN BEGIN
			STR.File = File
			HD0 = HEADFITS(Str.File)
			Str.nfr = FXPAR(Hd0, 'NFREQ')
			LFREQ = NRHR_LFREQ(HD0)
			IF N_ELEMENTS(Tab) EQ 0 THEN $
					TAB = FLTARR(4001,Str.Nfr) 
			WIDGET_CONTROL, Str.Idfreq, SET_VALUE=Lfreq
			DATA = MRDFITS(Str.file, 1, HD1,/SILENT,RANGE=[0,1])
				TIME= Data.time
				Str.Hdeb = MSH(Time[0])
			WIDGET_CONTROL, STR.Ideb, SET_VALUE=MSH(data(0).time)
			ENDIF
		WIDGET_CONTROL, EVENT.TOP, SET_UVALUE= Str
		END
	'Hdeb': BEGIN
		Str.Hdeb = Event.value
		WIDGET_CONTROL, EVENT.TOP, SET_UVALUE= Str
		END
	'Time': BEGIN
		Str.duree = Event.value
		WIDGET_CONTROL, EVENT.TOP, SET_UVALUE= Str
		END
	'Calib': BEGIN
		WIDGET_CONTROL, EVENT.TOP, SET_UVALUE= Str
		NRHRCALIBRATION, Str.file, REPERT= Str.rep, HDEB=str.hdeb, $
			DUREE=Str.duree, CALIB=Tab
		END

	'Controle': BEGIN
		WIDGET_CONTROL, EVENT.TOP, SET_UVALUE= Str
		WINDOW, 10, XSIZE=450,YSIZE=320, XPOS=50, YPOS=50
		WINDOW, 11, XSIZE=450,YSIZE=320, XPOS=350, YPOS=50
		WINDOW, 12, XSIZE=450,YSIZE=320, XPOS=50, YPOS=500
		NRHRCALIBRATION, Str.file, REPERT= Str.rep, HDEB=str.hdeb, $
			DUREE=Str.duree, CALIB=Tab, /TEST
		WDELETE,10 & WDELETE,11 & WDELETE,12
		END

	'Freq': BEGIN
		Str.Ifreq= Event.index
		WIDGET_CONTROL, EVENT.TOP, SET_UVALUE= Str
		END

	'Enrg':	BEGIN
		WIDGET_CONTROL, EVENT.TOP, SET_UVALUE= Str
		R=DIALOG_MESSAGE('Enregistrement de "calibration.bin"')
			   OPENW, Unit, Str.Rep+'calibration.bin', $
						/GET_LUN, VAX_FLOAT
			   WRITEU, Unit, Str.Nfr, Tab
			   CLOSE, Unit
			   FREE_LUN, Unit
		END
	'Calcf':BEGIN
		WIDGET_CONTROL, EVENT.TOP, SET_UVALUE= Str
			WINDOW, 10, XSIZE=450,YSIZE=320, XPOS=50, YPOS=50
			WINDOW, 11, XSIZE=450,YSIZE=320, XPOS=350, YPOS=50
			WINDOW, 12, XSIZE=450,YSIZE=320, XPOS=50, YPOS=500
			NRHR_CAL, Str.File, Str.Ifreq, Fcal, $
				TIME_STAR= Tstart, HDEB=Str.Hdeb, /PLOT
			R=DIALOG_MESSAGE('Calibration Aceptee:'+ $
				STRING(Lfreq[Str.Ifreq])+ ' MHz',/QUESTION)
			IF R EQ 'Yes' THEN BEGIN
				Tab[0,Str.Ifreq] = Lfreq[Str.Ifreq]
				Tab[1:4000,Str.Ifreq]= Fcal
			ENDIF
			WDELETE,10 & WDELETE,11 & WDELETE,12
		END

	'Ctrl': BEGIN
		WIDGET_CONTROL, EVENT.TOP, SET_UVALUE= Str
		WINDOW, 13
		NRHR_CTRLCAL, Str.file, HDEB=Str.Hdeb, DUREE= Str.Duree
		WDELETE,13
		END

	'Help':	BEGIN
		PAT = getenv('SSW_NRH')+'/idl/nrh_rout/'
		PAT = ''	;Pour tests
		XDISPLAYFILE, Pat+'hcalrout.txt', GROUP=Event.top
		END

	'Exit': WIDGET_CONTROL,Event.top, /DESTROY

ENDCASE

END

PRO NRHRCAL, GROUP= Group

COMMON Com_NRHRCAL, Tab, Calib, Lfreq

STR= {Str_nrhcal, File:'', Rep:'',Rfile:'', Wfile:'', $
		Ideb:0L, Hdeb:'', Duree:0, Idfreq:0l, Ifreq:0, Nfr:0L}

	Str.Duree = 42
	Str.Ifreq = 0
Sep = '/'
	IF !VERSION.OS_FAMILY EQ 'Windows' THEN Sep= '\' $
	ELSE DEVICE, DECOMPOSED=0, PSEUDO_COLOR=8
	CD, CURRENT= Rep
		Str.Rep = Rep+ Sep


BASE = WIDGET_BASE(GROUP_LEADER=Group, TITLE='CALIBRATION des ROUTINES', $
		/COLUMN, /FRAME)
	B=WIDGET_BUTTON(Base, VALUE='Help',UVALUE='Help')
	B= CW_FIELD( Base, VALUE= Str.rep, UVALUE='Rep', XSIZE=30, $
		TITLE='Repert:',/ALL_EVENTS)
	B=WIDGET_BUTTON( Base, VALUE='Select File', UVALUE = 'File')
	Str.Ideb= CW_FIELD(Base, VALUE= Str.Hdeb, UVALUE= 'Hdeb', $
		/STRING, /ALL_EVENTS,TITLE='BEGIN Time  ',XSIZE=12)
	B= CW_FIELD(Base, VALUE= Str.Duree, UVALUE= 'Time', $
		/INTEGER, /ALL_EVENTS,TITLE='Interval (s)(si =0 ->Fin) ', $
			XSIZE=3)
	Str.Idfreq=WIDGET_DROPLIST( Base, VALUE=  '', UVALUE= 'Freq' , $
		TITLE= 'Frequence:       ', YSIZE=40)

  B1=WIDGET_BASE(Base, ROW = 2, /FRAME, /ALIGN_CENTER, XSIZE=200)
	B = WIDGET_LABEL(B1,VALUE='    Calibration par Frequence',/ALIGN_CENTER)
	B2 = WIDGET_BASE(B1, COLUMN=2, /FRAME, /BASE_ALIGN_CENTER)
	B= WIDGET_BUTTON(B1, VALUE='Calcul', UVALUE = 'Calcf',/ALIGN_CENTER, $
		XSIZE=100)
	B= WIDGET_BUTTON(B1, VALUE='Enregistrement', UVALUE='Enrg')


       b=WIDGET_BUTTON(Base,Value='Calibration Automatique',$
				 Uvalue='Calib')

	B=WIDGET_BUTTON(Base,Value='Calibration avec controle',$
				Uvalue='Controle')

	B=WIDGET_BUTTON(Base,Value='Controle de la calibration', $
				UVALUE='Ctrl')

       b=WIDGET_BUTTON(Base,Value='Exit', Uvalue='Exit')

	WIDGET_CONTROL, Base, SET_UVALUE= STR

widget_control,base,/Realize
Xmanager,'NRHRCAL',Base, /NO_BLOCK

END