	pro show_picture_event, ev

widget_control, ev.id, get_uval=uv,/hour
widget_control, ev.top, get_uval=Top_uv

	CASE uv OF

'DONE':	begin
widget_control, ev.top, /dest
if Top_uv.group ne 0L then if widget_info(Top_uv.group, /valid) then $
	widget_control, Top_uv.group, /show
	end

'Colors': Xloadct

'Load':	begin

filter='*.gif;*.bmp;*.tif;*.fit;*.fts'
if n_elements(file) le 0 then file=pickfile(/read, filt=filter)
if file eq '' then return
widget_control, ev.top, /dest, /hour
show_picture, image, file=file, group_leader=group_leader, title=title, $
	info=info,default=default

	end

'Info':	begin
widget_control, /hour
xtext, text=[	'Width: ' +string(Top_uv.size(0)),	$
		'Height: ' +string(Top_uv.size(1)), 	$
		Top_uv.info]
	end


	ELSE:
	ENDCASE

	end




	pro show_picture, image, file=file, group_leader=group_leader, title=title, $
	info=info, textfile=textfile, default=default

if n_elements(group_leader) le 0 then group_leader=0L
if n_elements(title) le 0 then title=' '
if n_elements(info) le 0 then info=' '

filter='*.gif;*.bmp;*.tif;*.fit;*.fts'

type=''


	CASE 1 OF

n_elements(image) gt 1: begin
		Sz=size(image)
if Sz(0) ne 2 then message, 'Incorrect dimension of input array'
			end

n_elements(file) le 0: begin

	file=pickfile(/read, filt=filter)
	if file eq '' then return
	widget_control,/hour
	image=rd_image(file, r,g,b, type=type)

	Sz=size(image)
			end

	ELSE:	begin
	widget_control,/hour
	image=rd_image(file, r,g,b, type=type)
	Sz=size(image)

		end
	ENDCASE


file_info=''

	if n_elements(textfile) gt 0 then begin
Sztxt=size(textfile)
if Sztxt(Sztxt(0)+1) ne 7 then message,'Incorrect filename type'

add_eof, textfile

file_info=strarr(1000)

	openr,lun,textfile,/get_lun

tmp=''
j=0
	while not EOF(lun) do begin
readf, lun, tmp
file_info(j)=tmp
j=j+1
	endwhile

	free_lun, lun

file_info=file_info(0:j-1)

	endif

Top_uv={group:group_leader, size:[Sz(1), Sz(2)], info:[info, file_info]}

base=widget_base(group_leader=group_leader, tit=title, /colu, uval=Top_uv)

menubase=widget_base(base,/row)

button=widget_button(menubase, val='DONE', uval='DONE')
junk=widget_button(menubase, val='File', /menu)
	button=widget_button(junk, val='Load', uval='Load')
	button=widget_button(junk, val='Info', uval='Info')
	button=widget_button(junk, val='Save', uval='Save')
;junk=widget_button(menubase, val='Tools' ,/menu)
button=widget_button(menubase, val='Adjust colors', uval='Colors')
;	junk1=widget_button(junk, val='Scaling', /menu )
;		button=widget_button(junk1, val='On', uval='On')
;		button=widget_button(junk1, val='Off', uval='Off')

device, get_screen=screen

scroll= (Sz(1) ge screen(0)) or (Sz(2) ge screen(1))

if scroll then $

draw=widget_draw(base, xs=Sz(1), ys=Sz(2), /fra, scroll=scroll, 	$
	x_scroll_size=screen(0)*0.97, y_scroll_size=screen(1)*0.87) 	$

	else draw=widget_draw(base, xs=Sz(1), ys=Sz(2), /fra)



widget_control, base, /real,/hour

widget_control,draw, get_val=tmp

wset,tmp

	if (type eq '') or (type eq 'FITS') or keyword_set(default) then begin
loadct,0
tvscl, image
	endif else begin
tv, image
if n_elements(r) gt 1 then tvlct,r,g,b
	endelse

empty

xmanager, 'show_picture', base

	end