pro mkkey_event, event
;
;
common mkkey_blk, key_arr, key
;
widget_control, get_uvalue=instance, event.top	; get instance
widget_control, get_uvalue=uvalue,event.id
if (n_elements(uvalue) eq 0) then uvalue=''
name=strmid(tag_names(event,/structure_name),7,1000)
;
case (name) of
"BUTTON": begin
	;;print, instance, uvalue
	case(uvalue) of
		"DONE": begin
			widget_control,/destroy,event.top
		       end
		"HELP":begin
			widget_control, instance.instruct, set_value= $
				['I have not learned how to help just yet, so for now', $
				'I am just going to spawn user documentaion help']
			xdl
		    end
		else: begin
			if (event.select) then begin
			    if (uvalue eq 'shape_cmdHAND') then begin
				input, 'Enter #col shape size ', xsiz, '64'
				input, 'Enter #lin shape size ', ysiz, xsiz
				input, 'Enter logic (=, >, <) ', logic, '='
				uvalue = 'shape_cmd(' + logic + xsiz + ',' + logic + ysiz + ')'
			    end
			    key_arr = [key_arr, uvalue]
			end else begin
			    ss = where(key_arr ne uvalue)
			    key_arr = key_arr(ss)		;remove selected item
			end

                        key = ''
                        n = n_elements(key_arr)
                        if (n gt 1) then key = key_arr(1)
                        for i=2,n-1 do key = key + ';' + key_arr(i)
                        key = strcompress(key, /remove_all)
			print, 'Key = ', key
		      end
	endcase
    end
"LIST":begin
	;
   end
"TEXT":begin
	;
   endcase
else:
endcase
;
end
;------------------------------------------------------------------------
function mkkey
;
;
common mkkey_blk, key_arr, key
key_arr = ''
;
; create structure to store base widget instance
instance_str="{dummy,"    +   $
	"file:''," +   $		; selected file
	"path:''," +   $		; directory
	"text_type:'',"   +   $ 	; user i/o keyword
	"instruct:0L,"    +   $		; browse instructions
        "dialog:0L,"	  +   $		; user input
	"file_list:0L,"   +   $		; data base files list widget	
	"summ_list:0L,"   +   $		; file summary list widget	
	"label1:0L,"      +   $		; widget label control (file list)
	"label2:0L,"	  +   $		; summary lable
	"label3:0L}"			; user dialog
instance_str=make_str(instance_str) 	; create structure
;
;
; now design the widget
;
; first, upper level buttons for major actions
base=widget_base(title='TEST_SEA2',/column)
widget_control,base,set_uvalue=base
xpdmenu,['"Quit"	  DONE',	$
	'"Options       " 		{',	$
	'"Options #1   "  OPTN1',	$
	'"Options #2   "  OPTN1',	$
	'"Options #3   "  OPTN1',	$
					'}',	$
	'"HELP"	  	  HELP'		],      $
	base
;
filta = gt_filta(indgen(6)+1, /str)
filta2 = ['Open', 'NaBan', 'Quart', 'Diffu', 'WdBan', 'NuDen']		;temporary until Gary updates KEYSEA
xmenu, filta, base, /frame, /nonexclusive, title='Filter-A', uvalue='opt='+filta2
;
filtb = gt_filtb(indgen(6)+1, /str)
filtb2 = ['Open', 'Al14', 'ALMG', 'BER1', 'AL12', 'MG3M']
xmenu, filtb, base, /frame, /nonexclusive, title='Filter-B', uvalue='xray='+filtb2
;
res = gt_res(indgen(3), /str)
res2 = ['1x1','2x2','4x4']
xmenu, res, base, /frame, /nonexclusive, title='Resolution', uvalue='res='+res2
;
expmode = ['Norm', 'Dark', 'Cal']
xmenu, expmode, base, /frame, /nonexclusive, title='Exposure Type', uvalue='expmode='+expmode
;
percentd = ['100% Data', '>80% Data']
xmenu, percentd, base, /frame, /nonexclusive, title='Percent Data', uvalue=['percentd=255', 'percentd>200']
;
shape_cmd = ['64x64', '128x128', '192x192', '256x256', '512x512', '256x256 or bigger', 'Enter by Hand']
shape_cmd2 = ['(=64,=64)', '(=128,=128)', '(=192,=192)', '(=256,=256)', '(=512,=512)', '(>255,>255)', 'HAND']
xmenu, shape_cmd, base, /frame, /nonexclusive, title='Image Shape', uvalue='shape_cmd'+shape_cmd2
;
mbe = string(indgen(20))
xmenu, mbe, base, /frame, /nonexclusive, title='MBE', uvalue='mbe='+mbe
;
;TOOD - allow manual entry of any sort
;
; make dialog box	- TODO - write the key as it is being built
;;user_io_label=widget_label(base,value='USER DIALOG')
;;widget_control,user_io_label,sensitive=0
;;dialog = widget_text(base,/editable,ysize=1, xsize=30)
;
; realize the browse widget
widget_control,base,/realize
;
; record the structure for this instance (via set_value=structure)
goto, skip
instance_str.file=listlabels(0)
instance_str.path=data_path 
instance_str.instruct=instruct
instance_str.dialog=dialog
instance_str.file_list=list
instance_str.summ_list=text
instance_str.label1=disp1_label
instance_str.label2=disp2_label
instance_str.label3=user_io_label
skip:
widget_control, base, set_uvalue = instance_str
;
xmanager,'mkkey',base
;
return, key
end
