;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ ;+ ; NAME:oups ; ; PURPOSE: Sorte de UNDO: ; permet de refaire toute la serie de dessin depuis ; l''ouverture de la derniere fenetre sans reexecuter la derniere ; commande. cf. je fais un dessin avec 10 plt dessus au 10 eme je me ; plante, un coup de @oups et je peux refaire mon plt rate! ; ; CATEGORY: pour faciliter les dessins ; ; CALLING SEQUENCE: @oups ; ; SIDE EFFECTS: compatible avec @ps @vzoom text_box... ; ; RESTRICTIONS: ; ; EXAMPLE: ; ; MODIFICATION HISTORY: Sebastien Masson (smasson@lodyc.jussieu.fr) ; ;- ;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ ; il faut fermer le journal! ;------------------------------------------------------------ journal ; on recupere le journal sous la forme d''un vecteur de string: vectjournal = getfile(homedir+'idlsave.pro') ; on coupe la derniere ligne qui est oups 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) ;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 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 & $ if strpos(strtrim(vectjournal[i], 1),'retall' ) EQ 0 $ OR strpos(vectjournal[i],'@oups' ) NE -1 $ OR strpos(vectjournal[i],'@ps' ) 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] = ' ' & $ if strpos(vectjournal[i],'text_box' ) NE -1 then $ vectjournal[i] = vectjournal[i]+strmid(vectjournal[i+1], 1) & endfor ; ; on vire la derniere ligne pour tout reexecuter sauf la derniere commande ; IF strpos(vectjournal[n_elements(vectjournal)-1],';,pos=[' ) NE -1 then $ vectjournal[n_elements(vectjournal)-2] = '' $ ELSE vectjournal[n_elements(vectjournal)-1] = '' ; on reecrit idlsave.pro putfile, homedir+'idlsave.pro', vectjournal ; on compile puis applique idlsave cd, homedir @idlsave ; le journal vient d'etre reouvert, et on y met les elements de ; vectjournal for i = 0, n_elements(vectjournal)-1 DO $ printf, !journal, vectjournal[i]