Ce code-ci est un éditeur de texte. Le programme demande un nom de fichier à l'usager et l'éditera si le fichier existe.
begin
external class windowtools;
simplewindow class MyWindow;
begin
ref(button) quit,save; !boutons de sortie et de sauvegarde du fichier;
ref(scrollwindow) edit; !fenetre d'edition;
text filename; !nom du fichier d'entree et/ou sortie;
boolean procedure readfile(fname);TEXT fname;
!Procedure qui lit un fichier et le met dans edit et qui
indique a la fin si le fichier demande existe;
begin
ref(InFile) f;
boolean opened;
f:-NEW InFile(filename);
opened := f.Open(Blanks(500));
IF opened then
begin
f.InImage;
while not f.Endfile DO !On met le fichier ligne par
ligne dans edit;
begin
edit.initputline(f.Image.strip);
f.InImage;
end;
edit.refreshlines; !On rafra\^{\i}chit la fen\^etre;
f.Close;
end;
readfile:=opened;
end;
procedure savefile(fname); text fname;
!Sauve le contenu de edit dans le fichier;
begin
integer i,nlines=20;
text t;
ref(OutFile) output;
output:-new OutFile(fname);
output.Open(Blanks(500));
for i:=1 step 1 until edit.GetNumberOfLines do
begin
t:-edit.getline(i);
output.OutText(t);
output.OutImage;
end;
output.Close;
MakeMessageWindow.TimedMessage(``File Saved'',3);
end;
procedure createnewfile;
begin
filename :- ask_for_text(``Filename''); !Nouveau fichier;
if filename=/=notext then !ouverture du fichier;
begin
if ReadFile(filename) then
MakeMessageWindow.TimedMessage(``File Exists'',3);
edit.allowinput;
save.allow;
end;
end;
PROCEDURE opennewfile;
begin
ref (DirectoryMenu) menu;
menu :- new directorymenu(this XWindow,notext);
menu.setsize(400,300);
menu.placecentered;
menu.show;
filename :- menu.Waitmenu;
if filename =\= notext and then ReadFile(filename) then
begin !ouverture du fichier;
edit.allowinput;
save.allow;
end;
menu.destroy; !destruction du menu inutile;
end;
procedure ClickInButton(b);ref(button) b;
!Recupere l'enfoncement du bouton enfonce et agit en consequence;
if b==save then savefile(filename)
else
if b==newfile then createnewfile
else
if b==openfile then opennewfile;
quit :- makebutton(``Quit''); !creation des sous-fenetres;
save :- makebutton(``Save'').Disallow; !interdiction de sauver
avant d'avoir un nom de fichier;
newfile:-makebutton(``New File''); !boutons d'ouverture de fichier;
openfile:-makebutton(``OpenFile'');
edit :- makescrollwindow;
filename :- ask_for_text(``Filename''); !demande du nom de fichier;
if not ReadFile(filename) then !ouverture du fichier;
MakeMessageWindow.TimedMessage(``Nouveau Fichier'',3);
edit.allowinput; !permission pour editer le contenu de edit;
save.allow; !permission de sauver;
quit.Wait; !boucle d'attende d'evenement;
end;
new Mywindow(``Edit File''); !creation de la fenetre principale;
end.