
;+ ***********************************************************************
; NAME:
;	SUN_IMAGE
;
; PURPOSE:
;	Cette procedure contient les widgets permettant de superposer
;	des contours ou des points a une image solaire
;
; CATEGORY:
;	Widgets
;
; CALLING SEQUENCE:
;	SUN_IMAGE
;
; INPUTS:
;	Non
;
; KEYWORD PARAMETERS:
;	GROUP	Identifieur du widget appelant
;
; OUTPUTS:
;	Non
;
; COMMON BLOCKS:
;	LIMIT, str_lim		Limites de traitement (NRH_STR_LIM)
;	FICRH,str_fic		Selection de fichiers (NRH_STR_FIC)
;	INFO2D, Str_inf2d	Information de fichiers (NRH_STR_INF2D)
;
; PROCEDURE:
;	Cette procedure permet, a partir d'une image solaire de divers
;	instruments de:
;		afficher l'image
;		selectionner une region
;		superposer les contours d'une autre image
;		superposer des points releves sur des images
;
; EXAMPLE:
;	Please provide a simple example here
;
; MODIFICATION HISTORY:
;	Ecrit par: J Bonmartin (bonmartin@obspm.fr) le 07/08/98
;	Le 08/01/98	traitement des Keywords AXIS et CHARSIZE pour
;			le PLOT des images (JB)
;	Le 09/04/98	Ajout de coordonnees manuelles de points (JB)
;	Le 10/05/99	Trace des contours avec C_THICK et un premier trace
;		avec C_COLORS=0 (JB)
;	Le 22/11/99	Recadre l'image et les contours (JB)
;	Le 07/12/00 !D.TABLE_SIZE en limite de couleur de trace
;	Le 19/01/01 Modification d'ouverture de fichier (JB)
;       Le 05/12/02 Correction nb de points pour contour (AB)
;       Le 22/01/04 Modif pour ecrans 24 bits et Write_png (AB)
;       Le 22/09/2008: bug charsize adaptable pour labels
;       images/contours(AB)
;       Le 29 oct 2008 Affichage d'un symbole a des coordonnees 
;       definies : taille du symbole et epaisseur du symbole parametrables   
;-*******************************************************************

PRO SUN_IMAGE_EVENT, event

COMMON LIMIT, str_lim
COMMON FICRH,str_fic
COMMON INFO2D, Str_inf2d

COMMON BASE_SUN_IMAGE, $
		STRFC, $	;FICHIER Contour FILTRE
		STRIC, $	;		INFO
		STRLC, $	;		LIMITES
		STRP,  $	;Positions
		STRLAB,$	;Label Points
		STRLBI,$	;Label image
		STRLBC,$	;Label contour
		STRI,  $	;Parametres internes
		Rsxd,  $ 	;Limites en rayons solaires
		Rsxf,  $
		Rsyd,  $
		Rsyf,  $
		Repertp, $
		Repertc

WIDGET_CONTROL, event.id, GET_UVALUE = ev

CASE ev of
	'Repert': 	Str_fic.rep = event.value
	'File1': BEGIN
		NRH_PICKFILE, Str_fic, Str_inf2d, Str_lim, Physpar, Lfreq
		Stri.Binfi = cw_infonrh(Stri.Binfi, Str_inf2d, /INFO)
		Stri.Hseli= str_inf2d.hd
		Stri.Phi = 0
		WIDGET_CONTROL, Stri.sti, SET_VALUE = Physpar
		WIDGET_CONTROL,Stri.Ti, set_value=Stri.Hseli
