home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The CDPD Public Domain Collection for CDTV 4
/
CDPD_IV.bin
/
fish
/
911-930
/
ff925
/
donsgenies
/
frenchgenies.lha
/
Rexx
/
TexteSauteur.pprx
< prev
next >
Wrap
Text File
|
1993-08-03
|
4KB
|
137 lines
/*
@BTexteSauteur @P @I Ecrit et © par Don Cox en août 1992
@ICorrigé en Décembre 1992. N'est pas du Domaine Publique. Tous Droits
@IRéservés
Traduit et modifié par Fabien Larini le 30/07/93
Ce Génie applique une ligne de base aléatoire au bloc de texte
sélectionné. Avertissements : il augmente la taille du texte (ajout de
code de formatage) d'un facteur de 8 ou 9, et il ralenti PPage. Donc,
utilisez le à la fin de votre travail. Il demande et sauve dans
son fichier de configuration le répertoire où il stocke ses fichiers
temporaires.
*/
/*JumpyText*/
/* This Genie applies a random baseline shift to a selected block of text.
Warnings: it is slow, it increases the length of the selected text by a
factor of 8 or 9 (because of all the style codes needed), and it slows
ProPage down to a crawl. So only do it at the end when you have got
everything else right.
Written by Don Cox © August 92 Bug-fix Dec 92 Not Public Domain. All rights reserved. */
trace r
signal on error
signal on syntax
address command
numeric digits 3 /* for the random numbers */
tempdir = ""
pos = 0
fichiercfg = "rexx:TexteSauteur.cfg"
/* Demande si nouvelle config */
if exists(fichiercfg) then
idem = ppm_Inform(2,"Utilisation de la configuration sauvée ?","Non","Oui")
/* Si fichier inexistant ou si utilisateur veut changer la config */
if (~exists(fichiercfg) | idem=0) then do
/* Quel viewer */
tempdir = ppm_GetFileName("Choix du Répertoire Temporaire","","")
if tempdir = "" then exit_msg("Opération Annulée")
/* Extrait le chemin */
pos = max(lastpos(":",tempdir),lastpos("/",tempdir))
tempdir = delstr(tempdir,pos+1)
/* Sauver dans fichier ? */
if ppm_Inform(2,"Sauvegarder dans le fichier de configuration ?","Non","Oui") = 1 then do
if open(cfg,fichiercfg,"W") then do
call writeln(cfg,tempdir)
call close(cfg)
end
else
exit_msg("Impossible de sauvegarder le fichier de configuration")
end
end
/* Chargement du fichier de config */
else if idem = 1 then do
if open(cfg,fichiercfg,"R") then do
tempdir = readln(cfg)
call close(cfg)
end
else
exit_msg("Impossible de lire le fichier de configuration")
end
tempfile = tempdir||"textefile.temp"
if word(ppm_GetState(), 1) ~= 3 then exit_msg("Vous devez être en mode Edition pour utiliser ce Génie")
text = ppm_GetBlockText(0)
if text = '' then exit_msg("Pas de Texte Sélectionné")
factor = ppm_GetUserText(8,"Décalage Maximal (points)")
if factor = "" then exit_msg("Abandon Utilisateur")
if ~(datatype(factor,n)) then exit_msg("Saisie Invalide")
if factor>600 then factor = 600
call ppm_ShowStatus("Traitement du Texte ...")
/* Split into sections to avoid trouble with ARexx's limit of 64k on length of strings */
sections = (length(text)%2000)+1
do i=1 to sections
texts.i.endofsection = 2000
if i = sections then texts.i.endofsection = length(text)//2000
texts.i.thisSection = substr(text, (2000*(i-1))+1, texts.i.endofsection)
end
do i = 1 to sections
position = 1
newtext = ""
do until position = texts.i.endofsection+1
randbase = "\ls<"||randu()*factor||">"
nextchar = substr(texts.i.thisSection, position, 1)
newtext = newtext||randbase||nextchar
position = position+1
end
if i = 1 then call ppm_SaveText(tempfile,newtext)
if i>1 then call ppm_SaveMoreText(tempfile,newtext)
end
call ppm_ShowStatus("Effacement de l'Ancien Texte ...")
success = ppm_Cut()
if success ~= 1 then exit_msg("Effacement Impossible")
call ppm_ShowStatus("Insertion du Nouveau Texte ...")
success = ppm_InsertFile(tempfile)
if success~=1 then exit_msg("Insertion Impossible")
if lastpos(" ",tempfile) ~= 0 then tempfile = '22'x||tempfile||'22'x
"delete > nil: "tempfile
call exit_msg()
end
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
error:
syntax:
do
exit_msg("Arrêt du Génie dû à l'erreur: "errortext(rc))
end
exit_msg:
do
parse arg message
if message ~= "" then
call ppm_Inform(1,message,)
call ppm_ClearStatus()
exit
end