home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
modula2
/
library
/
filetool
/
tooldisp.mod
< prev
next >
Wrap
Text File
|
1987-12-29
|
26KB
|
733 lines
IMPLEMENTATION MODULE ToolDisplay;
(*
Title : TOOLDISP.MOD
LastEdit : 12/31/87
Author : Russell G. Osterlund, Jr.
System : LOGITECH MODULA-2/86, REPERTOIRE, BlackBeard
This product has been developed with the use of, and embodies portions of,
LOGITECH software development tools - compiler, linker, and M2MAKE.
*)
FROM SYSTEM IMPORT
ADR;
FROM Strings IMPORT
Assign, Concat, Length;
FROM StringIO IMPORT (* REPERTOIRE *)
inp, ErrorMessage, ReadStr, ErrorMsgToStr;
FROM StrConv IMPORT (* REPERTOIRE *)
CardinalToStr, LongIntegerToStr;
FROM StrEdit IMPORT (* REPERTOIRE *)
CAPstr;
FROM Drectory IMPORT (* REPERTOIRE *)
FileMode;
FROM SmartScreen IMPORT (* REPERTOIRE *)
GotoXY, WriteAt, ReverseColors, SetCursorHeight,
ClearPart, ClearScreen;
FROM GetKey IMPORT (* REPERTOIRE *)
KeySet, MakeKeySet, GetKey;
FROM MemoryOperations IMPORT
FillChar;
FROM ToolTypes IMPORT
DirectoryRecPtr, SubmenuType, WindowType, ActiveWindow;
CONST
HalfLine = ' ';
BlankLine = ' ';
VAR
YesNoKeySet: KeySet;
DisplayLine: ARRAY [0 .. 39] OF CHAR;
PROCEDURE ColNum (): CARDINAL;
BEGIN
IF ActiveWindow = LeftWindow THEN
RETURN 1
ELSE
RETURN 41
END;
END ColNum;
PROCEDURE RowNum (RelPos: CARDINAL): CARDINAL;
BEGIN
RETURN RelPos + 3;
END RowNum;
PROCEDURE DisplayFileLine (directory: DirectoryRecPtr;
filenum: CARDINAL;
WindowActive: BOOLEAN);
TYPE
DisplayRecPtr =
POINTER TO DisplayRec;
DisplayRec =
RECORD
Cursor: CHAR;
TagMark: CHAR;
Filename: ARRAY [0 .. 7] OF CHAR;
Sp1: CHAR;
Extension: ARRAY [0 .. 2] OF CHAR;
Sp2: CHAR;
Size: ARRAY [0 .. 6] OF CHAR;
Sp3: CHAR;
Month: ARRAY [0 .. 1] OF CHAR;
Dash1: CHAR;
Day: ARRAY [0 .. 1] OF CHAR;
Dash2: CHAR;
Year: ARRAY [0 .. 1] OF CHAR;
Sp4: CHAR;
Hour: ARRAY [0 .. 1] OF CHAR;
Colon: CHAR;
Minute: ARRAY [0 .. 1] OF CHAR;
ReadOnly: CHAR;
Hidden: CHAR;
System: CHAR;
END;
VAR
RelativePos: CARDINAL;
extension: ARRAY [0 .. 2] OF CHAR;
filename: ARRAY [0 .. 7] OF CHAR;
DisplayRecord: DisplayRecPtr;
PROCEDURE CommonFields;
BEGIN
WITH directory^ . FileInfoArray [filenum] DO
Concat (filename, ' ', filename);
Assign (filename, DisplayRecord^ . Filename);
Assign (extension, DisplayRecord^ . Extension);
CardinalToStr (FileMonth, 2, DisplayRecord^ . Month);
IF DisplayRecord^ . Month [0] = ' ' THEN
DisplayRecord^ . Month [0] := '0';
END;
CardinalToStr (FileDay, 2, DisplayRecord^ . Day);
IF DisplayRecord^ . Day [0] = ' ' THEN
DisplayRecord^ . Day [0] := '0';
END;
CardinalToStr (FileYear, 2, DisplayRecord^ . Year);
IF DisplayRecord^ . Year [0] = ' ' THEN
DisplayRecord^ . Year [0] := '0';
END;
CardinalToStr (FileHour, 2, DisplayRecord^ . Hour);
IF DisplayRecord^ . Hour [0] = ' ' THEN
DisplayRecord^ . Hour [0] := '0';
END;
CardinalToStr (FileMinute, 2, DisplayRecord^ . Minute);
IF DisplayRecord^ . Minute [0] = ' ' THEN
DisplayRecord^ . Minute [0] := '0';
END;
IF ReadOnlyFile IN FileAttribute THEN
DisplayRecord^ .ReadOnly := 'R'
ELSE
DisplayRecord^ .ReadOnly := ' '
END;
IF HiddenFile IN FileAttribute THEN
DisplayRecord^ .Hidden := 'H'
ELSE
DisplayRecord^ .Hidden := ' '
END;
IF SystemFile IN FileAttribute THEN
DisplayRecord^ .System := 'S'
ELSE
DisplayRecord^ .System := ' '
END;
DisplayRecord^ . Dash1 := '-';
DisplayRecord^ . Dash2 := '-';
DisplayRecord^ . Colon := ':';
END;
END CommonFields;
BEGIN
DisplayRecord := ADR (DisplayLine);
IF directory^ . CurrentFile # filenum THEN
DisplayRecord^ . Cursor := ' ';
ELSE
IF WindowActive THEN
DisplayRecord^ . Cursor := '';
ELSE
DisplayRecord^ . Cursor := ' ';
END;
END;
IF directory^ . FileInfoArray [filenum] . tagged THEN
DisplayRecord^ . TagMark := '√';
ELSE
DisplayRecord^ . TagMark := ' ';
END;
DisplayRecord^ . Sp1 := ' ';
DisplayRecord^ . Sp2 := ' ';
DisplayRecord^ . Sp3 := ' ';
DisplayRecord^ . Sp4 := ' ';
DisplayRecord^ . Dash1 := ' ';
DisplayRecord^ . Dash2 := ' ';
DisplayRecord^ . Colon := ' ';
WITH directory^ . FileInfoArray [filenum] DO
IF (FileName [0] = '.') OR (* special DOS *)
((FileName [0] = '.') AND
(FileName [1] = '.')) THEN (* files *)
Assign (FileName, filename);
extension := ' ';
IF (FileName [0] = '.') AND
(FileName [1] = '.') THEN
DisplayRecord^ . Size := ' < ';
ELSE
DisplayRecord^ . Size := ' ';
END;
CommonFields ();
ELSIF FileName [0] # CHR (255) THEN (* not empty *)
Assign (FileName, filename);
Assign (FileExtension, extension);
IF SubdirectoryFile IN FileAttribute THEN
DisplayRecord^ . Size := ' > ';
ELSE
LongIntegerToStr (FileSize, 7, DisplayRecord^ . Size);
END;
CommonFields ();
ELSE
FillChar (DisplayRecord^ . Filename, Length (DisplayRecord^ . Filename), ' ');
FillChar (DisplayRecord^ . Extension, Length (DisplayRecord^ . Extension), ' ');
FillChar (DisplayRecord^ . Size, Length (DisplayRecord^ . Size), ' ');
FillChar (DisplayRecord^ . Month, Length (DisplayRecord^ . Month), ' ');
FillChar (DisplayRecord^ . Day, Length (DisplayRecord^ . Day), ' ');
FillChar (DisplayRecord^ . Year, Length (DisplayRecord^ . Year), ' ');
FillChar (DisplayRecord^ . Hour, Length (DisplayRecord^ . Hour), ' ');
FillChar (DisplayRecord^ . Minute, Length (DisplayRecord^ . Minute), ' ');
DisplayRecord^ . ReadOnly := ' ';
DisplayRecord^ . Hidden := ' ';
DisplayRecord^ . System := ' ';
END;
END;
RelativePos := filenum - directory^ . FirstDisplayed + 1;
WriteAt (ColNum (),
RowNum (RelativePos),
DisplayLine);
END DisplayFileLine;
PROCEDURE DisplaySummaryLine (directory: DirectoryRecPtr);
TYPE
SummaryRecPtr =
POINTER TO SummaryRec;
SummaryRec =
RECORD
Sp1: CHAR;
CurrentNumber: ARRAY [0 .. 2] OF CHAR;
Sp2: ARRAY [0 .. 3] OF CHAR;
NumberOfFiles: ARRAY [0 .. 2] OF CHAR;
Sp3: CHAR;
SizeOfDirectory: ARRAY [0 .. 6] OF CHAR;
Sp4: ARRAY [0 .. 7] OF CHAR;
NumberOfTagged: ARRAY [0 .. 2] OF CHAR;
Sp5: CHAR;
SizeOfTagged: ARRAY [0 .. 6] OF CHAR;
Sp6: ARRAY [0 .. 1] OF CHAR;
END;
VAR
SummaryRecord: SummaryRecPtr;
BEGIN
SummaryRecord := ADR (DisplayLine);
WITH directory^ DO
SummaryRecord^ . Sp1 := ' ';
CardinalToStr (CurrentFile + 1, 3, SummaryRecord^ . CurrentNumber);
SummaryRecord^ . Sp2 := ' of ';
CardinalToStr (NumberOfEntries + 1, 3, SummaryRecord^ . NumberOfFiles);
SummaryRecord^ . Sp3 := '/';
LongIntegerToStr (DirectorySize, 7, SummaryRecord^ . SizeOfDirectory);
SummaryRecord^ . Sp4 := " √'d - ";
CardinalToStr (NumberTagged, 3, SummaryRecord^ . NumberOfTagged);
SummaryRecord^ . Sp5 := '/';
LongIntegerToStr (TaggedSize, 7, SummaryRecord^ . SizeOfTagged);
SummaryRecord^ . Sp6 := ' ';
END;
WriteAt (ColNum (), 24, DisplayLine);
END DisplaySummaryLine;
PROCEDURE DisplayInfo (directory: DirectoryRecPtr;
start: CARDINAL;
WindowActive: BOOLEAN);
VAR
i: CARDINAL;
ThePath: ARRAY [0 .. 65] OF CHAR;
BEGIN
(* First, build and then display the path *)
WriteAt (ColNum (), 3, HalfLine);
Concat (directory^ . DirectoryDrive, ':', ThePath);
Concat (ThePath, directory^ . DirectoryPath, ThePath);
IF ThePath [Length (ThePath) - 1] # '\' THEN
Concat (ThePath, '\', ThePath);
END;
CAPstr (ThePath);
WriteAt (ColNum () + 2, 3, ThePath);
(* Next, make certain that CurrentFile is not outside the boundaries
of the screen *)
IF directory^ . CurrentFile > directory^ . NumberOfEntries THEN
directory^ . CurrentFile := directory^ . NumberOfEntries;
END;
IF directory^ . CurrentFile > start + MaxDisplayLines THEN
directory^ . CurrentFile := start + MaxDisplayLines;
ELSIF directory^ . CurrentFile < start THEN
directory^ . CurrentFile := start;
ELSE
END;
(* Finally, display the window one file at a time *)
directory^ . FirstDisplayed := start;
FOR i := 0 TO MaxDisplayLines DO
DisplayFileLine (directory, start + i, WindowActive);
END;
DisplaySummaryLine (directory);
END DisplayInfo;
PROCEDURE DECMenuPos (max: CARDINAL;
VAR pos: CARDINAL);
BEGIN
IF pos = 0 THEN
pos := max;
ELSE
DEC (pos);
END;
END DECMenuPos;
PROCEDURE INCMenuPos (max: CARDINAL;
VAR pos: CARDINAL);
BEGIN
IF pos = max THEN
pos := 0;
ELSE
INC (pos);
END;
END INCMenuPos;
PROCEDURE DisplayMainMenu ();
VAR
i: CARDINAL;
BEGIN
WriteAt (1, MainMenu [0] . RowNum, BlankLine);
FOR i := 0 TO HIGH (MainMenu) DO
WITH MainMenu [i] DO
IF i = MainMenuPos THEN
ReverseColors ();
WriteAt (ColNum, RowNum, Command);
ReverseColors ();
WriteAt (2, 2, HelpText);
ELSE
WriteAt (ColNum, RowNum, Command);
END;
END;
END;
END DisplayMainMenu;
PROCEDURE DisplaySubMenu (menu: ARRAY OF SubmenuType;
pos: CARDINAL;
blank: BOOLEAN);
VAR
i: CARDINAL;
BEGIN
IF blank THEN
WriteAt (1, menu [1] . RowNum, BlankLine);
END;
FOR i := 0 TO HIGH (menu) DO
WITH menu [i] DO
IF i = pos THEN
ReverseColors ();
WriteAt (ColNum, RowNum, Command);
ReverseColors ();
ELSE
WriteAt (ColNum, RowNum, Command);
END;
END;
END;
END DisplaySubMenu;
PROCEDURE DisplayAdditionalMenu ();
BEGIN
ClearPart (AdditionalMenu [0] . ColNum - 5,
AdditionalMenu [0] . RowNum,
AdditionalMenu [9] . ColNum + Length (AdditionalMenu [9] . Command) + 5,
AdditionalMenu [9] . RowNum + 2);
WriteAt (AdditionalMenu [0] . ColNum - 3,
AdditionalMenu [0] . RowNum,
'│');
WriteAt (AdditionalMenu [0] . ColNum - 2,
AdditionalMenu [0] . RowNum,
AdditionalMenu [0] . KeyEquivalent);
WriteAt (AdditionalMenu [0] . ColNum + Length (AdditionalMenu [0] . Command),
AdditionalMenu [0] . RowNum,
'│');
WriteAt (AdditionalMenu [1] . ColNum - 3,
AdditionalMenu [1] . RowNum,
'│');
WriteAt (AdditionalMenu [1] . ColNum - 2,
AdditionalMenu [1] . RowNum,
AdditionalMenu [1] . KeyEquivalent);
WriteAt (AdditionalMenu [1] . ColNum + Length (AdditionalMenu [1] . Command),
AdditionalMenu [1] . RowNum,
'│');
WriteAt (AdditionalMenu [2] . ColNum - 3,
AdditionalMenu [2] . RowNum,
'│');
WriteAt (AdditionalMenu [2] . ColNum - 2,
AdditionalMenu [2] . RowNum,
AdditionalMenu [2] . KeyEquivalent);
WriteAt (AdditionalMenu [2] . ColNum + Length (AdditionalMenu [2] . Command),
AdditionalMenu [2] . RowNum,
'│');
WriteAt (AdditionalMenu [3] . ColNum - 3,
AdditionalMenu [3] . RowNum,
'│');
WriteAt (AdditionalMenu [3] . ColNum - 2,
AdditionalMenu [3] . RowNum,
AdditionalMenu [3] . KeyEquivalent);
WriteAt (AdditionalMenu [3] . ColNum + Length (AdditionalMenu [3] . Command),
AdditionalMenu [3] . RowNum,
'│');
WriteAt (AdditionalMenu [4] . ColNum - 3,
AdditionalMenu [4] . RowNum,
'│');
WriteAt (AdditionalMenu [4] . ColNum - 2,
AdditionalMenu [4] . RowNum,
AdditionalMenu [4] . KeyEquivalent);
WriteAt (AdditionalMenu [4] . ColNum + Length (AdditionalMenu [4] . Command),
AdditionalMenu [4] . RowNum,
'│');
WriteAt (AdditionalMenu [5] . ColNum - 3,
AdditionalMenu [5] . RowNum,
'│');
WriteAt (AdditionalMenu [5] . ColNum - 2,
AdditionalMenu [5] . RowNum,
AdditionalMenu [5] . KeyEquivalent);
WriteAt (AdditionalMenu [5] . ColNum + Length (AdditionalMenu [5] . Command),
AdditionalMenu [5] . RowNum,
'│');
WriteAt (AdditionalMenu [6] . ColNum - 3,
AdditionalMenu [6] . RowNum,
'│');
WriteAt (AdditionalMenu [6] . ColNum - 2,
AdditionalMenu [6] . RowNum,
AdditionalMenu [6] . KeyEquivalent);
WriteAt (AdditionalMenu [6] . ColNum + Length (AdditionalMenu [6] . Command),
AdditionalMenu [6] . RowNum,
'│');
WriteAt (AdditionalMenu [7] . ColNum - 3,
AdditionalMenu [7] . RowNum,
'│');
WriteAt (AdditionalMenu [7] . ColNum - 2,
AdditionalMenu [7] . RowNum,
AdditionalMenu [7] . KeyEquivalent);
WriteAt (AdditionalMenu [7] . ColNum + Length (AdditionalMenu [7] . Command),
AdditionalMenu [7] . RowNum,
'│');
WriteAt (AdditionalMenu [8] . ColNum - 3,
AdditionalMenu [8] . RowNum,
'│');
WriteAt (AdditionalMenu [8] . ColNum - 2,
AdditionalMenu [8] . RowNum,
AdditionalMenu [8] . KeyEquivalent);
WriteAt (AdditionalMenu [8] . ColNum + Length (AdditionalMenu [8] . Command),
AdditionalMenu [8] . RowNum,
'│');
WriteAt (AdditionalMenu [9] . ColNum - 3,
AdditionalMenu [9] . RowNum,
'│');
WriteAt (AdditionalMenu [9] . ColNum - 2,
AdditionalMenu [9] . RowNum,
AdditionalMenu [9] . KeyEquivalent);
WriteAt (AdditionalMenu [9] . ColNum + Length (AdditionalMenu [9] . Command),
AdditionalMenu [9] . RowNum,
'│');
WriteAt (AdditionalMenu [9] . ColNum - 3,
AdditionalMenu [9] . RowNum + 1,
'└───────────────────────┘');
END DisplayAdditionalMenu;
PROCEDURE YesAnswer (TheQuestion: ARRAY OF CHAR): BOOLEAN;
VAR
Yes,
ExtendedKey: BOOLEAN;
Key: CHAR;
BEGIN
WriteAt (1, 2, BlankLine);
WriteAt (1, 2, TheQuestion);
GetKey (YesNoKeySet, Key, ExtendedKey);
CASE Key OF
'Y', 'y':
Yes := TRUE
ELSE
Yes := FALSE;
END;
RETURN Yes;
END YesAnswer;
PROCEDURE GetMoreInfo (ThePrompt: ARRAY OF CHAR;
VAR TheOtherName: ARRAY OF CHAR);
VAR
info: ARRAY [0 .. 65] OF CHAR;
BEGIN
SetCursorHeight (2);
WriteAt (1, 2, BlankLine);
WriteAt (1, 2, ThePrompt);
GotoXY (Length (ThePrompt) + 2, 2);
ReadStr (inp, info);
Assign (info, TheOtherName);
SetCursorHeight (0);
END GetMoreInfo;
PROCEDURE DisplayError (TheError: ErrorMessage);
VAR
TheMsg: ARRAY [0 .. 79] OF CHAR;
BEGIN
WriteAt (1, 25, BlankLine);
ErrorMsgToStr (TheError, TheMsg);
ReverseColors ();
WriteAt (1, 25, TheMsg);
ReverseColors ();
END DisplayError;
PROCEDURE DisplayMessage (TheMessage: ARRAY OF CHAR);
BEGIN
WriteAt (1, 25, BlankLine);
WriteAt (1, 25, TheMessage);
END DisplayMessage;
PROCEDURE ClearMessage ();
BEGIN
WriteAt (1, 25, BlankLine);
END ClearMessage;
PROCEDURE NoErrorMsg (error: ErrorMessage): BOOLEAN;
BEGIN
IF error # NoError THEN
DisplayError (error);
RETURN FALSE;
ELSE
RETURN TRUE;
END;
END NoErrorMsg;
PROCEDURE DisplayHelpScreen ();
BEGIN
ClearScreen ();
WriteAt (1, 1, ' FILETOOL V1.02 ');
WriteAt (1, 3, ' Up/Down Arrow - Up/Down 1 file ');
WriteAt (1, 4, ' Home/End - Top/Bottom of window ');
WriteAt (1, 5, ' PgUp/PgDn - Up/Down 20 files ');
WriteAt (1, 6, ' Ctrl-Home - Beginning of list ');
WriteAt (1, 7, ' Ctrl-End - End of list ');
WriteAt (1, 8, ' Tab/Shift-Tab - Next/Previous command ');
WriteAt (1, 9, ' Left/Right Arrow - Left/Right window ');
WriteAt (1, 10, ' < - Up 1 directory level ');
WriteAt (1, 11, ' > - Down 1 directory level ');
WriteAt (1, 12, ' Space - Tag/Untag current file ');
WriteAt (1, 13, ' Esc - Cancel current operation ');
WriteAt (1, 14, ' Enter - Execute current operation ');
WriteAt (1, 15, ' Capitalized Letter - Execute appropriate command ');
WriteAt (1, 17, ' Configuration file keywords are: ');
WriteAt (1, 18, ' BCOLOR= background color FCOLOR= foreground color ');
WriteAt (1, 19, ' EDIT= edit utility LIST= list (browse) utility ');
WriteAt (1, 20, ' OPTION= eXecute Menu options ');
END DisplayHelpScreen;
BEGIN
MakeKeySet (' "y";"Y";"n";"N";27 ', YesNoKeySet);
MainMenuPos := 0;
MainMenu [0] . Command := 'Attributes';
MainMenu [0] . HelpText := "Change date/time stamp, read/hidden flag for a file or group of files ";
MainMenu [0] . KeyEquivalent := 'A';
MainMenu [0] . RowNum := 1;
MainMenu [0] . ColNum := 2;
MainMenu [1] . Command := 'Copy';
MainMenu [1] . HelpText := "Copy a file or a group of files to another location ";
MainMenu [1] . KeyEquivalent := 'C';
MainMenu [1] . RowNum := 1;
MainMenu [1] . ColNum := 13;
MainMenu [2] . Command := 'Delete';
MainMenu [2] . HelpText := "Delete a file or a group of files ";
MainMenu [2] . KeyEquivalent := 'D';
MainMenu [2] . RowNum := 1;
MainMenu [2] . ColNum := 18;
MainMenu [3] . Command := 'Edit';
MainMenu [3] . HelpText := "Edit a file ";
MainMenu [3] . KeyEquivalent := 'E';
MainMenu [3] . RowNum := 1;
MainMenu [3] . ColNum := 25;
MainMenu [4] . Command := 'Help';
MainMenu [4] . HelpText := "Summary of available commands ";
MainMenu [4] . KeyEquivalent := 'H';
MainMenu [4] . RowNum := 1;
MainMenu [4] . ColNum := 30;
MainMenu [5] . Command := 'List';
MainMenu [5] . HelpText := "List a file to the screen ";
MainMenu [5] . KeyEquivalent := 'L';
MainMenu [5] . RowNum := 1;
MainMenu [5] . ColNum := 35;
MainMenu [6] . Command := 'Move';
MainMenu [6] . HelpText := "Move a file or a group of files to another location ";
MainMenu [6] . KeyEquivalent := 'M';
MainMenu [6] . RowNum := 1;
MainMenu [6] . ColNum := 40;
MainMenu [7] . Command := 'Other';
MainMenu [7] . HelpText := "Create/Delete directories; Left/Right window; Tag/Untag all; Set configuration ";
MainMenu [7] . KeyEquivalent := 'O';
MainMenu [7] . RowNum := 1;
MainMenu [7] . ColNum := 45;
MainMenu [8] . Command := 'Quit';
MainMenu [8] . HelpText := "Quit this program and return to DOS ";
MainMenu [8] . KeyEquivalent := 'Q';
MainMenu [8] . RowNum := 1;
MainMenu [8] . ColNum := 51;
MainMenu [9] . Command := 'Rename';
MainMenu [9] . HelpText := "Rename a file ";
MainMenu [9] . KeyEquivalent := 'R';
MainMenu [9] . RowNum := 1;
MainMenu [9] . ColNum := 56;
MainMenu [10] . Command := 'Sort';
MainMenu [10] . HelpText := "Sort the directory list by Filename, Extension, Date, or Size ";
MainMenu [10] . KeyEquivalent := 'S';
MainMenu [10] . RowNum := 1;
MainMenu [10] . ColNum := 63;
MainMenu [11] . Command := 'eXecute';
MainMenu [11] . HelpText := "Temporarily exit this program and execute another program ";
MainMenu [11] . KeyEquivalent := 'X';
MainMenu [11] . RowNum := 1;
MainMenu [11] . ColNum := 68;
CopyMenu [0] . Command := 'Current';
CopyMenu [0] . KeyEquivalent := 'C';
CopyMenu [0] . RowNum := 2;
CopyMenu [0] . ColNum := 2;
CopyMenu [1] . Command := 'Other';
CopyMenu [1] . KeyEquivalent := 'O';
CopyMenu [1] . RowNum := 2;
CopyMenu [1] . ColNum := 11;
CopyMenu [2] . Command := 'Tagged';
CopyMenu [2] . KeyEquivalent := 'T';
CopyMenu [2] . RowNum := 2;
CopyMenu [2] . ColNum := 18;
RenameMenu [0] . Command := 'Current';
RenameMenu [0] . KeyEquivalent := 'C';
RenameMenu [0] . RowNum := 2;
RenameMenu [0] . ColNum := 2;
RenameMenu [1] . Command := 'Other';
RenameMenu [1] . KeyEquivalent := 'O';
RenameMenu [1] . RowNum := 2;
RenameMenu [1] . ColNum := 11;
ExecuteMenu [0] . Command := 'Current';
ExecuteMenu [0] . KeyEquivalent := 'C';
ExecuteMenu [0] . RowNum := 2;
ExecuteMenu [0] . ColNum := 2;
ExecuteMenu [1] . Command := 'Menu';
ExecuteMenu [1] . KeyEquivalent := 'M';
ExecuteMenu [1] . RowNum := 2;
ExecuteMenu [1] . ColNum := 11;
ExecuteMenu [2] . Command := 'Other';
ExecuteMenu [2] . KeyEquivalent := 'O';
ExecuteMenu [2] . RowNum := 2;
ExecuteMenu [2] . ColNum := 17;
ExecuteMenu [3] . Command := 'Shell';
ExecuteMenu [3] . KeyEquivalent := 'S';
ExecuteMenu [3] . RowNum := 2;
ExecuteMenu [3] . ColNum := 24;
AdditionalMenu [0] . Command := ' ';
AdditionalMenu [0] . KeyEquivalent := 'A';
AdditionalMenu [0] . RowNum := 3;
AdditionalMenu [0] . ColNum := 10;
AdditionalMenu [1] . Command := ' ';
AdditionalMenu [1] . KeyEquivalent := 'B';
AdditionalMenu [1] . RowNum := 4;
AdditionalMenu [1] . ColNum := 10;
AdditionalMenu [2] . Command := ' ';
AdditionalMenu [2] . KeyEquivalent := 'C';
AdditionalMenu [2] . RowNum := 5;
AdditionalMenu [2] . ColNum := 10;
AdditionalMenu [3] . Command := ' ';
AdditionalMenu [3] . KeyEquivalent := 'D';
AdditionalMenu [3] . RowNum := 6;
AdditionalMenu [3] . ColNum := 10;
AdditionalMenu [4] . Command := ' ';
AdditionalMenu [4] . KeyEquivalent := 'E';
AdditionalMenu [4] . RowNum := 7;
AdditionalMenu [4] . ColNum := 10;
AdditionalMenu [5] . Command := ' ';
AdditionalMenu [5] . KeyEquivalent := 'F';
AdditionalMenu [5] . RowNum := 8;
AdditionalMenu [5] . ColNum := 10;
AdditionalMenu [6] . Command := ' ';
AdditionalMenu [6] . KeyEquivalent := 'G';
AdditionalMenu [6] . RowNum := 9;
AdditionalMenu [6] . ColNum := 10;
AdditionalMenu [7] . Command := ' ';
AdditionalMenu [7] . KeyEquivalent := 'H';
AdditionalMenu [7] . RowNum := 10;
AdditionalMenu [7] . ColNum := 10;
AdditionalMenu [8] . Command := ' ';
AdditionalMenu [8] . KeyEquivalent := 'I';
AdditionalMenu [8] . RowNum := 11;
AdditionalMenu [8] . ColNum := 10;
AdditionalMenu [9] . Command := ' ';
AdditionalMenu [9] . KeyEquivalent := 'J';
AdditionalMenu [9] . RowNum := 12;
AdditionalMenu [9] . ColNum := 10;
SortMenu [0] . Command := 'Date';
SortMenu [0] . KeyEquivalent := 'D';
SortMenu [0] . RowNum := 2;
SortMenu [0] . ColNum := 2;
SortMenu [1] . Command := 'Extension';
SortMenu [1] . KeyEquivalent := 'E';
SortMenu [1] . RowNum := 2;
SortMenu [1] . ColNum := 8;
SortMenu [2] . Command := 'Name';
SortMenu [2] . KeyEquivalent := 'N';
SortMenu [2] . RowNum := 2;
SortMenu [2] . ColNum := 19;
SortMenu [3] . Command := 'Size';
SortMenu [3] . KeyEquivalent := 'S';
SortMenu [3] . RowNum := 2;
SortMenu [3] . ColNum := 25;
AttributesMenu [0] . Command := 'Date/Time';
AttributesMenu [0] . KeyEquivalent := 'D';
AttributesMenu [0] . RowNum := 2;
AttributesMenu [0] . ColNum := 2;
AttributesMenu [1] . Command := 'Hide';
AttributesMenu [1] . KeyEquivalent := 'H';
AttributesMenu [1] . RowNum := 2;
AttributesMenu [1] . ColNum := 13;
AttributesMenu [2] . Command := 'Protect';
AttributesMenu [2] . KeyEquivalent := 'P';
AttributesMenu [2] . RowNum := 2;
AttributesMenu [2] . ColNum := 19;
AttributesMenu [3] . Command := 'Show';
AttributesMenu [3] . KeyEquivalent := 'S';
AttributesMenu [3] . RowNum := 2;
AttributesMenu [3] . ColNum := 28;
AttributesMenu [4] . Command := 'Unprotect';
AttributesMenu [4] . KeyEquivalent := 'U';
AttributesMenu [4] . RowNum := 2;
AttributesMenu [4] . ColNum := 34;
OtherMenu [0] . Command := 'Create dir';
OtherMenu [0] . KeyEquivalent := 'C';
OtherMenu [0] . RowNum := 2;
OtherMenu [0] . ColNum := 2;
OtherMenu [1] . Command := 'Delete dir';
OtherMenu [1] . KeyEquivalent := 'D';
OtherMenu [1] . RowNum := 2;
OtherMenu [1] . ColNum := 14;
OtherMenu [2] . Command := 'Left win';
OtherMenu [2] . KeyEquivalent := 'L';
OtherMenu [2] . RowNum := 2;
OtherMenu [2] . ColNum := 26;
OtherMenu [3] . Command := 'Right win';
OtherMenu [3] . KeyEquivalent := 'R';
OtherMenu [3] . RowNum := 2;
OtherMenu [3] . ColNum := 36;
OtherMenu [4] . Command := 'Set config';
OtherMenu [4] . KeyEquivalent := 'S';
OtherMenu [4] . RowNum := 2;
OtherMenu [4] . ColNum := 47;
OtherMenu [5] . Command := 'Tag all';
OtherMenu [5] . KeyEquivalent := 'T';
OtherMenu [5] . RowNum := 2;
OtherMenu [5] . ColNum := 59;
OtherMenu [6] . Command := 'Untag all';
OtherMenu [6] . KeyEquivalent := 'U';
OtherMenu [6] . RowNum := 2;
OtherMenu [6] . ColNum := 69;
END ToolDisplay.