home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PROG_GEN / BBSKIT31.ZIP / PROMPTS.PAS < prev    next >
Pascal/Delphi Source File  |  1994-01-06  |  4KB  |  170 lines

  1. {
  2.   Prompts.Pas
  3.  
  4.   A BBSkit unit containing various prompts.
  5.  
  6.   Written by Steve Madsen
  7. }
  8.  
  9. UNIT Prompts;
  10.  
  11. {$V-}
  12.  
  13. {********************************************************************}
  14.  
  15. INTERFACE
  16.  
  17. Uses BBSkit;
  18.  
  19. Type
  20.   TPrompts = object(TBBS)
  21.     CNorm      : Byte;
  22.     CHighlight : Byte;
  23.  
  24.     CONSTRUCTOR Init;
  25.  
  26.     PROCEDURE ChangeColor(Color : Byte);
  27.     PROCEDURE CRPrompt;
  28.     FUNCTION Prompt(Strn : String) : Char;
  29.     PROCEDURE SetHighlightColor(Fore, Back : Byte);
  30.     PROCEDURE SetNormalColor(Fore, Back : Byte);
  31.     FUNCTION YNPrompt(Default : Boolean) : Boolean;
  32.   end;
  33.  
  34. {********************************************************************}
  35.  
  36. IMPLEMENTATION
  37.  
  38. Uses Util;
  39.  
  40. {--------------------------------------------------------------------}
  41.  
  42. CONSTRUCTOR TPrompts.Init;
  43.  begin
  44.    TBBS.Init;
  45.    CNorm := $07;
  46.    CHighlight := $0E;
  47.  end;
  48.  
  49. {--------------------------------------------------------------------}
  50.  
  51. PROCEDURE TPrompts.ChangeColor(Color : Byte);
  52.  begin
  53.    ComWrite(EmuColor(Color AND $0F, Color SHR 4));
  54.  end;
  55.  
  56. {--------------------------------------------------------------------}
  57.  
  58. PROCEDURE TPrompts.CRPrompt;
  59.  Var
  60.    St : String[1];
  61.  
  62.  begin
  63.    ChangeColor(CNorm);
  64.    ComWrite('Press ');
  65.    ChangeColor(CHighlight);
  66.    ComWrite('Enter');
  67.    ChangeColor(CNorm);
  68.    ComWrite(' to continue...');
  69.    ComReadLn(St, 0);
  70.  end;
  71.  
  72. {--------------------------------------------------------------------}
  73.  
  74. FUNCTION TPrompts.Prompt(Strn : String) : Char;
  75.  Var
  76.    Valid : String;
  77.    Ch    : Char;
  78.    Key   : Boolean;
  79.    Index : Byte;
  80.  
  81.  begin
  82.    Key := False;
  83.    Valid := '';
  84.    for Index := 1 to Length(Strn) do
  85.     begin
  86.       if (Strn[Index] = '~') then
  87.        begin
  88.          Key := not Key;
  89.          if (Key) then
  90.           begin
  91.             if (Color) then
  92.                ChangeColor(CHighlight)
  93.             else
  94.                ComWrite('[');
  95.             Valid := Valid + Strn[Index + 1];
  96.           end
  97.          else
  98.             if (Color) then
  99.                ChangeColor(CNorm)
  100.             else
  101.                ComWrite(']');
  102.        end
  103.       else
  104.          ComWrite(Strn[Index]);
  105.     end;
  106.    Valid := Upper(Valid);
  107.    Repeat
  108.      Ch := UpCase(ComReadKey);
  109.    Until (Pos(Ch, Valid) > 0);
  110.    Prompt := Ch;
  111.  end;
  112.  
  113. {--------------------------------------------------------------------}
  114.  
  115. PROCEDURE TPrompts.SetHighlightColor(Fore, Back : Byte);
  116.  begin
  117.    CHighlight := (Back * 16) + Fore;
  118.  end;
  119.  
  120. {--------------------------------------------------------------------}
  121.  
  122. PROCEDURE TPrompts.SetNormalColor(Fore, Back : Byte);
  123.  begin
  124.    CNorm := (Back * 16) + Fore;
  125.  end;
  126.  
  127. {--------------------------------------------------------------------}
  128.  
  129. FUNCTION TPrompts.YNPrompt(Default : Boolean) : Boolean;
  130.  Var
  131.    Ch : Char;
  132.  
  133.  begin
  134.    if (Default) then
  135.     begin
  136.       ChangeColor(CNorm);
  137.       ComWrite('(');
  138.       ChangeColor(CHighlight);
  139.       ComWrite('Y');
  140.       ChangeColor(CNorm);
  141.       ComWrite('/n): ');
  142.     end
  143.    else
  144.     begin
  145.       ChangeColor(CNorm);
  146.       ComWrite('(y/');
  147.       ChangeColor(CHighlight);
  148.       ComWrite('N');
  149.       ChangeColor(CNorm);
  150.       ComWrite('): ');
  151.     end;
  152.    Repeat
  153.      Ch := UpCase(ComReadKey);
  154.    Until (Ch = 'Y') or (Ch = 'N') or (Ch = #13) or (CarrierLost);
  155.    if ((Default) and (Ch = #13)) or (Ch = 'Y') then
  156.     begin
  157.       ComWriteLn('Yes.');
  158.       YNPrompt := True;
  159.     end
  160.    else
  161.     begin
  162.       ComWriteLn('No.');
  163.       YNPrompt := False;
  164.     end;
  165.  end;
  166.  
  167. {********************************************************************}
  168.  
  169. END.
  170.