home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 1995 December / SOFM_Dec1995.bin / pc / dos / biz / pbase / full.scr < prev    next >
Text File  |  1995-10-31  |  5KB  |  169 lines

  1. bool   Fbypass,
  2.        Fedited,
  3.        Ffld_in_range,
  4.        Fnoneedited,
  5.        Fabort;
  6.  
  7. void rng_init(void)
  8. {
  9.  pad(LAST_NAME,"",20,Right);
  10.  pad(FULL_PARTY,"",15,Right);
  11.  pad(FULL_PRECINT,"",10,Right);
  12.  pad(ISSUE1,"",20,Right);
  13.  pad(DISKFILE,"",13,Right);
  14.  pad(PMARK,"",1,Right);
  15.  pad(OUTPUT,"",10,Right);
  16.  pad(FULL_SCH_DIST,"",3,Right);
  17.     
  18. }
  19.  
  20.  
  21. void rng_dsp(void)
  22. {
  23.  dsp_fld(14,1,LAST_NAME,_Ch,"20X",0,0,_av,rw.wa[1]);
  24.  dsp_fld(14,3,FULL_PARTY,_Ch,"15X",0,0,_av,rw.wa[1]);
  25.  dsp_fld(14,5,FULL_PRECINT,_Ch,"10X",0,0,_av,rw.wa[1]);
  26.  dsp_fld(14,6,FULL_SCH_DIST,_Ch,"3X",0,0,_av,rw.wa[1]);
  27.  dsp_fld(14,8,ISSUE1,_Ch,"20X",0,0,_av,rw.wa[1]);
  28.  dsp_fld(15,11,PMARK,_Ch,"X",0,0,_av,rw.wa[1]);
  29.  dsp_fld(10,13,OUTPUT,_Ch,"10X",0,0,_av,rw.wa[1]);
  30.  dsp_fld(29,13,DISKFILE,_Ch,"13X",0,0,_av,rw.wa[1]);
  31.  strcpy(&iodev,strip(_tts,OUTPUT));
  32.  strcpy(&dsk_file,strip(_tts,DISKFILE));
  33.     
  34. }
  35.  
  36.  
  37. bool skipfield(int fnum)
  38. {
  39.     bool tb;
  40.  
  41.     tb = False;
  42.    switch (fnum) {
  43.    case 0 : break ;
  44.       
  45.    }
  46.     return(tb);
  47. }
  48.  
  49.  
  50. bool chk_fld(int chknum)
  51. {
  52.     string estr;
  53.  
  54.     *estr = '\0';
  55.     switch (chknum) {
  56.   case 2 : if (!(choice("REPUBLICAN|DEMOCRATIC|LIBERTARIAN    |NA|OTHER",FULL_PARTY)))
  57.   strcpy(estr,(uchar *)choose(_tts,"REPUBLICAN|DEMOCRATIC|LIBERTARIAN    |NA|OTHER","",FULL_PARTY)); break;
  58.   case 5 : if (!(found(12,2,ISSUE1)))
  59.   strcpy(estr,(uchar *)list(_tts,12,2,ISSUE1)); break;
  60.   case 7 : if (!(choice("PRN|LPT1|LPT2|DSK|CON",OUTPUT)))
  61.   strcpy(estr,(uchar *)choose(_tts,"PRN|LPT1|LPT2|DSK|CON","",OUTPUT)); break;
  62.         
  63.     }
  64.     if (*estr != '\0') {
  65.     if (strcmp(estr,LSC_BaseError) != 0) {
  66.       audible(Error);
  67.         message(rw.wa[1],estr);
  68.     }
  69.     }
  70.     return ((bool) (*estr == '\0'));
  71. }
  72.  
  73.  
  74. void edt_n_chk(int x,int y,int l,int a,winptr h,strptr fld,char typ,strptr pic,int fldno)
  75. {
  76.     if (!skipfield(fldno)) {
  77.         do {
  78.             if (!Fbypass) {
  79.                 edt_fld(x, y, fld, typ, pic, (byte)(l), (byte)(a), rw.wa[1]);
  80.                 Fnoneedited = False;
  81.                 Fedited     = True;
  82.                 Fabort      = False;
  83.                 if (exitcode == HlpKey) disphelp(h);
  84.                 if (custom_key(1, 1, &fldnum, &exitcode)) exitcode = QitKey;
  85.             }
  86.             if ((exitcode != QitKey) && (exitcode != UArr) && (exitcode != HlpKey)) {
  87.                 Ffld_in_range = chk_fld(fldno);
  88.                 dsp_fld(x, y, fld, typ, pic, 0, (byte)(l), (byte)(a), rw.wa[1]);
  89.                 if (!Ffld_in_range) {
  90.                     fldnum = fldno;
  91.                     Fbypass = False;
  92.                 }
  93.             }
  94.         } while ((!Ffld_in_range) && (exitcode != QitKey) && (exitcode != UArr));
  95.         message(NULL,"");
  96.     }
  97. }
  98.  
  99.  
  100. void openedtmnu(winptr *edtwin)
  101. {
  102.     string ts;
  103.     int l;
  104.  
  105.     strcpy(ts, _EdtHelp);
  106.     l = strlen(ts);
  107.     if (openwin(0, (byte)(scrwid-l+1), scrhgt, (byte)(l), 1, 0x4F, 0x4F, 0, "\0┐│┘─└│┌", TopCnt, "")) {
  108.         *edtwin = curwin;
  109.         writewxy(ts, 0, 1, 1, *edtwin);
  110.         hidewin(T_ON, *edtwin);
  111.     }
  112.     else *edtwin = NULL;
  113. }
  114.  
  115.  
  116. void rng_edt(void)
  117. {
  118.     int    last_fld = 0;
  119.     winptr edtwin;
  120.     bool   finished = 0;
  121.  
  122.     openedtmnu(&edtwin);
  123.     attrib = _av;
  124.     exitcode = Nul;
  125.     Fabort = True;
  126.     Fbypass = False;
  127.     fldnum = 1;
  128.    finished = False;
  129.     do {
  130.        if (fldnum == 1) Fnoneedited = True;
  131.       if (last_fld == fldnum && !Fedited) fldnum++;
  132.         last_fld = fldnum;
  133.       Fedited = False;
  134.       switch (fldnum) {
  135.     case   1 : { edt_n_chk(14,1,0,0,NULL,LAST_NAME,_Ch,"20X",1); } break;
  136.     case   2 : { edt_n_chk(14,3,0,0,NULL,FULL_PARTY,_Ch,"15X",2); } break;
  137.     case   3 : { edt_n_chk(14,5,0,0,NULL,FULL_PRECINT,_Ch,"10X",3); } break;
  138.     case   4 : { edt_n_chk(14,6,0,0,NULL,FULL_SCH_DIST,_Ch,"3X",4); } break;
  139.     case   5 : { edt_n_chk(14,8,0,0,NULL,ISSUE1,_Ch,"20X",5); } break;
  140.     case   6 : { edt_n_chk(15,11,0,0,NULL,PMARK,_Ch,"X",6); } break;
  141.     case   7 : { edt_n_chk(10,13,0,0,NULL,OUTPUT,_Ch,"10X",7); } break;
  142.     case   8 : { edt_n_chk(29,13,0,0,NULL,DISKFILE,_Ch,"13X",8); } break;
  143.     case   9 : {
  144.      strcpy(&iodev,strip(_tts,OUTPUT));
  145.      } break;
  146.     case  10 : {
  147.      strcpy(&dsk_file,strip(_tts,DISKFILE));
  148.      } break;
  149.      default : {
  150.        if (Fnoneedited) {
  151.          finished = True;
  152.          if (Fabort) {
  153.            exitcode = QitKey;
  154.            dberrm(_NoneEdited);
  155.          }
  156.        }
  157.      else if (exitcode == XeptKey) finished = True; else fldnum = 0;
  158.      }
  159.             
  160.         }
  161.         if (Fbypass || !Fedited)
  162.             if (_upward && (fldnum > 1)) fldnum--; else fldnum++;
  163.         if (exitcode == XeptKey) Fbypass = True;
  164.         if (exitcode == QitKey) finished = True;
  165.         if (fldnum > last_fld) _upward = False;
  166.     } while (!finished);
  167.     if (edtwin != NULL) closewin(&edtwin);
  168. }
  169.