;				Limites en rayons solaires
		RSXD = IND_RS(Str_lim.xd, Str_inf2d.Xcen, Str_inf2d.ray)
		RSYD = IND_RS(Str_lim.yd, Str_inf2d.Ycen, Str_inf2d.ray)
		RSXF = IND_RS(Str_lim.xf, Str_inf2d.Xcen, Str_inf2d.ray)
		RSYF = IND_RS(Str_lim.yf, Str_inf2d.Ycen, Str_inf2d.ray)
		END

	'Instrum': Str_fic.Instr = Event.index
	'Time':    Stri.Hseli = event.value
	'StokesI': Stri.Phi = event.index

	'Selfld': BEGIN
		IF Str_fic.File EQ '' THEN BEGIN
		   r=DIALOG_MESSAGE('First Select a FILE',$
					DIALOG_PARENT=Event.top)
			RETURN & END
		READ_NRHIM, Str_fic.file, Stri.Hseli,Str_inf2d, $
						 DONNEE, Str_im, $
				STOKES = Stri.Phi
		cw_selfield,DONNEE, Str_im, Str_lim, GROUP=event.top 


;				Limites en rayons solaires
		RSXD = IND_RS(Str_lim.xd, Str_im.crpixx, Str_im.ray)
		RSYD = IND_RS(Str_lim.yd, Str_im.crpixy, Str_im.ray)
		RSXF = IND_RS(Str_lim.xf, Str_im.crpixx, Str_im.ray)
		RSYF = IND_RS(Str_lim.yf, Str_im.crpixy, Str_im.ray)
		END

	'REGION':begin			;Selection directe par cw_region
		str_lim.xd = event.xd
		str_lim.xf = event.xf
		str_lim.yd = event.yd
		str_lim.yf = event.yf
;				Limites en rayons solaires
		RSXD = IND_RS(Str_lim.xd, Str_im.crpixx, Str_im.ray)
		RSYD = IND_RS(Str_lim.yd, Str_im.crpixy, Str_im.ray)
		RSXF = IND_RS(Str_lim.xf, Str_im.crpixx, Str_im.ray)
		RSYF = IND_RS(Str_lim.yf, Str_im.crpixy, Str_im.ray)

		END
	
	'Plot': BEGIN
		IF Str_fic.File EQ '' THEN BEGIN
		   r=DIALOG_MESSAGE('First Select a FILE',$
					DIALOG_PARENT=Event.top)
			RETURN & END
		
		READ_NRHIM, Str_fic.file, Stri.Hseli, Str_inf2d,  $
			DONNEE, Str_im, STOKES = Stri.Phi
		NRH_IMAGEREF, Donnee, $
			Str_im.crpixx, Str_im.crpixy, Str_im.ray, $
			Str_lim, /SCALE, /LIMB,/Cadre, /Annotation, $
			AXIS = Strlbi.axis, CHARSIZE = Strlbi.Charsize
		ILABEL = CALL_FUNCTION('Cre_labelnrh',Str_im,Strlbi)
		XYOUTS,300,30,ILABEL, ALIGNMENT=0.5, /DEVICE, $
				CHARSIZE = Strlbi.Charsize
		END

	'Ilabel': Strlbi = cw_labelnrh(Group = event.top, /AXIS, /CHARSIZE)

