;+
; Project     : SOHO - LASCO
;
; Name        : 
;
; Purpose     : 
;
; Category    : 
;
; Explanation : 
;
; Syntax      : 
;
; Examples    : 
;
; Inputs      : None
;
; Opt. Inputs : None
;
; Outputs     : None
;
; Opt. Outputs: None
;
; Keywords    : None
;
; Common      : 
;
; Restrictions:                                  
;
; Side effects: Not known
;
; History     : Version 1, 02-Sep-1995, B Podlipnik. Written
;
; Contact     : BP, borut@lasco1.mpae.gwdg.de
;-

PRO WSave2_event,event

COMMON save_b1, sel_format

@wload.com

WIDGET_CONTROL,event.id,GET_UVALUE=uval
WIDGET_CONTROL,event.top,GET_UVALUE=uv

CASE uval OF

  "CWS": BEGIN
           sel_format_old = sel_format
           WIDGET_CONTROL,uv.ws, GET_VALUE = sel_format
           sel_array_format = WHERE(sel_format EQ 1)

           sel_index = WHERE(sel_format NE sel_format_old)

           ni = N_ELEMENTS(sel_format)
           sel_format(0:ni-1) = 0
           sel_format(sel_index(0)) = 1
           WIDGET_CONTROL,uv.ws, SET_VALUE = sel_format
           WIDGET_CONTROL,uv.t0,SET_VALUE=uv.name+uv.Ext(sel_index(0))
         END

	"OK":		BEGIN
      
             WIDGET_CONTROL,uv.t0, GET_VALUE=FileName
             FileName = FileName(0)

             index = WHERE(sel_format EQ 1 )
             index = index(0)
             IF index LT 0 THEN index = 1

             CASE index OF
				   0: BEGIN	 ; 8 bits FITS
                   wdir = GETENV('WORK')+!delimiter + GETENV('USER')+!delimiter+'fits' + !delimiter

                      ;wdir = GETENV('DATA_DIR_WORK')

                      IF chk_dir(wdir) EQ 0 THEN BEGIN
                        wdir = GETENV('HOME') + !delimiter
                      ENDIF ELSE BEGIN
                        IF chk_dir(wdir) EQ 0 THEN BEGIN
                           cmd = 'mkdir'
                           spawn,cmd + " " + wdir
                        ENDIF
                        wdir = wdir + !delimiter
                      ENDELSE

                      ldir = GETENV('WORK')+!delimiter + GETENV('USER') +!delimiter+'list'+!delimiter
                      IF chk_dir(ldir) EQ 0 THEN ldir = GETENV('HOME') + !delimiter

                      temp = BYTSCL(uv.image > min_img < max_img)

                      WRITEFITS,wdir+FileName,temp,uv.head


                     ;
                     ; lname= FileName + ".lst"
                     ; list = wdir+FileName
                     ; wrt_asc,ldir+lname,list
                
                   ;writefits,wdn,uv.image,uv.head
                  END
			 	   1:	BEGIN     ; PostScript

                   wdn = GETENV('WORK')+!delimiter + GETENV('USER') +!delimiter+'ps'+!delimiter

                   IF chk_dir(wdn) EQ 0 THEN wdn = GETENV('HOME') + !delimiter

                   wdn = wdn + FileName
                    
                   ;uv.image = BYTSCL(uv.image>min_img<max_img)
                    
                   wsave_ps,uv.image,uv.head,wdn,uv.p_no ,plot1=uv.p1,plot4=uv.p4,gct=uv.gct
                   WIDGET_CONTROL,event.top,/DESTROY
                  END
				   2: BEGIN	 ; GIF

                   wdn = GETENV('WORK')+!delimiter + GETENV('USER') +!delimiter+'gif'+!delimiter

                   IF chk_dir(wdn) EQ 0 THEN wdn = GETENV('HOME') + !delimiter

                   wdn = wdn + FileName

                   date_o = SXPAR(uv.head,'DATE_OBS')  
                   time_o = SXPAR(uv.head,'TIME_OBS')
                   IF DATATYPE(date_o) EQ 'INT' THEN BEGIN
                     date_o = SXPAR(uv.head,'DATE-OBS')
                     time_o = SXPAR(uv.head,"TIME-OBS")
                   ENDIF 

                   dt = date_o + ' ' + time_o + 'UT'
                   si = size(uv.image)
                   WINDOW,19,XSIZE=si(1),YSIZE=si(2) ;,xpos=20,ypos=60
                   TVSCL,uv.image > min_img < max_img
                   ;XYOUTS, 0.03, .93, /NORMAL, dt, FONT=1, size=2.5
                        
                   ;WRITE_GIF,wdn,TVRD(0,0,si(1)-1,si(2)-1)
                   ; by image size 1024x1024 on lasco1.mpae 
                   ; TVRD: Value of Area is out of allowed range.
                   
                   WRITE_GIF,wdn,TVRD()
                   
                   WDELETE,19
                   WIDGET_CONTROL,event.top,/DESTROY

                  END
				   3: BEGIN	 ; JPEG
                   ;wd = GETENV('JPEG_DIR')
                   wdn = GETENV('WORK')+!delimiter + GETENV('USER') +!delimiter+'jpeg'+!delimiter

                   IF chk_dir(wdn) EQ 0 THEN wdn = GETENV('HOME') + !delimiter

                   wdn = wdn + FileName

                   si = size(uv.image)
                   WRITE_JPEG,wdn,TVRD(0,0,si(1)-1,si(2)-2)
                   WIDGET_CONTROL,event.top,/DESTROY

                  END
                                   4: BEGIN
                                        mpeg_wid, group = event.top
                                        WIDGET_CONTROL, event.top, /DESTROY
                                      END

			    ELSE: donothing = 0
			    ENDCASE

			END

	"CANCEL":  BEGIN
               WIDGET_CONTROL,event.top,/DESTROY
              END

