Viewing contents of file '../idllib/contrib/tappin/graffer/gr_control_menu.pro'
;+
; GR_CONTROL_MENU
;	Make the main control menu for graffer.
;
; Usage:
;	gr_control_menu, base
;
; Argument:
;	base	long	input	The widget ID of the parent base.
;
; History:
;	Extracted from GRAFFER (& Help button added for X): 18/12/96;
;	SJT
;-

pro Gr_ctl_event, event

base = widget_info(/child, event.top)
widget_control, base, get_uvalue = pdefs, /no_copy

idraw_flag = 1
ichange = 1b
track_flag = strpos(tag_names(event, /struct), 'TRACK') ne -1
nch = 1

if (track_flag) then begin
    idraw_flag = 0
    ichange = 0b
    
    if (event.enter eq 0) then begin
        graff_msg, pdefs.ids.hlptxt, ''
        goto, miss_case
    endif
endif

case event.value of
    'Exit': if (track_flag) then  $
      graff_msg, pdefs.ids.hlptxt, 'EXIT from GRAFFER' $
    else begin
        if (pdefs.chflag) then ido = graff_s_prompt(pdefs) $
        else ido = 1b
        if (ido) then begin
            if (not pdefs.chflag) then gr_auto_delete, pdefs
            graff_clear, pdefs
            widget_control, event.top, /destroy
            return
        endif
        idraw_flag = 0
        ichange = 0b
    end
    
    'Hard Copy': graff_msg, pdefs.ids.hlptxt, 'Make PostScript version ' + $
      'of plot'
        
    'Hard Copy.Set up ...': if (track_flag) then $
      graff_msg, pdefs.ids.hlptxt, 'Define hardcopy parameters and ' + $
      'make copy' $
    else begin
        ichange = graff_hard(pdefs)
        if (ichange) then nch = 10
    endelse
    
    'Hard Copy.Quick': if (track_flag) then $
      graff_msg, pdefs.ids.hlptxt, 'Make hardcopy using current settings' $
    else ichange = graff_hard(pdefs, /no_set)
    
    'File': graff_msg, pdefs.ids.hlptxt, 'Saving and opening files'
    
    'File.Save': graff_msg, pdefs.ids.hlptxt, 'Save plot in internal format ' + $
      'for future use, or do screen dump'
    
    'File.Save.Save binary to current': if (track_flag) then $
      graff_msg, pdefs.ids.hlptxt, 'Save plot to currently selected ' + $
      'filename in binary form' $
    else begin
        gr_bin_save, pdefs
        ichange = 0b
        idraw_flag = 0
    end
    'File.Save.Save ascii to current': if (track_flag) then $
      graff_msg, pdefs.ids.hlptxt, 'Save plot to currently selected ' + $
      'filename in ascii form' $
    else begin
        gr_asc_save, pdefs
        ichange = 0b
        idraw_flag = 0
    end
    'File.Save.Save binary to ...': if (track_flag) then $
      graff_msg, pdefs.ids.hlptxt, 'Save plot to new file name in ' + $
      'binary form' $
    else begin
        dir = pdefs.dir
        fc = graff_fname(pdefs.ids.graffer, pdefs.name, dir, pdefs.popflag)
        pdefs.name = fc
        pdefs.dir = dir
        gr_bin_save, pdefs
        ichange = 0b
        graff_set_vals, pdefs
    end
    'File.Save.Save ascii to ...': if (track_flag) then $
      graff_msg, pdefs.ids.hlptxt, 'Save plot to new file name in ' + $
      'ascii form' $
    else begin
        dir = pdefs.dir
        fc = graff_fname(pdefs.ids.graffer, pdefs.name, dir, pdefs.popflag)
        pdefs.name = fc
        pdefs.dir = dir
        gr_asc_save, pdefs
        ichange = 0b
        graff_set_vals, pdefs
    end
    
    'File.Save.Dump screen': graff_msg, pdefs.ids.hlptxt, 'Make a screen ' + $
      'dump to an image file'
    
    'File.Save.Dump screen.Gif': if (track_flag) then $
      graff_msg, pdefs.ids.hlptxt, 'Dump to GIF (Graphical Interchange ' + $
      'Format) file' $
    else begin
        graff_dump, pdefs, /gif
        ichange = 0b
        idraw_flag = 0
    end
    'File.Save.Dump screen.Tiff': if (track_flag) then $
      graff_msg, pdefs.ids.hlptxt, 'Dump to TIFF (Tagged Image File ' + $
      'Format) file' $
    else begin
        graff_dump, pdefs, /tiff
        ichange = 0b
        idraw_flag = 0
    end
    'File.Save.Dump screen.Nrif': if (track_flag) then $
      graff_msg, pdefs.ids.hlptxt, 'Dump to NRIF (NCAR Raster Image ' + $
      'File) ' $
    else begin
        graff_dump, pdefs, /nrif
        ichange = 0b
        idraw_flag = 0
    end
    
    'File.Open': graff_msg, pdefs.ids.hlptxt, 'Open a GRAFFER file'
    'File.Open.Restore ...': if (track_flag) then $
      graff_msg, pdefs.ids.hlptxt, 'Select and open an existing file' $
    else begin
        if (pdefs.chflag) then ido = graff_s_prompt(pdefs) $
        else ido = 1b
        if (ido) then begin
            if (not pdefs.chflag) then gr_auto_delete, pdefs
            s_pdefs = pdefs
            graff_init, pdefs
            igot = graff_get(pdefs, previous_name = s_pdefs.name)
            if (igot eq 0) then pdefs = s_pdefs
        endif
        ichange = 0b
    end
    
    'File.Open.New ...': if (track_flag) then $
      graff_msg, pdefs.ids.hlptxt, 'Create a new file' $
    else begin
        if (pdefs.chflag) then ido = graff_s_prompt(pdefs) $
        else ido = 1b
        if (ido) then begin
            if (not pdefs.chflag) then gr_auto_delete, pdefs
            dir = pdefs.dir
            fc = graff_fname(pdefs.ids.graffer, '', dir, pdefs.popflag)
            if (fc eq '') then begin
                graff_msg, pdefs.ids.message, 'New file not given'
            endif else begin
                graff_init, pdefs, dir+fc
                graff_set_vals, pdefs
            endelse
        end
        ichange = 0b
    end
    
    'Options...': if (track_flag) then $
      graff_msg, pdefs.ids.hlptxt, 'Set special options' $
    else begin
        gr_opt_set, pdefs
        idraw_flag = 0
        ichange = 0b
    end
       
    'Help': if (track_flag) then $
      graff_msg, pdefs.ids.hlptxt, 'Display help topics' $
    else begin
        gr_disp_man, pdefs.ids.graffer
        idraw_flag = 0
        ichange = 0b
    end
