GLOBALS.MOD 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. IMPLEMENTATION MODULE Globals;
  2. (*
  3. Copyright (C) 1988,1989 Jensen & Partners International
  4. *)
  5. IMPORT Lib, Window, IO, Btree, Str, Misc;
  6. VAR
  7. LastH, LastM : CARDINAL;
  8. PROCEDURE Beep();
  9. BEGIN
  10. Lib.Speaker(1500,10);
  11. END Beep;
  12. PROCEDURE WriteAt( row, col : CARDINAL; txt : ARRAY OF CHAR);
  13. BEGIN
  14. Window.GotoXY(col,row);
  15. IO.WrStr(txt);
  16. END WriteAt;
  17. PROCEDURE GetMenu ( Prompt : ARRAY OF CHAR; OKChars : CharSet;
  18. VAR ch : CHAR);
  19. VAR
  20. OK : BOOLEAN;
  21. oldWin, MenuWin : Window.WinType;
  22. i : CARDINAL;
  23. BEGIN
  24. oldWin := Window.Used();
  25. MenuWin := Window.Open( Window.WinDef( 0, 22, 79, 24,
  26. Window.White,Window.Black,TRUE,FALSE,TRUE,TRUE,
  27. Window.SingleFrame,Window.White,Window.Black) );
  28. i := Str.Length(Prompt);
  29. Window.Change(MenuWin,((80-i) DIV 2) -2,22, ((80-i) DIV 2) + i + 3, 24);
  30. Window.SetFrame(MenuWin,Window.SingleFrame,DisplayBorder,Window.Black);
  31. Window.Use(MenuWin);
  32. Window.PutOnTop(MenuWin);
  33. Window.TextColor(DisplayFore);
  34. Window.TextBackground(DisplayBack);
  35. IO.WrStr(" ");
  36. IO.WrStr(Prompt);
  37. OK := FALSE;
  38. REPEAT
  39. REPEAT
  40. UpdateTitle(FALSE);
  41. UNTIL IO.KeyPressed();
  42. ch := CAP(IO.RdKey());
  43. IF ch IN OKChars THEN
  44. OK := TRUE;
  45. ELSE
  46. Beep();
  47. END;
  48. UNTIL OK;
  49. Window.Close(MenuWin);
  50. Window.Use(oldWin);
  51. Window.PutOnTop(oldWin);
  52. END GetMenu;
  53. PROCEDURE Compare(key1,key2: ADDRESS ): Btree.CmpRes;
  54. BEGIN
  55. RETURN Btree.CmpRes(Str.Compare(FileKey(key1^),FileKey(key2^))+1);
  56. END Compare;
  57. PROCEDURE UpdateTitle( All : BOOLEAN );
  58. VAR
  59. y, m, d : CARDINAL;
  60. dow : Lib.DayType;
  61. H, M, S, h : CARDINAL;
  62. Am : BOOLEAN;
  63. BEGIN
  64. oldWin := Window.Used();
  65. Window.Use(TitleWin);
  66. Window.CursorOff();
  67. Window.PutOnTop(TitleWin);
  68. IF All THEN
  69. Lib.GetDate(y, m, d, dow);
  70. Window.GotoXY(1,1);
  71. IO.WrCard(m,2); IO.WrChar('/');
  72. IO.WrCard(d,2); IO.WrChar('/');
  73. IO.WrCard(y,2);
  74. IF StoreName[0] > ' ' THEN
  75. h := Str.Length(StoreName);
  76. Window.GotoXY((79-h) DIV 2,1);
  77. IO.WrStr(StoreName);
  78. END;
  79. END;
  80. Lib.GetTime(H,M,S,h);
  81. IF (LastH # H) OR (LastM # M) THEN
  82. Window.GotoXY(70,1);
  83. IF H<12 THEN
  84. Am := TRUE;
  85. ELSE
  86. Am := FALSE;
  87. IF h # 12 THEN
  88. H := H - 12;
  89. END;
  90. END;
  91. IO.WrCard(H,2); IO.WrChar(':');
  92. IO.WrCard(M,2);
  93. IF Am THEN
  94. IO.WrStr(" am");
  95. ELSE
  96. IO.WrStr(" pm");
  97. END;
  98. IF M<10 THEN
  99. Window.GotoXY(73,1);
  100. IO.WrChar('0');
  101. END;
  102. LastM := M;
  103. LastH := H;
  104. END;
  105. Window.Use(oldWin);
  106. Window.CursorOn();
  107. Window.PutOnTop(oldWin);
  108. END UpdateTitle;
  109. BEGIN
  110. (* set up default colors *)
  111. DisplayFore := Window.White;
  112. DisplayBack := Window.Blue;
  113. DataFore := Window.Black;
  114. DataBack := Window.Cyan;
  115. DisplayBorder := Window.LightRed;
  116. PromptFore := Window.Yellow;
  117. PromptBack := Window.Brown;
  118. TaxRate := 5.0;
  119. TitleWin := Window.Open( Window.WinDef( 0, 0, 79, 2,
  120. Window.White, Window.Black, TRUE, FALSE, TRUE, TRUE,
  121. Window.DoubleFrame, Window.White, Window.Black) );
  122. Window.SetFrame(TitleWin, Window.DoubleFrame, PromptFore,
  123. PromptBack);
  124. Window.Use(TitleWin);
  125. Window.Clear();
  126. DisplayWin := Window.Open( Window.WinDef( 0, 3, 79, 22,
  127. Window.White, Window.Black, TRUE, FALSE, TRUE, TRUE,
  128. Window.DoubleFrame, Window.White, Window.Black) );
  129. Window.SetFrame(DisplayWin, Window.DoubleFrame, DisplayBorder,
  130. DisplayBack);
  131. Window.Use(DisplayWin);
  132. Window.TextColor(DisplayFore);
  133. Window.TextBackground(DisplayBack);
  134. Window.Clear();
  135. LastH := 0; LastM := 0;
  136. END Globals.