pro xcheckip_event, event
;
;
;
;HISTORY:
;	Written 10-Apr-95 by M.Morrison
;	 8-Jun-95 (MDM) - Modified to allow to select more than one file
;
;
;
common xcheckip_blk, all		;have to common block it to get it out of xcheckip
;
qdebug = 1
if (qdebug) then print, event_name(event)
widget_control,event.top,get_uvalue=all
widget_control, all.id_info, set_value='  '
;

case (strtrim(event_name(event),2)) of
   "BUTTON": case strupcase(get_wvalue(event.id)) of
	 ;------ Main buttons
         "QUIT": begin
		widget_control, event.top, /destroy
	    endcase
	 "** START CHECKS **": begin
		filnams =  str2arr(all.infil)
		infils = concat_dir(all.indir,filnams)
		for ifil=0,n_elements(infils)-1 do begin
		    infil = infils(ifil)
		    infil0 = infil + '_01.tfr'
		    if (not file_exist(infil0)) then begin
		        widget_control, all.id_info, set_value='Input file: ' + infil0 + ' does not exist'
		        tbeep, 3
		    end else begin
			if (not qdebug) then mapx, event.top,/map,/show,sensitive=0

			outfil = concat_dir(get_logenv('MDI_CAL_TXT'), 'ckip'+filnams(ifil))
			widget_control, all.id_info, set_value=['*** Starting Checks *** ','Output file: ' + outfil]
			file_delete, outfil
			openw, lun, outfil, /get_lun
			printf, lun, 'XCHECKIP  Program Run: ' + !stime
			printf, lun, '  '
			printf, lun, 'Input File: ' + infil
			printf, lun, 'Output File:' + outfil
			all.outfil = outfil
			;
			checkip_avail, all, infil=infil
			for i=0,all.ntest_type-1 do begin
			    	printf, lun, ' '
				printf, lun, '--------------- ' + all.test_type(i) + ' ---------------'
				if (all.test_exist(i)) then begin
				    test_class = strmid(all.test_type(i), 0, strpos(all.test_type(i),'_'))
				    ii = (where(all.utest eq test_class))(0)
				    widget_control, all.id_test(ii), get_uvalue=qrun
				    if (qrun) then begin
					check1test, all.test_type(i), infil, all, results
					;;results = ['Would run this one']
					for j=0,n_elements(results)-1 do printf, lun, results(j)
					widget_control, all.id_info, set_value=results
				    end else begin
					printf, lun, '......................... Available but not selected to run'
				    end
				end else begin
				    printf, lun, '......................... No test data of this type in this file'
				end
			end
			free_lun, lun

			mapx, event.top,/map,/show,sensitive=1
			widget_control, all.id_info, set_value='*** Finished Checks *** '
		    end
		end
	     endcase

	  "NEW FILE": begin
		lst_file = file_list(all.indir, '*_01.tfr', /cd, file=file)
		file = strmid(file, 0, 13)
		ifil = xmenu_sel(file, group=event.top)
		;ifil = xmenu_sel(file, /one, group=event.top)
		;ifil = ifil(0)
		if (ifil(0) ne -1) then begin
		    ;all.infil = file(ifil)
		    all.infil = arr2str(file(ifil))
		    widget_control, all.id_infil, set_value=all.infil
		    ;;all.test_run   = 0
		    all.test_exist = 0
		    checkip_avail, all, /update_utest
		end
	    endcase

	  "NEW FILE(S) BY SUBSET": begin
		lst_file = file_list(all.indir, ['*_01.tfd','*_02.tfd'], /cd, file=file)
		tfile = strmid(file, 0, 13)
		ufile = tfile(uniq(tfile))
		ok_arr = bytarr(n_elements(tfile))
		dpc = all.test_dpc(2,*)
		udpc = dpc(uniq(dpc, sort(dpc)))
		udpc = string(udpc, format='(z8.8)')
		for i=0,n_elements(ufile)-1 do begin
		    ss = where(tfile eq ufile(i))
;		    cmd = ['cd ', all.indir,  ";", "egrep", $
;				"'" + arr2str(udpc, delim='|') + "'", $
;				file(ss)]
;		    cmd = "/usr/bin/egrep '" + $
;				arr2str(udpc, delim='|') + "' " + $
;				arr2str( concat_dir(all.indir,file(ss)), delim=' ')
		    cmd = ['/usr/bin/egrep', $
				"'" + arr2str(udpc, delim='|') + "'", $
				concat_dir(all.indir, file(ss))]
		    spawn, cmd, result, /noshell
		    ;;ok_arr(ss) = result(0) ne ''
		    if (result(0) ne '') then begin
			ok_arr(ss) = 1
			dummy = where(strpos(result, 'ffffff04') ne -1, ndummy)
			if (ndummy ge 2) then begin	;not simply one ffffff04 image
			    ;--- see that the exact number of ffffff04 images matches
			    ;    one of the test cases in the table.
			    dummy = where(all.test_ndp eq ndummy, ndummy2)
			    ok_arr(ss) = (ndummy2 ne 0)
			end
			print, ufile(i)
			prstr, result
		    end
		end

		ss = where(ok_arr)
		if (ss(0) eq -1) then return
		file = tfile(ss)

		ifil = xmenu_sel(file, group=event.top)
		;ifil = ifil(0)
		if (ifil(0) ne -1) then begin
		    all.infil = arr2str(file(ifil))
		    widget_control, all.id_infil, set_value=all.infil
		    ;;all.test_run   = 0
		    all.test_exist = 0
		    checkip_avail, all, /update_utest
		end
	    endcase
	  "RUN ALL": begin
		for i=0,all.nutest-1 do widget_control, all.id_test(i), /set_button, set_uvalue=1
	    endcase

	  "NEW DIR": begin
		input, 'Enter the new input directory', new, all.indir
		all.indir = new
		widget_control, all.id_indir, set_value=all.indir
	    endcase

	  "ENABLE IMAGE DISPLAY": begin
		all.show_plot = event.select
	    endcase
	  "READ FROM 5K": begin
		all.use_5k = event.select
	    endcase
          else: case strmid(strupcase(get_wvalue(event.id)), 0, 3) of
		'RUN': begin
				ss = where( strupcase(all.utest) eq strmid(strupcase(get_wvalue(event.id)), 4, 99) )
				ss = ss(0)
				widget_control, all.id_test(ss), set_button=event.select, set_uvalue=event.select
			end
		'DIA':
		else:  message,/info,"UNKNOWN BUTTON:   " + strupcase(get_wvalue(event.id))
	    endcase
   endcase	;case "BUTTON"
   "TEXT_CH": begin
		newv = get_wvalue(event.id)
		case event.id of
		    all.id_infil: all.infil = newv(0)
		    all.id_indir: all.indir = newv(0)
		    else: stop
		endcase
		widget_control, all.id_infil, set_value=all.infil
		widget_control, all.id_indir, set_value=all.indir
		if (all.infil ne '') then checkip_avail, all, /update_utest
	      end
   "LIST": begin
		;no list widgets
	      end
endcase


widget_control,event.top, set_uvalue=all, bad_id=destroyed	;update structure holding all of the info

return
end
