home *** CD-ROM | disk | FTP | other *** search
- PROCEDURE Option_Editor (Opt_Nbr : BYTE);
- CONST Return = #13;
- Escape = #27;
- Null = #0;
- VAR Reply,s,Old_Opt_Name : STRING;
- Extended,Done,Opt_Changed : BOOLEAN;
- y2,Opt_Num,i : BYTE;
- c : CHAR;
- Option_Scr_Ptr : POINTER;
- Temp_Menu_Ptr : Menu_Ptr;
-
- PROCEDURE Down_Arrow;
- BEGIN
- WITH Cur_Menu_Ptr^.Opts[Opt_Nbr] DO
- CASE Opt_Type OF
- Batch : IF y2 < 14 THEN
- y2 := y2 + 1
- ELSE
- y2 := 5;
- Delim : CASE y2 OF
- 5 : y2 := 7;
- 7 : y2 := 5;
- END;
- Menu : CASE y2 OF
- 5 : y2 := 6;
- 6 : y2 := 7;
- 7 : y2 := 12;
- 12 : y2 := 5;
- END;
- END;
- END;
-
- PROCEDURE Up_Arrow;
- BEGIN
- WITH Cur_Menu_Ptr^.Opts[Opt_Nbr] DO
- CASE Opt_Type OF
- Batch : IF y2 > 5 THEN
- y2 := y2 - 1
- ELSE
- y2 := 14;
- Delim : CASE y2 OF
- 5 : y2 := 7;
- 7 : y2 := 5;
- END;
- Menu : CASE y2 OF
- 5 : y2 := 12;
- 6 : y2 := 5;
- 7 : y2 := 6;
- 12 : y2 := 7;
- END;
- END;
- END;
-
- BEGIN { Option_Editor }
- IF NOT(Chk_Password(Cur_Menu_Ptr^.Opts[Opt_Nbr].Password)) THEN
- EXIT;
-
- IF Help_Toggle THEN
- Erase_Help;
- Save_Scr (3,3,14,76,Option_Scr_Ptr);
- Draw_Box (3,3,13,74,Black+bgWarn,No_Border,-1,Shade,fgMain+bgMain-8);
- QWrite (3,3,(bgWarn DIV 16)+bBlack+8,Justify('Option Editor',Center,74,' '));
-
- QWrite ( 5,4,fgWarn+bgWarn,'Option Type ? [BATCH] [LINE] [MENU]');
- QWrite ( 6,4,fgWarn+bgWarn,'Select Key [ ]');
- QWrite ( 7,4,fgWarn+bgWarn,CONCAT('Option Name [',Make_String(Max_Opt_Len,' '),']'));
- QWrite ( 8,4,fgWarn+bgWarn,'Directory Name [ ]');
- QWrite ( 9,4,fgWarn+bgWarn,'Program Name [ ]');
- QWrite (10,4,fgWarn+bgWarn,'Parameters [ ]');
- QWrite (11,4,fgWarn+bgWarn,'Batch Filename [ ]');
- QWrite (12,4,fgWarn+bgWarn,'Password [ ]');
- QWrite (13,4,fgWarn+bgWarn,'Pause/Return ? [YES] [NO]');
- QWrite (14,4,fgWarn+bgWarn,'Prompt/Parms ? [YES] [NO]');
-
- IF Help_Toggle THEN
- Show_Help (5,18,3,fgHelp+bgHelp); { option editor help }
- WITH Cur_Menu_Ptr^.Opts[Opt_Nbr] DO
- BEGIN
- CASE Opt_Type OF
- Batch : BEGIN
- QAttr (5,20,1,5,fgInpt+bgInpt);
- QWrite (7,4,fgWarn+bgWarn,'Option Name');
- END;
- Delim : BEGIN
- QAttr (5,28,1,4,fgInpt+bgInpt);
- QWrite (7,4,fgWarn+bgWarn,'Delimiter ');
- END;
- Menu : BEGIN
- QAttr (5,35,1,4,fgInpt+bgInpt);
- QWrite (7,4,fgWarn+bgWarn,'Menu Name ');
- END;
- END;
- QWrite ( 6,20,-1,Select_Key);
- QWrite ( 7,20,-1,Opt_Name);
- QWrite ( 8,20,-1,Prg_Dir);
- QWrite ( 9,20,-1,Prg_Name);
- QWrite (10,20,-1,Parms);
- QWrite (11,20,-1,Bat_Name);
- QWrite (12,20,-1,Password);
- IF Pause THEN
- QAttr (13,20,1,3,fgInpt+bgInpt)
- ELSE
- QAttr (13,26,1,2,fgInpt+bgInpt);
- IF Prompts THEN
- QAttr (14,20,1,3,fgInpt+bgInpt)
- ELSE
- QAttr (14,26,1,2,fgInpt+bgInpt);
-
- Done := FALSE;
- Opt_Changed := FALSE;
- y2 := 5;
- REPEAT
- CASE y2 OF
- 5 : BEGIN
- CASE Opt_Type OF
- Batch : BEGIN
- Opt_Num := 1;
- QAttr (y2,20,1,5,fgWarn+bgWarn);
- END;
- Delim : BEGIN
- Opt_Num := 2;
- QAttr (y2,28,1,4,fgWarn+bgWarn);
- END;
- Menu : BEGIN
- Opt_Num := 3;
- QAttr (y2,35,1,4,fgWarn+bgWarn);
- END;
- END;
- HSelect (y2,19,0,fgInpt+bgInpt,Opt_Num,'[',']',c,Extended);
- IF NOT(Extended) AND (c = Return) THEN
- BEGIN
- Changes := TRUE;
- Opt_Changed := TRUE;
- CASE Opt_Num OF
- 1 : BEGIN
- Opt_Type := Batch;
- QWrite (7,4,fgWarn+bgWarn,'Option Name');
- END;
- 2 : BEGIN
- Opt_Type := Delim;
- QWrite (7,4,fgWarn+bgWarn,'Delimiter ');
- END;
- 3 : BEGIN
- Opt_Type := Menu;
- QWrite (7,4,fgWarn+bgWarn,'Menu Name ');
- END;
- END;
- END;
- CASE Opt_Type OF
- Batch : QAttr (y2,20,1,5,fgInpt+bgInpt);
- Delim : QAttr (y2,28,1,4,fgInpt+bgInpt);
- Menu : QAttr (y2,35,1,4,fgInpt+bgInpt);
- END;
- END;
- 6 : Input (1,y2,20,fgInpt+bgInpt,Reply,c,Extended,Visible_Chrs);
- 7 : Input (Max_Opt_Len,y2,20,fgInpt+bgInpt,Reply,c,Extended,Visible_Chrs);
- 8 : Input (55,y2,20,fgInpt+bgInpt,Reply,c,Extended,Visible_Chrs);
- 9 : Input (12,y2,20,fgInpt+bgInpt,Reply,c,Extended,Visible_Chrs);
- 10 : Input (55,y2,20,fgInpt+bgInpt,Reply,c,Extended,Visible_Chrs);
- 11 : Input (8,y2,20,fgInpt+bgInpt,Reply,c,Extended,Visible_Chrs);
- 12 : Input (8,y2,20,fgInpt+bgInpt,Reply,c,Extended,Visible_Chrs);
- 13 : BEGIN
- IF Pause THEN
- BEGIN
- Opt_Num := 1;
- QAttr (y2,20,1,3,fgWarn+bgWarn);
- END
- ELSE
- BEGIN
- Opt_Num := 2;
- QAttr (y2,26,1,2,fgWarn+bgWarn);
- END;
- HSelect (y2,19,0,fgInpt+bgInpt,Opt_Num,'[',']',c,Extended);
- IF NOT(Extended) AND (c = Return) THEN
- BEGIN
- Changes := TRUE;
- Pause := Opt_Num = 1;
- END;
- IF Pause THEN
- QAttr (y2,20,1,3,fgInpt+bgInpt)
- ELSE
- QAttr (y2,26,1,2,fgInpt+bgInpt);
- END;
- 14 : BEGIN
- IF Prompts THEN
- Opt_Num := 1
- ELSE
- Opt_Num := 2;
- IF Prompts THEN
- QAttr (y2,20,1,3,fgWarn+bgWarn)
- ELSE
- QAttr (y2,26,1,2,fgWarn+bgWarn);
- HSelect (y2,19,0,fgInpt+bgInpt,Opt_Num,'[',']',c,Extended);
- IF NOT(Extended) AND (c = Return) THEN
- BEGIN
- Changes := TRUE;
- Prompts := Opt_Num = 1;
- END;
- IF Prompts THEN
- QAttr (y2,20,1,3,fgInpt+bgInpt)
- ELSE
- QAttr (y2,26,1,2,fgInpt+bgInpt);
- END;
- END;
-
- IF Extended THEN
- CASE ORD(c) OF
- F1 : BEGIN
- Help_Toggle := NOT Help_Toggle;
- Env_Changes := TRUE;
- IF Help_Toggle THEN
- Show_Help (5,18,3,fgHelp+bgHelp)
- ELSE
- Erase_Help;
- END;
- 61 : Done := TRUE;
- 72,75 : Up_Arrow; { up arrow/left arrow }
- 80,77 : Down_Arrow; { down arrow/right arrow }
- 71 : y2 := 5; { home }
- 79 : IF Opt_Type = Batch THEN { end }
- y2 := 14
- ELSE
- IF Opt_Type = Delim THEN
- y2 := 7
- ELSE
- y2 := 12;
- ELSE
- Sound_Bell;
- END
- ELSE
- CASE ORD(c) OF
- 0 : BEGIN { something was entered }
- Changes := TRUE;
- CASE y2 OF
- 6 : BEGIN
- Select_Key := Reply[1];
- QWrite (y2,20,-1,Select_Key);
- Opt_Changed := TRUE;
- END;
- 7 : BEGIN
- IF Opt_Type = Menu THEN
- BEGIN
- Temp_Menu_Ptr := Head_Menu_Ptr;
- WHILE (Temp_Menu_Ptr^.Menu_Name <> Opt_Name) AND
- (Temp_Menu_Ptr^.Next_Menu_Ptr <> NIL) DO
- Temp_Menu_Ptr := Temp_Menu_Ptr^.Next_Menu_Ptr;
- IF Temp_Menu_Ptr^.Menu_Name = Opt_Name THEN { menu already exists }
- BEGIN
- { now, check to see if new name is an
- already existing menu }
- Temp_Menu_Ptr := Head_Menu_Ptr;
- WHILE (Temp_Menu_Ptr^.Menu_Name <> Reply) AND
- (Temp_Menu_Ptr^.Next_Menu_Ptr <> NIL) DO
- Temp_Menu_Ptr := Temp_Menu_Ptr^.Next_Menu_Ptr;
- IF Temp_Menu_Ptr^.Menu_Name = Reply THEN
- BEGIN
- { new name is an existing menu; user must want to reassign it }
- Opt_Name := Reply;
- END
- ELSE
- BEGIN
- { new name does not exist... }
- { do you wish to rename or create ? }
- i := Opt_Question('Rename/Create Existing Menu',
- 'Rename the existing menu, or Create a new one ? [RENAME] [CREATE]',11,13,14);
- IF i = 1 THEN
- BEGIN
- { must search all options for
- old menu name, and change to
- new name, as well as the menu
- itself }
- Temp_Menu_Ptr := Head_Menu_Ptr;
- Old_Opt_Name := Opt_Name;
- REPEAT
- FOR i := 1 TO Max_Nbr_Opts DO
- IF (Temp_Menu_Ptr^.Opts[i].Opt_Type = Menu) AND
- (Temp_Menu_Ptr^.Opts[i].Opt_Name = Old_Opt_Name) THEN
- Temp_Menu_Ptr^.Opts[i].Opt_Name := Reply;
- IF Temp_Menu_Ptr^.Menu_Name = Old_Opt_Name THEN
- Temp_Menu_Ptr^.Menu_Name := Reply;
- Temp_Menu_Ptr := Temp_Menu_Ptr^.Next_Menu_Ptr;
- UNTIL Temp_Menu_Ptr = NIL;
- END
- ELSE
- Opt_Name := Reply;
- END;
- END
- ELSE
- BEGIN
- { old name does not exist... }
- Opt_Name := Reply;
- END;
- END
- ELSE
- Opt_Name := Reply;
- QWrite (y2,20,-1,Justify(Opt_Name,Left,Max_Opt_Len,' '));
- Opt_Changed := TRUE;
- END;
- 8 : BEGIN
- Prg_Dir := Reply;
- QWrite (y2,20,-1,Justify(Prg_Dir,Left,55,' '));
- END;
- 9 : BEGIN
- Prg_Name := Reply;
- QWrite (y2,20,-1,Justify(Prg_Name,Left,12,' '));
- END;
- 10 : BEGIN
- Parms := Reply;
- QWrite (y2,20,-1,Justify(Parms,Left,55,' '));
- END;
- 11 : BEGIN
- Bat_Name := Reply;
- QWrite (y2,20,-1,Justify(Bat_Name,Left,8,' '));
- END;
- 12 : BEGIN
- Password := Reply;
- QWrite (y2,20,-1,Justify(Password,Left,8,' '));
- END;
- END;
- Down_Arrow;
- END;
- 13 : Down_Arrow; { enter }
- 27 : Done := TRUE; { escape }
- ELSE
- Sound_Bell;
- END;
- UNTIL Done;
- END; { WITH Opts[Opt_Nbr] }
- IF Help_Toggle THEN
- Erase_Help;
- Show_Scr (3,3,14,76,Option_Scr_Ptr);
- IF Help_Toggle THEN
- Show_Help (0,Get_Help_Row(Cur_Menu_Ptr),3,fgHelp+bgHelp); { menu help }
-
- IF Opt_Changed THEN
- WITH Cur_Menu_Ptr^ DO
- WITH Opts[y-Row] DO
- IF Opt_Type = Delim THEN
- QWrite (y,Col+1,-1,Justify(Opt_Name,Center,Max_Opt_Len+4,'─'))
- ELSE
- QWrite (y,Col+1,-1,CONCAT(Select_Key,' ',Justify(Opt_Name,Left,Max_Opt_Len,' ')));
- END;