Category : Modula II Source Code
Archive   : FILETOO2.ZIP
Filename : TOOLDISP.MOD

 
Output of file : TOOLDISP.MOD contained in archive : FILETOO2.ZIP
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.


  3 Responses to “Category : Modula II Source Code
Archive   : FILETOO2.ZIP
Filename : TOOLDISP.MOD

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/