; CONTOURS
	'Repertc': 	Strfc.rep = event.value
	'Filec': BEGIN
		PHYSPAR = ''
		LFREQ = ''
		NRH_PICKFILE, Strfc, Stric, Strlc, Physpar, Lfreq
		Stri.Binfc = cw_infonrh(Stri.Binfc, Stric, /INFO)
		Stri.Hselc= stric.hd
		Stri.Phc = 0
		WIDGET_CONTROL, Stri.stc, SET_VALUE = Physpar
		WIDGET_CONTROL,Stri.Tc, SET_VALUE=Stri.Hselc
		END


	'Timec':    Stri.Hselc = event.value
	'StokesC':	    Stri.Phc = event.index
	'Maxniv':   Stri.Nmax = event.value	     
	'Minniv':   Stri.Nmin = event.value	     
	'Level':    Stri.level = event.value	     

	'Contour': BEGIN
		IF Strfc.File EQ '' THEN BEGIN
		   r=DIALOG_MESSAGE('First Select a FILE',$
					DIALOG_PARENT=Event.top)
			RETURN & END
		READ_NRHIM, Strfc.file, Stri.Hselc, Stric,  $
			DONNEE, Str_im, STOKES = Stri.Phc
		RXD = Rsxd
		XD = RS_IND(RXd, Str_im.crpixx, Str_im.ray)
			IF XD LT 0 THEN BEGIN
				XD = 0
				RXD = IND_RS(XD, Str_im.crpixx, Str_im.ray)
			END
		RXF = Rsxf
		Sz= Size (Donnee)
		XF = RS_IND(RXf, Str_im.crpixx, Str_im.ray)
			IF XF GT Sz(1) THEN BEGIN
				XF = Sz(1)-1
				RXF = IND_RS(XF, Str_im.crpixx, Str_im.ray)
			END
		RYD = RsYd
		YD = RS_IND(RYd, Str_im.crpixy, Str_im.ray)
			IF YD LT 0 THEN BEGIN
				YD = 0
				RYD = IND_RS(YD, Str_im.crpixy, Str_im.ray)
			END
		RYF = RsYf
		YF = RS_IND(RYf, Str_im.crpixy, Str_im.ray)
			IF YF GT Sz(2) THEN BEGIN
				YF = Sz(2)-1
				RYF = IND_RS(YF, Str_im.crpixy, Str_im.ray)
			END
		NPCONT=256
		IMAGE= CONGRID(Donnee(Xd:Xf,Yd:Yf),Npcont,Npcont,/CUBIC)
		Nptx = Xf-Xd+1
		Npty = Yf-yd+1

		ECH_RS, RXd, RXf, Npcont, Xcont
		ECH_RS, RYd, RYf, Npcont, Ycont
		NRHLEVEL= NRH_LEVEL_LIN(Image, $
			Stri.Level, Stri.Nmax, Stri.Nmin)
		CONTOUR, Image, Xcont,Ycont, $
			C_LINESTYLE = (Nrhlevel lt 0.0)*3,$
			LEVEL = Nrhlevel, /OVERPLOT, $
			XSTYLE=1, YSTYLE=1, $
			XRANGE=[Xcont(0), Xcont(npcont-1)], $
			YRANGE=[Ycont(0), Ycont(npcont-1)], $
			C_COLORS = 0, C_THICK = 2

		CONTOUR, Image,Xcont,Ycont, $
			C_LINESTYLE = (Nrhlevel lt 0.0)*3,$
			LEVEL = Nrhlevel, /OVERPLOT, $
			XSTYLE=1, YSTYLE=1, $
			XRANGE=[Xcont(0), Xcont(npcont-1)], $
			YRANGE=[Ycont(0), Ycont(npcont-1)], $
			C_COLORS = Stri.Coulc, $
			/DOWNHILL, C_THICK = 1.

		CLABEL = CALL_FUNCTION('Cre_labelnrh',Str_im,Strlbc)
		XYOUTS,300,15,CLABEL, ALIGNMENT=0.5, /DEVICE, $
                       CHARSIZE = Strlbc.Charsize  ; 0.8
		END

	'Clabel': Strlbc = cw_labelnrh(Group = event.top, /AXIS, /CHARSIZE)

