home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume30 / tin / part14 / screen.c < prev    next >
C/C++ Source or Header  |  1992-05-20  |  3KB  |  177 lines

  1. /*
  2.  *  Project   : tin - a threaded Netnews reader
  3.  *  Module    : screen.c
  4.  *  Author    : I.Lea & R.Skrenta
  5.  *  Created   : 01-04-91
  6.  *  Updated   : 18-04-92
  7.  *  Notes     :
  8.  *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  9.  *              You may  freely  copy or  redistribute  this software,
  10.  *              so  long as there is no profit made from its use, sale
  11.  *              trade or  reproduction.  You may not change this copy-
  12.  *              right notice, and it must be included in any copy made
  13.  */
  14.  
  15. #include    "tin.h"
  16.  
  17. extern int errno;
  18.  
  19. char msg[LEN];
  20. struct screen_t *screen;
  21.  
  22.  
  23. void info_message (str)
  24.     char *str;
  25. {
  26.     clear_message ();                /* Clear any old messages hanging around */
  27.     center_line (LINES, FALSE, str);    /* center the message at screen bottom */
  28.     if (! cmd_line) {
  29.         MoveCursor (LINES, 0);
  30.     }
  31. }
  32.  
  33.  
  34. void wait_message (str)
  35.     char *str;
  36. {
  37.     clear_message ();      /* Clear any old messages hanging around */
  38.     fputs (str, stdout);
  39.     fflush (stdout);
  40. }
  41.  
  42.  
  43. void error_message (template, str)
  44.     char *template;
  45.     char *str;
  46. {
  47.     errno = 0;
  48.  
  49.     clear_message ();      /* Clear any old messages hanging around */
  50.     
  51.     fprintf (stderr, template, str);
  52.     fflush (stderr);
  53.  
  54.     if (cmd_line) {
  55.         fputc ('\n', stderr);
  56.         fflush (stderr);
  57.     } else {
  58.         MoveCursor (LINES, 0);
  59.         sleep (2);
  60.     }
  61. }
  62.  
  63.  
  64. void perror_message (template, str)
  65.     char *template;
  66.     char *str;
  67. {
  68.     char str2[512];
  69.  
  70.     clear_message ();      /* Clear any old messages hanging around */
  71.     
  72.     sprintf (str2, template, str);
  73.     perror (str2);
  74.     errno = 0;
  75.  
  76.     if (cmd_line) {
  77.         fputc ('\n', stderr);
  78.         fflush (stderr);
  79.     } else {
  80.         MoveCursor (LINES, 0);
  81.         sleep (2);
  82.     }
  83. }
  84.  
  85.  
  86. void clear_message ()
  87. {
  88.     if (! cmd_line) {
  89.         MoveCursor (LINES, 0);
  90.         CleartoEOLN ();
  91.     }
  92. }
  93.  
  94.  
  95. void center_line (line, inverse, str)
  96.     int line;
  97.     int inverse;
  98.     char *str;
  99. {
  100.     int pos;
  101.  
  102.     if (! cmd_line) {
  103.         pos = (COLS - (int) strlen (str)) / 2;
  104.         MoveCursor (line, pos);
  105.         if (inverse) {
  106.             StartInverse ();
  107.         }
  108.     }
  109.  
  110.     fputs (str, stdout);
  111.     fflush (stdout);
  112.  
  113.     if (! cmd_line) {
  114.         if (inverse) {
  115.             EndInverse ();
  116.         }
  117.     }
  118. }
  119.  
  120.  
  121. void draw_arrow (line)
  122.     int line;
  123. {
  124.     MoveCursor (line, 0);
  125.  
  126.     if (draw_arrow_mark) {
  127.         fputs ("->", stdout);
  128.         fflush (stdout);
  129.     } else {
  130.         StartInverse ();
  131.         fputs (screen[line-INDEX_TOP].col, stdout);
  132.         fflush (stdout);
  133.         EndInverse ();
  134.     }
  135.     MoveCursor (LINES, 0);
  136. }
  137.  
  138.  
  139. void erase_arrow (line)
  140.     int line;
  141. {
  142.     MoveCursor (line, 0);
  143.  
  144.     if (draw_arrow_mark) {
  145.         fputs ("  ", stdout);
  146.     } else {
  147.         EndInverse ();
  148.         fputs (screen[line-INDEX_TOP].col, stdout);
  149.     }
  150.     fflush (stdout);
  151. }
  152.  
  153.  
  154. void show_title (title)
  155.     char *title;
  156. {    
  157.     int col;
  158.     
  159.     col = (COLS - (int) strlen (txt_type_h_for_help))+1;
  160.     if (col) {
  161.         MoveCursor (0, col);
  162.         if (mail_check ()) {        /* you have mail message in */
  163.             fputs (txt_you_have_mail, stdout);
  164.         } else {
  165.             fputs (txt_type_h_for_help, stdout);
  166.         }
  167.     }
  168.     center_line (0, TRUE, title);
  169. }
  170.  
  171.  
  172. void ring_bell ()
  173. {
  174.     fputc ('\007', stdout);
  175.     fflush (stdout);
  176. }
  177.