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