home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of Shareware - Software Farm 2
/
wosw_2.zip
/
wosw_2
/
PASCAL
/
MMSRC.ZIP
/
SETTINGS.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1988-12-02
|
11KB
|
328 lines
PROCEDURE Settings_Editor;
VAR Extended,Done : BOOLEAN;
x,y2,Old_x,Old_y2,i : BYTE;
c : CHAR;
Option_Scr_Ptr : POINTER;
Redraw : BOOLEAN;
PROCEDURE Down_Arrow;
VAR Bot_y2 : BYTE;
BEGIN
IF x = 7 THEN
Bot_y2 := 15
ELSE
Bot_y2 := 20;
IF y2 < Bot_y2 THEN
y2 := y2 + 1
ELSE
BEGIN
y2 := 5;
CASE x OF
7 : x := 30;
30 : x := 53;
53 : x := 7;
END;
END;
END;
PROCEDURE Right_Arrow;
BEGIN
CASE x OF
7 : x := 30;
30 : x := 53;
53 : IF y2 = 20 THEN
BEGIN
x := 7;
y2 := 5;
END
ELSE
BEGIN
IF y2 >= 15 THEN
x := 30
ELSE
x := 7;
y2 := y2 + 1;
END;
END;
END;
PROCEDURE Up_Arrow;
BEGIN
IF y2 > 5 THEN
y2 := y2 - 1
ELSE
IF x = 30 THEN
BEGIN
y2 := 15;
x := 7;
END
ELSE
BEGIN
y2 := 20;
IF x = 7 THEN
x := 53
ELSE
x := 30;
END;
END;
PROCEDURE Left_Arrow;
BEGIN
CASE x OF
7 : BEGIN
x := 53;
IF y2 = 5 THEN
y2 := 20
ELSE
y2 := y2 - 1;
END;
30 : IF y2 > 15 THEN
BEGIN
x := 53;
y2 := y2 - 1;
END
ELSE
x := 7;
53 : x := 30;
END;
END;
PROCEDURE Erase_Brackets (Row,Col : BYTE);
BEGIN
QWrite (Row,Col-2,Black+bgWarn,' ');
QAttr (Row,Col-1,1,1,fgWarn+bgWarn);
QWrite (Row,Col+21,Black+bgWarn,' ');
QAttr (Row,Col+20,1,1,fgWarn+bgWarn);
END;
PROCEDURE Show_Brackets (Row,Col : BYTE);
BEGIN
QWrite (Row,Col-2,fgHOpt+bgHOpt,CHR(16));
QAttr (Row,Col-1,1,1,fgHOpt+bgHOpt);
QWrite (Row,Col+21,fgHOpt+bgHOpt,CHR(17));
QAttr (Row,Col+20,1,1,fgHOpt+bgHOpt);
END;
PROCEDURE Get_Attrs (Row,Col : BYTE; VAR fgAttrPtr,bgAttrPtr : POINTER);
BEGIN
CASE Col OF
7 : CASE Row OF
5 : BEGIN fgAttrPtr := @fgMain; bgAttrPtr := @bgMain; END;
6 : BEGIN fgAttrPtr := @fgCmnd; bgAttrPtr := @bgCmnd; END;
7 : BEGIN fgAttrPtr := @fgName; bgAttrPtr := @bgName; END;
8 : BEGIN fgAttrPtr := @fgHOpt; bgAttrPtr := @bgHOpt; END;
9 : BEGIN fgAttrPtr := @fgSlct; bgAttrPtr := @bgSlct; END;
10 : BEGIN fgAttrPtr := @fgHelp; bgAttrPtr := @bgHelp; END;
11 : BEGIN fgAttrPtr := @fgNErr; bgAttrPtr := @bgNErr; END;
12 : BEGIN fgAttrPtr := @fgNote; bgAttrPtr := @bgNote; END;
13 : BEGIN fgAttrPtr := @fgFErr; bgAttrPtr := @bgFErr; END;
14 : BEGIN fgAttrPtr := @fgWarn; bgAttrPtr := @bgWarn; END;
15 : BEGIN fgAttrPtr := @fgInpt; bgAttrPtr := @bgInpt; END;
END;
30 : BEGIN
fgAttrPtr := @fgMenu[Row-4];
bgAttrPtr := @bgMenu[Row-4];
END;
53 : BEGIN
fgAttrPtr := @fgTitl[Row-4];
bgAttrPtr := @bgTitl[Row-4];
END;
END;
END;
PROCEDURE Inc_Foreground (Row,Col : BYTE);
VAR fgAttrPtr,bgAttrPtr : POINTER;
BEGIN
Redraw := TRUE;
Env_Changes := TRUE;
Get_Attrs (Row,Col,fgAttrPtr,bgAttrPtr);
IF BYTE(fgAttrPtr^) < 15 THEN
BYTE(fgAttrPtr^) := BYTE(fgAttrPtr^) + 1
ELSE
BYTE(fgAttrPtr^) := 0;
QAttr (Row,Col,1,20,BYTE(fgAttrPtr^)+BYTE(bgAttrPtr^));
END;
PROCEDURE Dec_Foreground (Row,Col : BYTE);
VAR fgAttrPtr,bgAttrPtr : POINTER;
BEGIN
Redraw := TRUE;
Env_Changes := TRUE;
Get_Attrs (Row,Col,fgAttrPtr,bgAttrPtr);
IF BYTE(fgAttrPtr^) > 0 THEN
BYTE(fgAttrPtr^) := BYTE(fgAttrPtr^) - 1
ELSE
BYTE(fgAttrPtr^) := 15;
QAttr (Row,Col,1,20,BYTE(fgAttrPtr^)+BYTE(bgAttrPtr^));
END;
PROCEDURE Inc_Background (Row,Col : BYTE);
VAR fgAttrPtr,bgAttrPtr : POINTER;
BEGIN
Redraw := TRUE;
Env_Changes := TRUE;
Get_Attrs (Row,Col,fgAttrPtr,bgAttrPtr);
IF (BYTE(bgAttrPtr^) DIV 16) < 7 THEN
BYTE(bgAttrPtr^) := BYTE(bgAttrPtr^) + 16
ELSE
BYTE(bgAttrPtr^) := 0;
QAttr (Row,Col,1,20,BYTE(fgAttrPtr^)+BYTE(bgAttrPtr^));
END;
PROCEDURE Dec_Background (Row,Col : BYTE);
VAR fgAttrPtr,bgAttrPtr : POINTER;
BEGIN
Redraw := TRUE;
Env_Changes := TRUE;
Get_Attrs (Row,Col,fgAttrPtr,bgAttrPtr);
IF (BYTE(bgAttrPtr^) DIV 16) > 0 THEN
BYTE(bgAttrPtr^) := BYTE(bgAttrPtr^) - 16
ELSE
BYTE(bgAttrPtr^) := 7 * 16;
QAttr (Row,Col,1,20,BYTE(fgAttrPtr^)+BYTE(bgAttrPtr^));
END;
PROCEDURE Redraw_Screen;
VAR Temp_Menu_Nbr : WORD;
PROCEDURE Redraw_Menus (Draw_Menu_Ptr : Menu_Ptr; VAR Menu_Nbr : WORD);
VAR Temp_Menu_Ptr : Menu_Ptr;
Temp_Help_Toggle : BOOLEAN;
BEGIN
Menu_Nbr := Menu_Nbr + 1;
Menu_Idx := Menu_Nbr MOD 16;
Temp_Help_Toggle := Help_Toggle;
Help_Toggle := FALSE;
FreeMem (Draw_Menu_Ptr^.Menu_Scr_Ptr,(Max_Nbr_Opts+2)*(Max_Opt_Len+8)shl 1);
Show_Menu (Draw_Menu_Ptr);
Help_Toggle := Temp_Help_Toggle;
IF Draw_Menu_Ptr <> Cur_Menu_Ptr THEN
BEGIN
Temp_Menu_Ptr := Head_Menu_Ptr;
WHILE Temp_Menu_Ptr^.Exit_Menu_Name <> Draw_Menu_Ptr^.Menu_Name DO
Temp_Menu_Ptr := Temp_Menu_Ptr^.Next_Menu_Ptr;
Redraw_Menus (Temp_Menu_Ptr,Menu_Nbr);
END;
END;
BEGIN { Redraw_Screen }
Init_Scr (fgMain,bgMain);
Temp_Menu_Nbr := 0;
Redraw_Menus (Head_Menu_Ptr,Temp_Menu_Nbr);
IF Help_Toggle THEN
Show_Help (0,Get_Help_Row(Cur_Menu_Ptr),3,fgHelp+bgHelp); { menu help }
END;
BEGIN { Settings_Editor }
{ might want to add password ability to this option. }
{ if so, would want to check for password here... }
IF Help_Toggle THEN
Erase_Help;
Save_Scr (3,4,20,74,Option_Scr_Ptr);
Draw_Box (3,4,19,72,Black+bgWarn,No_Border,-1,Shade,fgMain+bgMain-8);
QWrite (3,4,(bgWarn DIV 16)+bBlack+8,Justify('Settings Editor',Center,72,' '));
QWrite ( 5, 7,fgMain+bgMain,CONCAT(Make_String(8,Shade),'MAIN',Make_String(8,Shade)));
QWrite ( 6, 7,fgCmnd+bgCmnd,' COMMAND ');
QWrite ( 7, 7,fgName+bgName,' NAME ');
QWrite ( 8, 7,fgHOpt+bgHOpt,' OPTION HIGHLIGHTS ');
QWrite ( 9, 7,fgSlct+bgSlct,' OPTION SELECT KEYS ');
QWrite (10, 7,fgHelp+bgHelp,' HELP ');
QWrite (11, 7,fgNErr+bgNErr,' ERRORS ');
QWrite (12, 7,fgNote+bgNote,' NOTES ');
QWrite (13, 7,fgFErr+bgFErr,' FATAL ERRORS ');
QWrite (14, 7,fgWarn+bgWarn,' WARNINGS ');
QWrite (15, 7,fgInpt+bgInpt,' INPUT FIELDS ');
FOR i := 5 TO 15 DO
BEGIN
QWrite (i,6,fgWarn+bgWarn,'[');
QWrite (i,27,fgWarn+bgWarn,']');
END;
FOR i := 1 TO 16 DO
BEGIN
QWrite (i+4,30,fgMenu[i]+bgMenu[i],CONCAT(' MENU BOX ',Justify(CIS(i),Right,2,' '),' '));
QWrite (i+4,29,fgWarn+bgWarn,'[');
QWrite (i+4,50,fgWarn+bgWarn,']');
QWrite (i+4,53,fgTitl[i]+bgTitl[i],CONCAT(' MENU ',Justify(CIS(i),Right,2,' '),' TITLE '));
QWrite (i+4,52,fgWarn+bgWarn,'[');
QWrite (i+4,73,fgWarn+bgWarn,']');
END;
IF Help_Toggle THEN
Show_Help (7,16,1,fgHelp+bgHelp); { settings editor help }
x := 7;
Old_x := x;
y2 := 5;
Old_y2 := y2;
Done := FALSE;
Redraw := FALSE;
REPEAT
IF (x <> Old_x) OR (y2 <> Old_y2) THEN
BEGIN
Erase_Brackets (Old_y2,Old_x);
Old_x := x;
Old_y2 := y2;
END;
Show_Brackets (y2,x);
REPEAT
IF Date_Time_Toggle THEN
Show_Date_And_Time;
UNTIL KeyPressed;
Wait_For_Key (c,Extended);
IF Extended THEN
CASE ORD(c) OF
F1 : BEGIN { F1 }
Help_Toggle := NOT Help_Toggle;
Env_Changes := TRUE;
IF Help_Toggle THEN
Show_Help (7,16,1,fgHelp+bgHelp)
ELSE
Erase_Help;
END;
61 : Done := TRUE; { F3 }
72 : Up_Arrow; { up arrow }
75 : Left_Arrow; { left arrow }
77 : Right_Arrow; { right arrow }
80 : Down_Arrow; { down arrow }
71 : BEGIN { home }
y2 := 5;
x := 7;
END;
79 : BEGIN { end }
y2 := 20;
x := 53;
END;
ELSE
Sound_Bell;
END
ELSE
CASE ORD(c) OF
13 : Down_Arrow; { enter }
27 : Done := TRUE; { escape }
73, { I }
62, { > }
43 : Inc_Foreground(y2,x); { + }
68, { D }
60, { < }
95 : Dec_Foreground(y2,x); { _ }
105, { i }
46, { . }
61 : Inc_Background(y2,x); { = }
100, { d }
44, { , }
45 : Dec_Background(y2,x); { - }
ELSE
Sound_Bell;
END;
UNTIL Done;
IF Help_Toggle THEN
Erase_Help;
Show_Scr (3,4,20,74,Option_Scr_Ptr);
IF Help_Toggle THEN
Show_Help (0,Get_Help_Row(Cur_Menu_Ptr),3,fgHelp+bgHelp); { menu help }
IF Redraw THEN
Redraw_Screen;
END;