summaryrefslogtreecommitdiff
path: root/app/schulis-mathematiksystem/1.0/src/ls-DIALOG 3.mathe
blob: 3408f21ec822dbfee564388e7e58348a93965c9d (plain)
1
2
3
PACKETlsdialog3DEFINES WINDOW,:=,window,show,page,erase,line,remaininglines,cursor,getcursor,outframe,outmenuframe,out,put,putline,get,getline,yes,no,edit,center,stop,area,areax,areay,areaxsize,areaysize:LETpiep="�",cr="
";LETjaneinkette="jJyYnN",blank=" ",niltext="";TYPE WINDOW=STRUCT(AREAfenster,INTcspalte,czeile,belegbarezeilen,BOOLfensterendeerreicht);ROW3TEXT CONSTaussage:=ROW3TEXT:(" 'Window' ungültig!"," (j/n) ?"," Weiter mit beliebiger Taste!");TEXT VARnumberword,exitchar;OP:=(WINDOW VARlinks,WINDOW CONSTrechts):CONCR(links):=CONCR(rechts)END OP:=;WINDOW PROCwindow(INT CONSTx,y,xsize,ysize):WINDOW VARw;fill(w.fenster,x,y,xsize,ysize);initialize(w);wEND PROCwindow;PROCinitialize(WINDOW VARw):w.czeile:=1;w.cspalte:=1;w.fensterendeerreicht:=FALSE;w.belegbarezeilen:=areaysize(w.fenster)END PROCinitialize;PROCshow(WINDOW VARw):zeigerahmen;fensterputzen.zeigerahmen:outframe(w.fenster).fensterputzen:page(w).END PROCshow;PROCpage(WINDOW VARw):initialize(w);page(w,FALSE)END PROCpage;PROCpage(WINDOW CONSTw,BOOL CONSTmitrahmen):IFareax(w)=1ANDareay(w)=1ANDareaxsize(w)=79ANDareaysize(w)=24THENpage;ELSEloeschebereichFI.loeschebereich:IFmitrahmenTHENpage(areax(w)-1,areay(w)-1,areaxsize(w)+2,areaysize(w)+2)ELSEpage(area(w))FI END PROCpage;PROCerase(WINDOW VARw):page(w,TRUE)END PROCerase;PROCline(WINDOW VARw):w.cspalte:=1;IFw.czeile<w.belegbarezeilenTHENw.czeileINCR1;ELSEw.czeile:=1;w.fensterendeerreicht:=TRUE FI;cursor(w,w.cspalte,w.czeile)END PROCline;PROCline(WINDOW VARw,INT CONSTanzahl):INT VARi;FORiFROM1UPTOanzahlREPline(w)PER END PROCline;INT PROCremaininglines(WINDOW CONSTw):INT VARspalte,zeile;getcursor(w,spalte,zeile);IFspalte=0ORzeile=0THEN0ELSEw.belegbarezeilen-w.czeileFI END PROCremaininglines;PROCcursor(WINDOW VARw,INT CONSTspalte,zeile):IFspalte<1ORzeile<1ORspalte>areaxsize(w)ORzeile>areaysize(w)THENpage(w);ELSEw.cspalte:=spalte;w.czeile:=zeile;FI;cursor(w.fenster,w.cspalte,w.czeile)END PROCcursor;PROCgetcursor(WINDOW CONSTw,INT VARspalte,zeile):IF(w.cspalte<1)OR(w.cspalte>areaxsize(w.fenster))OR(w.czeile<1)OR(w.czeile>areaysize(w.fenster))THENspalte:=0;zeile:=0ELSEspalte:=w.cspalte;zeile:=w.czeileFI END PROCgetcursor;PROCout(WINDOW VARw,TEXT CONSTtext):INT VARrestlaenge;IF(w.cspalte>=1)AND(w.cspalte<=areaxsize(w.fenster))AND(w.czeile>=1)AND(w.czeile<=w.belegbarezeilen)THENputzeggffenster;cursor(w.fenster,w.cspalte,w.czeile);outtext(text,1,textende);setzefenstercursorneu;setzeausgabeggfinnaechsterzeilefortFI.putzeggffenster:IFw.fensterendeerreichtTHENpage(w);w.fensterendeerreicht:=FALSE FI.textende:restlaenge:=areaxsize(w.fenster)-w.cspalte+1;min(length(text),restlaenge).setzefenstercursorneu:IFlength(text)>=restlaengeTHENw.cspalte:=1;w.czeileINCR1;schlageggfneueseiteaufELSEw.cspalteINCRlength(text)FI.schlageggfneueseiteauf:IFw.czeile>w.belegbarezeilenTHENw.fensterendeerreicht:=TRUE;w.czeile:=1;w.cspalte:=1FI.setzeausgabeggfinnaechsterzeilefort:IFlength(text)>restlaengeTHENout(w,subtext(text,restlaenge+1))FI.END PROCout;PROCoutframe(WINDOW VARw):outframe(area(w))END PROCoutframe;PROCoutmenuframe(WINDOW VARw):outmenuframe(area(w))END PROCoutmenuframe;PROCput(WINDOW VARw,TEXT CONSTword):out(w,word);out(w,blank)END PROCput;PROCput(WINDOW VARw,INT CONSTnumber):put(w,text(number))END PROCput;PROCput(WINDOW VARw,REAL VARnumber):put(w,text(number))END PROCput;PROCputline(WINDOW VARw,TEXT CONSTtextline):out(w,textline);line(w)END PROCputline;PROCprivateget(WINDOW VARw,TEXT VARword,TEXT CONSTseparator,INT CONSTlength):INT VARx,y;INT VARrestlaenge:=areaxsize(w.fenster)-w.cspalte-1;ggfzurnaechstenzeile;getcursor(x,y);cursoron;cursor(x,y);REPword:="";editget(word,laenge,laenge,separator,"",exitchar);out(w,word);echoeexitchar(w)UNTILword<>niltextANDword<>blankPER;cursoroff;deleteleadingblanks.ggfzurnaechstenzeile:IFrestlaenge<5THENline(w);restlaenge:=areaxsize(w.fenster)-2FI.deleteleadingblanks:WHILE(wordSUB1)=blankREPword:=subtext(word,2)PER.laenge:min(length,restlaenge).END PROCprivateget;PROCget(WINDOW VARw,TEXT VARword):
privateget(w,word," ",maxtextlength)END PROCget;PROCget(WINDOW VARw,TEXT VARword,TEXT CONSTseparator):privateget(w,word,separator,maxtextlength)END PROCget;PROCget(WINDOW VARw,TEXT VARword,INT CONSTlength):privateget(w,word,"",length)END PROCget;PROCget(WINDOW VARw,INT VARnumber):get(w,numberword);number:=int(numberword)END PROCget;PROCget(WINDOW VARw,REAL VARnumber):get(w,numberword);number:=real(numberword)END PROCget;PROCgetline(WINDOW VARw,TEXT VARtextline):privateget(w,textline,"",maxtextlength)END PROCgetline;PROCechoeexitchar(WINDOW VARfenster):IFexitchar=crTHENline(fenster)ELSEout(fenster,exitchar)FI END PROCechoeexitchar;TEXT PROCcenter(WINDOW CONSTw,TEXT CONSTtext):IFlength(text)>=areaxsize(w.fenster)THENsubtext(text,1,areaxsize(w.fenster))ELSEcenter(areaxsize(w.fenster),text)FI END PROCcenter;BOOL PROCyes(WINDOW VARw,TEXT CONSTfrage):TEXT VARzeichen,internefrage:=frage;internefrageCATaussage[2];wechselggfaufneueseite;out(w,internefrage);holeeingabezeichen;wertezeichenaus.wechselggfaufneueseite:IFremaininglines(w)<1THENpage(w)FI.holeeingabezeichen:cursoron;clearbuffer;REPinchar(zeichen);piepseggfUNTILpos(janeinkette,zeichen)>0PER;out(w,blank+zeichen);cursoroff;line(w).piepseggf:IFpos(janeinkette,zeichen)=0THENout(piep)FI.wertezeichenaus:IFpos(janeinkette,zeichen)<5THEN TRUE ELSE FALSE FI.END PROCyes;PROCedit(WINDOW VARw,FILE VARf):outframe(w.fenster);loescherechtespalten(w);cursoron;edit(f,areax(w.fenster),areay(w.fenster),areaxsize(w.fenster)-1,areaysize(w.fenster));cursoroffEND PROCedit;PROCedit(WINDOW VARw,TEXT CONSTdateiname):FILE VARf:=sequentialfile(modify,dateiname);toline(f,1);edit(w,f)END PROCedit;PROCshow(WINDOW VARw,FILE VARf):outframe(w.fenster);loescherechtespalten(w);openeditor(groesstereditor+1,f,FALSE,areax(w.fenster),areay(w.fenster),areaxsize(w.fenster)-1,areaysize(w.fenster));cursoron;edit(groesstereditor,"eqvw19dpgn�",PROC(TEXT CONST)stdkommandointerpreter);cursoroffEND PROCshow;PROCshow(WINDOW VARw,TEXT CONSTdateiname):FILE VARf:=sequentialfile(modify,dateiname);toline(f,1);show(w,f)END PROCshow;PROCloescherechtespalten(WINDOW VARw):INT VARi;FORiFROM1UPTOareaysize(w.fenster)REPcursor(w,areaxsize(w.fenster)-2,i);out("   ")PER END PROCloescherechtespalten;BOOL PROCno(WINDOW VARw,TEXT CONSTfrage):NOTyes(w,frage)END PROCno;PROCstop(WINDOW VARw):stop(w,2)END PROCstop;PROCstop(WINDOW VARw,INT CONSTzeilenzahl):INT VARi;FORiFROM1UPTOzeilenzahlREPline(w)PER;out(w,aussage[3]);pauseEND PROCstop;AREA PROCarea(WINDOW CONSTw):w.fensterEND PROCarea;INT PROCareax(WINDOW CONSTw):areax(w.fenster)END PROCareax;INT PROCareay(WINDOW CONSTw):areay(w.fenster)END PROCareay;INT PROCareaxsize(WINDOW CONSTw):areaxsize(w.fenster)END PROCareaxsize;INT PROCareaysize(WINDOW CONSTw):areaysize(w.fenster)END PROCareaysize;END PACKETlsdialog3