; TRACE DE POINTS
	'Repertp': 	Repertp = event.value
	'Filep': Stri.Filep = dialog_pickfile(PATH= Repertp, FILTER= '*.dat')
	'Filectr': BEGIN
		Stri.Filec = dialog_pickfile(PATH=Repertp,$
				FILTER='*.fts')
		IF Stri.Filec EQ '' THEN RETURN
		END
	'Rdctr': BEGIN
		IF Stri.filec EQ '' THEN BEGIN
			R =DIALOG_MESSAGE('First select a CENTER file',$
					DIALOG_PARENT=Event.top)
		RETURN & END
		Stri.Extd = CW_XTD_NRHF(Stri.filec)
		IF Stri.extd EQ 0 THEN BEGIN
			R =DIALOG_MESSAGE('Incorrect FILE',$
					DIALOG_PARENT=Event.top)
		RETURN & END
		Centre = MRDFITS( Stri.filec, Stri.Extd,/SILENT)
		Stri.Hc = MSH(Centre.time(0))
		Stri.hd = Stri.hc
			SZ = SIZE(Centre.time)
		Stri.hf = MSH(Centre.time(sz(1)-1))
		WIDGET_CONTROL, Stri.Bhc, SET_VALUE = Stri.hc
		WIDGET_CONTROL, Stri.Bhd, SET_VALUE = Stri.hd
		WIDGET_CONTROL, Stri.Bhf, SET_VALUE = Stri.hf
		END
	'Selhc': Stri.hc = event.value
	'Selhd': Stri.hd = event.value
	'Selhf': Stri.hf = event.value
	'Rdptc': BEGIN
		IF Stri.Extd EQ 0 THEN BEGIN
			R = DIALOG_MESSAGE('First select a CENTER',$
					DIALOG_PARENT=Event.top)
		RETURN & END
		READ_CENTER_POINT, Stri.Filec, Stri.Extd, Stri.hc, Strp
		END

	'Rdpoint': BEGIN
		IF Stri.Filep EQ '' THEN BEGIN
			r = DIALOG_MESSAGE ('First Select a FILE',$
					DIALOG_PARENT=Event.top)
			 Return & END
		RD_FICPOINT,Stri.Filep, TAB_P
		Ind= CALL_FUNCTION('SEL_FICPOINT' ,Tab_p)
		Strp = CALL_FUNCTION('DCD_FICPOINT',Tab_p(Ind))
		END

	'Manpt':  BEGIN
		SEP= STR_SEP(Event.value,',')
		Strp.Xcoord = FLOAT(Sep(0))
		IF N_ELEMENTS(Sep) GT 1 THEN Strp.Ycoord = FLOAT(Sep[1])
		END

	'Plot_P': BEGIN		;Plot un point
		OPLOT,[Strp.Xcoord,strp.Xcoord], $
			[Strp.Ycoord,strp.Ycoord], PSYM= Stri.Symb, $
				COLOR=Stri.Coulp, $
                                symsize = stri.symbsize, thick=Stri.Symbthick
		PLABEL = CALL_FUNCTION('Cre_labelnrh',Strp,Strlab)
			XYOUTS,Strp.Xcoord, Strp.Ycoord,Plabel,/DATA, $
				CHARSIZE= Strlab.charsize;0.4
		END

	'Plot_S': BEGIN		;Plot une source
		NRH_READ_CENTER, Stri.Filec, Stri.Extd, Centre, $
					HBEG=Stri.hd, HEND=Stri.hf
		OPLOT,Centre.EWPOS, Centre.NSPOS, COLOR=Stri.Coulp
		END

	'Label': Strlab = cw_labelnrh(Group = event.top, /AXIS, /CHARSIZE)

	'Symbole':	Stri.Symb = event.value
	'Symsize':	Stri.Symbsize = event.value
	'Symthick':	Stri.Symbthick = event.value

; GENERAUX
	'Coulc': Stri.Coulc= event.Value
	'Coulp': Stri.Coulp= event.Value
	'Png':	BEGIN

                device, get_visual_depth = thisdepth
                if thisdepth gt 8 then begin
        ; ajout pour tvrd avec ecrans 24 bits
                    device, decomposed = 1
                    image = TVRD(True=1)
                    device, decomposed = 0
                    WRITE_PNG, 'sup.png', image
                end else begin
        ; ajout de ,r_curr, g_curr, b_curr pour WRITE_PNG en 8bits 
        ; sans r,g,b image PNG en noir et blanc
		    WRITE_PNG, 'sup.png', TVRD(),r_curr, g_curr, b_curr
                endelse

		R= DIALOG_MESSAGE('Image written in sup.png',$
					DIALOG_PARENT=Event.top)
	END 

	'Color': BEGIN
 	         XLOADCT
        ; ajout pour WRITE_PNG en 8bits 
                 TVLCT,r_curr,g_curr,b_curr,/get
                 END

	'Return': BEGIN
			WIDGET_CONTROL, event.top, /DESTROY
			NRH_FCLOSE, Str_inf2d
			END