endcase

if (idraw_flag and (pdefs.opts.update eq 0)) then gr_plot_object, pdefs
if (ichange) then begin
    pdefs.chflag = 1b
    pdefs.transient.changes = pdefs.transient.changes+nch
    if (pdefs.transient.changes gt 20) then begin
        gr_bin_save, pdefs, /auto
        if (pdefs.opts.update eq 1) then gr_plot_object, pdefs
    endif
endif
widget_control, pdefs.ids.chtick, map = pdefs.chflag

Miss_case:

widget_control, base, set_uvalue = pdefs, /no_copy

end


    
pro Gr_control_menu, base

ctlmenu = [{CW_PDMENU_S, flags:0, name:'Exit'}, $
           {cw_pdmenu_s, 1, 'File'}, $
           {cw_pdmenu_s, 1, 'Save'}, $
           {cw_pdmenu_s, 0, 'Save binary to current'}, $
           {cw_pdmenu_s, 0, 'Save ascii to current'}, $
           {cw_pdmenu_s, 0, 'Save binary to ...'}, $
           {cw_pdmenu_s, 0, 'Save ascii to ...'}, $
           {cw_pdmenu_s, 3, 'Dump screen'}, $
           {cw_pdmenu_s, 0, 'Gif'}, $
           {cw_pdmenu_s, 0, 'Tiff'}, $
           {cw_pdmenu_s, 2, 'Nrif'}, $
           {cw_pdmenu_s, 3, 'Open'}, $
           {cw_pdmenu_s, 0, 'Restore ...'}, $
           {cw_pdmenu_s, 2, 'New ...'}, $
           {cw_pdmenu_s, 1, 'Hard Copy'}, $
           {cw_pdmenu_s, 0, 'Quick'}, $
           {cw_pdmenu_s, 2, 'Set up ...'}, $
           {cw_pdmenu_s, 0, 'Options...'}, $
           {cw_pdmenu_s, 2, 'Help'}]

jb = widget_base(base, /row, space = 1, xpad = 1, ypad = 1, event_pro $
                 = 'gr_ctl_event')

junk = cw_pdtmenu(jb, ctlmenu, /return_full_name, uvalue = $
                  'CONTROL', /track)

end