home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / modula2 / library / filetool / filetool.mod < prev    next >
Text File  |  1987-12-29  |  8KB  |  205 lines

  1. MODULE FileTool;
  2.  
  3. (*
  4. Title    : FILETOOL.MOD
  5. LastEdit : 12/31/87
  6. Author   : Russell G. Osterlund, Jr.
  7. System   : LOGITECH MODULA-2/86, REPERTOIRE, BlackBeard
  8.  
  9. This product has been developed with the use of, and embodies portions of,
  10. LOGITECH software development tools - compiler, linker, LOD2EXE, and MAKE.
  11.  
  12. *)
  13.  
  14. FROM SYSTEM IMPORT
  15.   ADR;
  16. FROM EnvironUtils IMPORT (* REPERTOIRE *)
  17.   ParsedParam;
  18. FROM WindowPrims IMPORT (* REPERTOIRE *)
  19.   PushColors, PopColors;
  20. FROM SmartScreen IMPORT (* REPERTOIRE *)
  21.   ClearScreen, SetCursorHeight, TextColor,
  22.   ForeGround, BackGround;
  23. FROM GetKey IMPORT (* REPERTOIRE *)
  24.   CRchar, TABchar, SPCchar, BTBnum,
  25.   LARWnum, RARWnum, UARWnum, DARWnum,
  26.   HOMnum, ENDnum, PGUPnum, PGDNnum,
  27.   KeySet,
  28.   MakeKeySet, ConcatKeySets, GetKey;
  29. FROM Strings IMPORT
  30.   Assign;
  31. FROM StringIO IMPORT (* REPERTOIRE *)
  32.   ErrorMessage;
  33. FROM Drectory IMPORT (* REPERTOIRE *)
  34.   GetCurrentDir, GetDefaultDrive, SetDefaultDrive, ChDir;
  35. FROM ToolDisplay IMPORT
  36.   DisplayInfo,
  37.   MainMenu, MainMenuPos, DisplayMainMenu,
  38.   DECMenuPos, INCMenuPos, ClearMessage;
  39. FROM ToolUtilities IMPORT
  40.   InitDirectoryInfo, ReadInfo;
  41. FROM ToolCommands IMPORT
  42.   UpOneFile, DownOneFile, UpOnePage, DownOnePage,
  43.   TopOfPage, BottomOfPage, BeginningOfList, EndOfList,
  44.   MoveUpOneLevel, MoveDownOneLevel, ActivateNewWindow,
  45.   TagCurrentFile;
  46. FROM ToolMenuCommands IMPORT
  47.   HelpCommand, CopyCommand, MoveCommand, DeleteCommand,
  48.   SortCommand, AttributesCommand, OtherCommand,
  49.   EditListCommand, RenameCommand, ExecuteCommand;
  50. FROM ToolTypes IMPORT
  51.   WindowType, ActiveWindow, BothWindowsActive, DirectoryInfo;
  52.  
  53. CONST
  54.   VersionLevel = '1.03';
  55.  
  56. VAR
  57.   Done,
  58.   ExtendedKey: BOOLEAN;
  59.   Key: CHAR;
  60.   MainMenuKeySet: KeySet;
  61.   error: ErrorMessage;
  62.   OriginalDrive: CHAR;
  63.   OriginalPath: ARRAY [0 .. 65] OF CHAR;
  64.  
  65. PROCEDURE Initialize;
  66. VAR
  67.   MainMenuKeySet1,
  68.   MainMenuKeySet2,
  69.   MainMenuKeySet3: KeySet;
  70. BEGIN
  71.   Done := FALSE;
  72.   ClearScreen ();
  73.   MakeKeySet (' "q";"Q";"h";"H";"c";"C";"m";"M";"d";"D";"e";"E";"l";"L";"r";"R";"x";"X";"s";"S";"a";"A";"o";"O" ',
  74.           MainMenuKeySet1);
  75.   MakeKeySet (' "<";">";E117;E119 ',
  76.           MainMenuKeySet2);
  77.   MakeKeySet (' 13;9;" ";E15;E75;E77;E72;E80;E71;E79;E73;E81 ',
  78.           MainMenuKeySet3);
  79.   ConcatKeySets (MainMenuKeySet1, MainMenuKeySet2, MainMenuKeySet1);
  80.   ConcatKeySets (MainMenuKeySet1, MainMenuKeySet3, MainMenuKeySet);
  81.   InitDirectoryInfo (ADR (DirectoryInfo [0]));
  82.   ActiveWindow := LeftWindow;
  83.   BothWindowsActive := FALSE;
  84.   OriginalDrive := GetDefaultDrive ();
  85.   error := GetCurrentDir (OriginalDrive, OriginalPath);
  86.   Assign (OriginalPath, DirectoryInfo [ORD (LeftWindow)] . DirectoryPath);
  87.   IF ParsedParam (1, DirectoryInfo [ORD (LeftWindow)] . DirectoryMask) THEN
  88.   ELSE
  89.     DirectoryInfo [ORD (LeftWindow)] . DirectoryMask := '*.*';
  90.   END;
  91.   ReadInfo (ADR (DirectoryInfo [ORD (LeftWindow)]));
  92.   DisplayMainMenu ();
  93.   DisplayInfo (ADR (DirectoryInfo [ORD (LeftWindow)]), 0, TRUE);
  94. END Initialize;
  95.  
  96. BEGIN
  97.   SetCursorHeight (0);
  98.   PushColors ();
  99.   Initialize ();
  100.   REPEAT
  101.     GetKey (MainMenuKeySet, Key, ExtendedKey);
  102.     ClearMessage ();
  103.     IF ExtendedKey THEN
  104.       CASE ORD (Key) OF
  105.     BTBnum:                                       (* shift-tab *)
  106.       DECMenuPos (HIGH (MainMenu), MainMenuPos);
  107.       DisplayMainMenu ();
  108.       | LARWnum:                                      (* left arrow *)
  109.       ActivateNewWindow (LeftWindow,
  110.                  ADR (DirectoryInfo [0]),
  111.                  ADR (DirectoryInfo [1]));
  112.       | RARWnum:                                      (* right arrow *)
  113.       ActivateNewWindow (RightWindow,
  114.                  ADR (DirectoryInfo [0]),
  115.                  ADR (DirectoryInfo [1]));
  116.       | UARWnum:                                      (* up arrow *)
  117.       UpOneFile (ADR (DirectoryInfo [ORD (ActiveWindow)]));
  118.       | DARWnum:                                      (* down arrow *)
  119.       DownOneFile (ADR (DirectoryInfo [ORD (ActiveWindow)]));
  120.       | HOMnum:                                       (* home *)
  121.       TopOfPage (ADR (DirectoryInfo [ORD (ActiveWindow)]));
  122.       | ENDnum:                                       (* end *)
  123.       BottomOfPage (ADR (DirectoryInfo [ORD (ActiveWindow)]));
  124.       | PGUPnum:                                      (* page up *)
  125.       UpOnePage (ADR (DirectoryInfo [ORD (ActiveWindow)]));
  126.       | PGDNnum:                                      (* page down *)
  127.       DownOnePage (ADR (DirectoryInfo [ORD (ActiveWindow)]));
  128.       | 117:                                          (* ctrl-end *)
  129.       EndOfList (ADR (DirectoryInfo [ORD (ActiveWindow)]));
  130.       | 119:                                          (* ctrl-home *)
  131.       BeginningOfList (ADR (DirectoryInfo [ORD (ActiveWindow)]));
  132.       ELSE
  133.       END;
  134.     ELSE
  135.       IF Key = CRchar THEN
  136.     Key := MainMenu [MainMenuPos] . KeyEquivalent;
  137.       END;
  138.       CASE Key OF
  139.     "q", "Q":                                     (* quit *)
  140.       Done := TRUE;
  141.       | "h", "H":                                     (* help *)
  142.       MainMenuPos := 4;
  143.       HelpCommand (ADR (DirectoryInfo [0]), ADR (DirectoryInfo [1]));
  144.       DisplayMainMenu ();
  145.       | "c", "C":                                     (* copy *)
  146.       MainMenuPos := 1;
  147.       CopyCommand (ADR (DirectoryInfo [ORD (ActiveWindow)]));
  148.       DisplayMainMenu ();
  149.       | "m", "M":                                     (* move *)
  150.       MainMenuPos := 6;
  151.       MoveCommand (ADR (DirectoryInfo [ORD (ActiveWindow)]));
  152.       DisplayMainMenu ();
  153.       | "d", "D":                                     (* delete *)
  154.       MainMenuPos := 2;
  155.       DeleteCommand (ADR (DirectoryInfo [ORD (ActiveWindow)]));
  156.       DisplayMainMenu ();
  157.       | "e", "E":                                     (* edit *)
  158.       MainMenuPos := 3;
  159.       EditListCommand (ADR (DirectoryInfo [0]), ADR (DirectoryInfo [1]), TRUE);
  160.       DisplayMainMenu ();
  161.       | "l", "L":                                     (* list *)
  162.       MainMenuPos := 5;
  163.       EditListCommand (ADR (DirectoryInfo [0]), ADR (DirectoryInfo [1]), FALSE);
  164.       DisplayMainMenu ();
  165.       | "r", "R":                                     (* rename *)
  166.       MainMenuPos := 9;
  167.       RenameCommand (ADR (DirectoryInfo [ORD (ActiveWindow)]));
  168.       DisplayMainMenu ();
  169.       | "x", "X":                                     (* execute *)
  170.       MainMenuPos := 11;
  171.       ExecuteCommand (ADR (DirectoryInfo [0]), ADR (DirectoryInfo [1]));
  172.       DisplayMainMenu ();
  173.       | "s", "S":                                     (* sort *)
  174.       MainMenuPos := 10;
  175.       SortCommand ();
  176.       DisplayMainMenu ();
  177.       | "a", "A":                                     (* attributes *)
  178.       MainMenuPos := 0;
  179.       AttributesCommand (ADR (DirectoryInfo [ORD (ActiveWindow)]));
  180.       DisplayMainMenu ();
  181.       | "o", "O":                                     (* other *)
  182.       MainMenuPos := 7;
  183.       OtherCommand (ADR (DirectoryInfo [0]), ADR (DirectoryInfo [1]));
  184.       DisplayMainMenu ();
  185.       | "<":                                          (* up one level *)
  186.       MoveUpOneLevel (ADR (DirectoryInfo [ORD (ActiveWindow)]));
  187.       | ">":                                          (* down one level *)
  188.       MoveDownOneLevel (ADR (DirectoryInfo [ORD (ActiveWindow)]));
  189.       | TABchar:                                      (* tab *)
  190.     INCMenuPos (HIGH (MainMenu), MainMenuPos);
  191.     DisplayMainMenu ();
  192.       | SPCchar:                                      (* space *)
  193.     TagCurrentFile (ADR (DirectoryInfo [ORD (ActiveWindow)]));
  194.       ELSE
  195.       END;
  196.     END;
  197.   UNTIL Done;
  198.   SetDefaultDrive (OriginalDrive);
  199.   error := ChDir (OriginalPath);
  200.   PopColors ();
  201.   TextColor (ForeGround, BackGround);
  202.   ClearScreen ();
  203.   SetCursorHeight (2);
  204. END FileTool.
  205.