;
; Auto Save File For modify_merge_list.pro
;



; CODE MODIFICATIONS MADE ABOVE THIS COMMENT WILL BE LOST.
; DO NOT REMOVE THIS COMMENT: BEGIN HEADER


;+
; NAME:
;	Modify_Merge_list
;
; PURPOSE:
;	GUI interface to modify merge_list structure.
;
; CATEGORY:
;	SPEX, Widgets
;
; CALLING SEQUENCE:
;	MODIFY_MERGE_LIST, Merge_list
;
; INPUTS:
;	Merge_list: SPEX Merge_list structure with database info.
;
; OPTIONAL INPUTS:
;	
; KEYWORD PARAMETERS:
;
; OUTPUTS:
;	Returns the modified Merge_list structure
;
; COMMON BLOCKS:
;
; SIDE EFFECTS:
;
; RESTRICTIONS:
;
; PROCEDURE:
;
;
; MODIFICATION HISTORY:
; 	Written by:	ras, 17-oct-1995
;
;-



; DO NOT REMOVE THIS COMMENT: END HEADER
; CODE MODIFICATIONS MADE BELOW THIS COMMENT WILL BE LOST.


; CODE MODIFICATIONS MADE ABOVE THIS COMMENT WILL BE LOST.
; DO NOT REMOVE THIS COMMENT: BEGIN MODIFY_MERGE_LIST_PDMENU




PRO MODIFY_MERGE_LIST_PDMENU_Event, Event

common modify_merge_list, base12, datalist, current_datalist, current_id, wtags

id = str2arr( event.value,delim='.')
current_id = fix(id(1))
current_datalist = datalist(current_id)
xmatrix, current_datalist, base12, wtags=wtags,title=id(1),nx=1,/edit,/all
iwidge=base12
repeat begin
	iwidge=iwidge+1 
	list = 0
	if xalive(iwidge) then list = widget_info(iwidge,/type) eq 5
endrep until list
widget_control, iwidge, set_value = id(1)

END


; DO NOT REMOVE THIS COMMENT: END MODIFY_MERGE_LIST_PDMENU
; CODE MODIFICATIONS MADE BELOW THIS COMMENT WILL BE LOST.


; CODE MODIFICATIONS MADE ABOVE THIS COMMENT WILL BE LOST.
; DO NOT REMOVE THIS COMMENT: BEGIN MODIFY_MERGE_LIST_MAIN




PRO MODIFY_MERGE_LIST_MAIN_Event, Event

common modify_merge_list, base12, datalist, wstruct, current_id, cwtags

  WIDGET_CONTROL,Event.Id,GET_UVALUE= uservalue
  checkvar, uservalue, ''

wtype=widget_info(event.id,/type)
;-- text events

if (wtype eq 3) and exist(cwtags) then begin
 clook=where(cwtags eq event.id,cnt)
 sz=size(cwtags)
 if cnt gt 0 then begin
  two_d=0b
  if sz(0) eq 2 then begin
   two_d=1b
   ij=get_ij(clook(0),sz(1))
   i=ij(0) & j=ij(1)
   field=wstruct(j).(i)
  endif else begin
   index=clook(0)
   field=wstruct.(index)
  endelse
  widget_control,event.id,get_value=value
  value=strcompress(strtrim(value,2))
  if n_elements(field) eq 1 then value=value(0) else $
   value=str2arr(value(0),delim=' ')
  if datatype(field) ne 'STC' then begin
   if two_d then wstruct(j).(i)=value else wstruct.(index)=value
  endif
 endif                                     
datalist(current_id) = wstruct
endif  

  CASE uservalue OF 

  ; Event for Structure Select
  'MODIFY_MERGE_LIST_PDMENU': MODIFY_MERGE_LIST_PDMENU_Event, Event
  'BUTTON15': BEGIN
      widget_control,/clear,event.top,/destroy
      END
  else:	
  ENDCASE

END


; DO NOT REMOVE THIS COMMENT: END MODIFY_MERGE_LIST_MAIN
; CODE MODIFICATIONS MADE BELOW THIS COMMENT WILL BE LOST.



PRO modify_merge_list, merge_list, GROUP=Group

common modify_merge_list, base12, datalist, current_datalist, current_id, wtags

datalist = merge_list.datalist
for i=0,n_tags(datalist) -1 do $
  if datatype(datalist.(i)) eq 	'STR' then datalist.(i)=datalist.(i)+' '

