;+ *************************************************************************************
; NAME:
;	CW_POS
;
; PURPOSE:
;	Widget principale pour le recherche de positions dans un fichier d'images
;	RH_2D
;
; CATEGORY:
;	RH_2D, recherche de positions
;
; CALLING SEQUENCE:
;	cw_pos, GROUP=Group
;	
; KEYWORD PARAMETERS:
;	GROUP:	Identificateur de la wideget appelante
;
; COMMON BLOCKS:
;	VISU_2D,str_visu
;	FICRH,str_fic
;	INFO2D, str_inf2d
;	LIMIT,str_lim
;	Communs pour la recherche de position:
;	DATAPOSI, fitsposi
;	OPTPOSI, str_opt
;
; MODIFICATION HISTORY:
;
; 	Written by:	C. Renié, 12/1997 (christian.renie@obspm.fr)
;	mars, 1998	Activation du menu 'Options'
;			Recherche sur une region
;			Utilisation des COMMON generaux
;	jul,1999	Refonte GUI, utilisation de read_nrhim, selection temps
;	Le 13/09/00	Rajout BUFSIZE=0 pour OPENR
;	Le 28/06/01	Entrer par DIALOG_PICKFILE pour PLOT(JB)
;			Suprimer la lecture de fichier a l'entree
;- *************************************************************************************

PRO PDMENU4_Event, Event

COMMON VISU_2D,str_visu
COMMON FICRH,str_fic
COMMON INFO2D, str_inf2d
COMMON LIMIT,str_lim

