; ;------------------------------------------------------------------- ; function cgmopen,flnm set_plot,'cgm' on_ioerror,bad device,filename=flnm,/ncar print,' ' print,'Opened cgm device: flnm=',flnm set_plot,'X' return,0 ; bad: print,' ' print,'>>> Error opening cgm file ',flnm print,' IDL error msg: ',!err_string set_plot,'X' return,-1 end ; ;------------------------------------------------------------------- ; pro trunc_event, ev common trunc, oktotrunc widget_control,ev.id,get_uvalue=uval case uval of "OPEN": oktotrunc = 1 "NO OPEN": oktotrunc = 0 else: print,'trunc_event: unknown user value=',uval endcase widget_control,/destroy,ev.top ; quit button return end ; ;------------------------------------------------------------------- ; pro popup_trunc,file @pltdat.h common trunc, oktotrunc truncbase = widget_base(title='FILE TRUNCATION WARNING',/column,$ xoffset=400,yoffset=400) base = widget_base(truncbase,/frame,/column) wtxt_warning = widget_text(base,xsize=40,ysize=3,value=string(format=$ "('WARNING:',/,'FILE ',a,/'WILL BE TRUNCATED IF OPENED')",file)) base = widget_base(truncbase,/frame,column=2) wbut_ok = widget_button(base,value="OPEN (TRUNCATE)",uvalue="OPEN") wbut_cancel = widget_button(base,value="DO NOT OPEN FILE",uvalue="NO OPEN") widget_control,truncbase,/realize widget_control,wbut_cancel,/input_focus xmanager,'trunc',truncbase,/modal return end ; ;------------------------------------------------------------------- ; pro cgm_event, ev @pltdat.h common com_mkcgm, wtxt_cgmname,wbgp_opencgm,wbgp_wrcgm common trunc, oktotrunc ; widget_control,ev.id,get_uvalue=uval case uval of ; ; Open or close a file: ; "BGP_OPENCGM": begin case ev.value of 0: begin ; open file files = findfile(cgmname,count=nf) if nf gt 1 then begin print,'>>> too many file names -- must specify unique file name' print,' The following file names match ',cgmname,':' for i=0,nf-1 do print,files(i) widget_control,wbgp_opencgm,set_value=1 widget_control,wbgp_wrcgm,set_value=1 widget_control,wtxt_cgmname,set_value=cgmname return endif if nf eq 1 then begin oktotrunc = 0 popup_trunc,cgmname if oktotrunc le 0 then begin print,'Did NOT open cgm file ',cgmname widget_control,wbgp_opencgm,set_value=1 ; set close widget_control,wbgp_wrcgm,set_value=1 ; set no-write return endif endif stat = cgmopen(cgmname) if stat eq 0 then begin ; opened file opencgm = 1 & writecgm = 1 widget_control,wbgp_wrcgm,set_value=0 ; set open ifrcgm = 1 endif else begin ; failed to open file widget_control,wbgp_opencgm,set_value=1 ; set close widget_control,wbgp_wrcgm,set_value=1 ; set no-write endelse return end 1: begin ; close stat = cgmclose(cgmname) opencgm = 0 & writecgm = 0 widget_control,wbgp_wrcgm,set_value=1 return end else: endcase end ; ; Write or no write to file: ; "BGP_WRCGM": begin case ev.value of 0: begin ; write if opencgm le 0 then begin print,'>>> Must open a CGM file first' widget_control,wbgp_wrcgm,set_value=1 return endif writecgm = 1 print,'Will write each frame to cgm file ',cgmname end 1: begin ; no write writecgm = 0 print,'Will NOT write frames to cgm file' end endcase end ; ; File spec has been entered for new cgm file: ; "TXT_CGMNAME": begin widget_control,ev.id,get_value=value tmpname = value(0) files = findfile(tmpname,count=nf) if nf gt 1 then begin print,'>>> too many file names -- must specify unique file name' print,' The following file names match ',cgmname,':' for i=0,nf-1 do print,files(i) widget_control,wbgp_opencgm,set_value=1 widget_control,wbgp_wrcgm,set_value=1 widget_control,ev.id,set_value=cgmname return endif ; ; Specified file exists -- get permission to truncate, or else return: ; if nf eq 1 then begin oktotrunc = 0 popup_trunc,tmpname if oktotrunc le 0 then begin print,'Did NOT open cgm file ',tmpname widget_control,wbgp_opencgm,set_value=1 widget_control,wbgp_wrcgm,set_value=1 return endif endif stat = cgmopen(tmpname) if stat eq 0 then begin cgmname = tmpname opencgm = 1 & writecgm = 1 ifrcgm = 1 widget_control,wbgp_opencgm,set_value=0 widget_control,wbgp_wrcgm,set_value=0 return endif else begin widget_control,wbgp_opencgm,set_value=1 widget_control,wbgp_wrcgm,set_value=1 return endelse end else: print,'cgm_event: unknown user value = ',uval endcase return end