ENDCASE

END

PRO SUN_IMAGE, GROUP= Group

COMMON LIMIT, str_lim
COMMON FICRH, str_fic
COMMON INFO2D, Str_inf2d

COMMON BASE_SUN_IMAGE, $
		STRFC, $	;FICHIER Contour FILTRE
		STRIC, $	;		INFO
		STRLC, $	;		LIMITES
		STRP,  $	;Positions
		STRLAB,$	;Label Points
		STRLBI, $	;Label image
		STRLBC, $	;Label contour
		STRI,  $	;Parametres internes
		Rsxd,  $ 	;Limites en rayons solaires
		Rsxf,  $
		Rsyd,  $
		Rsyf,   $
		Repertp,$
		Repertc

STRI = {STR_SUN_IMAGE, Hseli:'', Hselc:'',Ti:0l, Tc:0L, Phi:0, Phc:0,$
		Nmax:90, Nmin:5, Level:5, Coulc:100, Coulp:100, $
		Repertp:0L, Filep: '', $
		Binfi:0L, Binfc:0L, Sti:0L, Stc:0L, Symb: 1, Symbsize: 2,$
                Symbthick: 2,$
		Filec:'', Hc:'',Hd:'',Hf:'', Bhc:0l, Extd:0, Bhd:0L, Bhf:0L}
STRFC = {NRH_STR_FIC}
STRIC = {NRH_STR_INFIC}
STRLC = {NRH_STR_LIM}
STRP= {Nrh_Str_coord}
STRLAB = {NRH_STR_LABEL}
STRLBI = {NRH_STR_LABEL}
STRLBC = {NRH_STR_LABEL}
		Strlbi.Charsize = 0.8

CD, CURRENT=REP
	Strfc.rep = rep
	Repertp = rep
	Repertc = rep

 	PHYSPAR = ['',''] & LFREQ = ''
	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  
 
		RSXD = IND_RS(Str_lim.xd, Str_inf2d.Xcen, Str_inf2d.ray)
		RSYD = IND_RS(Str_lim.yd, Str_inf2d.Ycen, Str_inf2d.ray)
		RSXF = IND_RS(Str_lim.xf, Str_inf2d.Xcen, Str_inf2d.ray)
		RSYF = IND_RS(Str_lim.yf, Str_inf2d.Ycen, Str_inf2d.ray)
	Stri.HSELI = Str_inf2d.hd
	Stri.Phi = 0

IF N_ELEMENTS(Group) EQ 0 THEN Group = 0

ISCROLL = 0
DEVICE, GET_SCREEN_SIZE = SCR_SIZE
TITLE= 'Superpose SUN Images'
RETBASE:			;Retour pour  Ascenseur
IF ISCROLL THEN $
    base = WIDGET_BASE (TITLE = title,/COLUMN,$
       /SCROLL,X_SCROLL_SIZE = Xss,Y_SCROLL_SIZE = Yss ) $
ELSE $
	Base = WIDGET_BASE(GROUP_LEADER =Group,TITLE= Title, $
	       /COLUMN)