COMMON DATAPOSI, fitsposi
COMMON OPTPOSI, str_opt
COMMON field, FIELD87, FIELD91, FIELD98, FIELD99, FIELD101, TEXT112, FIELD74, FIELD75, $
FIELD80, FIELD82
COMMON IDCW_cw_pos, Id_WInf, Id_WDRAW1, Id_WDRAW2, Id_WDRAW3

  sortie = 'No'
  fichcent = 'centres.dat'
  fichposi = 'positions.dat'
  fitstemp = 'positions.fts'
  ;helpfile = '/disque1/user/dirhelio/nrhsw/nrhidl/sswnrh/radio/nrh/2dnrh/position/rh_pos_hlp.txt'

  CASE Event.Value OF 

  'File.Open NRH Images file...': BEGIN		; ouverture d'un fichier d'images
	; propose une sauvegarde du travail effectue
	IF (FINDFILE(fitstemp))(0) EQ fitstemp THEN BEGIN
		mess = 'Would you like to save your work before loading a new images file?'
		rep = DIALOG_MESSAGE(mess, /QUESTION)
		IF rep EQ 'Yes' THEN t=MKFILEPOS(fitstemp, str_fic.file, str_lim.Hd) 
	ENDIF
	WIDGET_CONTROL, TEXT112, SET_VALUE= ' '
	fichtemp = str_fic.file
	; ferme le fichier precedent
	IF (FINDFILE(fichtemp))(0) EQ fichtemp THEN NRH_FCLOSE, str_inf2d
	NRH_PICKFILE, str_fic, str_inf2d, str_lim, physpar, lfreq
	IF str_fic.file NE fichtemp THEN BEGIN
	WSET, Id_WDRAW1
	ERASE
	WSET, Id_WDRAW2
	ERASE
	WIDGET_CONTROL, TEXT112, SET_VALUE= 'Loading data ...'
  	WIDGET_CONTROL, /HOURGLASS
	; mise a jour de la partie informative de la widget 
	READ_NRHIM, str_fic.file, str_inf2d.Hd, str_inf2d, DONNEE, str_im, $
			STOKES = Str_visu.polar 
	Id_WInf = cw_infonrh(Id_WInf, str_inf2d, /INFO)
	nrh_image, DONNEE, str_im, str_lim, str_visu, 'I', IDWIN=Id_WDRAW3
  	WIDGET_CONTROL, TEXT112, SET_VALUE= 'Ok'
	WIDGET_CONTROL, TEXT112, SET_VALUE= 'Select an interval and then Tools/Scan and sort'
	WIDGET_CONTROL, FIELD87, SET_VALUE=str_inf2d.Hd
  	WIDGET_CONTROL, FIELD91, SET_VALUE=str_inf2d.Hf
  	WIDGET_CONTROL, FIELD99, SET_VALUE=str_inf2d.nim
	WIDGET_CONTROL, FIELD98, SET_VALUE=0
	WIDGET_CONTROL, FIELD101, SET_VALUE=0
	
	delfpos, fichcent, fichposi, fitstemp
	fitsposi = ''
	ENDIF
    	END
  'File.Open NRH Sources file...': BEGIN	; ouverture d'un fichier de positions
	; propose une sauvegarde du travail effectue
	IF (FINDFILE(fitstemp))(0) EQ fitstemp THEN BEGIN
		mess = 'Would you like to save your work before loading a new images file?'
		rep = DIALOG_MESSAGE(mess, /QUESTION)
		IF rep EQ 'Yes' THEN t=MKFILEPOS(fitstemp, str_fic.file, str_lim.Hd)
	ENDIF
	; ferme le fichier images precedent
	IF (FINDFILE(str_fic.file))(0) EQ str_fic.file THEN NRH_FCLOSE, str_inf2d
	WIDGET_CONTROL, TEXT112, SET_VALUE= ' '
	fichtemp = DIALOG_PICKFILE(FILTER = '****_s*.fts')
	IF fichtemp NE '' THEN BEGIN
	fitsposi = fichtemp
	; recupere dans le header primaire le nom du fichier d'images associees
	hprim = HEADFITS(fitsposi)
	str_fic.file = FXPAR(hprim, 'FILEIMG')
	IF (FINDFILE(str_fic.file))(0) NE str_fic.file THEN BEGIN
		mess = 'ERROR: images file not found'
		WIDGET_CONTROL, TEXT112, SET_VALUE=mess
		fitsposi = '' & str_fic.file = ''
	ENDIF ELSE BEGIN
		; mise a jour de la fenetre INFO 
		; necessaire pour mettre à jour les structures
		NRH_FOPEN, str_fic.file, str_inf2d, str_lim, Physpar, Lfreq 
		READ_NRHIM, str_fic.file, str_inf2d.Hd, str_inf2d, DONNEE, str_im, $
			STOKES = str_visu.polar 
		Id_WInf = cw_infonrh(Id_WInf, str_inf2d, /INFO)
		hprim = HEADFITS(fitsposi)
		nbposi = FXPAR(hprim, 'N_EXTEND')
		tempsdeb = LONARR(nbposi)
		tempsfin = LONARR(nbposi)
		nbsource = 0
		FOR i=0, nbposi-1 DO BEGIN
			hext = HEADFITS(fitsposi, EXTEN=i+1)
			nbhits = FXPAR(hext, 'NAXIS1')/(FXPAR(hext, 'TFIELDS')*4)
			nbsource = nbsource + nbhits
			tempsdeb(i) = HMS(FXPAR(hext, 'TIM_STR'))
			tempsfin(i) = HMS(FXPAR(hext, 'TIM_END'))
		ENDFOR
		str_inf2d.Hd = MSH(MIN(tempsdeb))
		str_inf2d.Hf = MSH(MAX(tempsfin))
		WSET, Id_WDRAW1 & ERASE
		WSET, Id_WDRAW2 & ERASE
		nrh_image, DONNEE, str_im, str_lim, str_visu, 'I', IDWIN=Id_WDRAW3
		plot_sources, fitsposi, IDWIN=Id_WDRAW1
		plot_maxpos, fitsposi, str_fic.file, IDWIN=Id_WDRAW2
		WIDGET_CONTROL, FIELD87, SET_VALUE=str_inf2d.Hd
  		WIDGET_CONTROL, FIELD91, SET_VALUE=str_inf2d.Hf
		WIDGET_CONTROL, FIELD98, SET_VALUE=nbsource
		WIDGET_CONTROL, FIELD99, SET_VALUE=str_inf2d.nim
		WIDGET_CONTROL, FIELD101, SET_VALUE=nbposi
	ENDELSE
	; efface les fichiers de recherche de positions
	delfpos, fichcent, fichposi, fitstemp
	ENDIF
	END
  'File.Save...': BEGIN
	IF (FINDFILE(fitstemp))(0) EQ fitstemp THEN BEGIN
		WIDGET_CONTROL, TEXT112, SET_VALUE= 'Saving ...'
		fitsposi = MKFILEPOS(fitstemp, str_fic.file, str_lim.Hd)
		RET=DIALOG_MESSAGE('SAVED on file: '+fitsposi)
		IF (FINDFILE(fitsposi))(0) EQ fitsposi THEN BEGIN
			delfpos, fichcent, fichposi, fitstemp
			WIDGET_CONTROL, TEXT112, SET_VALUE= 'Saving done'
		ENDIF ELSE WIDGET_CONTROL, TEXT112, SET_VALUE= 'No Save' 
	ENDIF ELSE WIDGET_CONTROL, TEXT112, SET_VALUE= 'Nothing to save !!!' 	
    END
  'File.Quit': BEGIN
    	sortie = 'Yes'
	WHILE !D.WINDOW NE -1 DO WDELETE, !D.WINDOW
	tabimg = 0
	; propose une sauvegarde du travail effectue
	IF (FINDFILE(fitstemp))(0) EQ fitstemp THEN BEGIN
		mess = 'Would you like to save your work before ?'
		rep = DIALOG_MESSAGE(mess, /QUESTION)
		IF rep EQ 'Yes' THEN t=MKFILEPOS(fitstemp, str_fic.file, str_lim.Hd)
	ENDIF
	delfpos, fichcent, fichposi, fitstemp
    	END
  'View.Global': BEGIN
	WIDGET_CONTROL, TEXT112, SET_VALUE= ' '
	fich = ''
	IF (FINDFILE(fitstemp))(0) EQ fitstemp THEN fich = fitstemp
	IF fitsposi NE '' THEN fich = fitsposi
	mess = 'ERROR: no data position'
	IF fich EQ '' THEN WIDGET_CONTROL, TEXT112, SET_VALUE=mess $
	ELSE BEGIN
		plot_sources, fich, IDWIN=Id_WDRAW1
		plot_maxpos, fich, str_fic.file, IDWIN=Id_WDRAW2
	ENDELSE
    	END
  'View.Plot': BEGIN
	WIDGET_CONTROL, TEXT112, SET_VALUE= ' '
	fich = ''
	IF (FINDFILE(fitstemp))(0) EQ fitstemp THEN fich = fitstemp
	IF fitsposi NE '' THEN fich = fitsposi
	center_nrh2, fich, group=Event.Top
    	END
  'View.Browse': BEGIN
	WIDGET_CONTROL, TEXT112, SET_VALUE= ' '
	fich = ''
	IF (FINDFILE(fitstemp))(0) EQ fitstemp THEN fich = fitstemp
	IF fitsposi NE '' THEN fich = fitsposi
	mess = 'ERROR: no data position'
	IF fich EQ '' THEN WIDGET_CONTROL, TEXT112, SET_VALUE=mess $
	ELSE cw_brwresult1, fich, GROUP=Event.Top
    	END
  'View.Resume': BEGIN
	WIDGET_CONTROL, TEXT112, SET_VALUE= ' '
	fich = ''
	IF (FINDFILE(fitstemp))(0) EQ fitstemp THEN fich = fitstemp
	IF fitsposi NE '' THEN fich = fitsposi
	mess = 'ERROR: no data position'
	IF fich EQ '' THEN WIDGET_CONTROL, TEXT112, SET_VALUE=mess $
	ELSE BEGIN 
		mk_resume, fich, str_inf2d
		XDISPLAYFILE, 'resume.txt', TITLE='Resume', GROUP=Event.Top
		;mk_filepostxt, fich
		;mk_filepostxt, fich, FORMAT='o'
	ENDELSE
    	END
  'Tools.Manual scan' : BEGIN
	WIDGET_CONTROL, TEXT112, SET_VALUE= ' '
	mess = 'ERROR: No images file loaded'
	IF str_fic.file EQ '' THEN WIDGET_CONTROL, TEXT112, SET_VALUE=mess $
	ELSE cw_scansource, str_fic.file, 0
	END
  'Tools.Options...': BEGIN
	WIDGET_CONTROL, TEXT112, SET_VALUE= ' '
	cw_optpos, GROUP=Event.Top
    	END

  'Plot': BEGIN
	WIDGET_CONTROL, TEXT112, SET_VALUE= ' '
	fich = ''
	IF (FINDFILE(fitstemp))(0) EQ fitstemp THEN fich = fitstemp
	IF fitsposi NE '' THEN fich = fitsposi
	If fich eq '' THEN $
		Fich=DIALOG_PICKFILE(PATH=Str_Fic.Rep, FILTER='*s*.fts')
	IF Fich EQ '' THEN RETURN
	center_nrh2, fich, group=Event.Top
    	END

  'Help': BEGIN
	CW_POS_HLP
	;XDISPLAYFILE, helpfile, TITLE='Help', GROUP=Event.Top
	END
   ELSE: BEGIN
	WIDGET_CONTROL, TEXT112, SET_VALUE= ' '
	mess = 'ERROR: No images file loaded'
	IF str_fic.file EQ '' THEN WIDGET_CONTROL, TEXT112, SET_VALUE=mess $
	ELSE BEGIN
	IF (Event.Value EQ 'Tools.Scan centers') OR (Event.Value EQ 'Tools.Scan and sort') THEN BEGIN
		delfpos, fichcent, fichposi, fitstemp
		WIDGET_CONTROL, /HOURGLASS
		WIDGET_CONTROL, TEXT112, SET_VALUE= 'Scanning centers, please wait...'
		scan_sources, str_fic.file, fichcent, str_inf2d
		; compte le nombre de sources trouvees lors du scanning des images
		t = {temps:0L, numpos:0.0, source:{GAUSS}} & nbcentre=0
		OPENR, filetmp, fichcent, /GET_LUN, BUFSIZE=0
		WHILE (NOT EOF(filetmp)) DO BEGIN 
			READU, filetmp, t
			nbcentre = nbcentre + 1
		ENDWHILE
		FREE_LUN, filetmp

		WIDGET_CONTROL, TEXT112, SET_VALUE= 'Scanning done'
		WIDGET_CONTROL, FIELD98, SET_VALUE=nbcentre
	ENDIF
	IF (Event.Value EQ 'Tools.Sort in Sources') OR (Event.Value EQ 'Tools.Scan and sort') THEN BEGIN
		IF (FINDFILE(fichcent))(0) NE fichcent THEN $
			WIDGET_CONTROL, TEXT112, SET_VALUE= 'ERROR: No center to sort!' $
		ELSE BEGIN
		WIDGET_CONTROL, /HOURGLASS
		WIDGET_CONTROL, TEXT112, SET_VALUE= 'Sorting centers in sources, please wait...'
		tri_centres, fichcent, fichposi, nbposi, nbmaxhit
		; transforme le fichier position en fits temporaire
		POSTOFITS, fichposi, fitstemp, str_fic.file, nbposi, 3, str_inf2d
