pro xdisp_fits, h_out, img_out, img3_out, $
        summary=summary, margin=margin, $
    infil=infil0, dir=dir0, disp_size=disp_size
;
;
common xdisp_fits_blk1b, infil, dir, files, images, h, img, img2, dirarr, tit
common xdisp_fits_blk3, bkg, bkg_fil
common xdisp_fits_blk4c, comment, align_comm, max_cross_corr, cross_smoo, fmedian_width
common xdisp_fits_blk5b, img3, logfil
;
progver = 'XDISP_FITS  V1.24'
img=0
img2=0
img3=0
h = ''
comment = ''
comment2 = ''
align_comm = ''
if (n_elements(bkg) eq 0) then bkg = 0b
if (n_elements(bkg_fil) eq 0) then bkg_fil = ''
if (n_elements(sttim0) eq 0) then sttim = '' else sttim = sttim0
if (n_elements(entim0) eq 0) then entim = '' else entim = entim0
if (n_elements(max_cross_corr) eq 0) then max_cross_corr = 10
if (n_elements(cross_smoo) eq 0) then cross_smoo = 0
if (n_elements(fmedian_width) eq 0) then fmedian_width = 6
if (n_elements(dirarr) eq 0) then dirarr = ''
;
if (n_elements(dir0) eq 0) then begin
    case 1 of
    keyword_set(getenv('XDISP_FITS_BASE_DIR')): begin
        bdir = getenv('XDISP_FITS_BASE_DIR')
        dirarr = get_subdirs(bdir)
        end
    keyword_set(getenv('XDISP_FITS_DIRS')): begin
        bdir = getenv('XDISP_FITS_DIRS')
        dirarr = str2arr(bdir)
        end
        else:
    endcase
end else begin
    dir = dir0
end
;
if (n_elements(infil0) ne 0) then begin
    infil = infil0
    break_file, infil0, dsk_log, dir
end else begin
    infil = ''
end
files = ''
file_list00 = file_list(dir, '*.fit*', file=files)
files = reverse(files)
if (max(strlen(files)) lt 10) then files = files + '                                     '
if (n_elements(disp_size) eq 0) then disp_size = 512
if (!d.window eq -1) or (!d.window eq 32) then wdef, next_window(/user), disp_size
;
logfil = concat_dir('$HOME', ex2fid(anytim2ex(!stime))+'.xdisplog')
file_append, logfil, ['XDISP_FITS  Started: ' + !stime, ' ']
;
font = get_xfont(closest=12,/only_one,/fixed)
if (getenv('MDI_DEF_FONT') ne "") then font = getenv('MDI_DEF_FONT')
widget_control, default_font=font
device, font=font

base00=widget_base(/column,title=progver, xoff=0, yoff=0)
xmenu, ['QUIT', 'Set Directory', $
        'List Directory', 'Sel Dir From Array', $
        'Set Printer', 'Print Header'], base00, buttons=main_buts, /row
xmenu, ['Create a new Window', 'Redisplay Image', 'Redisplay Orig Image', $
        'Hardcopy', 'Save2GIF'], base00, buttons=main_buts, /row
xmenu, ['ReSet Image Min/Max and Sigma', 'Run PROFILES', 'Save to FITS'], base00, buttons=main_buts, /row
xmenu, ['Copy Img to Bkg Buff', 'Clear Bkg Buff', 'Do Bkg Subtraction'], $
            base00, buttons=main_buts, /row
xmenu, ['Median Filter', 'Box Stats', 'Do Cross Corr', 'Find Grid'], $
            base00, buttons=main_buts, /row

linebase = widget_base(base00, /row)
xx       = widget_label(linebase, value = 'Bkg File:')
id_bkg   = widget_text(linebase, xsize=30, ysize=1, value=bkg_fil)
;
linebase = widget_base(base00, /row)
xx       = widget_label(linebase, value = 'FMEDIAN Width:')
id_fmed  = widget_text(linebase, xsize=5, ysize=1, value=strtrim(fmedian_width,2), /editable)
xx       = widget_label(linebase, value = 'Max Cross Corr (pixels):')
id_cc    = widget_text(linebase, xsize=5, ysize=1, value=strtrim(max_cross_corr,2), /editable)
xx       = widget_label(linebase, value = 'CC Smooth:')
id_cc_smoo= widget_text(linebase, xsize=5, ysize=1, value=strtrim(cross_smoo,2), /editable)

xmenu, ['Extract Sub-Image', 'Fixed Extract', 'Clear Extract'], base00, buttons=main_buts, /row
linebase = widget_base(base00, /row)
xx       = widget_label(linebase, value = 'Extract Info:')
id_ext   = widget_text(linebase, xsize=30, ysize=1, value='')


xmenu, ['Display simple image', $
        'Display as IMG_SUMMARY'], $
        base00, /row, /exclusive, /frame

base0=widget_base(base00, /row)

base_col1 = widget_base(base00, /column, /frame)            

linebase = widget_base(base_col1, /row)
xx       = widget_label(linebase, value = 'Image Min:')
id_imin  = widget_text(linebase, xsize=12, ysize=1)
xx       = widget_label(linebase, value = ' Max:')
id_imax  = widget_text(linebase, xsize=12, ysize=1)

linebase = widget_base(base_col1, /row)
xx       = widget_label(linebase, value = 'Scale Min:')
id_smin  = widget_text(linebase, xsize=12, ysize=1, /editable)
xx       = widget_label(linebase, value = ' Max:')
id_smax  = widget_text(linebase, xsize=12, ysize=1, /editable)
xx       = widget_label(linebase, value = ' Sigma:')
id_sig   = widget_text(linebase, xsize=12, ysize=1, /editable)


;-------------------------
base_group3=widget_base(base0, /row, /frame)
base3_col1 = widget_base(base_group3, /column, /frame)
xx = widget_label(base3_col1, value = 'File List')
id_filelist = widget_list(base3_col1, ysize=20, value=files)
;widget_control, id_info, /append

base3_col2 = widget_base(base_group3, /column, /frame)
xx = widget_label(base3_col2, value = 'Current Image Info')
id_img_info = widget_list(base3_col2, ysize=20, xsiz=45, value='                         ')

;-------------------------

base_col2 = widget_base(base00, /column, /frame)            

linebase = widget_base(base_col2, /row)
xx       = widget_label(linebase, value = 'Info:')
id_info  = widget_text(linebase, xsize=60, ysize=1)
linebase = widget_base(base_col2, /row)
xx       = widget_label(linebase, value = 'Comments:')
id_comm  = widget_text(linebase, xsize=60, ysize=1, /editable)

;--------------------------

if (n_elements(sigma) eq 0) then sigma = 0
all = {base:base0, $
    id_filelist: id_filelist, $
        id_img_info: id_img_info, $
    disp_size: disp_size, $
    style: keyword_set(summary), $
    sigma: sigma, $
    id_imin: id_imin, id_imax: id_imax, $
    id_smin: id_smin, id_smax: id_smax, id_sig: id_sig, $
    id_bkg: id_bkg, $
    id_info: id_info, id_comm: id_comm, $
    id_ext: id_ext, e_x0: 0, e_y0: 0, e_n: 0, e_str: ' ', $
    id_fmed: id_fmed, id_cc: id_cc, id_cc_smoo:id_cc_smoo, $
    junk:0}

widget_control,set_uvalue=all, base00
widget_control,base0,/realize
widget_control,set_uvalue=all, base00
xmanager, 'xdisp_fits', base00

if (n_elements(h) ne 0) then begin
    h_out = temporary(h)
    img_out = temporary(img)
    img3_out = temporary(img3)
end
return
end