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
/
TexteMulticolor.pprx
< prev
next >
Wrap
Text File
|
1993-08-03
|
5KB
|
142 lines
/*
@BTexteMulticouleur @P @I Ecrit et © par Don Cox en décembre 1992
@IN'est pas du Domaine Publique. Tous Droits Réservés.
Traduit et modifié par Fabien Larini le 31/07/93.
Ce Génie applique une couleur aléatoire au texte sélectionné.
Avertissements : il est lent, il augmente la taille du texte (ajout de
codes de formatages) d'un facteur de 8 ou 9, il ralenti PPage. Donc,
utilisez le à la fin de votre mise en page. Il demande et sauve dans
son fichier de configuration le répertoire où il stocke ses fichiers
temporaires.
*/
/*MulticolourText*/
/* This Genie applies random colours 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 © Dec 92 Not Public Domain. All rights reserved. */
signal on error
signal on syntax
address command
tempdir = ""
pos = 0
fichiercfg = "rexx:TexteMulticolor.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é")
collist = ppm_GetColorList()
collist = substr(collist, pos('0a'x, collist) + 1) /* It begins with a number */
chosen = ppm_SelectFromList("Selection des Couleurs",36,24,1,collist)
if chosen = "" then exit_msg("Pas de Couleurs Choisies")
n=1
do forever /* put colours into a compound variable */
parse var chosen acolour "0a"x chosen
if acolour = "" then break
colours.n = acolour
n=n+1
end
colournumber = n-1
call ppm_ShowStatus("Traitement du Text ...")
/* 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
randcol = random(1,colournumber,time("s"))
thiscolour = colours.randcol
randbase = "\c<"||thiscolour||">"
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 du Nouveau Texte 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