DIRMANAG.MOD 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. IMPLEMENTATION MODULE DirManager;
  2. (*
  3. * REPERTOIRE
  4. * Release 1.6
  5. * By Charles Bradford and Cole Brecheen
  6. * (c) Copyright 1985-1992 PMI
  7. * Green Bay, Wisconsin
  8. * All rights reserved
  9. * (414) 468-6040
  10. *
  11. * $Header: D:/logfiles/mods/dirmanag.mov 1.5 10 Mar 1991 15:26:24 coleb $
  12. *
  13. *)
  14. IMPORT ControlUtils;
  15. IMPORT Drectory;
  16. IMPORT ErrStrgs;
  17. IMPORT InputManager;
  18. IMPORT FramePainter;
  19. IMPORT M2Strings;
  20. IMPORT PosUtils;
  21. IMPORT ScrnTypes;
  22. IMPORT ScrnUtl1;
  23. IMPORT StrConv;
  24. IMPORT StrEdit;
  25. IMPORT StringIO;
  26. VAR
  27. Initialized : BOOLEAN;
  28. PROCEDURE Init();
  29. BEGIN
  30. IF Initialized THEN
  31. RETURN;
  32. ELSE
  33. Initialized := TRUE;
  34. END;
  35. ControlUtils.Init();
  36. Drectory.Init();
  37. ErrStrgs.Init();
  38. InputManager.Init();
  39. FramePainter.Init();
  40. M2Strings.Init();
  41. PosUtils.Init();
  42. ScrnTypes.Init();
  43. ScrnUtl1.Init();
  44. StrConv.Init();
  45. StrEdit.Init();
  46. StringIO.Init();
  47. END Init;
  48. PROCEDURE MakeFileDataStr( FileInfo: Drectory.FileInfoRec; Columns:
  49. CARDINAL; VAR TheStr: ARRAY OF CHAR );
  50. VAR
  51. dumstr: ARRAY [0..79] OF CHAR;
  52. BEGIN
  53. StrEdit.AssignStr( FileInfo.name, TheStr );
  54. M2Strings.Concat(' ',TheStr,TheStr);
  55. IF Columns > 1 THEN
  56. WHILE M2Strings.Length(TheStr) < 12 DO
  57. StrEdit.Append( TheStr, ' ' );
  58. END;
  59. IF Drectory.SubdirectoryFile IN FileInfo.attribute THEN
  60. StrEdit.Append( TheStr, ' <DIR>' );
  61. ELSE
  62. StrConv.LongIntegerToStr( FileInfo.size, 8, dumstr );
  63. StrEdit.Append( TheStr, dumstr );
  64. END;
  65. END;
  66. IF Columns > 2 THEN
  67. StrConv.DateToStr( FileInfo.month, FileInfo.day, FileInfo.year,
  68. dumstr );
  69. StrEdit.Append( TheStr, ' ' );
  70. StrEdit.Append( TheStr, dumstr );
  71. END;
  72. IF Columns > 3 THEN
  73. StrConv.TimeToStr( FileInfo.hour, FileInfo.minute, FileInfo.second,
  74. FileInfo.second, dumstr );
  75. M2Strings.Delete( dumstr, M2Strings.Length(dumstr) - 7, 6 );
  76. StrEdit.Append( TheStr, ' ' );
  77. StrEdit.Append( TheStr, dumstr );
  78. END;
  79. END MakeFileDataStr;
  80. PROCEDURE DirToFrame( FileSpec: ARRAY OF CHAR; TheFrame:
  81. ScrnTypes.DisplayFrame; ColumnsPerFile: CARDINAL ): CARDINAL;
  82. VAR
  83. lngth1, VertSep, HorizSep, NextCol, NextRow: CARDINAL;
  84. DirHandle, SavedMessage: CARDINAL;
  85. InfoRec: Drectory.FileInfoRec;
  86. tmpstr: ARRAY [0..79] OF CHAR;
  87. LastCh: CHAR;
  88. PROCEDURE AddOne( VAR TheStr: ARRAY OF CHAR; VAR col, row:
  89. CARDINAL );
  90. VAR
  91. width: CARDINAL;
  92. BEGIN
  93. ControlUtils.AddMenuItem( TheFrame, col, row, TheStr,
  94. M2Strings.Length(TheStr), 0, TheFrame^.normlnext );
  95. IF ColumnsPerFile > 1 THEN
  96. width := M2Strings.Length(TheStr) + HorizSep;
  97. ELSE
  98. width := 12 + HorizSep;
  99. END;
  100. INC( col, width );
  101. IF (col + width) > (TheFrame^.endcol
  102. + 1) THEN
  103. col := HorizSep;
  104. INC( row, VertSep );
  105. END;
  106. END AddOne;
  107. BEGIN
  108. (*DirToFrame*)
  109. VertSep := 1;
  110. HorizSep := 4;
  111. NextCol := HorizSep;
  112. NextRow := VertSep + TheFrame^.headline;
  113. StrEdit.DeleteChar( ' ', FileSpec );
  114. lngth1 := M2Strings.Length( FileSpec );
  115. IF lngth1 > 0 THEN
  116. LastCh := FileSpec[ lngth1 - 1 ];
  117. ELSE
  118. LastCh := ':';
  119. END;
  120. CASE LastCh OF
  121. ':', '\', '/': StrEdit.Append( FileSpec, '*.*' );
  122. ELSE
  123. (*do nothing*)
  124. END;
  125. DirHandle := 1;
  126. SavedMessage := Drectory.FindFirstFile( FileSpec, DirHandle, InfoRec );
  127. IF SavedMessage # StringIO.NoError THEN
  128. IF SavedMessage = StringIO.NoMoreFiles THEN
  129. SavedMessage := StringIO.FileNotFound;
  130. END;
  131. ErrStrgs.NumToStr( SavedMessage, tmpstr );
  132. M2Strings.Insert( 'Error: ', tmpstr, 0 );
  133. AddOne( tmpstr, NextCol, NextRow );
  134. RETURN SavedMessage;
  135. END;
  136. WHILE SavedMessage = StringIO.NoError DO
  137. MakeFileDataStr( InfoRec, ColumnsPerFile, tmpstr );
  138. AddOne( tmpstr, NextCol, NextRow );
  139. SavedMessage := Drectory.FindNextFile( DirHandle, InfoRec );
  140. END;
  141. RETURN StringIO.NoError;
  142. END DirToFrame;
  143. PROCEDURE ControlDirectory( FileSpec: ARRAY OF CHAR;
  144. TheFrame: ScrnTypes.DisplayFrame; ColumnsPerFile: CARDINAL;
  145. VAR SelectedFile: ARRAY OF CHAR; VAR NextFrame:
  146. ScrnTypes.AFrameName );
  147. VAR
  148. SavedMessage: CARDINAL;
  149. TmpName: ScrnTypes.AFrameName;
  150. spot: CARDINAL;
  151. DriveLetter: CHAR;
  152. PathName: ARRAY [0..127] OF CHAR;
  153. ImageRec: ScrnTypes.ImageElement;
  154. BEGIN
  155. Drectory.GetDrivePathAndName( FileSpec, DriveLetter, PathName,
  156. SelectedFile );
  157. SavedMessage := DirToFrame( FileSpec, TheFrame,
  158. ColumnsPerFile );
  159. FramePainter.ShowDisplayFrame( TheFrame, 0, 0, 0, 0 );
  160. InputManager.ControlFrame( TheFrame, 1, '', FALSE, TmpName );
  161. ScrnUtl1.GetFieldImageRec( TheFrame, TheFrame^.CurrentField, ImageRec );
  162. StrEdit.AssignStr( ImageRec.text, SelectedFile );
  163. IF HIGH(SelectedFile) > 12 THEN
  164. SelectedFile[13]:=0C
  165. END;
  166. StrEdit.DeleteChar( ' ', SelectedFile );
  167. IF M2Strings.Length(SelectedFile) > 0 THEN
  168. M2Strings.Insert( PathName, SelectedFile, 0 );
  169. M2Strings.Insert( ':', SelectedFile, 0 );
  170. M2Strings.Insert( DriveLetter, SelectedFile, 0 );
  171. END;
  172. M2Strings.Assign( TmpName, NextFrame );
  173. END ControlDirectory;
  174. PROCEDURE OldControlDirectory( FileSpec: ARRAY OF CHAR;
  175. TheFrame: ScrnTypes.DisplayFrame; ColumnsPerFile: CARDINAL;
  176. VAR SelectedFile: ARRAY OF CHAR ): ScrnTypes.FrameKey;
  177. VAR
  178. NextFrame: ScrnTypes.AFrameName;
  179. BEGIN
  180. ControlDirectory( FileSpec, TheFrame, ColumnsPerFile,
  181. SelectedFile, NextFrame );
  182. RETURN StrConv.ReturnedInt(NextFrame);
  183. END OldControlDirectory;
  184. BEGIN
  185. Initialized := FALSE;
  186. Init();
  187. END DirManager.