print,str_fic.file
		hprim = HEADFITS(fitstemp)
		nbposi = FXPAR(hprim, 'N_EXTEND')		
		WIDGET_CONTROL, FIELD101, SET_VALUE=nbposi
		WIDGET_CONTROL, TEXT112, SET_VALUE= 'Sorting done'
		WSET, Id_WDRAW1 & ERASE
		WSET, Id_WDRAW2 & ERASE
		plot_sources, fitstemp, IDWIN=Id_WDRAW1
		plot_maxpos, fitstemp, str_fic.file, IDWIN=Id_WDRAW2
		ENDELSE
	ENDIF
	ENDELSE 
	END
  ENDCASE
  
  IF sortie EQ 'Yes' THEN WIDGET_CONTROL, Event.Top, /DESTROY
  
END

PRO MAIN13_Event, Event
COMMON FICRH,str_fic
COMMON LIMIT,str_lim
COMMON VISU_2D,str_visu
COMMON INFO2D, str_inf2d
COMMON field, FIELD87, FIELD91, FIELD98, FIELD99, FIELD101, TEXT112, FIELD74, FIELD75, $
FIELD80, FIELD82
COMMON IDCW_cw_pos, Id_WInf, Id_WDRAW1, Id_WDRAW2, Id_WDRAW3

  WIDGET_CONTROL,Event.Id,GET_UVALUE=Ev

  CASE Ev OF 

  ; Event for Menu
  'MENU': BEGIN
	PDMENU4_Event, Event
	END
  'BUTTON35': BEGIN
  	READ_NRHIM, str_fic.file, str_lim.hd, str_inf2d,  DONNEE, str_im, $
			STOKES = Str_visu.polar
	cw_selfield, DONNEE, str_im, str_lim, GROUP=event.top
	WSET, Id_WDRAW3 & ERASE
	nrh_image, DONNEE, str_im, str_lim, str_visu, 'I', IDWIN=Id_WDRAW3
	END
  'BUTSTIME': BEGIN	; changement des heures limites
	temp = seltime(str_lim.Hd, str_lim.Hf, GROUP=event.top)
	IF HMS(temp(0)) LT HMS(str_inf2d.Hd) THEN str_lim.Hd = str_inf2d.Hd $
	ELSE str_lim.Hd = temp(0)
	IF HMS(temp(1)) GT HMS(str_inf2d.Hf) THEN str_lim.Hf = str_inf2d.Hf $
	ELSE str_lim.Hf = temp(1)
	nbimg = TIME_IND_NRH(str_fic.file, str_lim.Hf)-TIME_IND_NRH(str_fic.file, str_lim.Hd)+1
	WIDGET_CONTROL, FIELD87, SET_VALUE=str_lim.Hd
  	WIDGET_CONTROL, FIELD91, SET_VALUE=str_lim.Hf
	WIDGET_CONTROL, FIELD99, SET_VALUE=nbimg
	READ_NRHIM, str_fic.file, str_lim.Hd, str_inf2d, DONNEE, str_im, $
			STOKES = Str_visu.polar 
	WSET, Id_WDRAW3 & ERASE
	nrh_image, DONNEE, str_im, str_lim, str_visu, 'I', IDWIN=Id_WDRAW3
	END
  ENDCASE
