1 ' window engine, 2003
\r
2 ' Svjatoslav Agejenko
\r
3 ' svjatoslav@svjatoslav.eu
\r
6 DECLARE FUNCTION getline$ (w%, l%)
\r
7 DECLARE SUB loadfile (file$, d%)
\r
8 DECLARE SUB sendline (w%, l%, newstring$)
\r
9 DECLARE FUNCTION getflin% ()
\r
10 DECLARE SUB refresh ()
\r
11 DECLARE FUNCTION addpage% (x%, y%, xs%, ys%, title$)
\r
12 DECLARE SUB box (x%, y%, xl%, yl%, e$)
\r
14 DECLARE SUB shpage (a)
\r
15 DECLARE SUB start ()
\r
19 DIM SHARED st$(1 TO stamo)
\r
22 DIM SHARED pag(1 TO 10, 1 TO 1000)
\r
23 DIM SHARED pagx(1 TO 10), pagy(1 TO 10), pagxs(1 TO 10), pagys(1 TO 10)
\r
24 DIM SHARED pagon(1 TO 10)
\r
25 DIM SHARED pagtitle$(1 TO 10)
\r
27 DIM SHARED pagshx(1 TO 10) ' x & y shift
\r
28 DIM SHARED pagshy(1 TO 10)
\r
30 DIM SHARED pageactive ' active page
\r
36 FUNCTION addpage (x, y, xs, ys, title$)
\r
38 IF pagon(a) = 0 THEN b = a: GOTO 1
\r
47 pagtitle$(b) = title$
\r
54 IF pag(w, a) > 0 THEN st$(pag(w, a)) = "": pag(w, a) = 0
\r
59 w1 = addpage(1, 1, 30, 10, "window 1.")
\r
60 w2 = addpage(1, 12, 80, 30, "second window")
\r
61 w3 = addpage(31, 2, 30, 10, "last window")
\r
63 loadfile "wsystem.bas", w2
\r
64 loadfile "wsystem.bas", w1
\r
65 loadfile "wsystem.bas", w3
\r
68 pageactive = INT(RND * 3) + 1
\r
72 pagshx(pageactive) = SIN(a / 10) * 10 + 10
\r
73 pagshy(pageactive) = a
\r
76 IF INKEY$ <> "" THEN SYSTEM
\r
82 FUNCTION getflin ' Get free line
\r
84 IF stpn > 1000 THEN stpn = 1
\r
85 IF st$(stpn) = "" THEN
\r
94 FUNCTION getline$ (w, l)
\r
95 IF pag(w, l) = 0 THEN
\r
98 getline$ = st$(pag(w, l))
\r
102 SUB loadfile (file$, d)
\r
104 OPEN file$ FOR INPUT AS #1
\r
106 IF EOF(1) <> 0 THEN GOTO 3
\r
121 IF pagon(a) > 0 THEN shpage (a)
\r
125 SUB sendline (w, l, newstring$) ' window, lineNum, lineItself
\r
126 ' send string into window memory
\r
129 IF a$ = SPACE$(LEN(a$)) THEN a$ = ""
\r
131 IF LEN(a$) > 0 THEN
\r
133 IF RIGHT$(a$, 1) = " " THEN
\r
134 a$ = LEFT$(a$, LEN(a$) - 1)
\r
140 IF pag(w, l) > 0 THEN st$(pag(w, l)) = "": pag(w, l) = 0
\r
142 IF pag(w, l) = 0 THEN pag(w, l) = getflin
\r
143 st$(pag(w, l)) = a$
\r
148 IF page = pageactive THEN bg = 1 ELSE bg = 0
\r
154 e$ = pagtitle$(page)
\r
160 FOR a = 1 TO xl - 2
\r
161 a$ = a$ + CHR$(205)
\r
163 b$ = CHR$(201) + a$ + CHR$(187)
\r
164 c$ = CHR$(200) + a$ + CHR$(188)
\r
168 LOCATE y + yl - 1, x
\r
171 FOR a = 1 TO yl - 2
\r
173 d$ = getline(page, a + pagshy(page))
\r
174 d$ = d$ + SPACE$(300)
\r
175 d$ = RIGHT$(d$, LEN(d$) - pagshx(page))
\r
176 d$ = LEFT$(d$, xl - 2)
\r
177 PRINT CHR$(186) + d$ + CHR$(186)
\r
180 xt = INT(x + (xl / 2) - (LEN(e$) / 2) - 2)
\r