pro catdis_event, event

; The user may make their own event handler and pass in the required 
; keywords to access it. 

 widget_control, event.id, get_uvalue=input

 type = strmid(tag_names(event,/structure_name),7, 4)

 if type eq 'BUTT' then widget_control, event.top, /destroy 

return
end

;============================================================

pro uvsp_catdisplay, font=font, title_1=title_1, title_2=title_2, $
		     wide=wide, cat_widg=cat_widg
					
common uvcattext, cat_text

if n_elements(font) eq 0 then font=''
if n_elements(wide) eq 0 then wide=132


widgsize = size(cat_widg)
if widgsize(n_elements(widgsize)-2) ne 8 then $
       cat_widg = {uvwidg, handler:'CATDIS_EVENT', group:'',  modal:0}

if wide eq 132 then begin
   start_line = 3
   if n_elements(title_1) eq 0 then $
     title_1 = string( $
	  'EXP','DATE','DOY', 'START','DUR','NOAA','R', 'THETA','XC','YC',$
	  'DX', 'DY',  'SIZE','SLIT', 'WL', 'DW',  'NW','POL',  'N', 'NEST', $
	  'C',  'REP', 'GATE','F','#','TYPE','EXP.DEF.', $
     '(2x,a3,3x,a4,2x,a3,1x,a5,1x,a3,4x,a4,3x,a1,1x,a5,1x,a2,2x,a2,'+ $
      '1x,a2,1x,a2,3x,a4,1x,a4,6x,a2,2x,a2,2x,a2,1x,a3,1x,a1,1x,a4,'+ $
      '1x,a1,1x,a3,2x,a4,1x,a1,2x,a1,1x,a4,1x,a8)')

   if n_elements(title_2) eq 0 then $
     title_2 = string( $
	  'TIME','m','ROLL','AR','N+CCW','arcsec','DETS','Angs','P','sec',$
	  'C','REC','NAME', $
     '(18x,a4,3x,a1,1x,a4,1x,a2,6x,a5,15x,a6,4x,a4,1x,a4,12x,a1,13x,a3,'+ $
       '2x,a1,1x,a3,6x,a4)')

endif else start_line = 0		; numbers only

;
; Create a text widget to display the catalog output
;

text_base = widget_base(title='UVSP Catalog Output', /column, $
				xoffset=30, yoffset=75)

   title_base = widget_text(text_base, xsize=wide, ysize=2, font=font)

   text_id = widget_list(text_base, ysize=24, value=cat_text(start_line:*), $
		uvalue='UVSPCAT'+strmid(cat_text(start_line:*),0,6), font=font)

   lab = widget_label(text_base, value=' ')
   but = widget_button(text_base, value='CANCEL', uvalue='CANCEL')
   lab = widget_label(text_base, value=' ')

   widget_control, text_base, /realize

   widget_control, title_base, set_value=title_1, /append
   widget_control, title_base, set_value=title_2, /append

   ;
   ; If catalog program is being called by UVSP.PRO (or others) with
   ; the intention of doing the search and presenting the list widget
   ; for experiment handling, then the calling program is suppling the
   ; event handler.  It will need to have the UVALUE  "CANCEL" defined
   ; to be WIDGET_CONTROL, EVENT.TOP, /DESTROY.
   ;

   if cat_widg.group ne '' then $
        xmanager, 'UVCATDISP', text_base, event_handler=cat_widg.handler, $
	        modal=cat_widg.modal, group_leader=cat_widg.group $
   else xmanager, 'UVCATDISP', text_base, event_handler=cat_widg.handler, $
		modal=cat_widg.modal

return
end

