home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of Shareware - Software Farm 2
/
wosw_2.zip
/
wosw_2
/
PASCAL
/
MMSRC.ZIP
/
INIT_MEN.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1988-12-06
|
16KB
|
427 lines
PROCEDURE Update_Menu_Env;
VAR Menu_Env : TEXT;
i : BYTE;
FUNCTION Spell_Color (Color : INTEGER) : STRING;
BEGIN
IF Color > 15 THEN
Color := Color DIV 16;
CASE Color MOD 16 OF
0 : Spell_Color := '0 (Black)';
1 : Spell_Color := '1 (Blue)';
2 : Spell_Color := '2 (Green)';
3 : Spell_Color := '3 (Cyan)';
4 : Spell_Color := '4 (Red)';
5 : Spell_Color := '5 (Magenta)';
6 : Spell_Color := '6 (Brown)';
7 : Spell_Color := '7 (LightGray)';
8 : Spell_Color := '8 (DarkGray)';
9 : Spell_Color := '9 (LightBlue)';
10 : Spell_Color := '10 (LightGreen)';
11 : Spell_Color := '11 (LightCyan)';
12 : Spell_Color := '12 (LightRed)';
13 : Spell_Color := '13 (LightMagenta)';
14 : Spell_Color := '14 (Yellow)';
15 : Spell_Color := '15 (White)';
END;
END;
BEGIN { Update_Menu_Env }
IF NOT Env_Changes THEN { nothing to update }
EXIT;
ASSIGN (Menu_Env,'MENUENV.DAT');
{$I-}
REWRITE (Menu_Env);
{$I+}
IO_Error := IORESULT;
IF IO_Error <> 0 THEN
BEGIN
Show_Error (IO_Error+100,10,21,fgNErr+bgNErr); { I/O ERROR }
EXIT;
END;
WRITELN (Menu_Env,'Header Toggle = ',Header_Toggle);
WRITELN (Menu_Env,'Date & Time Toggle = ',Date_Time_Toggle);
WRITELN (Menu_Env,'Help Toggle = ',Help_Toggle);
WRITELN (Menu_Env,'Foreground Color-MAIN = ',Spell_Color(fgMain));
WRITELN (Menu_Env,'Background Color-MAIN = ',Spell_Color(bgMain));
WRITELN (Menu_Env,'Foreground Color-COMMAND = ',Spell_Color(fgCmnd));
WRITELN (Menu_Env,'Background Color-COMMAND = ',Spell_Color(bgCmnd));
WRITELN (Menu_Env,'Foreground Color-NAME = ',Spell_Color(fgName));
WRITELN (Menu_Env,'Background Color-NAME = ',Spell_Color(bgName));
WRITELN (Menu_Env,'Foreground Color-OPTION HIGHLIGHTS = ',Spell_Color(fgHOpt));
WRITELN (Menu_Env,'Background Color-OPTION HIGHLIGHTS = ',Spell_Color(bgHOpt));
WRITELN (Menu_Env,'Foreground Color-OPTION SELECT KEYS = ',Spell_Color(fgSlct));
WRITELN (Menu_Env,'Background Color-OPTION SELECT KEYS = ',Spell_Color(bgSlct));
WRITELN (Menu_Env,'Foreground Color-HELP = ',Spell_Color(fgHelp));
WRITELN (Menu_Env,'Background Color-HELP = ',Spell_Color(bgHelp));
WRITELN (Menu_Env,'Foreground Color-ERRORS = ',Spell_Color(fgNErr));
WRITELN (Menu_Env,'Background Color-ERRORS = ',Spell_Color(bgNErr));
WRITELN (Menu_Env,'Foreground Color-NOTES = ',Spell_Color(fgNote));
WRITELN (Menu_Env,'Background Color-NOTES = ',Spell_Color(bgNote));
WRITELN (Menu_Env,'Foreground Color-FATAL ERRORS = ',Spell_Color(fgFErr));
WRITELN (Menu_Env,'Background Color-FATAL ERRORS = ',Spell_Color(bgFErr));
WRITELN (Menu_Env,'Foreground Color-WARNINGS = ',Spell_Color(fgWarn));
WRITELN (Menu_Env,'Background Color-WARNINGS = ',Spell_Color(bgWarn));
WRITELN (Menu_Env,'Foreground Color-INPUT FIELDS = ',Spell_Color(fgInpt));
WRITELN (Menu_Env,'Background Color-INPUT FIELDS = ',Spell_Color(bgInpt));
FOR i := 1 TO 16 DO
BEGIN
WRITELN (Menu_Env,'Foreground Color-MENU BOX ',i,' = ',Spell_Color(fgMenu[i]));
WRITELN (Menu_Env,'Background Color-MENU BOX ',i,' = ',Spell_Color(bgMenu[i]));
WRITELN (Menu_Env,'Foreground Color-MENU ',i,' TITLE = ',Spell_Color(fgTitl[i]));
WRITELN (Menu_Env,'Background Color-MENU ',i,' TITLE = ',Spell_Color(bgTitl[i]));
END;
{$I-}
CLOSE (Menu_Env);
{$I+}
END;
PROCEDURE Init_Menu_Manager;
VAR i : BYTE;
PROCEDURE Get_Environment_Variables;
VAR Menu_Env : TEXT;
Opened : BOOLEAN;
i : BYTE;
FUNCTION CSI (s : STRING) : INTEGER;
VAR i : INTEGER;
t : STRING;
BEGIN
t := '';
FOR i := 1 TO LENGTH(s) DO
IF s[i] IN ['0'..'9'] THEN
t := CONCAT(t,s[i]);
IF t = '' THEN
t := '0';
VAL (t,i,IO_Error);
CSI := i;
END;
PROCEDURE Get_Boolean_Toggle (VAR Toggle : BOOLEAN);
VAR Line : STRING;
BEGIN
Line := '';
IF NOT EOF(Menu_Env) THEN
{$I-}
READLN (Menu_Env,Line);
{$I+}
IF POS('TRUE',Upper_Case(Line)) > 0 THEN
Toggle := TRUE
ELSE
Toggle := FALSE;
END;
PROCEDURE Get_ForeGround_Color (VAR Color : BYTE);
VAR Line : STRING;
i : BYTE;
BEGIN
Line := '';
IF NOT EOF(Menu_Env) THEN
{$I-}
READLN (Menu_Env,Line);
{$I+}
i := Scan(Line,Forwards,EQ,'=');
IF i < LENGTH(Line) THEN
DELETE (Line,1,i);
Color := CSI(Line);
END;
PROCEDURE Get_BackGround_Color (VAR Color : BYTE);
VAR Line : STRING;
i : BYTE;
BEGIN
Line := '';
IF NOT EOF(Menu_Env) THEN
{$I-}
READLN (Menu_Env,Line);
{$I+}
i := Scan(Line,Forwards,EQ,'=');
IF i < LENGTH(Line) THEN
DELETE (Line,1,i);
Color := CSI(Line) * 16;
END;
BEGIN { Get_Environment_Variables }
ASSIGN (Menu_Env,'MENUENV.DAT');
Opened := FALSE;
REPEAT
{$I-}
RESET (Menu_Env);
{$I+}
IO_Error := IORESULT;
IF IO_Error = 0 THEN
Opened := TRUE
ELSE
IF IO_Error = 2 THEN { file doesn't exist - create it }
BEGIN
{$I-}
REWRITE (Menu_Env);
{$I+}
IO_Error := IORESULT;
IF IO_Error > 0 THEN { have a real problem here... }
BEGIN
Sound_Bell;
WRITELN;
WRITELN ('+=====================================+');
WRITELN ('|<<<<<<<<<<<<<<<<ERROR>>>>>>>>>>>>>>>>|');
WRITELN ('| |');
WRITELN ('| "Menu Manager" detected the follow- |');
WRITELN ('| ing UNRECOVERABLE error on the RE- |');
WRITELN ('| WRITE of the file "MENUENV.DAT": |');
WRITELN ('| |');
WRITELN ('| IORESULT = ',IO_Error:5,' |');
WRITELN ('| |');
WRITELN ('+======================================+');
HALT;
END;
{$I-}
CLOSE (Menu_Env);
{$I+}
Header_Toggle := TRUE;
Date_Time_Toggle := TRUE;
Help_Toggle := TRUE;
IF VideoMode = 3 THEN { using a color monitor }
BEGIN
fgMain := White; { 15 }
bgMain := Cyan * 16; { 3 }
fgCmnd := LightCyan; { 11 }
bgCmnd := Blue * 16; { 1 }
fgName := White; { 15 }
bgName := Brown * 16; { 6 }
fgHOpt := White; { 15 }
bgHOpt := Black * 16; { 0 }
fgSlct := White; { 15 }
bgSlct := Red * 16; { 4 }
fgHelp := White; { 15 }
bgHelp := Green * 16; { 2 }
fgNErr := LightCyan; { 11 }
bgNErr := Red * 16; { 4 }
fgNote := Yellow; { 14 }
bgNote := Blue * 16; { 1 }
fgFErr := LightRed; { 12 }
bgFErr := Black; { 0 }
fgWarn := LightGreen; { 10 }
bgWarn := Brown * 16; { 6 }
fgInpt := LightCyan; { 11 }
bgInpt := LightGray * 16; { 7 }
FOR i := 1 TO 16 DO
BEGIN
fgMenu[i] := (i + 13) MOD 16;
bgMenu[i] := ((i + 4) MOD 8) * 16;
fgTitl[i] := (i + 14) MOD 16;
bgTitl[i] := ((i + 3) MOD 8) * 16;
END;
END
ELSE { using a black & white monitor }
BEGIN
fgMain := White; { 15 }
bgMain := Black; { 0 }
fgCmnd := Black; { 0 }
bgCmnd := LightGray * 16; { 7 }
fgName := Black; { 0 }
bgName := Blue; { 1 - produces underline }
fgHOpt := White; { 15 }
bgHOpt := Black; { 0 }
fgSlct := DarkGray; { 8 }
bgSlct := LightGray * 16; { 7 }
fgHelp := Black; { 0 }
bgHelp := LightGray * 16; { 7 }
fgNErr := Black; { 0 }
bgNErr := LightGray * 16; { 7 }
fgNote := Black; { 0 }
bgNote := LightGray * 16; { 7 }
fgFErr := Black; { 0 }
bgFErr := LightGray * 16; { 7 }
fgWarn := Black; { 0 }
bgWarn := LightGray * 16; { 7 }
fgInpt := LightGray; { 7 }
bgInpt := Black; { 0 }
FOR i := 1 TO 16 DO
BEGIN
fgMenu[i] := Black;
bgMenu[i] := LightGray * 16;
fgTitl[i] := Black;
bgTitl[i] := Blue;
END;
END;
Env_Changes := TRUE;
Update_Menu_Env;
END
ELSE { have a real probelm here... }
BEGIN
Sound_Bell;
WRITELN;
WRITELN ('+=====================================+');
WRITELN ('|<<<<<<<<<<<<<<<<ERROR>>>>>>>>>>>>>>>>|');
WRITELN ('| |');
WRITELN ('| "Menu Manager" detected the follow- |');
WRITELN ('| ing UNRECOVERABLE error on the RE- |');
WRITELN ('| SET of the file "MENUENV.DAT": |');
WRITELN ('| |');
WRITELN ('| IORESULT = ',IO_Error:5,' |');
WRITELN ('| |');
WRITELN ('+======================================+');
HALT;
END;
UNTIL Opened;
Get_Boolean_Toggle (Header_Toggle);
Get_Boolean_Toggle (Date_Time_Toggle);
Get_Boolean_Toggle (Help_Toggle);
Get_ForeGround_Color (fgMain);
Get_BackGround_Color (bgMain);
Get_ForeGround_Color (fgCmnd);
Get_BackGround_Color (bgCmnd);
Get_ForeGround_Color (fgName);
Get_BackGround_Color (bgName);
Get_ForeGround_Color (fgHOpt);
Get_BackGround_Color (bgHOpt);
Get_ForeGround_Color (fgSlct);
Get_BackGround_Color (bgSlct);
Get_ForeGround_Color (fgHelp);
Get_BackGround_Color (bgHelp);
Get_ForeGround_Color (fgNErr);
Get_BackGround_Color (bgNErr);
Get_ForeGround_Color (fgNote);
Get_BackGround_Color (bgNote);
Get_ForeGround_Color (fgFErr);
Get_BackGround_Color (bgFErr);
Get_ForeGround_Color (fgWarn);
Get_BackGround_Color (bgWarn);
Get_ForeGround_Color (fgInpt);
Get_BackGround_Color (bgInpt);
FOR i := 1 TO 16 DO
BEGIN
Get_ForeGround_Color (fgMenu[i]);
Get_BackGround_Color (bgMenu[i]);
Get_ForeGround_Color (fgTitl[i]);
Get_BackGround_Color (bgTitl[i]);
END;
{$I-}
CLOSE (Menu_Env);
{$I+}
END;
BEGIN
IF NOT(VideoMode IN [2,3,7]) THEN
BEGIN
Sound_Bell;
WRITELN;
WRITELN ('+=====================================+');
WRITELN ('|<<<<<<<<<<<<<<<<ERROR>>>>>>>>>>>>>>>>|');
WRITELN ('| |');
WRITELN ('| "Menu Manager" will only work in |');
WRITELN ('| the following TEXT (non-graphics) |');
WRITELN ('| modes: |');
WRITELN ('| |');
WRITELN ('| 2 - BW80 - 80x25 Black & White |');
WRITELN ('| 3 - CO80 - 80x25 Color |');
WRITELN ('| 7 - MONO - 80x25 Black & White |');
WRITELN ('| |');
WRITELN ('| "Menu Manager" detected MODE: ',VideoMode:2,' |');
WRITELN ('| |');
WRITELN ('| Use the DOS "MODE" command to set |');
WRITELN ('| an appropriate mode. |');
WRITELN ('| |');
WRITELN ('+=====================================+');
HALT;
END;
GetSubModelID;
CASE SystemID OF
$F8 : CASE SubModelID OF
$00 : Config := 'IBM PS/2 Model 80 (16 MHz)';
$01 : Config := 'IBM PS/2 Model 80 (20 MHz)';
$09 : Config := 'IBM PS/2 Model 70 (16 MHz)';
ELSE
Config := CONCAT('IBM PS/2 386 Type ',CIS(SubModelID));
END;
$F9 : Config := 'IBM PC Convertible';
$FA : CASE SubModelID OF
$00 : Config := 'IBM PS/2 Model 30';
$01 : Config := 'IBM PS/2 Model 25';
ELSE
Config := CONCAT('IBM PS/2 MCGA Type ',CIS(SubModelID));
END;
$FB : Config := 'IBM PC XT (256/640)';
$FC : CASE SubModelID OF
$00 : Config := 'IBM PC AT (6 MHz) / Compatible';
$01 : Config := 'IBM PC AT (8 MHz) / Compatible';
$02 : Config := 'IBM PC XT (286) / Compatbile';
$04 : Config := 'IBM PS/2 Model 50';
$05 : Config := 'IBM PS/2 Model 60';
ELSE
Config := CONCAT('IBM PS/2 VGA Type ',CIS(SubModelID));
END;
$FD : Config := 'IBM PCjr';
$FE : Config := 'IBM PC XT / All Compatibles';
$FF : Config := 'IBM PC';
ELSE
Config := CONCAT('UNKNOWN HARDWARE TYPE ',CIS(SystemID));
END;
IF Have3270 THEN
CASE ActiveDispDev3270 OF
$00 : Config2 := '5151 or 5272 Display & Adapter';
$01 : Config2 := '3295 Display & Adapter';
$02 : Config2 := '5151 or 5272, Adapter, XGA Graphics';
$03 : Config2 := '5279 Display, 3270 PC G Adapter';
$04 : Config2 := '5379 C01 Display,3270 PC GX Adapter';
$05 : Config2 := '5379 M01 Display,3270 PC GX Adapter';
$FF : Config2 := 'NOT A 3270 PC DISPLAY & ADAPTER';
ELSE
Config2 := CONCAT('UNKNOWN DISPLAY TYPE ',CIS(ActiveDispDev3270));
END
ELSE
CASE ActiveDispDev OF
$00 : Config2 := 'NO DISPLAY';
$01 : Config2 := 'MDA With 5151 Monochrome';
$02 : Config2 := 'CGA With 5153/4 Color';
$03 : Config2 := 'EGA With 5153/4 Color';
$04 : Config2 := 'EGA With 515x Color/Monochrome';
$05 : Config2 := 'PGC With 5175 Color';
$06 : Config2 := 'VGA With Analog Color/Monochrome';
$07 : Config2 := 'VGA With Analog Color';
$08 : Config2 := 'MCGA With Analog Color/Monochrome';
$09 : Config2 := 'MCGA With Analog Color';
ELSE
Config2 := CONCAT('UNKNOWN DISPLAY TYPE ',CIS(ActiveDispDev));
END;
Config3 := CONCAT(CIS(CRTcols),' columns -by- ',CIS(CRTrows),' rows');
Get_Environment_Variables;
{ set global change parameters }
Changes := FALSE;
Env_Changes := FALSE;
END;