; ; 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