;+
; Project     : SOHO - LASCO/EIT
;
; Name	      : WSAVE_PS
;
; Purpose     : 
;
; Category    : Widgets
;
; Explanation : 
;
; Syntax      : wsave_ps
;
; Examples    :
;
; Inputs      : 
;
; Opt. Inputs : 
;
; Outputs     : 
;
; Opt. Outputs:
;
; Keywords    : 
;
; Common      :
;
; Restrictions: set default PS keywords.
;
; Side effects: None.
;
; History     : 20-jun-1995,Borut Podlipnik, MPAe,Written 
;
; Contact     : BP, borut@lasco1.mpae.gwdg.de
;-
;

PRO WSave_ps_event,event

COMMON wsave_ps_block, scr, def_ps, a4

WIDGET_CONTROL,event.id,GET_UVALUE=uval
WIDGET_CONTROL,event.id,GET_VALUE=val
WIDGET_CONTROL,event.top,GET_UVALUE=uvs

CASE uval OF
	"OK":     BEGIN

		       WIDGET_CONTROL,uvs.wt1,GET_VALUE=sxcm
		       WIDGET_CONTROL,uvs.wt2,GET_VALUE=sycm
		       WIDGET_CONTROL,uvs.wt3,GET_VALUE=sxoff
		       WIDGET_CONTROL,uvs.wt4,GET_VALUE=syoff
		       WIDGET_CONTROL,uvs.wt7,GET_VALUE=title

		       xcm = float(sxcm(0))
		       ycm = float(sycm(0))
		       xoffset = float(sxoff(0))
		       yoffset = float(syoff(0))
             def_ps(4) = xcm
             def_ps(5) = ycm
             def_ps(6) = xoffset
             def_ps(7) = yoffset

             set_plot,'PS'
         
             IF def_ps(2) EQ 0 THEN DEVICE,color=0 ELSE DEVICE,/COLOR
             IF def_ps(0) EQ 0 THEN DEVICE,/PORTRAIT ELSE DEVICE,/LANDSCAPE
             IF def_ps(1) EQ 1 THEN DEVICE,/ENCAPSULATED ; ELSE
                                                  ; DEVICE,/CAPSULATED ?
             DEVICE, BITS_PER_PIXEL = def_ps(3)
             DEVICE, XSIZE = xcm, YSIZE = ycm
             DEVICE, XOFFSET = xoffset, YOFFSET = yoffset
             DEVICE,FILENAME=uvs.ps_name
 
;		       write_ps,image,min=min,max=max,title=title,filename=ps_name,$
;			             xcm=xcm,ycm=ycm,XOFFSET=xoffset,YOFFSET=yoffset


             CASE uvs.p_no OF
              1: BEGIN ; create a PS file from main or zoom WINDOW

                  XYOUTS, 0.5, -.07, /NORMAL, title, FONT=0, size=1.5, $
                          ALIGNMENT=.5
                  TVSCL,uvs.image
                 END
              2: BEGIN ; create a PS file from WPLOT program

                  PLOT_XY,uvs.image,uvs.p1.irc,uvs.p1.ixmin,uvs.p1.ixmax, $
                   uvs.p1.iymin,uvs.p1.iymax,uvs.p1.title,uvs.p1.src,uvs.p1.la

                 END
              3: BEGIN ; create a PS file from ...

                 END
              4: BEGIN ; create a PS file from ...

                 END
              5: BEGIN ; create a PS file from ...

                 END
             ELSE: donothing = 0
             ENDCASE
              

             DEVICE,/CLOSE

             set_plot,scr
		       WIDGET_CONTROL,event.top,/DESTROY
