Viewing contents of file '../idllib/contrib/tappin/graffer/gr_opt_set.pro'
;+
; GR_OPT_SET
;	Set GRAFFER special options, e.g updating state etc.
;
; Usage:
;	gr_opt_set, pdefs
;
; Argument:
;	pdefs	struct	in/out	The ubiquitous GRAFFER structure.
;
; History:
;	Original: 4/7/97; SJT
;	Add mouse-editing default option: 13/8/97; SJT
;-

function Gr_opt_event, event

widget_control, event.id, get_uvalue = but
widget_control, event.top, get_uvalue = opts, /no_copy

iexit = 0

case but of
    'SH2D':  opts.s2d = event.value
    'UPDATE': opts.update = event.value
    'TIME': opts.auto_delay = event.value > 10 ; Safety valve of 10
                                ; seconds.
    'MOUSE': opts.mouse = event.value
    
    'DONT': iexit = -1
    'DO': iexit = 1
    'SAVE': begin
        cd, current = cdir, getenv('HOME')
        openw, ilu, /get, '.grafferrc'
        printf, ilu, 'Autosave: ', opts.auto_delay
        printf, ilu, 'Update: ', opts.update
        printf, ilu, 'Supp2D: ', opts.s2d
        printf, ilu, 'MouseEdit:', opts.mouse
        free_lun, ilu
        cd, cdir
    end
endcase

widget_control, event.top, set_uvalue = opts, /no_copy

return, {id:event.id, top:event.top, handler:0l, exited:iexit}

end

pro Gr_opt_set, pdefs

widget_control, pdefs.ids.graffer, sensitive = 0
if (widget_info(pdefs.ids.graffer2, /valid)) then $
  widget_control, pdefs.ids.graffer2, sensitive = 0

base = widget_base(resource = 'Graffer', title = 'Graffer Options', $
                   /column)

junk = widget_label(base, value = 'Graffer special options')

junk = cw_bbselector(base, ['Display', 'Suppress'],  $
                     label_left = 'Show 2-D data?', set_value = $
                     pdefs.opts.s2d, uvalue = 'SH2D')

junk = cw_bbselector(base, ['Automatic', 'Semi-automatic', 'Manual'], $
                     label_left = 'Plot updating', set_value = $
                     pdefs.opts.update, uvalue = 'UPDATE') 

junk = cw_bbselector(base, ['Disabled', 'Enabled'], label_left = $
                     'Default mouse editing', set_value = $
                     pdefs.opts.mouse, uvalue = 'MOUSE')

junk = graff_enter(base, label = 'Autosave interval:', value = $
                   pdefs.opts.auto_delay, /float, /all_events, $
                   /capture, format = "(F6.1)", xsize = 7, uvalue = $
                   'TIME')

jb = widget_base(base, /row)
junk = widget_button(jb, value = ' Cancel ', uvalue = 'DONT')
junk = widget_button(jb, value = '  Do it  ', uvalue = 'DO')
junk = widget_button(jb, value = '  Save  ', uvalue = 'SAVE')

widget_control, base, /real, event_fun = 'gr_opt_event', set_uvalue = $
  pdefs.opts

repeat begin
    ev = widget_event(base)
end until (ev.exited ne 0)

if (ev.exited eq 1) then begin
    widget_control, base, get_uvalue = opts, /no_copy
    pdefs.opts = opts
    widget_control, pdefs.ids.update, map = pdefs.opts.update ne 0
endif

widget_control, base, /destroy

widget_control, pdefs.ids.graffer, sensitive = 1
if (widget_info(pdefs.ids.graffer2, /valid)) then $
  widget_control, pdefs.ids.graffer2, sensitive = 1

if (pdefs.opts.update eq 0) then gr_plot_object, pdefs

end