Base1 = WIDGET_BASE(Base, /FRAME, /ALIGN_CENTER, COLUMN =2)
L= WIDGET_LABEL(Base1, VALUE = 'IMAGE', /ALIGN_CENTER)
   Base11 =WIDGET_BASE(Base1, /ALIGN_CENTER, /COLUMN)
    Base112 =WIDGET_BASE(Base11, /ALIGN_CENTER, /ROW)
	  B= WIDGET_BUTTON (Base112, UVALUE='File1', VALUE='Select FILE')
	  B= WIDGET_BUTTON (Base112, UVALUE='Selfld', VALUE='Select Region')
	B= CW_FIELD (Base11, /STRING, TITLE= 'Directory:', /ALL_EVENTS, $
		XSIZE= 30, VALUE=Str_fic.rep, UVALUE= 'Repert')
	Base111 =WIDGET_BASE(Base11, /ALIGN_CENTER, /ROW)
	Stri.sti =  WIDGET_DROPLIST(Base111, Value= Physpar ,$
						 Uvalue= 'StokesI')
	Stri.Ti= CW_FIELD (Base111, /STRING, TITLE= 'Time::', /RETURN_EVENT, $
		XSIZE= 20, VALUE= Stri.Hseli, UVALUE= 'Time')
    Base113 =WIDGET_BASE(Base11, /ALIGN_CENTER, /ROW)
	B= WIDGET_BUTTON (Base113, UVALUE='Plot', VALUE='Plot Image')
	B= WIDGET_BUTTON (Base113, UVALUE='Ilabel', VALUE='CONFIG Label')
	Base12 =WIDGET_BASE(Base1, /ALIGN_CENTER, /COLUMN)
	Stri.Binfi = cw_infonrh(base12, Str_inf2d ) 

Base2 = WIDGET_BASE(Base, /FRAME, /ALIGN_CENTER, Column =2)
L= WIDGET_LABEL(Base2, VALUE = 'ADD CONTOURS', /ALIGN_CENTER)
	Base21 =WIDGET_BASE(Base2, /ALIGN_CENTER, /COLUMN)
	B= WIDGET_BUTTON (Base21, UVALUE='Filec', VALUE='Select FILE')
	B= CW_FIELD (Base21, /STRING, TITLE= 'Directory:', /ALL_EVENTS, $
		XSIZE= 30, VALUE=Strfc.rep, UVALUE= 'Repertc')
     Base211 =WIDGET_BASE(Base21, /ALIGN_CENTER, /ROW)
	Stri.stc =  WIDGET_DROPLIST(Base211, Value= ' ' , Uvalue= 'StokesC')
	Stri.Tc= CW_FIELD (Base211, /STRING, TITLE= 'Time::', /RETURN_EVENT, $
		XSIZE= 20, VALUE='', UVALUE= 'Timec')
     Base212 =WIDGET_BASE(Base21, /ALIGN_CENTER, /ROW)
	B= WIDGET_BUTTON (Base212, UVALUE='Contour', VALUE='Plot Contour')
	B= WIDGET_BUTTON (Base212, UVALUE='Clabel', VALUE='CONFIG Label')
	B= WIDGET_SLIDER(Base21, UVALUE='Maxniv', TITLE='% Max Level', $
		Value= string(Stri.Nmax), MAXIMUM=100, MINIMUM= 10)
	B= WIDGET_SLIDER(Base21, UVALUE='Minniv', TITLE='% Min Level', $
		Value= string(stri.Nmin), MAXIMUM=90, MINIMUM= 0)
	Base22 =WIDGET_BASE(Base2, /ALIGN_CENTER, /COLUMN)
	Stri.Binfc = cw_infonrh(base22, Stric) 
	B= WIDGET_SLIDER(Base22, UVALUE='Level', TITLE='Nb levels', $
		Value= string(stri.Level), MAXIMUM=29, MINIMUM= 3)
	B= WIDGET_SLIDER(Base22,Uvalue = 'Coulc', $
	       VALUE= Stri.coulc, TITLE='Contours Color',$
			Maximum=!D.TABLE_SIZE-1,minimum=0)
		
		SYMBOLE=['1\Plot Symbole:','0\+','0\*','0\.','0\Diamond',$
			'0\Triangle','0\Square','2\X']
;			'0\Triangle','0\Square','0\X','2\END']
		SYMSIZE=['1\Plot Symsize:','0\1.','0\2.','0\3.','0\4.',$
			'0\5.','0\6.','2\7.']
;			'0\5.','0\6.','0\7.','2\END']
		SYMTHICK=['1\Symbol thick:','0\1.','0\2.','0\3.','0\4.',$
			'0\5.','0\6.','2\7.']

