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