| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- IMPLEMENTATION MODULE DirManager;
- (*
- * REPERTOIRE
- * Release 1.6
- * By Charles Bradford and Cole Brecheen
- * (c) Copyright 1985-1992 PMI
- * Green Bay, Wisconsin
- * All rights reserved
- * (414) 468-6040
- *
- * $Header: D:/logfiles/mods/dirmanag.mov 1.5 10 Mar 1991 15:26:24 coleb $
- *
- *)
- IMPORT ControlUtils;
- IMPORT Drectory;
- IMPORT ErrStrgs;
- IMPORT InputManager;
- IMPORT FramePainter;
- IMPORT M2Strings;
- IMPORT PosUtils;
- IMPORT ScrnTypes;
- IMPORT ScrnUtl1;
- IMPORT StrConv;
- IMPORT StrEdit;
- IMPORT StringIO;
- VAR
- Initialized : BOOLEAN;
- PROCEDURE Init();
- BEGIN
- IF Initialized THEN
- RETURN;
- ELSE
- Initialized := TRUE;
- END;
- ControlUtils.Init();
- Drectory.Init();
- ErrStrgs.Init();
- InputManager.Init();
- FramePainter.Init();
- M2Strings.Init();
- PosUtils.Init();
- ScrnTypes.Init();
- ScrnUtl1.Init();
- StrConv.Init();
- StrEdit.Init();
- StringIO.Init();
- END Init;
- PROCEDURE MakeFileDataStr( FileInfo: Drectory.FileInfoRec; Columns:
- CARDINAL; VAR TheStr: ARRAY OF CHAR );
- VAR
- dumstr: ARRAY [0..79] OF CHAR;
- BEGIN
- StrEdit.AssignStr( FileInfo.name, TheStr );
- M2Strings.Concat(' ',TheStr,TheStr);
- IF Columns > 1 THEN
- WHILE M2Strings.Length(TheStr) < 12 DO
- StrEdit.Append( TheStr, ' ' );
- END;
- IF Drectory.SubdirectoryFile IN FileInfo.attribute THEN
- StrEdit.Append( TheStr, ' <DIR>' );
- ELSE
- StrConv.LongIntegerToStr( FileInfo.size, 8, dumstr );
- StrEdit.Append( TheStr, dumstr );
- END;
- END;
- IF Columns > 2 THEN
- StrConv.DateToStr( FileInfo.month, FileInfo.day, FileInfo.year,
- dumstr );
- StrEdit.Append( TheStr, ' ' );
- StrEdit.Append( TheStr, dumstr );
- END;
- IF Columns > 3 THEN
- StrConv.TimeToStr( FileInfo.hour, FileInfo.minute, FileInfo.second,
- FileInfo.second, dumstr );
- M2Strings.Delete( dumstr, M2Strings.Length(dumstr) - 7, 6 );
- StrEdit.Append( TheStr, ' ' );
- StrEdit.Append( TheStr, dumstr );
- END;
- END MakeFileDataStr;
- PROCEDURE DirToFrame( FileSpec: ARRAY OF CHAR; TheFrame:
- ScrnTypes.DisplayFrame; ColumnsPerFile: CARDINAL ): CARDINAL;
- VAR
- lngth1, VertSep, HorizSep, NextCol, NextRow: CARDINAL;
- DirHandle, SavedMessage: CARDINAL;
- InfoRec: Drectory.FileInfoRec;
- tmpstr: ARRAY [0..79] OF CHAR;
- LastCh: CHAR;
- PROCEDURE AddOne( VAR TheStr: ARRAY OF CHAR; VAR col, row:
- CARDINAL );
- VAR
- width: CARDINAL;
- BEGIN
- ControlUtils.AddMenuItem( TheFrame, col, row, TheStr,
- M2Strings.Length(TheStr), 0, TheFrame^.normlnext );
- IF ColumnsPerFile > 1 THEN
- width := M2Strings.Length(TheStr) + HorizSep;
- ELSE
- width := 12 + HorizSep;
- END;
- INC( col, width );
- IF (col + width) > (TheFrame^.endcol
- + 1) THEN
- col := HorizSep;
- INC( row, VertSep );
- END;
- END AddOne;
- BEGIN
- (*DirToFrame*)
- VertSep := 1;
- HorizSep := 4;
- NextCol := HorizSep;
- NextRow := VertSep + TheFrame^.headline;
- StrEdit.DeleteChar( ' ', FileSpec );
- lngth1 := M2Strings.Length( FileSpec );
- IF lngth1 > 0 THEN
- LastCh := FileSpec[ lngth1 - 1 ];
- ELSE
- LastCh := ':';
- END;
- CASE LastCh OF
- ':', '\', '/': StrEdit.Append( FileSpec, '*.*' );
- ELSE
- (*do nothing*)
- END;
- DirHandle := 1;
- SavedMessage := Drectory.FindFirstFile( FileSpec, DirHandle, InfoRec );
- IF SavedMessage # StringIO.NoError THEN
- IF SavedMessage = StringIO.NoMoreFiles THEN
- SavedMessage := StringIO.FileNotFound;
- END;
- ErrStrgs.NumToStr( SavedMessage, tmpstr );
- M2Strings.Insert( 'Error: ', tmpstr, 0 );
- AddOne( tmpstr, NextCol, NextRow );
- RETURN SavedMessage;
- END;
- WHILE SavedMessage = StringIO.NoError DO
- MakeFileDataStr( InfoRec, ColumnsPerFile, tmpstr );
- AddOne( tmpstr, NextCol, NextRow );
- SavedMessage := Drectory.FindNextFile( DirHandle, InfoRec );
- END;
- RETURN StringIO.NoError;
- END DirToFrame;
- PROCEDURE ControlDirectory( FileSpec: ARRAY OF CHAR;
- TheFrame: ScrnTypes.DisplayFrame; ColumnsPerFile: CARDINAL;
- VAR SelectedFile: ARRAY OF CHAR; VAR NextFrame:
- ScrnTypes.AFrameName );
- VAR
- SavedMessage: CARDINAL;
- TmpName: ScrnTypes.AFrameName;
- spot: CARDINAL;
- DriveLetter: CHAR;
- PathName: ARRAY [0..127] OF CHAR;
- ImageRec: ScrnTypes.ImageElement;
- BEGIN
- Drectory.GetDrivePathAndName( FileSpec, DriveLetter, PathName,
- SelectedFile );
- SavedMessage := DirToFrame( FileSpec, TheFrame,
- ColumnsPerFile );
- FramePainter.ShowDisplayFrame( TheFrame, 0, 0, 0, 0 );
- InputManager.ControlFrame( TheFrame, 1, '', FALSE, TmpName );
- ScrnUtl1.GetFieldImageRec( TheFrame, TheFrame^.CurrentField, ImageRec );
- StrEdit.AssignStr( ImageRec.text, SelectedFile );
- IF HIGH(SelectedFile) > 12 THEN
- SelectedFile[13]:=0C
- END;
- StrEdit.DeleteChar( ' ', SelectedFile );
- IF M2Strings.Length(SelectedFile) > 0 THEN
- M2Strings.Insert( PathName, SelectedFile, 0 );
- M2Strings.Insert( ':', SelectedFile, 0 );
- M2Strings.Insert( DriveLetter, SelectedFile, 0 );
- END;
- M2Strings.Assign( TmpName, NextFrame );
- END ControlDirectory;
- PROCEDURE OldControlDirectory( FileSpec: ARRAY OF CHAR;
- TheFrame: ScrnTypes.DisplayFrame; ColumnsPerFile: CARDINAL;
- VAR SelectedFile: ARRAY OF CHAR ): ScrnTypes.FrameKey;
- VAR
- NextFrame: ScrnTypes.AFrameName;
- BEGIN
- ControlDirectory( FileSpec, TheFrame, ColumnsPerFile,
- SelectedFile, NextFrame );
- RETURN StrConv.ReturnedInt(NextFrame);
- END OldControlDirectory;
- BEGIN
- Initialized := FALSE;
- Init();
- END DirManager.
|