Base3 = WIDGET_BASE(Base, /FRAME, /ALIGN_CENTER, COLUMN=2)
	L= WIDGET_LABEL(Base3, VALUE = 'ADD POINT & SOURCE', /ALIGN_CENTER)

   Base30 = WIDGET_BASE(Base3,/FRAME, /ALIGN_CENTER, /COLUMN)
	B= CW_FIELD (Base30, /STRING, TITLE= 'Directory:', /ALL_EVENTS, $
		XSIZE= 30, VALUE=Repertp, UVALUE= 'Repertp')
    Base31 = WIDGET_BASE(Base30,/FRAME, /ALIGN_CENTER, /ROW)
	L= WIDGET_LABEL(Base31, VALUE = 'Point File: ')
	B= WIDGET_BUTTON (Base31, UVALUE='Filep', VALUE='OPEN ')
	B = WIDGET_BUTTON(Base31,UVALUE='Rdpoint',Value='READ a point')
	B=CW_FIELD (Base31, /STRING, TITLE= 'EW, NS Point:', /ALL_EVENTS, $
		XSIZE= 12, VALUE='0.0, 0.0 ', UVALUE= 'Manpt')


    Base32 = WIDGET_BASE (Base30,/FRAME,/ALIGN_CENTER, /COLUMN)
     Base321 = WIDGET_BASE (Base32,/ALIGN_CENTER, /ROW)
	L= WIDGET_LABEL(Base321, VALUE = 'Source File: ')
	B= WIDGET_BUTTON(Base321, UVALUE='Filectr', Value='OPEN')
	B = WIDGET_BUTTON(Base321,UVALUE='Rdctr',Value='SELECT Source')

     Base322 = WIDGET_BASE (Base32,/ALIGN_CENTER, /ROW)
	Stri.bhd=CW_FIELD (Base322, /STRING, TITLE= 'Begin Time:', $
		/RETURN_EVENT,XSIZE= 12, VALUE=' ', UVALUE= 'Selhd')
	Stri.bhf=CW_FIELD (Base322, /STRING, TITLE= 'End Time:', $
		/RETURN_EVENT,XSIZE= 12, VALUE=' ', UVALUE= 'Selhf')
     Base323 = WIDGET_BASE (Base32,/ALIGN_CENTER, /ROW)
	B = WIDGET_BUTTON(Base323,UVALUE='Rdptc',Value='READ point:')
	Stri.bhc=CW_FIELD (Base323, /STRING, TITLE= 'Time:', /ALL_EVENTS, $
		XSIZE= 12, VALUE=' ', UVALUE= 'Selhc')

  Base33 = WIDGET_BASE(Base3,/FRAME, /ALIGN_CENTER, /COLUMN)
	B= WIDGET_BUTTON (Base33, UVALUE='Plot_P', VALUE='PLOT Point')
	B= WIDGET_BUTTON (Base33, UVALUE='Plot_S', VALUE='PLOT source')
	B= WIDGET_BUTTON (Base33, UVALUE='Label', VALUE='CONFIG Label')
	B= CW_PDMENU(Base33, Symbole, UVALUE='Symbole', /RETURN_INDEX)
	B= CW_PDMENU(Base33, Symsize, UVALUE='Symsize', /RETURN_INDEX)
	B= CW_PDMENU(Base33, Symthick, UVALUE='Symthick', /RETURN_INDEX)
	B= WIDGET_SLIDER(Base33,Uvalue = 'Coulp', $
	       VALUE= Stri.coulp, TITLE='Center Color',$
			Maximum=!D.TABLE_SIZE-1,minimum=0)



Base4 = WIDGET_BASE(Base, /ALIGN_CENTER, /ROW)
	b = widget_button( base4,Uvalue = 'Png',value='Save on PNG')
	B= WIDGET_BUTTON (Base4, Uvalue='Color', VALUE='Color')
	B= WIDGET_BUTTON (Base4, Uvalue='Return', VALUE='RETURN')


WIDGET_CONTROL, Base, /REALIZE,TLB_GET_SIZE = Wid_size

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

END