END

PRO cw_pos, GROUP=Group

COMMON VISU_2D,str_visu
COMMON FICRH,str_fic
COMMON INFO2D, str_inf2d
COMMON LIMIT,str_lim
	
COMMON DATAPOSI, fitsposi
COMMON OPTPOSI, str_opt
COMMON field, FIELD87, FIELD91, FIELD98, FIELD99, FIELD101, TEXT112, FIELD74, FIELD75, $
FIELD80, FIELD82
COMMON IDCW_cw_pos, Id_WInf, Id_WDRAW1, Id_WDRAW2, Id_WDRAW3

	fitsposi = ''
	chemin = '/disque4/rhfits/'
; enlever cette partie quand la procedure doit etre appelee par nrh.pro
; **********************************************************************
;	str_visu= {STR_VISU,$
;		Polar :0, Coord:'I', Print: 0, $
;		ind:0, dim: 256, inc:1, cont:5, pcent:90, mcent:10}
;	str_lim = {NRH_STR_LIM}
;	str_inf2d = {NRH_STR_INFIC}
;	str_fic = {NRH_STR_FIC}
;	INIT_STR_FIC_NRH2, str_fic
; **********************************************************************
; structure reservee pour le module de recherche de positions
	str_opt = {STR_OPT, Nbmax: 5, Facteur: 2, Seuil: 2.0, Fmax: 50, $
		ZoneX: 2, ZoneY: 2}
	t = {GAUSS, max:0.0, xmax:0.0, ymax:0.0, gra:0.0, grb:0.0, tet:0.0}

  IF N_ELEMENTS(Group) EQ 0 THEN GROUP=0

  delfpos, 'centres.dat', 'positions.dat', 'positions.fts'	

