Viewing contents of file '../idllib/contrib/tappin/graffer/graff_dsdel.pro'
;+
; GRAFF_DSDEL
;	Delete the current data set.
;
; Usage:
;	graff_dsdel, pdefs
;
; Argument
;	pdefs	struct	input	The graffer structure, needed if save
;	requested.
;
; History:
;	Original: 29/8/95; SJT
;-

pro Graff_dsdel, pdefs

widget_control, pdefs.ids.graffer, sensitive = 0

handle_value, pdefs.data, data, /no_copy
cdesc = data(pdefs.cset).descript
handle_value, pdefs.data, data, /no_copy, /set

base = widget_base(/column, title = 'Graffer delete?', $
                   group_leader = pdefs.ids.graffer, resource = $
                   'Graffer', tlb_frame_attr = 31)

if (pdefs.nsets gt 1) then begin
    msg = ['Do you really want to', $
           'delete the current', $
           'data set containing']
    for j = 0, n_elements(msg)-1 do  $
      junk = widget_label(base, value = msg(j), /align_center)
    
    junk = widget_text(base, value = cdesc, /align_center)
    
    opts = ['CANCEL', 'DELETE']
    vals = [0, 1]
    
endif else begin
    msg = ["Can't delete the only", $
           "data set present"]
    for j = 0, n_elements(msg)-1 do  $
      junk = widget_label(base, value = msg(j), /align_center)
    
    opts = ['Acknowledge']
    vals = [0]
endelse

junk = cw_bgroup(base, opts, /row, button_uvalue = vals, ids = bids)


;	RYO widget management to allow us to get the values back from
;	the event handler without using a common block, even after the
;	hierarchy has been destroyed.

widget_control, base, /real
widget_control, bids(0), /input

ev = widget_event(base)

widget_control, base, /destroy


widget_control, pdefs.ids.graffer, sensitive = 1

if (ev.value eq 0) then return   ; Don't delete the ds.

handle_value, pdefs.data, data, /no_copy
handle_value, pdefs.key.list, list, /no_copy
ikey = bytarr(n_elements(data))
if (n_elements(list) ne 0) then ikey(list) = 1b

if (pdefs.cset eq 0) then begin
    data = data(1:*)
    ikey = ikey(1:*)
endif else if (pdefs.cset eq pdefs.nsets-1) then begin
    data = data(0:pdefs.cset-1)
    ikey = ikey(0:pdefs.cset-1)
endif else begin
    data = [data(0:Pdefs.cset-1), data(Pdefs.cset+1:*)]
    ikey = [ikey(0:Pdefs.cset-1), ikey(Pdefs.cset+1:*)]
endelse
list = where(ikey, nkey)

if (nkey ne 0) then handle_value, pdefs.key.list, list, /no_copy, /set
handle_value, pdefs.data, data, /no_copy, /set

pdefs.nsets = pdefs.nsets-1
pdefs.cset = pdefs.cset < (pdefs.nsets-1)

graff_set_vals, pdefs, /set_only

end