PRO wsunprofile,GROUP=GROUP

@lasco.com
@wload.com
@chandle.com
@wplot.com

COMMON block,ixmin,ixmax,src
COMMON wsave_ps_block, scr, def_ps, a4

;IF (XRegistered("wsunprofile") NE 0) THEN RETURN 
 
if n_elements(image) eq 0 then f=wload()
sz = size(image) 
if n_elements(var_arr) eq 0 then var_arr = intarr(20) 
if n_elements(ixmin) eq 0 then ixmin=0.0
if n_elements(ixmax) eq 0 then ixmax=FLOAT(sz(1))
if n_elements(iymin) eq 0 then iymin=0.0
if n_elements(iymax) eq 0 then iymax=FLOAT(sz(2))

if n_elements(press) eq 0 then press=0

IF N_ELEMENTS ( def_ps ) EQ 0 THEN def_ps = [ 1,0,0,8,20,15,3.5,21.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 ]

 
WPlotBase = WIDGET_BASE(TITLE = "LASCO Plots",/ROW) 
lcol     = WIDGET_BASE(WPlotBase, /FRAME, /COLUMN) 
rcol     = WIDGET_BASE(WPlotBase, /FRAME, /COLUMN) 

junk = { CW_PDMENU_P, flags:0, name:'' }
over = 0 ; Set overplot status to false.

pdm_desc = [ { CW_PDMENU_P, 1, 'Image' }, $
                { CW_PDMENU_P, 0, 'Load' },  $
                { CW_PDMENU_P, 0, 'Save' },  $
                { CW_PDMENU_P, 0, 'Save as' },  $
                { CW_PDMENU_P, 0, 'Print' },  $
                { CW_PDMENU_P, 2, 'Exit' },  $
;             { CW_PDMENU_S, 0, 'Info' },   $
             { CW_PDMENU_P, 1, 'Options' }, $
             { CW_PDMENU_P, 2, 'Profile' }, $             
             { CW_PDMENU_P, 0, 'Print'}, $
             { CW_PDMENU_P, 0, 'Help' }, $
             { CW_PDMENU_P, 0, 'Done' } ]

menu = CW_PDMENU(lcol, pdm_desc, UVALUE='PDMENU', /RETURN_FULL_NAME)
 
;Two-button toggle switch for Scaling 
lcol2      = WIDGET_BASE(lcol,/FRAME, /COLUMN)  
scale_base = WIDGET_BASE(lcol2,/ROW, /EXCLUSIVE) 
scale_lin  = WIDGET_BUTTON(scale_base ,VALUE='Linear', $ 
                           UVALUE='LIN', /NO_RELEASE) 
scale_log  = WIDGET_BUTTON(scale_base ,VALUE='Logarithmic', $ 
                           UVALUE='LOG', /NO_RELEASE) 
 
;Two-button toggle switch for Slice 
slice_base = WIDGET_BASE(lcol2,/ROW, /EXCLUSIVE) 
slice_lr   = WIDGET_BUTTON(slice_base ,VALUE='Left to Right', $ 
                           UVALUE='LTR', /NO_RELEASE) 
slice_bt   = WIDGET_BUTTON(slice_base ,VALUE='Bottom to Top', $ 
                           UVALUE='BTT', /NO_RELEASE) 
;
; Create 4 editable WIDGET_TEXT for scale input
; 
lcols      = WIDGET_BASE(lcol,/FRAME, /COLUMN) 
 
minvalue = '0'
maxvalue = sz(1) 
 
sxmin  = STRCOMPRESS(string(minvalue),/REMOVE_ALL)
sxmax  = STRCOMPRESS(string(maxvalue),/REMOVE_ALL)

b_x_min    = WIDGET_BASE(lcols,/ROW)
p_x_lab    = WIDGET_LABEL(b_x_min,VALUE='X min range :')
p_x_min    = WIDGET_TEXT(b_x_min,XSIZE=12,/EDITABLE,VALUE=sxmin, $
                         UVALUE='XMIN')

b_x_max    = WIDGET_BASE(lcols,/ROW)
p_x_lab    = WIDGET_LABEL(b_x_max,VALUE='X max range :')
p_x_max    = WIDGET_TEXT(b_x_max,XSIZE=12,/EDITABLE,VALUE=sxmax, $
                         UVALUE='XMAX')

minvalue = min(image)
maxvalue = max(image)
symin  = STRCOMPRESS(STRING(FLOAT(minvalue)),/REMOVE_ALL)
symax  = STRCOMPRESS(STRING(FLOAT(maxvalue)),/REMOVE_ALL)

b_y_min    = WIDGET_BASE(lcols,/ROW)
p_y_lab    = WIDGET_LABEL(b_y_min,VALUE='Y min range :')
p_y_min    = WIDGET_TEXT(b_y_min,XSIZE=12,/EDITABLE,VALUE=symin, $
                         UVALUE='YMIN')

b_y_max    = WIDGET_BASE(lcols,/ROW)
p_y_lab    = WIDGET_LABEL(b_y_max,VALUE='Y max range :')
p_y_max    = WIDGET_TEXT(b_y_max,XSIZE=12,/EDITABLE,VALUE=symax, $
                         UVALUE='YMAX')
;
; Two-button toggle switch for axis selection
;
s_base = WIDGET_BASE(lcols,/ROW, /EXCLUSIVE) 
xaxisb = WIDGET_BUTTON(s_base ,VALUE='X-axis', $ 
                           UVALUE='XA', /NO_RELEASE) 
