PRO listbcs_event, event ;event driver routine common listbcs,base,labelw,textw,printb,listing,bcs_cat,vms widget_control,printb,sensitive=0 WIDGET_CONTROL, event.id, GET_UVALUE = USERVALUE if (n_elements(uservalue) eq 0) then uservalue='' name=strmid(tag_names(event,/structure_name),7,1000) if (name eq 'BUTTON') and (event.select eq 1) then begin butt=strupcase(strtrim(uservalue,2)) if vms then home='sys$login' else home='~' dmpfile=concat_dir(home,'listbcs.dmp') case butt of 'QUIT' : begin ; xbackregister,'flash_bck',event.top,/unregister WIDGET_CONTROL, event.top, /destroy,/clear_events return end 'DATE' : begin twidget,sdate,group_leader=base,error=error ;-- get search date if error then return if sdate.year le 1979 then yy='' else $ yy='"/"'+strmid(string(sdate.year,'(i4.2)'),2,2) if sdate.month le 0 then mm='' else mm='"/"'+string(sdate.month,'(i2.2)') if sdate.day le 0 then dd='' else dd='" "'+string(sdate.day,'(i2.2)')+'"/"' fdate='' if dd ne '' then fdate=dd if mm ne '' then begin if fdate ne '' then fdate=fdate+','+mm else fdate=mm endif if yy ne '' then begin if fdate ne '' then fdate=fdate+','+yy else fdate=yy endif widget_control,labelw,set_value='SEARCHING BCS FLARE CATALOG, PLEASE STAND BY...' widget_control,textw,set_value='' widget_control,base,sensitive=0 if vms then begin ;-- vms search if fdate eq '' then spawn,'type/nopage '+bcs_cat,output else begin s1='search '+bcs_cat+' CALCIUM' s2='search '+bcs_cat+' START' command='search '+bcs_cat+' '+fdate+' /match=and' spawn,s1,h1 spawn,s2,h2 spawn,command,output endelse endif else begin ;-- unix grep if fdate eq '' then spawn,'cat '+bcs_cat,output else begin s1='grep CALCIUM '+bcs_cat s2='grep START '+bcs_cat str=[yy,mm,dd] clook=where(str ne '',count) str=str(clook) cmd='grep '+str(0)+' '+bcs_cat if count gt 1 then begin for i=1,count-1 do cmd=cmd+' | grep '+str(i) endif spawn,s1,h1 spawn,s2,h2 spawn,cmd,output endelse endelse widget_control,base,sensitive=1 no_match=0 if vms then begin if (strpos(output(0),'MATCH') gt -1) then no_match=1 endif else begin if strtrim(output(0),2) eq '' then no_match=1 endelse if no_match then $ listing='NO BCS EVENTS CATALOGED FOR SPECIFIED DATE' else begin if fdate eq '' then listing=output else listing=[h1(0),h2(0),output] endelse widget_control,textw,set_value=listing if not no_match then widget_control,printb,sensitive=1 widget_control,set_value='PRESS DATE BUTTON FOR ANOTHER SELECTION',labelw end 'PRINT': begin if listing(0) ne '' then begin widget_control,labelw,set_value='PRINTING CATALOG LISTING...' widget_control,base,sensitive=0 openw,lun,dmpfile,/get_lun printf,lun,listing close,lun & free_lun,lun if vms then begin spawn,'print/nofeed '+dmpfile spawn,'delete/nolog/noconfirm '+dmpfile+';*' endif else begin spawn,'lpr '+dmpfile spawn,'rm -f '+dmpfile endelse widget_control,base,sensitive=1 endif return end else: begin widget_control,labelw,set_value='INVALID BUTTON, TRY AGAIN' return end endcase endif return & end ;-------------------------------------------------------------------------- PRO listbcs,group_leader=group,just_reg=just_reg common listbcs,base,labelw,textw,printb,listing,bcs_cat,vms set_plot,'X' if (!d.flags and 65536) eq 0 then $ message,'widgets are unavailable on this device' if (n_elements(group) eq 0) and (not keyword_set(just_reg)) then begin widget_control,/reset,/clear_events endif else begin if xregistered('listbcs') then begin !quiet=0 message,'LISTBCS already registered',/contin return endif endelse ;-- where is BCS catalog? Usually defined by logical BCS_CAT if not keyword_set(just_reg) then begin bcs_cat=loc_file('BCS_CAT',count=count) if count eq 0 then begin message,'BCS CATALOG UNAVAILABLE',/contin return endif endif listing='' ;-- autosize screen device,get_screen_size=sc fspace=.0146*sc(0) fxpad=.0117*sc(0) fypad=.0146*sc(1) scx=.0625*sc(0) & scy=.0122*sc(1) vms=(!version.os eq 'vms') ;-- parent widget welcome='PRESS DATE BUTTON TO START SELECTION' base=widget_base(title='XRP-BCS FLARE CATALOG',/column,xpad=fxpad,ypad=fypad,space=fspace) row1=widget_base(base,/row,xpad=fxpad,ypad=fypad,space=fspace,/frame) dateb=widget_button(row1,value='Select Date',uvalue='DATE',/no_release) printb=widget_button(row1,value='Print Listing',uvalue='PRINT',/no_release) widget_control,printb,sensitive=0 doneb=widget_button(row1,value='Quit',uvalue='QUIT',/no_release) row2=widget_base(base,/column,space=fspace,xpad=fxpad,ypad=fypad) temp=widget_base(row2,/column,space=fspace,xpad=fxpad,ypad=fypad) labelw=widget_label(temp,value=welcome,uvalue='BACKGROUND',/frame) textw=widget_text(temp,ysize=2.*scy,/frame,xsize=scx,/scroll) widget_control,set_value=welcome,labelw ;-- realize main widget widget_control,base,/realize ;if xregistered('flash_bck') then xbackregister,'flash_bck',base,/unregister xmanager,'listbcs',base,group_leader=group,just_reg=just_rg if not keyword_set(just_reg) then xmanager return & end