;	IF str_fic.file EQ ' ' OR strlen(str_fic.file) EQ '' THEN $
;		NRH_PICKFILE, Str_fic, Str_inf2d, Str_lim, Physpar, Lfreq $ 
;	ELSE $;IF Str_inf2d.Physpar NE 0 THEN $
;		NRH_FOPEN, Str_fic.File, Str_inf2d, Str_lim, Physpar, Lfreq 
	IF strlen(str_fic.file) EQ '' THEN $
		NRH_FOPEN, Str_fic.File, Str_inf2d, Str_lim, Physpar, Lfreq

  junk   = { CW_PDMENU_S, flags:0, name:'' }

  MAIN13 = WIDGET_BASE(GROUP_LEADER=Group, $
   ;   ROW=5, $
      COLUMN=1, $
      SPACE=10, $
      MAP=1, $
      TITLE='NRH Sources Tracking V2.5', $
      UVALUE='MAIN13')

  MenuDesc156 = [ $
      { CW_PDMENU_S,       1, 'File' }, $ 			;        0
        { CW_PDMENU_S,       0, 'Open NRH Images file...' }, $ 		;        1
	{ CW_PDMENU_S,       0, 'Open NRH Sources file...' }, $ 	;        1
        { CW_PDMENU_S,       0, 'Save...' }, $ 			;        2
        { CW_PDMENU_S,       2, 'Quit' }, $ 			;        4
      { CW_PDMENU_S,       1, 'Tools' }, $ 			;        5
        { CW_PDMENU_S,       0, 'Scan centers' }, $ 		;        6
        { CW_PDMENU_S,       0, 'Sort in Sources' }, $ 	;        7
        { CW_PDMENU_S,       0, 'Scan and sort' }, $ 		;        8
	{ CW_PDMENU_S,       0, 'Manual scan' }, $ 		;        8
        { CW_PDMENU_S,       2, 'Options...' }, $ 		;       14
      { CW_PDMENU_S,       1, 'View' }, $ 			;        9
        { CW_PDMENU_S,       0, 'Global' }, $ 			;       10
        { CW_PDMENU_S,       0, 'Plot' }, $ 			;       11
        { CW_PDMENU_S,       0, 'Browse' }, $ 			;       12
        { CW_PDMENU_S,       2, 'Resume' }, $ 			;       13    
      { CW_PDMENU_S,       0, 'Plot' }, $  			;     14 
      { CW_PDMENU_S,       2, 'Help' } $  			;     15

  ]

  PDMENU4 = CW_PDMENU( MAIN13, MenuDesc156, /RETURN_FULL_NAME, UVALUE='MENU')

  BASE12 = WIDGET_BASE(MAIN13, $
      ROW=1, $
      FRAME=2, $
      TITLE='Info', $
      /BASE_ALIGN_CENTER, $
      UVALUE='BASE12')

  Id_WInf = cw_infonrh(BASE12, str_inf2d)

  WDRAW3 = WIDGET_DRAW( BASE12, $
      RETAIN=2, $
      UVALUE='WDRAW3', $
      XSIZE=256, $
      YSIZE=256)

  BASE12B = WIDGET_BASE(BASE12, $
      COL=1, $
      TITLE='Select', $
     ; /BASE_ALIGN_CENTER, $
      /GRID_LAYOUT, $
      UVALUE='BASE12B')

  BUTTON35 = WIDGET_BUTTON( BASE12B, $
      UVALUE='BUTTON35', $
      VALUE='Select a REGION')
  
  BUTSTIME = WIDGET_BUTTON( BASE12B, $
      UVALUE='BUTSTIME', $
      VALUE='Select Time Limits')

  BASE95 = WIDGET_BASE(MAIN13, $
      COL=3, $
      MAP=1, $
      FRAME=2, $
      TITLE='result', $
      UVALUE='BASE95')

  BASE83 = WIDGET_BASE(BASE95, $
      COL=1, $
      MAP=1, $
      TITLE='InfoPos', $
      FRAME=2, $
      UVALUE='BASE83')

  FieldVal2902 = [ 'HH:MM:SS' ]
  FIELD87 = CW_FIELD( BASE83,VALUE=FieldVal2902, $
      ROW=1, $
      TITLE='From', $
      UVALUE='FIELD87', $
      XSIZE=12)

  FieldVal3426 = [ 'HH:MM:SS' ]
  FIELD91 = CW_FIELD( BASE83,VALUE=FieldVal3426, $
      ROW=1, $
      TITLE='To', $
      UVALUE='FIELD91', $
      XSIZE=12)

  BRESU = WIDGET_BASE(BASE83, $
      ROW=3, $
      MAP=1, $
      UVALUE='BRESU')

  FieldVal4106 = [ '0' ]
  FIELD98 = CW_FIELD( BRESU,VALUE=FieldVal4106, $
      ROW=1, $
      INTEGER=1, $
      TITLE='Found', $
      UVALUE='FIELD98', $
      XSIZE=4)

  LABCENT = WIDGET_LABEL( BRESU, $
      UVALUE='LABCENT', $
      VALUE='centers')

  FieldVal4171 = [ '0' ]
  FIELD99 = CW_FIELD( BRESU,VALUE=FieldVal4171, $
      ROW=1, $
      INTEGER=1, $
      TITLE='in', $
      UVALUE='FIELD99', $
      XSIZE=3)

  LABIMAG = WIDGET_LABEL( BRESU, $
      UVALUE='LABIMAG', $
      VALUE='images')

  FieldVal4643 = [ '0' ]
  FIELD101 = CW_FIELD( BRESU,VALUE=FieldVal4643, $
      ROW=1, $
      INTEGER=1, $
      TITLE='sorted in', $
      UVALUE='FIELD101', $
      XSIZE=3)

  LABEL112 = WIDGET_LABEL( BRESU, $
      UVALUE='LABEL112', $
      VALUE='Sources')

  WDRAW1 = WIDGET_DRAW( BASE95, $
      RETAIN=2, $
      UVALUE='WDRAW1', $
      XSIZE=256, $
      YSIZE=256)

  WDRAW2 = WIDGET_DRAW( BASE95, $
      RETAIN=2, $
      UVALUE='WDRAW2', $
      XSIZE=256, $
      YSIZE=256)

  BASE102 = WIDGET_BASE(MAIN13, $
      ROW=1, $
      FRAME=2, $
      MAP=1, $
      TITLE='dial', $
      UVALUE='BASE102')

  TextVal4894 = [ '' ]
  TEXT112 = WIDGET_TEXT( BASE102,VALUE=TextVal4894, $
      UVALUE='TEXT112', $
      XSIZE=60, $
      YSIZE=1)

  WIDGET_CONTROL, MAIN13, /REALIZE

 ; Get drawable window index
  WIDGET_CONTROL, WDRAW1, GET_VALUE=Id_WDRAW1
  WIDGET_CONTROL, WDRAW2, GET_VALUE=Id_WDRAW2
  WIDGET_CONTROL, WDRAW3, GET_VALUE=Id_WDRAW3

  IF STRLEN(str_fic.file) NE 0 and str_inf2d.nim ne 1  THEN BEGIN
  	WIDGET_CONTROL, TEXT112, SET_VALUE= 'Loading data ...'
  	WIDGET_CONTROL, /HOURGLASS
  
	; mise a jour de la partie informative de la widget
	NRH_FOPEN, Str_fic.file, Str_inf2d, Str_lim 
	READ_NRHIM, str_fic.file, str_inf2d.Hd, str_inf2d, DONNEE, str_im, $
			STOKES = Str_visu.polar
  	Id_WInf = cw_infonrh(Id_WInf, str_inf2d, /INFO)

  	WIDGET_CONTROL, TEXT112, SET_VALUE= 'Ok'
  	WIDGET_CONTROL, TEXT112, SET_VALUE= 'Select an interval and then Tools/Scan and sort'
  	WIDGET_CONTROL, FIELD87, SET_VALUE=str_inf2d.Hd
  	WIDGET_CONTROL, FIELD91, SET_VALUE=str_inf2d.Hf
  	WIDGET_CONTROL, FIELD99, SET_VALUE=str_inf2d.nim
	nrh_image, DONNEE, str_im, str_lim, str_visu, 'I', IDWIN=Id_WDRAW3

  ENDIF ELSE WIDGET_CONTROL, TEXT112, SET_VALUE= 'No data loaded'

  WIDGET_CONTROL, BASE12, MAP=1
  
  XMANAGER, 'MAIN13', MAIN13, /NO_BLOCK

END