yaxisb = WIDGET_BUTTON(s_base ,VALUE='Y-axis', $ 
                           UVALUE='YA', /NO_RELEASE) 
resetb = WIDGET_BUTTON(s_base ,VALUE='Reset axis', $ 
                           UVALUE='RA') 
;
; Create one  WIDGET_TEXT for slice input 
;
if var_arr(0) eq 0 then var_arr(0) = sz(1)/2 
if var_arr(1) eq 0 then var_arr(1) = sz(2)/2

sl =string( var_arr(1) ) 
 
lcol3  = WIDGET_BASE(lcol, /FRAME,/ROW) 
sliceb = WIDGET_BASE(lcol3, /ROW) 
w5 = WIDGET_BASE(sliceb, /ROW) 
w15 = WIDGET_LABEL(w5,VALUE = 'Rs:') 
rc = WIDGET_TEXT(w5,XSIZE=12,YSIZE=1,/EDITABLE, VALUE=sl,UVALUE='SLICE') 
;w15 = WIDGET_LABEL(w5,VALUE = 'Theta:') 
;theta = WIDGET_TEXT(w5,XSIZE=12,YSIZE=1,/EDITABLE, VALUE=theta,UVALUE='SLICE') 
 
;Two-button toggle switch for Output 
 
;lcol4    = WIDGET_BASE(lcol, /FRAME, /COLUMN) 
 
;out_base = WIDGET_BASE(lcol4,/ROW, /EXCLUSIVE) 
;out_X    = WIDGET_BUTTON(out_base ,VALUE='Win', $ 
;                           UVALUE='X', /NO_RELEASE) 
;out_PS   = WIDGET_BUTTON(out_base ,VALUE='PostScript', $ 
;                           UVALUE='PS', /NO_RELEASE) 

;
; Create ON, OFF button
;
on_off = [ " ON  "," OFF " ]
woo = WIDGET_BASE(lcol, /FRAME, /ROW)
loo = WIDGET_LABEL(woo, VALUE = " Profiles: ") 
sof = CW_BSELECTOR2(woo, on_off, SET_VALUE=1, UVALUE='ON_OFF')

;Add an Overplot Button
opbase = WIDGET_BASE(lcol, /ROW, /FRAME, /EXCLUSIVE)
opbutton = WIDGET_BUTTON(opbase, VALUE = 'Over Plot', UVALUE = 'OVERPLOT', /NO_RELEASE)
sibutton = WIDGET_BUTTON(opbase, VALUE = 'Single Plot', UVALUE = 'SIPLOT', /NO_RELEASE)

;
; Create DRAW , LABEL, TEXT WIDGET
;
 
drawbase = WIDGET_BASE(rcol,/COLUMN) 
draw = WIDGET_DRAW(drawbase,Xsize=500,Ysize=400, UVALUE="PDRAW", /BUTTON) 
 
winbase = WIDGET_BASE(rcol, /ROW) 
w5 = WIDGET_BASE(winbase, /ROW) 
w15 = WIDGET_LABEL(w5,VALUE = 'Title : ') 
p_title = WIDGET_TEXT(w5,XSIZE=45,YSIZE=1,/EDITABLE, $
                      VALUE=name,UVALUE='setrc') 

;*-------------------- Done Creating Widgets --------------------*
 
WIDGET_CONTROL, WPlotBase, /REALIZE 

WIDGET_CONTROL, draw,GET_VALUE = win_wplot_id 
WSET,win_wplot_id 

WIDGET_CONTROL, slice_lr, /SET_BUTTON 
slice = 'ROW' 
 
WIDGET_CONTROL, scale_lin, /SET_BUTTON 
scale = 'L' 
 
src = string(var_arr(1)) 

;WIDGET_CONTROL, out_X, /SET_BUTTON 
out_win = !d.name 

WIDGET_CONTROL,xaxisb,/SET_BUTTON
xya_flag = 1

WIDGET_CONTROL, sibutton, /SET_BUTTON 

press = 0
;
; Create a structure that will be carried around as the UVALUE of the WplotBase
;

Wpbv = { WplotBase:WplotBase,      $ ; Base WIDGET ID
         draw:draw,                $
         pwin1:win_wplot_id,        $ ; Window ID
         rc:rc,                    $
         p_title:p_title,          $
         p_x_min:p_x_min,          $
         p_x_max:p_x_max,          $
         p_y_min:p_y_min,          $
         p_y_max:p_y_max,          $
         press:press,              $
         back:0,                   $
         xyaf:xya_flag,            $
         resb:resetb               $
       }         

WIDGET_CONTROL,WplotBase, SET_UVALUE= Wpbv
;WIDGET_CONTROL,WplotBase,TIMER=.1

plot1 = { ixmin:ixmin, $ ; xrange min
          ixmax:ixmax, $ ; xrange max
          iymin:iymin, $ ; yrange min
          iymax:iymax, $ ; yrange max
          irc:sl,      $ ; row or col from cursor position or from input
          src:slice,   $ ; string 'ROW' or 'COL'
          la:scale,    $   ; string 'L' for log scale 
          title:name,  $
          over:over }
 
XMANAGER,"wsunprofile",WPlotBase, $ 
                EVENT_HANDLER = "wsunprofile_event", $ 
                GROUP_LEADER = GROUP 
 
END