;		   spawn,"pageview PostScript"
;            wprint
	         END

	"POR":   BEGIN 
             def_ps(0) = 0
		       WIDGET_CONTROL,uvs.wt3,SET_VALUE=STRCOMPRESS(STRING(3.5))
		       WIDGET_CONTROL,uvs.wt4,SET_VALUE=STRCOMPRESS(STRING(7.5))
		      END

	"LAN":   BEGIN
             def_ps(0) = 1
		       WIDGET_CONTROL,uvs.wt3,SET_VALUE=STRCOMPRESS(STRING(3.5))
		       WIDGET_CONTROL,uvs.wt4,SET_VALUE=STRCOMPRESS(STRING(21.5)) 
		      END
	"CAP":   def_ps(1) = 0
	"EPS":   def_ps(1) = 1 
	"BP":	   def_ps(3) = FIX(val)
	"COLOR": def_ps(2) = 1
	"BW":	   def_ps(2) = 0
	"CANCEL": BEGIN
		        WIDGET_CONTROL,event.top,/DESTROY
		        SET_PLOT,scr
		       END
ELSE: donothing=0
ENDCASE
END

PRO WSave_ps,image,head,ps_name,p_no,PLOT1=PLOT1

COMMON wsave_ps_block, scr, def_ps, a4

IF XRegistered("WSave_ps") NE 0 THEN RETURN

scr = !d.name

IF N_ELEMENTS ( def_ps ) EQ 0 THEN def_ps = [ 0,0,1,8,15,15,3.5,7.5]
                                  ;def_ps = [ 0.0  ; portrait (pl), $
                                  ;           0.0  ; non-encapsulated (ec), $
                                  ;           1.0  ; color on (co), $
                                  ;           8.0  ; bits_per_pixel (bpp), $
                                  ;          15.0  ; xcm , $
                                  ;          15.0  ; ycm, $
                                  ;           3.5  ; x offset, $
                                  ;           7.5  ; y offset ]
xcm = def_ps(4)
ycm = def_ps(5)
sxcm = STRCOMPRESS(string(xcm),/REMOVE_ALL)
sycm = STRCOMPRESS(string(ycm),/REMOVE_ALL)
xoff = def_ps(6)
yoff = def_ps(7)
sxoff = STRCOMPRESS(string(xoff),/REMOVE_ALL)
syoff = STRCOMPRESS(string(yoff),/REMOVE_ALL)

title = ' '
print,size(head)
shead = size(head)
IF shead(1)-1  GT 6 THEN BEGIN	; ONLY TEMPORARY FOR SOME TESTS !!!
  title1 = STRCOMPRESS(head(7),/REMOVE_ALL)
  lc = RSTRPOS(title1,'/') 
  fc = STRPOS(title1,'=') + 1
  title1 = STRMID(title1,fc,lc-fc)
  title2 = STRCOMPRESS(head(6),/REMOVE_ALL)
  title2 = STRMID(title2,9,8)
  title = "YOHKOH SXT " + title1 + " " + title2 + ' UT'
ENDIF

WSave_psBase = WIDGET_BASE(TITLE = " Save PostScript file ",/FRAME,/COLUMN)

wl = WIDGET_LABEL(WSave_psBase,VALUE=' Save PostScript file .... ')

be = WIDGET_BASE(WSave_psBase,/ROW,/EXCLUSIVE)
b2 = WIDGET_BUTTON(be,VALUE='Portrait    ',UVALUE='POR')
b3 = WIDGET_BUTTON(be,VALUE='Landscape',UVALUE='LAN')

;wl = WIDGET_LABEL(WSave_psBase,VALUE=' Orientation : ')
be = WIDGET_BASE(WSave_psBase,/ROW,/EXCLUSIVE)
b4 = WIDGET_BUTTON(be,VALUE='Non-Encapsulated',UVALUE='CAP')
b5 = WIDGET_BUTTON(be,VALUE='Encapsulated',UVALUE='EPS')

be = WIDGET_BASE(WSave_psBase,/ROW,/EXCLUSIVE)
b6 = WIDGET_BUTTON(be,VALUE='Color    ',UVALUE='COLOR')
b7 = WIDGET_BUTTON(be,VALUE='B/W',UVALUE='BW')

