;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ ;+ ; NAME:ps ; ; PURPOSE:redirige le contenu de la fenetre graphique ds un postcript, ; en reeffectuant les commandes ds l''environnement postscript. ; ; CATEGORY:pour faire un ps ; ; CALLING SEQUENCE:@ps ; ; INPUTS: ; ; KEYWORD PARAMETERS: ;; ; OUTPUTS: ; ; COMMON BLOCKS: ; ; SIDE EFFECTS: on utilise journal qui perment de stoker les commandes ; que l''on passe. ; ; RESTRICTIONS:peut planter si des commandes bizarres sont passees... ; rq: on efface les Syntax error, les Illegal character, commapatible ; avec oups, text_box... ; ; EXAMPLE: ; ; MODIFICATION HISTORY: Sebastien Masson (smasson@lodyc.jussieu.fr) ; 5/3/1999 ;- ;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ ; il faut fermer le journal! ;------------------------------------------------------------ ; if !journal EQ 0 then begin ; print, 'Il n''y a pas de journal ouvert !!' ; GOTO, sortie journal ;------------------------------------------------------------ ; on complete le journal ... ;------------------------------------------------------------ ; on recupere le journal sous la forme d''un vecteur de string: vectjournal = getfile(myuniquetmpdir+'idlsave.pro') ;FOR i = 0,n_elements(vectjournal)-1 DO print, vectjournal[i] ;------------------------------------------------------------ ; on coupe la derniere ligne qui est @ps ;------------------------------------------------------------ IF strpos(vectjournal[n_elements(vectjournal)-1],'@ps') ne -1 then $ vectjournal = vectjournal[0:n_elements(vectjournal)-2 ] ;------------------------------------------------------------ ; on le corrige si besoin est... ;------------------------------------------------------------ for i = 0, n_elements(vectjournal)-1 do $ if strpos(vectjournal[i],'text_box' ) EQ -1 then $ vectjournal[i] = strtrim(strcompress(vectjournal[i]), 2) ;FOR i = 0,n_elements(vectjournal)-1 DO print, vectjournal[i] ;2 lignes sont identiques ?? for i = 0, n_elements(vectjournal)-2 do $ if vectjournal[i] EQ vectjournal[i+1] then vectjournal[i] = ' ' ;FOR i = 0,n_elements(vectjournal)-1 DO print, vectjournal[i] for i = 0, n_elements(vectjournal)-1 do BEGIN & $ if strpos(vectjournal[i],'oups' ) NE -1 $ OR strpos(vectjournal[i],'Syntax error' ) NE -1 $ OR strpos(vectjournal[i],'Illegal character' ) NE -1 $ then BEGIN vectjournal[i] = ' ' & vectjournal[i-1] = ' ' & endif & endfor ;FOR i = 0,n_elements(vectjournal)-1 DO print, vectjournal[i] for i = 0, n_elements(vectjournal)-1 do BEGIN & $ if strpos(strtrim(vectjournal[i], 1),'retall' ) EQ 0 $ OR strpos(vectjournal[i],'@ps' ) NE -1 $ OR strpos(vectjournal[i],'@oups' ) NE -1 $ OR strpos(vectjournal[i],'@vzoom' ) NE -1 $ OR strpos(vectjournal[i],'help' ) NE -1 $ OR strpos(vectjournal[i],'print' ) NE -1 $ then vectjournal[i] = ' ' & endfor ;FOR i = 0,n_elements(vectjournal)-1 DO print, vectjournal[i] for i = 0, n_elements(vectjournal)-1 do BEGIN & $ if strpos(strtrim(vectjournal[i], 1),'plt' ) NE -1 THEN BEGIN & $ if strpos(strtrim(vectjournal[i], 1),'noerase') NE -1 then $ vectjournal[i] = chkeywd(vectjournal[i],'noerase',1) ELSE $ vectjournal[i] = vectjournal[i]+',/noerase' & $ ENDIF & endfor ;FOR i = 0,n_elements(vectjournal)-1 DO print, vectjournal[i] for i = 0, n_elements(vectjournal)-1 do BEGIN & $ if strpos(vectjournal[i],'text_box' ) NE -1 then $ IF strpos(vectjournal[i],',pos=' ) EQ -1 then $ vectjournal[i] = vectjournal[i]+strmid(vectjournal[i+1], 1) & endfor ; on le complete pour le transformer en une procedure equivalente a plein2dessin ; vectjournal = ['reinitplt, /z,/invert' $ vectjournal = ['openps, infowidget= infowidget' $ , vectjournal $ ,'closeps, infowidget= infowidget' $ ,'printps' ] ;FOR i = 0,n_elements(vectjournal)-1 DO print, vectjournal[i] ; on reecrit idlsave.pro putfile, myuniquetmpdir+'idlsave.pro', vectjournal ; applique idlsave cd, current = curdir cd, myuniquetmpdir @idlsave cd, curdir ; on reouvre le journal et on y met les elements de ; vectjournal sauf les 2 premieres lignes et les 3 dernieres lignes journal, myuniquetmpdir+'idlsave.pro' for i = 2, n_elements(vectjournal)-3 DO $ printf, !journal, vectjournal[i] ;------------------------------------------------------------