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