SCREENIN.MOD 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. IMPLEMENTATION MODULE ScreenInput;
  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/screenin.mov 1.5 10 Mar 1991 15:31:54 coleb $
  12. *
  13. *)
  14. (* Provided only for compatibility with rel 1.4 code *)
  15. IMPORT ControlUtils;
  16. IMPORT DspFiles;
  17. IMPORT ErrorManager;
  18. IMPORT FramePainter;
  19. IMPORT GenLists;
  20. IMPORT InputManager;
  21. IMPORT M2Strings;
  22. IMPORT MsColors;
  23. IMPORT PosUtils;
  24. IMPORT ScrnTypes;
  25. IMPORT ScrnUtl1;
  26. IMPORT ScrnUtl2;
  27. IMPORT SmartScreen;
  28. IMPORT StrConv;
  29. IMPORT StrEdit;
  30. IMPORT VWindows;
  31. IMPORT WindowPrims;
  32. VAR
  33. Initialized : BOOLEAN;
  34. PROCEDURE Init();
  35. BEGIN
  36. IF Initialized THEN
  37. RETURN;
  38. ELSE
  39. Initialized := TRUE;
  40. END;
  41. ControlUtils.Init();
  42. DspFiles.Init();
  43. ErrorManager.Init();
  44. FramePainter.Init();
  45. GenLists.Init();
  46. InputManager.Init();
  47. M2Strings.Init();
  48. MsColors.Init();
  49. PosUtils.Init();
  50. ScrnTypes.Init();
  51. ScrnUtl1.Init();
  52. ScrnUtl2.Init();
  53. SmartScreen.Init();
  54. StrConv.Init();
  55. StrEdit.Init();
  56. VWindows.Init();
  57. WindowPrims.Init();
  58. END Init;
  59. CONST
  60. OldFunction = "Non-numeric frame name used with old function";
  61. PROCEDURE WarnNotNumberedFrame( FrameName: ARRAY OF CHAR );
  62. VAR
  63. dumstr: ARRAY [0..79] OF CHAR;
  64. BEGIN
  65. M2Strings.Assign( FrameName, dumstr );
  66. StrEdit.Append( dumstr,
  67. ' passed to routine that expects numbered frames' );
  68. ErrorManager.WARN( dumstr );
  69. END WarnNotNumberedFrame;
  70. PROCEDURE ReadNextInput(VAR TheFrame : ScrnTypes.DisplayFrame;
  71. VAR thestr : ARRAY OF CHAR; VAR selected : BOOLEAN;
  72. skip : CARDINAL);
  73. VAR
  74. FieldRec: ScrnTypes.InputFieldRecord;
  75. BEGIN
  76. ControlUtils.ReadNextInput( TheFrame, thestr, skip );
  77. IF ScrnUtl1.FieldType( TheFrame, TheFrame^.CurrentField )
  78. = ScrnTypes.GroupMember THEN
  79. ScrnUtl1.GetFieldRec( TheFrame, TheFrame^.CurrentField, FieldRec );
  80. selected := FieldRec.selected;
  81. ELSE
  82. selected := FALSE;
  83. END;
  84. END ReadNextInput;
  85. PROCEDURE ReadInput(VAR TheFrame : ScrnTypes.DisplayFrame; VAR
  86. thestr : ARRAY OF CHAR; VAR selected : BOOLEAN;
  87. FieldName : ARRAY OF CHAR);
  88. VAR
  89. FieldRec: ScrnTypes.InputFieldRecord;
  90. BEGIN
  91. ControlUtils.ReadInput( TheFrame, thestr, FieldName );
  92. IF ScrnUtl1.FieldType( TheFrame, TheFrame^.CurrentField )
  93. = ScrnTypes.GroupMember THEN
  94. ScrnUtl1.GetFieldRec( TheFrame, TheFrame^.CurrentField, FieldRec );
  95. selected := FieldRec.selected;
  96. ELSE
  97. selected := FALSE;
  98. END;
  99. END ReadInput;
  100. PROCEDURE ChangeField(VAR TheFrame : ScrnTypes.DisplayFrame;
  101. thestr : ARRAY OF CHAR; FieldName : ARRAY OF
  102. CHAR; PreserveLength: BOOLEAN);
  103. BEGIN
  104. ControlUtils.ChangeField( TheFrame, thestr, FieldName, PreserveLength );
  105. END ChangeField;
  106. PROCEDURE ListToEdField( TheList: GenLists.GenList; TheFrame:
  107. ScrnTypes.DisplayFrame; TheField: CARDINAL ): BOOLEAN;
  108. BEGIN
  109. RETURN ScrnUtl1.ListToEdField( TheList, TheFrame, TheField );
  110. END ListToEdField;
  111. PROCEDURE ListFromEdField( TheFrame: ScrnTypes.DisplayFrame; TheField:
  112. CARDINAL; VAR TheList: GenLists.GenList ): BOOLEAN;
  113. BEGIN
  114. RETURN ScrnUtl1.ListFromEdField( TheFrame, TheField, TheList );
  115. END ListFromEdField;
  116. PROCEDURE AddToMenu(VAR TheFrame : ScrnTypes.DisplayFrame;
  117. ScrCol, ScrRow : CARDINAL; ScrText : ARRAY OF
  118. CHAR; FieldType : CHAR; foreground, background:
  119. MsColors.AColor; MonoAttribute: MsColors.AMonoAttribute );
  120. VAR
  121. FieldRec : ScrnTypes.InputFieldRecord;
  122. RecNum : CARDINAL;
  123. BEGIN
  124. VWindows.SetForeColor( DspFiles.MainFrame^.WindowHandle, foreground );
  125. VWindows.SetBackColor( DspFiles.MainFrame^.WindowHandle, background );
  126. VWindows.SetMonoAttr( DspFiles.MainFrame^.WindowHandle, MonoAttribute );
  127. ControlUtils.AddMenuItem( TheFrame, ScrCol, ScrRow,
  128. ScrText, M2Strings.Length(ScrText), 0, TheFrame^.normlnext );
  129. (* Following lines added 27 Dec 89 at suggestion of Douglas Wrege
  130. to preserve compatibility with release 1.4. *)
  131. RecNum := ScrnUtl1.FieldListTotal( TheFrame );
  132. ScrnUtl1.GetFieldRec( TheFrame, RecNum, FieldRec );
  133. FieldRec.typ := FieldType;
  134. ScrnUtl1.PutFieldRec( FieldRec, TheFrame, RecNum );
  135. END AddToMenu;
  136. PROCEDURE FrameSequence( StartFrame: ScrnTypes.FrameKey);
  137. VAR
  138. screen : WindowPrims.ScreenType;
  139. FrameName : ScrnTypes.AFrameName;
  140. SavedHeight : CARDINAL;
  141. BEGIN
  142. StrConv.IntegerToStr( StartFrame, 0, FrameName );
  143. WindowPrims.ScreenSave(screen, 1, 1, SmartScreen.MaxCol,
  144. SmartScreen.MaxRow);
  145. ScrnUtl2.PushFrame( DspFiles.MainFrame);
  146. SavedHeight := VWindows.GetCursorHeight(
  147. DspFiles.MainFrame^.WindowHandle );
  148. VWindows.SetCursorHeight( DspFiles.MainFrame^.WindowHandle, 0 );
  149. REPEAT
  150. DspFiles.ReadDisplayFrame( DspFiles.MainFrame^.FromFile,
  151. DspFiles.MainFrame, FrameName );
  152. FramePainter.ShowDisplayFrame( DspFiles.MainFrame, 0, 0, 0, 0 );
  153. InputManager.ControlFrame( DspFiles.MainFrame, 1, '',
  154. FALSE, FrameName );
  155. UNTIL PosUtils.Equal( FrameName, ScrnTypes.ProgramExit );
  156. ScrnUtl2.PopFrame( DspFiles.MainFrame);
  157. WindowPrims.ScreenRestore(screen, 1, 1);
  158. VWindows.SetCursorHeight( DspFiles.MainFrame^.WindowHandle, SavedHeight );
  159. END FrameSequence;
  160. PROCEDURE Input( VAR FrameNum : ScrnTypes.FrameKey);
  161. VAR
  162. FrameName : ScrnTypes.AFrameName;
  163. BEGIN
  164. StrConv.IntegerToStr( FrameNum, 0, FrameName );
  165. ControlUtils.Input( DspFiles.MainFrame, FrameName );
  166. IF NOT StrConv.StrToInteger( FrameName, 0, FrameNum ) THEN
  167. WarnNotNumberedFrame( FrameName );
  168. END;
  169. END Input;
  170. PROCEDURE Control(): ScrnTypes.FrameKey;
  171. VAR
  172. FrameName: ScrnTypes.AFrameName;
  173. TmpInt: INTEGER;
  174. BEGIN
  175. InputManager.ControlFrame( DspFiles.MainFrame, 0, '', FALSE, FrameName );
  176. IF NOT StrConv.StrToInteger( FrameName, 0, TmpInt ) THEN
  177. WarnNotNumberedFrame( FrameName );
  178. END;
  179. RETURN TmpInt;
  180. END Control;
  181. PROCEDURE ControlFrame(VAR FrameRec : ScrnTypes.DisplayFrame;
  182. LandingField : CARDINAL; message : ARRAY OF CHAR;
  183. showfields : BOOLEAN) : ScrnTypes.FrameKey;
  184. VAR
  185. NextFrame: ScrnTypes.AFrameName;
  186. tmpint: INTEGER;
  187. BEGIN
  188. InputManager.ControlFrame( FrameRec, LandingField, message,
  189. showfields, NextFrame );
  190. IF NOT StrConv.StrToInteger( NextFrame, 0, tmpint ) THEN
  191. ErrorManager.WARN( OldFunction );
  192. END;
  193. RETURN tmpint;
  194. END ControlFrame;
  195. BEGIN
  196. Initialized := FALSE;
  197. Init();
  198. END ScreenInput.