;HW7: Simple Interactive Plotting Package pro click,ev widget_control,ev.id,get_uvalue=uval widget_control,ev.top,get_uvalue=widgets if uval eq 'quit' then widget_control,ev.top,/destroy if uval eq 'fbutton' then begin f=dialog_pickfile(filter='*.fits') widget_control,widgets[1],set_value=f endif if uval eq 'doplot' then begin widget_control,widgets[1],get_value=f fits_read,f,data,header crpos=where(strmid(header,0,6) eq 'CRVAL1') cdpos=where(strmid(header,0,6) eq 'CDELT1') if crpos[0] ne -1 AND cdpos[0] ne -1 then begin crval=strmid(header[crpos[0]],9,80)+0. cdelt=strmid(header[cdpos[0]],9,80)+0. x=findgen(n_elements(data)*cdelt)+crval endif else x=findgen(n_elements(data)) widget_control,widgets[2],get_value=xtit widget_control,widgets[3],get_value=ytit widget_control,widgets[4],get_value=xr1 widget_control,widgets[5],get_value=xr2 widget_control,widgets[6],get_value=yr1 widget_control,widgets[7],get_value=yr2 if xr1 eq '' then xr1=min(x) else xr1=xr1[0]+0. if xr2 eq '' then xr2=max(x) else xr2=xr2[0]+0. if yr1 eq '' then yr1=min(data) else yr1=yr1[0]+0. if yr2 eq '' then yr2=max(data) else yr2=yr2[0]+0. plot,x,data,xtitle=xtit,ytitle=ytit,xrange=[xr1,xr2],xstyle=1,yrange=[yr1,yr2],ystyle=1 endif if uval eq 'exportjpeg' then begin exbase=widget_base(xsize=120,ysize=86,title='Export JPEG',group_leader=ev.top) labelf=widget_label(exbase,value='Enter Filename:') exfile=widget_text(exbase,yoffset=18,xsize=14,/editable,/all_events,uvalue='exfile') exportb=widget_button(exbase,yoffset=56,value='Export',uvalue='exportb') excancel=widget_button(exbase,yoffset=56,xoffset=50,value='Cancel',uvalue='excancel') widget_control,exbase,set_uvalue=exfile widget_control,exbase,/realize exuval='' while exuval ne 'exportb' AND exuval ne 'excancel' do begin exportev=widget_event(exbase) widget_control,exportev.id,get_uvalue=exuval endwhile widget_control,exportev.top,get_uvalue=exfilename widget_control,exfilename,get_value=f widget_control,exbase,/destroy if exuval eq 'exportb' then begin write_jpeg,f,tvrd() endif endif end base=widget_base(xsize=800,ysize=512,title='Interactive Plotting Package') draw=widget_draw(base,xsize=640,ysize=512,xoffset=160,uvalue='draw') flabel=widget_label(base,value='Enter filename:') fname=widget_text(base,yoffset=18,/editable,/all_events,xsize=14,uvalue='fname') fbutton=widget_button(base,yoffset=20,xoffset=108,value='Choose',uvalue='fbutton') labelxtitle=widget_label(base,value='X-axis title:',yoffset=50) xtitle=widget_text(base,yoffset=68,/editable,/all_events,xsize=14,uvalue='xtitle') labelytitle=widget_label(base,value='Y-axis title:',yoffset=100) ytitle=widget_text(base,yoffset=118,/editable,/all_events,xsize=14,uvalue='ytitle') labelxrng=widget_label(base,value='X-range:',yoffset=150) xrng1=widget_text(base,yoffset=168,/editable,/all_events,xsize=6,uvalue='xrng1') labelxrng2=widget_label(base,value='to',yoffset=174,xoffset=57) xrng2=widget_text(base,yoffset=168,xoffset=74,/editable,/all_events,xsize=6,uvalue='xrng2') labelyrng=widget_label(base,value='Y-range:',yoffset=200) yrng1=widget_text(base,yoffset=218,/editable,/all_events,xsize=6,uvalue='yrng1') labelyrng2=widget_label(base,value='to',yoffset=224,xoffset=57) yrng2=widget_text(base,yoffset=218,xoffset=74,/editable,/all_events,xsize=6,uvalue='yrng2') doplot=widget_button(base,yoffset=260,value='Plot',uvalue='doplot') exportjpeg=widget_button(base,yoffset=260,xoffset=39,value='Export JPEG',uvalue='exportjpeg') quit=widget_button(base,yoffset=260,xoffset=120,value='Quit',uvalue='quit') widget_control,base,set_uvalue=[draw,fname,xtitle,ytitle,xrng1,xrng2,yrng1,yrng2] widget_control,base,/realize xmanager,'Widget1',base,event_handler='click' end