home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / MFM_119C.ZIP / MFM.PAS < prev    next >
Pascal/Delphi Source File  |  1993-06-04  |  6KB  |  194 lines

  1. Program Maximus_File_Manager;
  2.  
  3. Uses
  4.   AdoptIns, Compress, CopyMove, Crt, Debit, Display, Dos, Edit, General, Help,
  5.   MaxAreas, Memory, MfmCopy, MfmDefs, MfmStr, PushPop, Quit, RenFind, SaveKill,
  6.   Screen, Setup, Sort, ViewFile;
  7. {========================================================================}
  8. Var
  9.   Mmc : Char;
  10. Begin
  11.   Altered := False; BeginSort := NIL; EndSort := NIL; TabOk := True;
  12.   Base153 := Base153A + Base153B + Base153C; OldArea := $FFFF;
  13.   Fsplit(Fexpand(ParamStr(0)),MfmExeDir,N,E);
  14.   ParseCommandLine; BuildSkipList; ParseConfigFile;
  15.   NumberOfEntries := 0; BuildList;
  16.   StringToFind := '';
  17.   If NumberOfEntries = 0 Then
  18.   Begin
  19.     AnsiGotoXY(25,1); AnsiClearToEOL;
  20.     Write('This area contains no files!');
  21.     Repeat
  22.       Result := SelectArea(AreaPath,FileAreaPath,FilesBbsPath,OldArea);
  23.       If Result In [252..255] Then
  24.       Begin
  25.         If Result = 255 Then
  26.         Begin
  27.           WriteLn('"'+AreaPath+'" not found.');
  28.           Halt(Result);
  29.         End;
  30.         If Result = 254 Then
  31.         Begin
  32.           WriteLn('Could not open "'+AreaPath+'".');
  33.           Halt(Result);
  34.         End;
  35.         QuitMfm;
  36.       End;
  37.       NumberOfEntries := 0; BuildList;
  38.       If NumberOfEntries = 0 Then
  39.       Begin
  40.         AnsiGotoXY(25,1); AnsiClearToEOL;
  41.         Write('This area contains no files!');
  42.       End;
  43.     Until NumberOfEntries > 0;
  44.   End;
  45.   If NumberOfEntries > 0 Then
  46.   Begin
  47.     Row := 1; CurrentEntry := FirstEntry; TopEntry := FirstEntry; DisplayScreen;
  48.     Repeat
  49.       Gcx := UpCase(FileAreaPath[1]);
  50.       AnsiGotoXY(24,1);
  51.       NewTextColor(Black); NewTextBackground(Cyan);
  52.       FreeSpace := DiskFree(Ord(Gcx)-64) Div 1024;
  53.       AnsiClearToEol;
  54.       Write(' Number of files = '+MyStr(NumberOfFiles,3)
  55.             +'   Size of files = '+Bytes(SizeOfFiles Div 1024)
  56.             +'   Free space = '+Bytes(FreeSpace)
  57.             +'   ? = Help');
  58.       NewTextColor(White); NewTextBackground(Black);
  59.       If Not (Mmc In [':',';','[',']','{','}']) Then
  60.       Begin
  61.         AnsiGotoXY(25,1);
  62.         AnsiClearToEol;
  63.         Write(FileAreaPath);
  64.       End;
  65.       AnsiGotoXY(24,80);
  66.       Gbx := GetInput;
  67.       Mmc := Upcase(Chr(Gbx));
  68.       If Gbx = 0 Then
  69.       Begin
  70.         Gbx := GetInput;
  71.         Case Gbx Of
  72.           31 : Begin         { ALT-S }
  73.                  ShellToDos;
  74.                  Mmc := ^@;
  75.                End;
  76.           33 : Begin         { ALT-F }
  77.                  MfmViewFile(CompressedFileViewer,CurrentEntry^.FileName);
  78.                  Mmc := ^@;
  79.                End;
  80.           38 : Begin         { ALT-L }
  81.                  MfmViewFile(DefaultViewer,CurrentEntry^.FileName);
  82.                  Mmc := ^@;
  83.                End;
  84.           44 : Begin         { ALT-Z }
  85.                  MfmViewFile(PictureFileViewer,CurrentEntry^.FileName);
  86.                  Mmc := ^@;
  87.                End;
  88.           47 : Begin         { ALT-V }
  89.                  CallFileViewer;
  90.                  Mmc := ^@;
  91.                End;
  92.           72 : Mmc := '8';
  93.           80 : Mmc := '2';
  94.           73 : Mmc := '9';
  95.           81 : Mmc := '3';
  96.           71 : Mmc := '7';
  97.           79 : Mmc := '1';
  98.         End;
  99.       End;
  100.       Case Mmc Of
  101.         ^A  : AdoptAllOrphans;
  102.         ^B  : FindString('B');
  103.         ^D  : FindString('D');
  104.         ^F  : FindString('F');
  105.         ^P  : RemotePage;
  106.         ^R  : RemoveUpLdCredit;
  107.         ^Q  : Begin
  108.                 If Altered Then SaveList;
  109.                 Halt(0);
  110.               End;
  111.         ^X  : Begin
  112.                 If CurrentEntry^.PrevEntry <> NIL Then
  113.                   Begin
  114.                     CurrentEntry^.Description := CurrentEntry^.PrevEntry^.Description;
  115.                     NextPrintEntry := CurrentEntry;
  116.                     DisplayRecord(Row);
  117.                     DisplayCurrentLocation;
  118.                   End;
  119.               End;
  120.         ' ' : Begin
  121.                 CurrentEntry^.Tagged := (Not CurrentEntry^.Tagged);
  122.                 LineDown;
  123.                 If CurrentEntry^.NextEntry = NIL Then DisplayCurrentLocation;
  124.               End;
  125.         '8' : LineUp;
  126.         '2' : LineDown;
  127.         '9' : PageUp;
  128.         '3' : PageDown;
  129.         '7' : TopOfList;
  130.         '1' : BottomOfList;
  131.         '#' : MassMove;
  132.         '$' : MassCopy;
  133.         'A' : AdoptAbandon(1);
  134.         'C' : CopyFile;
  135.         'D' : ChangeFileDate;
  136.         'E' : EditDescription;
  137.         'F' : Begin
  138.                 BeginSort := CurrentEntry;
  139.                 DisplayScreen;
  140.               End;
  141.         'I' : InsertBlank('B');
  142.         'J' : InsertBlank('A');
  143.         'K' : PushRecord(KillEntry);
  144.         'L' : Begin
  145.                 EndSort := CurrentEntry;
  146.                 DisplayScreen;
  147.               End;
  148.         'M' : MoveFile;
  149.         'N' : Begin
  150.                 If Altered Then
  151.                 Begin
  152.                   SaveList;
  153.                   Altered := False;
  154.                 End;
  155.                 BeginSort := NIL; EndSort := NIL;
  156.                 Repeat
  157.                   Result := SelectArea(AreaPath,FileAreaPath,FilesBbsPath,OldArea);
  158.                   If Result = 253 Then QuitMfm;
  159.                   NumberOfEntries := 0; BuildList;
  160.                   If NumberOfEntries = 0 Then
  161.                   Begin
  162.                     AnsiGotoXY(25,1); AnsiClearToEOL;
  163.                     Write('This area contains no files!');
  164.                   End;
  165.                 Until NumberOfEntries > 0;
  166.                 Row := 1;
  167.                 CurrentEntry := FirstEntry;
  168.                 TopEntry := FirstEntry;
  169.                 DisplayScreen;
  170.               End;
  171.         'Q' : QuitMfm;
  172.         'R' : RenameFile;
  173.         'S' : GenSort;
  174.         'U' : PopRecord(KillEntry,'B');
  175.         'W' : SaveList;
  176.         'Z' : DirOfArchive(FileAreaPath+CurrentEntry^.FileName);
  177.         '<' : PushRecord(StackEntry);
  178.         '>' : PopRecord(StackEntry,'A');
  179.         ',' : PushRecord(StackEntry);
  180.         '.' : PopRecord(StackEntry,'B');
  181.         '[' : StackPrev(StackEntry);
  182.         ']' : StackNext(StackEntry);
  183.         ';' : ShowStack(StackEntry);
  184.         '{' : StackPrev(KillEntry);
  185.         '}' : StackNext(KillEntry);
  186.         ':' : ShowStack(KillEntry);
  187.         '!' : ReDrawScreen;
  188.         '?' : ListHelp;
  189.       End;
  190.     Until Mmc = #255;
  191.   End;
  192. End.
  193. {========================================================================}
  194.