BEGIN EXTERNAL CLASS windowtools; simplewindow CLASS MyWindow; BEGIN BOOLEAN PROCEDURE readfile(fname);TEXT fname; 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 BEGIN edit.initputline(f.Image.strip); f.InImage; END; edit.refreshlines; f.Close; END; readfile:=opened; END; PROCEDURE savefile(fname); TEXT fname; 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"); IF filename=/=NOTEXT THEN 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 edit.allowinput; save.allow; END; menu.destroy; END; PROCEDURE ButtonClick_Handler(b);REF(button) b; IF b==save THEN savefile(filename) ELSE IF b==newfile THEN createnewfile ELSE IF b==openfile THEN opennewfile; REF(button) quit,save,newfile,openfile; REF(scrollwindow) edit; TEXT filename; quit :- makebutton("Quit"); save :- makebutton("Save").Disallow; newfile:-makebutton("New File"); openfile:-makebutton("OpenFile"); edit :- makescrollwindow; quit.Wait; END; NEW Mywindow("Edit File"); END.