home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / pctech / hlsrc / hldesc.c < prev    next >
C/C++ Source or Header  |  1988-09-09  |  3KB  |  135 lines

  1. /*+
  2.     Name:    hldesc.c
  3.     Date:    22-May-1988
  4.     Author:    Kent J. Quirk
  5.         (c) Copyright 1988 Ziff Communications Co.
  6.     Abstract:    Allows user to describe the machine being tested.
  7.     History:    09-Sep-88   kjq     Version 1.00
  8. -*/
  9.  
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <graph.h>
  13. #include "hltimes.h"
  14. #include "winmenu.h"
  15.  
  16. void usage()
  17. {
  18.     printf("Usage:  HLDESC [-pprog] -ffirst\n");
  19.     printf("   Allows entry of descriptive data in the file\n");
  20.     printf("   data in the file specified in the -f switch.\n");
  21.     printf("   Normally, prog defaults to zero, but specifying it\n");
  22.     printf("   will allow you to edit other descriptions as well.\n");
  23.     exit(1);
  24. }
  25.  
  26.  
  27. #define MAXROW 8
  28. #define LEFTEDGE 8
  29. #define TOPROW 8
  30.  
  31. main(argc, argv)
  32. int argc;
  33. char *argv[];
  34. {
  35.     int origfg;
  36.     long origbg;
  37.     int i;
  38.     int prog = 0;
  39.     TIME_REC tr[8], *trp;
  40.     char *text[8];
  41.     char *f1;
  42.     int c;
  43.     int row;
  44.     WINDOW *w;
  45.  
  46.     for (i=1; i<argc; i++)
  47.     {
  48.     if (argv[i][0] != '-')
  49.         usage();
  50.  
  51.     switch(tolower(argv[i][1])) {
  52.     case 'p':
  53.         prog = atoi(argv[i]+2);
  54.         break;
  55.     case 'f':
  56.         if (argv[i][2] != 0)
  57.         f1 = argv[i]+2;
  58.         else
  59.         f1 = NULL;
  60.         break;
  61.     case 's':
  62.     case 'a':            /* ignore "batch" & "bench" modes */
  63.     case 'b':
  64.         break;
  65.     default:
  66.         printf("Invalid argument '%s'\n", argv[i]);
  67.     case '?':
  68.         usage();
  69.     }
  70.     }
  71.     
  72.     if (f1 == NULL)
  73.     usage();
  74.  
  75.     opentime(f1);
  76.     for (i=0; i<MAXROW; i++)
  77.     {
  78.     trp = readtime(prog, i);
  79.     if (trp == NULL)
  80.     {
  81.         printf("Failure trying to read description data!\n");
  82.         exit(2);
  83.     }
  84.     tr[i] = *trp;
  85.     text[i] = tr[i].desc;
  86.     }
  87.     closetime();
  88.  
  89.     origfg = _gettextcolor();               /* get default colors */
  90.     origbg = _getbkcolor();
  91.     w = draw_menu(text, "Describe current machine", 
  92.         "Use cursor keys to edit, F10 to finish, ESC to cancel.",
  93.             MAXROW, TOPROW, LEFTEDGE, sizeof(trp->desc));
  94.  
  95.     row = 0;
  96.     for(;;)
  97.     {
  98.     switch (c = edit_line(text[row], sizeof(trp->desc)-1,
  99.             TOPROW+row, LEFTEDGE)) {
  100.     case UP:
  101.     case BACKTAB:
  102.         if (--row < 0)
  103.         row = MAXROW-1;
  104.         break;
  105.     case DOWN:
  106.     case TAB:
  107.     case DOIT:
  108.         if (++row >= MAXROW)
  109.         row = 0;
  110.         break;
  111.     case ESC:
  112.         close_window(w);
  113.         return(0);
  114.         break;
  115.     case F10:
  116.         opentime(f1);
  117.         for (i=0; i<MAXROW; i++)
  118.         {
  119.         tr[i].ticks = -2;
  120.         savetime(prog, i, &tr[i]);
  121.         }
  122.         closetime();
  123.  
  124.         close_window(w);
  125.         _settextcolor(origfg);
  126.         _setbkcolor(origbg);
  127.         return(0);
  128.         break;
  129.  
  130.     default:
  131.         break;
  132.     }
  133.     }
  134. }
  135.