;+
; MPEG_WID
;	Widget interface for make_mpeg.
;
; Usage:
;	mpeg_wid[, group=group]
;
; Keyword:
;	group	long	input	The id of the group leader.
;
; History:
;	Original: 24/7/96; SJT
;-

pro Mpeg_event, event

common Mpeg_wids, file, dir, scratch, range, fileid, destid, scrid, $
  minid, maxid, times, names, iscale

widget_control, event.id, get_uvalue = what

case what of
    'CANCEL': widget_control, event.top, /destroy
    
    'DO': begin
        widget_control, fileid, get_value = file
        file = file(0)
        widget_control, destid, get_value = dir
        dir = dir(0)
        widget_control, scrid, get_value = scratch
        scratch = scratch(0)
        widget_control, minid, get_value = r0
        widget_control, maxid, get_value = r1
        if (r1 ne r0) then begin
            range = [r0, r1]
            make_mpeg, file, dir, times = times, scratch = scratch, $
              range = range, names = names, rescale = iscale-1
        endif else  $
          make_mpeg, file, dir, times = times, scratch = scratch, $
          names = names, rescale = iscale-1
        widget_control, event.top, /destroy
    end
    
    'TIME': times = event.value
    'NAME': names = event.value
    'SCALE': iscale = event.value
endcase

end

pro Mpeg_wid, group=group

common Mpeg_wids, file, dir, scratch, range, fileid, destid, scrid, $
  minid, maxid, times, names, iscale
@wload.com

if (xregistered('mpeg')) then return ; No duplicates

if (n_elements(file) eq 0) then file = 'lasco.mpg'
if (n_elements(dir) eq 0) then begin
    dir = getenv("LASCO_WORK")
    if (dir eq "") then dir = getenv("WORK")
    dir = dir+!delimiter+getenv("USER")+!delimiter+"gif"+!delimiter
endif
if (n_elements(scratch) eq 0) then scratch = dir
if (n_elements(range) eq 0) then begin
    if (n_elements(min_img) ne 0) then range = [min_img, max_img] $
    else range = [0., 0.]
endif
if (n_elements(ncol) eq 0) then ncol = !D.table_size
if (n_elements(times) eq 0) then times = 0
if (n_elements(names) eq 0) then names = 0
if (n_elements(iscale) eq 0) then iscale = 1

base = widget_base(/column, title = "LASCO Movie Maker")

fileid = cw_field(base, title = "File name:", value = file, xsize = $
                  20, /string)
destid = cw_field(base, title = "Directory:", value = dir, xsize = 30)
scrid = cw_field(base, title = "Workspace:", value = scratch, xsize = $
                 30, /string)

jb = widget_base(base, /row, /frame)
minid = cw_field(jb, title = "Range: Min:", value = range(0), xsize = $
                 10, /float)
maxid = cw_field(jb, title = "Max", value = range(1), xsize = 10, /float)

jb = widget_base(base, /row, /frame)

locnames = ['None',  $
            'Bottom Left',  $
            'Bottom Right',  $
            'Top Left',  $
            'Top Right']

junk = cw_bgroup(jb, locnames, /column, /exclusive, label_top = "Time " + $
                 "labels", uvalue = "TIME", set_value = times, /no_release)
junk = cw_bgroup(jb, locnames, /column, /exclusive, label_top = "Name " + $
                 "labels", uvalue = "NAME", set_value = names, /no_release)

junk = cw_bselector(base, ['× 2', 'Normal', '÷ 2', '÷ 4', $
                           '÷ 8'], label_left = 'Image Resizing:', $
                    set_value = iscale, uvalue = 'SCALE')

;; At present can only operate this via the line interface -- use
;;                                                            current
;;                                                            tables.
;;
;;junk = widget_slider(base, min = 0, max = !D.table_size-1, value = $
;;                     ncol, title = 'Number of colours', scr_xsize = $
;;                     250, uvalue = 'NCOL')
;;
;;junk = widget_button(base, value = 'Colours', uvalue = 'COL')

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

widget_control, base, /real
xmanager, 'mpeg', base, /modal, group = group

end
