/*=====[ The TesSeRact(TM) CXL User Interface Development System ]======* | Copyright (c) 1987-1990, Innovative Data Concepts. All Rights Reserved | | This Library is part of IDC's TesSeRact Development Tools product | line. For information about other IDC products, call 1-215-884-3373. *----------------------------------------------------------------------* | : Public definitions and prototypes for TCXL Data-entry | system (User level). *----------------------------------------------------------------------* | PGS : $Id: tcxlent.h 5.51 90/10/01 00:00:00 MLM Release Locker: MLM $ | $Log: tcxlent.h $ | Revision 5.51 90/10/01 00:00:00 MLM | TCXL 5.51 | *======================================================================*/ #ifndef _TCXLent_ # define _TCXLent_ 1 # ifndef _TCXLwin_ # include /* window definitions */ # endif /*- EntFld() field feature bits -*/ #define FLD_NUL 0x0000 /* no special features defined */ #define FLD_LWR 0x0001 /* convert to lowercase */ #define FLD_UPR 0x0002 /* convert to uppercase */ #define FLD_MIX 0x0004 /* convert to mixed case */ #define FLD_PAS 0x0008 /* do not echo typed-in chars */ #define FLD_NUM 0x0010 /* numeric field */ #define FLD_CUR 0x0020 /* currency field */ #define FLD_NWR 0x0040 /* no auto-wrap to next field */ #define FLD_LJS 0x0080 /* left justify */ #define FLD_RJS 0x0100 /* right justify */ #define FLD_TRM 0x0200 /* trim end spaces */ /*- EntFld() field edit-modes ---*/ #define FLD_INI 0x00 /* initial mode */ #define FLD_CHG 0x01 /* change mode */ #define FLD_CND 0x02 /* conditional-update mode */ /*- field movement bits ---------*/ #define FDF_MOV 0x0F /* movement */ #define FDF_BEG 0x01 /* to first field */ #define FDF_END 0x02 /* to last field */ #define FDF_UP 0x04 /* to previous field */ #define FDF_DWN 0x08 /* to next field */ /*------------------[ Data objects and access macros ]------------------*/ TYP struct Edf EdfT, *EdfP; TYP struct Fdf FdfT, *FdfP; struct Edf /*-[ Entry-form object ]---------*/ { FdfP etop; /* 00|00 : head FdfT */ FdfP efld; /* 02|04 : current FdfT */ WfipCP eget; /* 04|08 : alternate getkey() */ WrdP etrm; /* 06|0C : terminating key */ ChrP efmt; /* 08|10 : format pointer */ ChrP ebfr; /* 0A|14 : buffer pointer */ ChrP ebas; /* 0C|18 : buffer base */ ChrP esep; /* 0E|1C : word-separators */ VposT epos; /* 10|20 : window-position */ BytT elen; /* 12|22 ; buffer-length */ BytT edec; /* 13|23 : decimal position */ BytT ectl; /* 14|24 : field-control flags */ AtrT efat; /* 15|25 : field attribute */ AtrT etat; /* 16|26 : text attribute */ BytT efut; /* 17|27 : reserved for future */ }; /* 18|28 ]-----------------------*/ GBL EdfP CDC _EntCtl; /*- Global entry-form pointer ------------*/ #define EdfTop(e) ((e)->etop) /* head FdfT */ #define EdfFld(e) ((e)->efld) /* current FdfT */ #define EdfGet(e) ((e)->eget) /* get function */ #define EdfTrm(e) ((e)->etrm) /* terminating key */ #define EdfFmt(e) ((e)->efmt) /* format pointer */ #define EdfBfr(e) ((e)->ebfr) /* buffer pointer */ #define EdfBas(e) ((e)->ebas) /* buffer base */ #define EdfSep(e) ((e)->esep) /* word separators */ #define EdfPos(e) ((e)->epos) /* window position */ #define EdfPosW(e) (VposW(EdfPos(e))) /* word */ #define EdfPosC(e) (VposC(EdfPos(e))) /* col */ #define EdfPosR(e) (VposR(EdfPos(e))) /* row */ #define EdfLen(e) ((e)->elen) /* field-length */ #define EdfDec(e) ((e)->edec) /* decimal-position */ #define EdfCtl(e) ((e)->ectl) /* entry-control */ #define EdfFat(e) ((e)->efat) /* field attribute */ #define EdfTat(e) ((e)->etat) /* text attribute */ struct Fdf /*-[ Field-definition object ]---*/ { FdfP fprv; /* 00|00 : previous FdfT */ FdfP fnxt; /* 02|04 : next FdfT */ ChrP fstr; /* 04|08 : input string */ ChrP fbfr; /* 06|0C : buffer */ ChrP ffmt; /* 08|10 : format string */ IfcpCP fval; /* 0A|14 : "valid" function */ VfvCP fbef; /* 0C|18 : "before" function */ VfvCP faft; /* 0E|1C : "after" function */ KeyT fkey; /* 10|20 : hot-key */ WrdT fmsk; /* 12|22 : feature mask */ TagT ftag; /* 14|24 : tag ID */ TagT fhlp; /* 16|26 : help category */ VposT fpos; /* 18|28 : input position */ BytT fctl; /* 1A|2A : control flags */ BytT flen; /* 1B|2B : length of buffer */ BytT fdec; /* 1C|2C : decimal position */ BytT ffut; /* 1D|2D : reserved for future */ }; /* 1E|2E ]-----------------------*/ #define FdfPrv(f) ((f)->fprv) /* previous FdfT */ #define FdfNxt(f) ((f)->fnxt) /* next FdfT */ #define FdfStr(f) ((f)->fstr) /* receiving string */ #define FdfBfr(f) ((f)->fbfr) /* buffer pointer */ #define FdfFmt(f) ((f)->ffmt) /* format string */ #define FdfVal(f) ((f)->fval) /* "valid" function */ #define FdfBef(f) ((f)->fbef) /* "before" function */ #define FdfAft(f) ((f)->faft) /* "after" function */ #define FdfKey(f) ((f)->fkey) /* hotkey */ #define FdfMsk(f) ((f)->fmsk) /* feature mask */ #define FdfTag(f) ((f)->ftag) /* tag ID */ #define FdfHlp(f) ((f)->fhlp) /* help category */ #define FdfPos(f) ((f)->fpos) /* position */ #define FdfPosW(f) (VposW(FdfPos(f))) /* word */ #define FdfPosC(f) (VposC(FdfPos(f))) /* col */ #define FdfPosR(f) (VposR(FdfPos(f))) /* row */ #define FdfCtl(f) ((f)->fctl) /* control flags */ #define FdfMov(f) (0 != (FdfCtl(f) & FDF_MOV)) /* movement */ #define FdfBeg(f) (0 != (FdfCtl(f) & FDF_BEG)) /* to first */ #define FdfEnd(f) (0 != (FdfCtl(f) & FDF_END)) /* to last */ #define FdfUp(f) (0 != (FdfCtl(f) & FDF_UP)) /* to previous */ #define FdfDwn(f) (0 != (FdfCtl(f) & FDF_DWN)) /* to next */ #define FdfLen(f) ((f)->flen) /* buffer length */ #define FdfDec(f) ((f)->fdec) /* decimal position */ /*------------------------[ Function prototypes ]-----------------------*/ #ifdef __cplusplus /* no mangling, please */ extern "C" { #endif /*- Entry-form ------------------*/ IntT CTYP EntDef(IntT fa, IntT ta); /* Define entry form */ IntT CTYP EntFld(IntT wr, IntT wc, /* Define entry field */ ChrP ps, ChrP fs, IntT fm, TagT id, IntT md, IfcpCP vf, TagT ht); IntT CTYP EntKey(WfipCP gk, /* Set alternate getkey() and */ WrdP tk); /* termination key */ IntT CTYP EntSep(ChrP ws); /* Set word-separator string */ IntT CTYP EntShow(NOARG); /* Display, process entry form */ /*- Entry-field -----------------*/ FdfP FldCur(NOARG); /* Current active field */ IntT CTYP FldFun(VfvCP bf, /* Assign "before" and "after" */ VfvCP af); /* functions */ IntT CTYP FldKey(KeyT hk); /* Assign hot-key */ FdfP CTYP FldLoc(TagT id); /* Find entry field */ #define FldCur() (EdfFld(_EntCtl)) #ifdef __cplusplus } #endif #endif /* _TCXLent_ : End of TCXLent.h */