
;+ ***********************************************************************
; NAME:
;	MENUSHIFTRH1D
;
; PURPOSE:
;	Cette procedure contient les WIDGETS pour le decallage du centre de 
;	l'image
;	"Button" SHIFT IM du menu principal
;
; CATEGORY:
;	NRH1 Menu
;
; CALLING SEQUENCE:
;	MENUSHIFTRH1D
;
; INPUTS:
;	Non
;
; KEYWORD PARAMETERS:
;	Non
;
; OUTPUTS:
;	Non
;
; COMMON BLOCKS:
;	NRH1_GLOBAL
;	NRH1_HELIO
;
; MODIFICATION HISTORY: (bonmartin@obspm.fr)
;	03/12/98 adapte du logiciel XHELIO
;-*******************************************************************
PRO MENUSHIFTRH1D_EVENT, ev


ON_ERROR,2
common NRH1_GLOBAL,nomfich,fichinfo
common NRH1_HELIO,mainstruct

; on charge les variables locales a isophote
stash = WIDGET_INFO ( ev.top, /CHILD )
WIDGET_CONTROL, stash, GET_UVALUE = state



; ***** Lecture du fichier d'images *****

IF (ev.id EQ state.infiles) THEN BEGIN
	WIDGET_CONTROL, state.infiles, GET_VALUE = fichier
	err = newlitentete(1,fichier,file)
	IF (err EQ 1) THEN RETURN
;*** Nom du fichier de sortie a partir du nom du fichier d'entree
	nslash = RSTRPOS(fichier,'/')
	outfich = STRMID(fichier, 0, nslash) + '/shf_'  + $
		 STRMID(fichier, nslash+1, STRLEN(fichier)-nslash)

; Modification pour fichier images FITS
		S= STR_SEP(Outfich, '.')
		Sz= SIZE(s)
		IF S(1) EQ 'fts' THEN $
 		    IF Mainstruct.array EQ 0 THEN Outfich = S(0)+'.sew'$
			ELSE Outfich = S(0)+'.sns'

	WIDGET_CONTROL, state.outfiles, SET_VALUE = outfich
	WIDGET_CONTROL, state.origin, SET_VALUE = file.valorg(0)
	ftest=FINDFILE (outfich, COUNT=nfs)
	IF nfs NE 0 THEN BEGIN
	message=["Output file already exists: " + outfich + ".", $
		"Change name(s) if you don't want to overwrite it."]
	txt = WIDGET_MESSAGE(message, /INFORMATION, TITLE = 'Output file')
	ENDIF
ENDIF

; Pour les fichiers FITS choix EW NS
IF Ev.id EQ State.Id_ewns THEN $
	Mainstruct.array = ev.value

;-----------------------------------------------------------------------------
; ***** Action demandee par bouton de controle *****

IF ( ev.id EQ state.bgroup_control ) THEN BEGIN
  ; ******* quit *********
     IF ( ev.value EQ 0 ) THEN BEGIN
         WIDGET_CONTROL, stash, SET_UVALUE = state
         WIDGET_CONTROL, ev.top,/DESTROY
         RETURN
     ENDIF
  ; ******* decalage du canal d'origine *********
    IF ( ev.value EQ 1 ) THEN BEGIN
      ; *******   On recupere  toutes les valeurs des widgets *********

        WIDGET_CONTROL,state.origin, GET_value = origin
        WIDGET_CONTROL, state.infiles, GET_VALUE = fichier      
	WIDGET_CONTROL, state.outfiles, GET_VALUE = outfich
	shiftrh1d, fichier, outfich, origin, message
	WIDGET_CONTROL, state.txt_message, SET_VALUE=message, /APPEND
    ENDIF
ENDIF

; ---------------------------------------------------------------------------

; on sauve les modifications
WIDGET_CONTROL, stash, SET_UVALUE = state
END




PRO MENUSHIFTRH1D
;          
;                             les variables globales (mainstruct)
;          Utilisations des fenetres 5,6,7,8 pour les affichages 
;          (mainstruct.windows(5:8))

common NRH1_HELIO,mainstruct

Title = "SHIFT ORIGIN"
;         initialisation du button group
;loadct,12
base = WIDGET_BASE (TITLE = title,/FRAME,/COLUMN, XOFFSET = 200,$
                                                  YOFFSET = 200 )
base_file = WIDGET_BASE ( base,/COLUMN,/FRAME )
base_param = WIDGET_BASE (base,COLUMN=2,/FRAME )

infich=mainstruct.ewfile
infiles= CW_pickfile_nrh(base_file, TITLE = '1D images (input) :', $
              VALUE = infich,FILTER = '*.[e,.n,.f]*')
Id_ewns = CW_BGROUP(base_file,['E-W','N-S'],$
	COLUMN=2, /EXCLUSIVE,SET_VALUE = Mainstruct.array) 

pos = RSTRPOS(infich, '/')
len = STRLEN(infich)
outfich = STRMID(infich, 0, pos+1) + 'shf_' + STRMID(infich, pos+1, len-pos)
outfiles= CW_pickfile_nrh(base_file, TITLE = '1D images (output):', $
	VALUE = outfich)

; Lecture de l'entete du fichier
; Affichage de l'origine (=canal minimum)
err = newlitentete(1,infich,file)
IF err EQ 0 THEN origin=file.valorg(0) ELSE origin=0
origin = CW_FIELD(base_param, TITLE="New origin : ",VALUE=origin, $
                 /FLOAT,/RETURN_EVENT,XSIZE=8)

bgroup_control = CW_BGROUP ( base, ['QUIT','GO'], /ROW)
txt_message = WIDGET_TEXT( base, VALUE = ' ', YSIZE=3, /SCROLL)

state = { $
        bgroup_control:bgroup_control , $
	infiles:infiles, outfiles:outfiles, $
	txt_message:txt_message, $
	origin:origin, Id_ewns: Id_ewns $
	}

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

WIDGET_CONTROL, base ,/REALIZE

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

END


 

