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

  1. /*
  2.  *  Project   : tin - a threaded Netnews reader
  3.  *  Module    : prompt.c
  4.  *  Author    : I.Lea
  5.  *  Created   : 01-04-91
  6.  *  Updated   : 12-04-92
  7.  *  Notes     :
  8.  *  Copyright : (c) Copyright 1991-92 by Iain Lea
  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. /*
  18.  *  prompt_num
  19.  *  get a number from the user
  20.  *  Return -1 if missing or bad number typed
  21.  */
  22.  
  23. int prompt_num (ch, prompt)
  24.     char ch;
  25.     char *prompt;
  26. {
  27.     char *p;
  28.     int num;
  29.     int time_remaining;
  30.  
  31. #ifndef NO_RESYNC_ACTIVE_FILE
  32.     time_remaining = alarm (0);
  33. #endif
  34.     
  35.     clear_message ();
  36.  
  37.     sprintf (msg, "%c", ch);
  38.  
  39.     if ((p = getline (prompt, TRUE, msg)) != (char *) 0) {
  40.         strcpy (msg, p);
  41.         num = atoi (msg);
  42.     } else {
  43.         num = -1;
  44.     }
  45.  
  46.     clear_message ();
  47.  
  48. #ifndef NO_RESYNC_ACTIVE_FILE
  49.     alarm (time_remaining);
  50. #endif
  51.     
  52.     return (num);
  53. }
  54.  
  55. /*
  56.  *  prompt_string
  57.  *  get a string from the user
  58.  *  Return TRUE if a valid string was typed, FALSE otherwise
  59.  */
  60.  
  61. int prompt_string (prompt, buf)
  62.     char *prompt;
  63.     char *buf;
  64. {
  65.     char *p;
  66.     int time_remaining;
  67.  
  68. #ifndef NO_RESYNC_ACTIVE_FILE
  69.     time_remaining = alarm (0);
  70. #endif
  71.  
  72.     clear_message ();
  73.  
  74.     if ((p = getline (prompt, FALSE, (char *) 0)) == (char *) 0) {
  75.         buf[0] = '\0';
  76.         clear_message ();
  77. #ifndef NO_RESYNC_ACTIVE_FILE
  78.         alarm (time_remaining);
  79. #endif
  80.         return FALSE;
  81.     }
  82.     strcpy (buf, p);
  83.     
  84.     clear_message ();
  85. #ifndef NO_RESYNC_ACTIVE_FILE
  86.     alarm (time_remaining);
  87. #endif
  88.     
  89.     return TRUE;
  90. }
  91.  
  92. /*
  93.  *  prompt_menu_string
  94.  *  get a string from the user
  95.  *  Return TRUE if a valid string was typed, FALSE otherwise
  96.  */
  97.  
  98. int prompt_menu_string (line, col, var)
  99.     int line;
  100.     int col;
  101.     char *var;
  102. {
  103.     char *p;
  104.     int time_remaining;
  105. #ifndef NO_RESYNC_ACTIVE_FILE
  106.     time_remaining = alarm (0);
  107. #endif
  108.  
  109.     MoveCursor (line, col);
  110.  
  111.     if ((p = getline ("", FALSE, var)) == (char *) 0) {
  112. #ifndef NO_RESYNC_ACTIVE_FILE
  113.         alarm (time_remaining);
  114. #endif
  115.         return FALSE;
  116.     }
  117.     strcpy (var, p);
  118. #ifndef NO_RESYNC_ACTIVE_FILE
  119.     alarm (time_remaining);
  120. #endif
  121.     
  122.     return TRUE;
  123. }
  124.  
  125.  
  126. int prompt_yn (line, prompt, prompt_ch)
  127.     int line;
  128.     char *prompt;
  129.     int prompt_ch;
  130. {
  131.     char ch;
  132.     int time_remaining;
  133. #ifndef NO_RESYNC_ACTIVE_FILE
  134.     time_remaining = alarm (0);
  135. #endif
  136.  
  137.     MoveCursor (line, 0);
  138.     CleartoEOLN ();
  139.     printf ("%s%c", prompt, prompt_ch);
  140.     fflush (stdout);
  141.     MoveCursor (line, (int) strlen (prompt));
  142.  
  143.     if ((ch = (char) ReadCh()) == CR) {
  144.         ch = prompt_ch;
  145.     }    
  146.  
  147.     if (line == LINES) {
  148.         clear_message();
  149.     } else {
  150.         MoveCursor (line, (int) strlen (prompt));
  151.         if (ch == ESC) {
  152.             fputc (prompt_ch, stdout);
  153.         } else {
  154.             fputc (ch, stdout);
  155.         }
  156.         fflush (stdout);
  157.     }
  158. #ifndef NO_RESYNC_ACTIVE_FILE
  159.     alarm (time_remaining);
  160. #endif
  161.  
  162.     return (ch == 'y' ? TRUE : FALSE);
  163. }
  164.  
  165.  
  166. void prompt_on_off (row, col, var, help_text, prompt_text)
  167.     int row;
  168.     int col;
  169.     int *var;
  170.     char *help_text;
  171.     char *prompt_text;
  172. {
  173.     int ch, var_orig;
  174.     int time_remaining;
  175. #ifndef NO_RESYNC_ACTIVE_FILE
  176.     time_remaining = alarm (0);
  177. #endif
  178.  
  179.     var_orig = *var;
  180.  
  181.     show_menu_help (help_text);
  182.     do {
  183.         MoveCursor (row, col + (int) strlen (prompt_text));
  184.         if ((ch = (char) ReadCh ()) == ' ') {
  185.             *var = !*var;
  186.             printf ("%s", (*var ? "ON " : "OFF"));
  187.             fflush (stdout);
  188.         }
  189.     } while (ch != CR && ch != ESC);
  190.  
  191.     if (ch == ESC) {
  192.         *var = var_orig;
  193.         printf ("%s", (*var ? "ON " : "OFF"));
  194.         fflush (stdout);
  195.     }
  196. #ifndef NO_RESYNC_ACTIVE_FILE
  197.     alarm (time_remaining);
  198. #endif
  199. }
  200.  
  201.  
  202. void continue_prompt ()
  203. {
  204.     char ch;
  205.     int time_remaining;
  206. #ifndef NO_RESYNC_ACTIVE_FILE
  207.     time_remaining = alarm (0);
  208. #endif
  209.     
  210.     info_message (txt_hit_any_key);
  211.     ch = (char) ReadCh ();
  212. #ifndef NO_RESYNC_ACTIVE_FILE
  213.     alarm (time_remaining);
  214. #endif
  215. }
  216.  
  217.  
  218.