tnames = tag_names(merge_list.datalist)
ntags  = n_elements(tnames)
mscript = strarr((2+ntags)*merge_list.number+1+4)
mscript(0) = '------------------------------'
im = 1
for i=0,merge_list.number -1 do begin
        mscript(im) = 'Merge_list.datalist('+strtrim(i,2)+')'
	im = im + 1
	for j=0,ntags-1 do begin
	  newval = arr2str(string( merge_list.datalist(i).(j) ),delim=' ')
	  mscript(im)=  tnames(j)+': '+newval
	  im = im+1
	endfor
	mscript(im) = '------------------------------'
	im = im +1
endfor
mscript=mscript(where(mscript ne ''))

  IF N_ELEMENTS(Group) EQ 0 THEN GROUP=0

  junk   = { CW_PDMENU_S, flags:0, name:'' }


  MODIFY_MERGE_LIST_MAIN = WIDGET_BASE(GROUP_LEADER=Group, $
      ROW=1, $
      MAP=1, $
      TITLE='Modify Merge_list Structure', $
      UVALUE='MODIFY_MERGE_LIST_MAIN')

  BASE11 = WIDGET_BASE(MODIFY_MERGE_LIST_MAIN, $
      COLUMN=1, $
      FRAME=5, $
      MAP=1, $
      TITLE='left frame', $
      UVALUE='BASE11', $
      YSIZE=400)

  pulldown_button =  'Merge_list Sub-Structure to Edit' 
  MenuDesc856 = [ $
      { CW_PDMENU_S,       3, pulldown_button  }, $ ;        0
        { CW_PDMENU_S,       0, '0' }, $ ;        1
        { CW_PDMENU_S,       0, '1' }, $ ;        2
        { CW_PDMENU_S,       0, '2' }, $ ;        3
        { CW_PDMENU_S,       0, '3' }, $ ;        4
        { CW_PDMENU_S,       0, '4' }, $ ;        5
        { CW_PDMENU_S,       0, '5' }, $ ;        6
        { CW_PDMENU_S,       0, '6' }, $ ;        7
        { CW_PDMENU_S,       0, '7' }, $ ;        8
        { CW_PDMENU_S,       0, '8' }, $ ;        9
        { CW_PDMENU_S,       2, '9' } $  ;     10

  ]


  MODIFY_MERGE_LIST_PDMENU = CW_PDMENU( BASE11, MenuDesc856, /RETURN_FULL_NAME, $
      UVALUE='MODIFY_MERGE_LIST_PDMENU')

  BUTTON15 = WIDGET_BUTTON( BASE11, $
      UVALUE='BUTTON15', $
      VALUE='CLOSE')

  TextVal1693 = [ $
    'The fields shown on the right may be edited to ', $
    'control the data selection for the merge.  There', $
    'are up to 10 data selections allowed and the fields', $
    'may be chosen using "'+pulldown_button+'"', $
    'Hit "CLOSE" when you are done.',$
     'These are the starting values controlling', $
    ' the data selection:',$
     mscript ]
  TEXT21 = WIDGET_TEXT( BASE11,VALUE=TextVal1693, $
      UVALUE='TEXT21', $
      XSIZE=40, $
      YSIZE=20)


  BASE12 = WIDGET_BASE(MODIFY_MERGE_LIST_MAIN, $
      ROW=1, $
      FRAME=5, $
      MAP=1, $
      TITLE='Right Frame', $
      UVALUE='BASE12', $
      YSIZE=400)

  current_id = 0
  current_datalist = datalist(current_id)
  xmatrix, current_datalist, base12, wtags=wtags,title='0',nx=1,/edit,/all


  WIDGET_CONTROL, MODIFY_MERGE_LIST_MAIN, /REALIZE

  XMANAGER, 'MODIFY_MERGE_LIST_MAIN', MODIFY_MERGE_LIST_MAIN, /modal
  icheck = intarr(n_elements(datalist))
  for i=0,n_tags(datalist) -1 do $
  case datatype(datalist.(i)) of
	'STR': begin
	 w =where( strcompress(/remove,datalist.(i)(0,*)) ne '',nw)
	 if nw ge 1 then icheck(w)=1
	 merge_list.datalist.(i)=''
	 datalist.(i)=strtrim(datalist.(i),2)
	end
	else: begin
	 w =  where( datalist.(i) ne 0, nw)
	 if nw ge 1 then icheck(w)=1
	 merge_list.datalist.(i)=0
	end
	endcase
  merge_list.number = fix(total(icheck))
  if total(icheck) ge 1 then $
	merge_list.datalist(0:merge_list.number-1) = datalist( where(icheck) )     
END
