home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume14 / pcomm / part04 / ls_menu.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-05-17  |  4.7 KB  |  194 lines

  1. /*
  2.  * Routines for displaying current line settings and prompting for changes.
  3.  */
  4.  
  5. #include <stdio.h>
  6. #include <curses.h>
  7. #include "dial_dir.h"
  8. #include "misc.h"
  9. #include "param.h"
  10.  
  11. /*
  12.  * Display the current line settings and prompt for changes.  A return
  13.  * code of 1 means settings were changed.
  14.  */
  15.  
  16. int
  17. line_set_menu(fd)
  18. int fd;
  19. {
  20.     WINDOW *l_win, *newwin();
  21.     int num, ret_code;
  22.     void disp_settings();
  23.  
  24.     l_win = newwin(20, 47, 0, 16);
  25.  
  26.     mvwattrstr(l_win, 1, 16, A_BOLD, "Line Settings");
  27.     waddstr(l_win, "\n----------------------------------------------");
  28.     mvwaddstr(l_win, 6, 5, "1)     300,E,7,1     7)     300,N,8,1");
  29.     mvwaddstr(l_win, 7, 5, "2)    1200,E,7,1     8)    1200,N,8,1");
  30.     mvwaddstr(l_win, 8, 5, "3)    2400,E,7,1     9)    2400,N,8,1");
  31.     mvwaddstr(l_win, 9, 5, "4)    4800,E,7,1    10)    4800,N,8,1");
  32.     mvwaddstr(l_win, 10, 5, "5)    9600,E,7,1    11)    9600,N,8,1");
  33.     mvwaddstr(l_win, 11, 5, "6)   19200,E,7,1    12)   19200,N,8,1");
  34.     mvwaddstr(l_win, 13, 4, "Parity        Data Bits       Stop Bits");
  35.     mvwaddstr(l_win, 14, 4, "13) Odd       14) 7 bits      16) 1 bit");
  36.     mvwaddstr(l_win, 15, 18, "15) 8 bits      17) 2 bits");
  37.     mvwaddstr(l_win, 17, 4, "18) Save Changes");
  38.     mvwattrstr(l_win, 17, 28, A_BOLD, "YOUR CHOICE:");
  39.     wmove(l_win, 17, 41);
  40.     box(l_win, '|', '-');
  41.  
  42.     mvwaddstr(l_win, 19, 14, " Press ESC to return ");
  43.                     /* display current settings */
  44.     disp_settings(l_win);
  45.     wmove(l_win, 17, 41);
  46.     wrefresh(l_win);
  47.                     /* get the options */
  48.     ret_code = 0;
  49.     while ((num = get_num(l_win, 2)) != -1) {
  50.         switch(num) {
  51.             case 1:
  52.                 dir->baud[dir->d_cur] = 300;
  53.                 dir->parity[dir->d_cur] = 'E';
  54.                 dir->dbits[dir->d_cur] = 7;
  55.                 dir->sbits[dir->d_cur] = 1;
  56.                 break;
  57.             case 2:
  58.                 dir->baud[dir->d_cur] = 1200;
  59.                 dir->parity[dir->d_cur] = 'E';
  60.                 dir->dbits[dir->d_cur] = 7;
  61.                 dir->sbits[dir->d_cur] = 1;
  62.                 break;
  63.             case 3:
  64.                 dir->baud[dir->d_cur] = 2400;
  65.                 dir->parity[dir->d_cur] = 'E';
  66.                 dir->dbits[dir->d_cur] = 7;
  67.                 dir->sbits[dir->d_cur] = 1;
  68.                 break;
  69.             case 4:
  70.                 dir->baud[dir->d_cur] = 4800;
  71.                 dir->parity[dir->d_cur] = 'E';
  72.                 dir->dbits[dir->d_cur] = 7;
  73.                 dir->sbits[dir->d_cur] = 1;
  74.                 break;
  75.             case 5:
  76.                 dir->baud[dir->d_cur] = 9600;
  77.                 dir->parity[dir->d_cur] = 'E';
  78.                 dir->dbits[dir->d_cur] = 7;
  79.                 dir->sbits[dir->d_cur] = 1;
  80.                 break;
  81.             case 6:
  82.                 dir->baud[dir->d_cur] = 19200;
  83.                 dir->parity[dir->d_cur] = 'E';
  84.                 dir->dbits[dir->d_cur] = 7;
  85.                 dir->sbits[dir->d_cur] = 1;
  86.                 break;
  87.             case 7:
  88.                 dir->baud[dir->d_cur] = 300;
  89.                 dir->parity[dir->d_cur] = 'N';
  90.                 dir->dbits[dir->d_cur] = 8;
  91.                 dir->sbits[dir->d_cur] = 1;
  92.                 break;
  93.             case 8:
  94.                 dir->baud[dir->d_cur] = 1200;
  95.                 dir->parity[dir->d_cur] = 'N';
  96.                 dir->dbits[dir->d_cur] = 8;
  97.                 dir->sbits[dir->d_cur] = 1;
  98.                 break;
  99.             case 9:
  100.                 dir->baud[dir->d_cur] = 2400;
  101.                 dir->parity[dir->d_cur] = 'N';
  102.                 dir->dbits[dir->d_cur] = 8;
  103.                 dir->sbits[dir->d_cur] = 1;
  104.                 break;
  105.             case 10:
  106.                 dir->baud[dir->d_cur] = 4800;
  107.                 dir->parity[dir->d_cur] = 'N';
  108.                 dir->dbits[dir->d_cur] = 8;
  109.                 dir->sbits[dir->d_cur] = 1;
  110.                 break;
  111.             case 11:
  112.                 dir->baud[dir->d_cur] = 9600;
  113.                 dir->parity[dir->d_cur] = 'N';
  114.                 dir->dbits[dir->d_cur] = 8;
  115.                 dir->sbits[dir->d_cur] = 1;
  116.                 break;
  117.             case 12:
  118.                 dir->baud[dir->d_cur] = 19200;
  119.                 dir->parity[dir->d_cur] = 'N';
  120.                 dir->dbits[dir->d_cur] = 8;
  121.                 dir->sbits[dir->d_cur] = 1;
  122.                 break;
  123.             case 13:
  124.                 dir->parity[dir->d_cur] = 'O';
  125.                 break;
  126.             case 14:
  127.                 dir->dbits[dir->d_cur] = 7;
  128.                 break;
  129.             case 15:
  130.                 dir->dbits[dir->d_cur] = 8;
  131.                 break;
  132.             case 16:
  133.                 dir->sbits[dir->d_cur] = 1;
  134.                 break;
  135.             case 17:
  136.                 dir->sbits[dir->d_cur] = 2;
  137.                 break;
  138.             case 18:
  139.                     /* copy the current settings */
  140.                 param->d_baud = dir->baud[dir->d_cur];
  141.                 param->d_parity = dir->parity[dir->d_cur];
  142.                 param->d_dbits = dir->dbits[dir->d_cur];
  143.                 param->d_sbits = dir->sbits[dir->d_cur];
  144.                 /*
  145.                  * We've changed the values in memory even
  146.                  * if the update fails.
  147.                  */
  148.                 if (update_param()) {
  149.                     touchwin(l_win);
  150.                     wrefresh(l_win);
  151.                 }
  152.                 break;
  153.             default:
  154.                 beep();
  155.         }
  156.         ret_code++;
  157.         disp_settings(l_win);
  158.         mvwaddstr(l_win, 17, 41, "    ");
  159.         wmove(l_win, 17, 41);
  160.         wrefresh(l_win);
  161.     }
  162.     if (fd == -1) {
  163.         werase(l_win);
  164.         wrefresh(l_win);
  165.     }
  166.     delwin(l_win);
  167.     return(ret_code);
  168. }
  169.  
  170. /*
  171.  * Display the current settings.  Formats the entire string at one
  172.  * time, in case you've got a magic cookie terminal.
  173.  */
  174.  
  175. void
  176. disp_settings(win)
  177. WINDOW *win;
  178. {
  179.     char buf[40];
  180.     extern int xmc;
  181.  
  182.     sprintf(buf, "Current Settings: %5d,%c,%d,%d", dir->baud[dir->d_cur],
  183.      dir->parity[dir->d_cur], dir->dbits[dir->d_cur],
  184.      dir->sbits[dir->d_cur]);
  185.  
  186.     if (xmc > 0) {
  187.         touchwin(win);
  188.         clear_line(win, 4, 8, 1);
  189.         wrefresh(win);
  190.     }
  191.     mvwattrstr(win, 4, 8, A_BOLD, buf);
  192.     return;
  193. }
  194.