ELSE: donothing = 0
ENDCASE


END

PRO WSave2,image,name,head,p_no,PLOT1=PLOT1,PLOT2=PLOT2,PLOT4=PLOT4, $
                                GROUP=GROUP,GCT=GCT
COMMON save_b1, sel_format 

@wload.com

IF XRegistered("WSave2") NE 0 THEN RETURN

IF NOT KEYWORD_SET(GCT) THEN gct = 1.0
IF NOT KEYWORD_SET(PLOT1) THEN plot1 = 0 ; i didn't check yet if this
                                         ; is OK

IF NOT KEYWORD_SET(PLOT4) THEN plot4 = 0 ; i didn't check yet if this

Format = ["FITS","PostScript","GIF","JPEG", "MPEG"]
Ext    = [".fts",".ps",".gif",".jpg",".mpg"]

IF N_ELEMENTS(sel_format) EQ 0 THEN BEGIN
 sel_format = [0,1,0,0,0]
 FileName = name + Ext(1)
ENDIF

ind = WHERE(sel_format EQ 1)
FileName = name + Ext(ind(0))
 
WSaveBase = WIDGET_BASE(TITLE = " Image Save Tool ",/FRAME,/COLUMN)

ff = WIDGET_BASE(WSaveBase,/COLUMN)
l1 = WIDGET_LABEL(ff,VALUE="Format:    ")

r1 = WIDGET_BASE(ff,/ROW,/FRAME)
ws = CW_BGROUP(r1, Format, XSIZE= 120, YSIZE= 145, UVALUE="CWS", $
               SET_VALUE = sel_format, /NONEXCLUSIVE)

;fg = WIDGET_BASE(WSaveBase,/ROW)
l2  = WIDGET_LABEL(ff,VALUE="Save file:")

r2 = WIDGET_BASE(ff,/ROW)
t0 = WIDGET_TEXT(r2,XSIZE=40,UVALUE='OK',VALUE=FileName,/EDITABLE)

r4  = WIDGET_BASE(WSaveBase, /ROW)
ro  = WIDGET_BUTTON(r4,VALUE='  Ok  ',UVALUE='OK')
rc  = WIDGET_BUTTON(r4,VALUE=' Cancel ',UVALUE='CANCEL')

 ws_ud = { WSaveBase:WSaveBase, $
          ws:ws, $ ; CW_BSELECTOR id
          t0:t0, $
          image:image, $
          name:name, $
          head:head, $
          FileName:FileName, $
          Ext:Ext, $
          p_no:p_no, $
          p1:plot1, $
          p4:plot4, $
          gct:gct $
        }

WIDGET_CONTROL,WSaveBase,/REALIZE

WIDGET_CONTROL, WSaveBase, SET_UVALUE = ws_ud, /NO_COPY

XMANAGER,"WSave2",WSaveBase, $
		GROUP_LEADER=GROUP
END
