pro kb_in_helio_event,ev,a

Common Exch_kb_in_helio,ID,Value,Label

WIDGET_CONTROL,ev.id,GET_UVALUE = uv

CASE uv OF

"DONE":	WIDGET_CONTROL,ev.top,/DESTROY

"Helio": begin
	WIDGET_CONTROL,ID.Label,set_v=Label(0)
	ID.Mode=0
	end

"Plane": begin
	WIDGET_CONTROL,ID.Label,set_v=Label(1)
	ID.Mode=1
	end

"Help":

"TEXT": begin
	WIDGET_CONTROL,ev.id,GET_V=a
if (a(0) eq '') and n_elements(a) gt 1 then a=a(1:*)
if (a(0) eq '') and n_elements(a) gt 1 then a=a(1:*)

a=strlowcase(strcompress(a(0),/rem))

i1=strpos(a,',')
i2=strlen(a)

lon=float(strmid(a,  1-ID.Mode,   i1+ID.Mode-1))
lat=float(strmid(a, i1-ID.Mode+2, i2-i1))

if strmid(a,0,1) eq 'e' then lon=-lon
if strmid(a,i1+1,1) eq 's' then lat=-lat

	Value=[[Value],[lon,lat,ID.Mode]]

if Value(2,0) eq -1. then Value=Value(*,1:*)

	end
ELSE:

ENDCASE
empty
end

;*************************************

pro kb_in_helio,a,prompt=prompt,xsize=xsize,group_leader=group_leader
Common Exch_kb_in_helio,ID,Value,Label

;	Interactive input of the heliographical coordinates.

IF(XRegistered("kb_in_helio") NE 0) THEN GOTO, exit

device,get_scr=scr
if n_elements(prompt) le 0 then prompt='Input spots coordinates'
if n_elements(group_leader) le 0 then group_leader=0
if n_elements(xsize) le 0 then xsize=scr(0)/3

ID={base:0L,Text:0L,Label:0L,Mode:0.}
if n_elements(a) le 0 then Value=[0.,0.,-1.] else Value=a

ID.base=widget_base(/colu,xoff=scr(0)*0.01,yoff=scr(1)*0.01, $
     space=5,xsiz=xsize,ypad=6,tit=prompt,group=group_leader)

XPdMenu,	['"DONE" 			DONE', $
		'"Mode" {', $
			'"Latitude,  Longitude"	Helio',  $
			'"Radius  fractions"	Plane', '}', $
		'"Help" 			Help'],ID.base

Label=['     Example:  w47.3, s28','     Example:  -0.93, 0.675']

ID.label=widget_label(ID.base,YSI=20,Val=Label(0))

	IF Value(2,0) eq -1. THEN Textval='' ELSE BEGIN

Lat=(Lon=string(Value(0,*)))

	for j=0,n_elements(Lon)-1 do begin
IF Value(0,j) ge 0. then Lon(j)='w' else Lon(j)='e'
IF Value(1,j) ge 0. then Lat(j)='n' else Lat(j)='s'
	endfor

Lon=strcompress(Lon+string(abs(Value(0,*))),/rem)
Lat=strcompress(Lat+string(abs(Value(1,*))),/rem)

Textval=transpose(Lon+', '+Lat)

	ENDELSE

ID.text=WIDGET_TEXT(ID.base,/fra,/EDIT,/scroll, $
	XSI=40,YSI=4,UV='TEXT',val=Textval)

WIDGET_CONTROL,ID.base,/realize,/hourglass
WIDGET_CONTROL,ID.text,/input_focus

xmanager,'kb_in_helio',ID.base,/modal

exit:
a=Value
end