wt = WIDGET_BASE(WSave_psBase,/ROW)
wl = WIDGET_LABEL(wt,VALUE='Bits per pixel :')
bb = WIDGET_BASE(wt,/ROW,/EXCLUSIVE)
b8 = WIDGET_BUTTON(bb,VALUE='1',UVALUE='BP')
b9 = WIDGET_BUTTON(bb,VALUE='2',UVALUE='BP')
b10= WIDGET_BUTTON(bb,VALUE='4',UVALUE='BP')
b11= WIDGET_BUTTON(bb,VALUE='8',UVALUE='BP')

wt = WIDGET_BASE (WSave_psBase,/ROW)
wl = WIDGET_LABEL(wt,VALUE=' Size (cm)   : ')
wt1= WIDGET_TEXT (wt,XSIZE=8,/EDITABLE,VALUE=sxcm,UVALUE='XCM')

wl = WIDGET_LABEL(wt,VALUE=' x ')
wt2= WIDGET_TEXT (wt,XSIZE=8,/EDITABLE,VALUE=sycm,UVALUE='YCM')

wt = WIDGET_BASE (WSave_psBase,/ROW)
wl = WIDGET_LABEL(wt,VALUE=' Offset (cm) : ')
wt3= WIDGET_TEXT (wt,XSIZE=8,/EDITABLE,VALUE=sxoff,UVALUE='XOFF')

wl = WIDGET_LABEL(wt,VALUE='   ')
wt4= WIDGET_TEXT (wt,XSIZE=8,/EDITABLE,VALUE=syoff,UVALUE='YOFF')

wt = WIDGET_BASE (WSave_psBase,/ROW)
wl = WIDGET_LABEL(WSave_psBase,VALUE=' Image Title : ')
wt = WIDGET_BASE (WSave_psBase,/ROW)
wt7= WIDGET_TEXT (wt,XSIZE=40,/EDITABLE,VALUE=title,UVALUE='TITLE')

bb = WIDGET_BASE(WSave_psBase,/ROW)
b0 = WIDGET_BUTTON(bb,VALUE='  OK  ',UVALUE='OK')
b1 = WIDGET_BUTTON(bb,VALUE='Cancel',UVALUE='CANCEL')

;
;**---- Done creating widgets ----** 
;

WIDGET_CONTROL,WSave_psBase,/REALIZE

;
; set default PS keywords
;

IF def_ps(0) EQ 0 THEN b23 = b2 ELSE b23 = b3 ; (pl)
IF def_ps(1) EQ 0 THEN b45 = b4 ELSE b45 = b5 ; (ec)
IF def_ps(2) EQ 1 THEN b67 = b6 ELSE b67 = b7 ; (co)
CASE def_ps(3) OF
    1: bbpp = b8
    2: bbpp = b9
    4: bbpp = b10
    8: bbpp = b11
ELSE : bbpp = b11 ; ? 
ENDCASE

WIDGET_CONTROL,b23,/SET_BUTTON    ; Portrait / Landscape (pl)
WIDGET_CONTROL,b45,/SET_BUTTON    ; Non-encapsulated / Capsulated (ec)
WIDGET_CONTROL,b67,/SET_BUTTON    ; color / BW (co)
WIDGET_CONTROL,bbpp,/SET_BUTTON   ; bits_per_pixel (bpp)

set_plot,'PS',/INTERPOLATE
DEVICE,/PORTRAIT,/COLOR,BITS_PER_PIXEL=def_ps(3)
set_plot,scr
;
; Create structure for variables ....
;

wss = { wt1:wt1,       $ ; sxcm 
        wt2:wt2,       $ ; sycm
        wt3:wt3,       $ ; sxoff
        wt4:wt4,       $ ; syoff
        wt7:wt7,       $ ; title
        image:image, $
        head:head, $
        ps_name:ps_name, $
        p_no:p_no, $
        p1:plot1   $
      }

WIDGET_CONTROL, WSave_psBase, SET_UVALUE = wss, /NO_COPY

XMANAGER,"WSave_ps",WSave_psBase, $
		GROUP_LEADER=GROUP
END


