
	pro cf_xtext_event,ev


WIDGET_CONTROL, ev.id, get_uval = uv


CASE uv OF

'Exit'	:	widget_control, ev.top, /destroy


'Open'	:	begin

	file = dialog_pickfile(/read)
	if file eq '' then return

	widget_control, ev.top, /destroy
	cf_xtext, file = file, title = shortfilename(file)

			end

'Save'	:	begin

	file = dialog_pickfile(/write)
	if file eq '' then return

widget_control, ev.top, get_uval = Out_text, /no_copy

	openw, lun, file, /get

for j=0L, n_elements(Out_text)-1 do printf, lun, Out_text[j]

	free_lun, lun

			end


ENDCASE

end



   pro cf_xtext, single_argument, text = text, file = file, group_leader = group_leader, $
identifier = identifier, numbers = numbers, title = title

;	Displays interactively a text similar to XDISPLAYFILE.


if n_elements(title) le 0 then title = 'xtext'

	CASE strlowcase(!version.os_family) OF

'windows': 	_win = '&'
'unix':	 	_win = ''

	ELSE: 	begin
		print, 'Not tested on this platform. Returning...'
		return
			end
	ENDCASE

if n_elements(group_leader) le 0 then group_leader=0L

	CASE 1 OF
n_params() eq 1:	Out_text = single_argument
n_params() eq 0 and n_elements(text) gt 0: Out_text = Text
n_params() eq 0 and n_elements(file) gt 0: Out_text = readform(file)

	ELSE: Out_text = ''
	ENDCASE


Nlines = n_elements(Out_text)

	if keyword_set(numbers) then begin
	n_signs = ceil(alog10(Nlines))
	Out_text = strmid(sindgen(Nlines), 12-n_signs, n_signs)+'  '+Out_text
	endif



base= widget_base(title = title, group_leader=group_leader, /column, mbar = bar)

button=widget_button(bar, val = _win + 'File', /menu)

	button1 = widget_button(button, val = _win + 'Open', uval='Open')
	button1 = widget_button(button, val = _win + 'Save', uval='Save')
	button1 = widget_button(button, val = 'E' + _win + 'xit', uval='Exit', /sep)


Txt = widget_text(base, /frame, Ysize = Nlines  < 50 > 4, $
	value = Out_text, /scroll, uvalue='text', xsize=max(strlen(Out_text)) +2 > 10)

widget_control, base, /realize, set_uval = Out_text, /no_copy
widget_control, Txt, /input

identifier = base

xmanager,'cf_xtext', base, group_leader = group_leader, /no_block

end