home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / uccs / root.13 / usr / include / form.h < prev    next >
C/C++ Source or Header  |  1998-08-19  |  12KB  |  330 lines

  1. /*
  2.  * Copyright (c) 1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  3.  *                                                                         
  4.  *        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  5.  *                   SANTA CRUZ OPERATION INC.                             
  6.  *                                                                         
  7.  *   The copyright notice above does not evidence any actual or intended   
  8.  *   publication of such source code.                                      
  9.  */
  10.  
  11. #ifndef FORM_H
  12. #define FORM_H
  13. #ident    "@(#)libeti:form/form.h    1.11.1.1"
  14.  
  15. #include <curses.h>
  16. #include <eti.h>
  17.  
  18.     /**************
  19.     *  FIELDTYPE  *
  20.     **************/
  21.  
  22. typedef struct typenode {
  23.  
  24.     int            status;        /* flags        */
  25.     int            ref;        /* reference count    */
  26.     struct typenode *    left;        /* ptr to operand for |    */
  27.     struct typenode *    right;        /* ptr to operand for |    */
  28.     PTF_charP        makearg;    /* make fieldtype arg    */
  29.     PTF_charP        copyarg;    /* copy fieldtype arg    */
  30.     PTF_void        freearg;    /* free fieldtype arg    */
  31.     PTF_int            fcheck;        /* field validation    */
  32.     PTF_int            ccheck;        /* character validation    */
  33.     PTF_int            next;        /* enumerate next value    */
  34.     PTF_int            prev;        /* enumerate prev value    */
  35. }
  36.     FIELDTYPE;
  37.  
  38.     /**********
  39.     *  _PAGE  *
  40.     **********/
  41.  
  42. typedef struct {
  43.  
  44.     int            pmin;        /* first field on page    */
  45.     int            pmax;        /* last field on page    */
  46.     int            smin;        /* top leftmost field    */
  47.     int            smax;        /* bottom rightmost    */
  48. }
  49.     _PAGE;
  50.  
  51.     /**********
  52.     *  FIELD  *
  53.     **********/
  54.  
  55. typedef struct fieldnode {
  56.  
  57.     int            status;        /* flags        */
  58.     int            rows;        /* size in rows        */
  59.     int            cols;        /* size in cols        */
  60.     int            frow;        /* first row        */
  61.     int            fcol;        /* first col        */
  62.     int            drows;        /* dynamic rows        */
  63.     int            dcols;        /* dynamic cols        */
  64.     int            maxgrow;    /* maximum field growth */
  65.     int            nrow;        /* offscreen rows    */
  66.     int            nbuf;        /* additional buffers    */
  67.     int            just;        /* justification    */
  68.     int            page;        /* page on form        */
  69.     int            index;        /* into form -> field    */
  70.     int            pad;        /* pad character    */
  71.     chtype            fore;        /* foreground attribute    */
  72.     chtype            back;        /* background attribute    */
  73.     OPTIONS            opts;        /* options        */
  74.     struct fieldnode *    snext;        /* sorted order pointer    */
  75.     struct fieldnode *    sprev;        /* sorted order pointer    */
  76.     struct fieldnode *    link;        /* linked field chain    */
  77.     struct formnode *    form;        /* containing form    */
  78.     FIELDTYPE *        type;        /* field type        */
  79.     char *            arg;        /* argument for type    */
  80.     char *            buf;        /* field buffers    */
  81.     char *            usrptr;        /* user pointer        */
  82. }
  83.     FIELD;
  84.  
  85.     /*********
  86.     *  FORM  *
  87.     *********/
  88.  
  89. typedef struct formnode {
  90.  
  91.     int            status;        /* flags        */
  92.     int            rows;        /* size in rows        */
  93.     int            cols;        /* size in cols        */
  94.     int            currow;        /* current row        */
  95.     int            curcol;        /* current col        */
  96.     int            toprow;        /* in vertically scrollable field    */
  97.     int            begincol;    /* in horizontally scrollable field    */
  98.     int            maxfield;    /* number of fields    */
  99.     int            maxpage;    /* number of pages    */
  100.     int            curpage;    /* index into page    */
  101.     OPTIONS            opts;        /* options        */
  102.     WINDOW *        win;        /* window        */
  103.     WINDOW *        sub;        /* subwindow        */
  104.     WINDOW *        w;        /* window        */
  105.     FIELD **        field;        /* field [maxfield]    */
  106.     FIELD *            current;    /* current field    */
  107.     _PAGE *            page;        /* page [maxpage]    */
  108.     char *            usrptr;        /* user pointer        */
  109.     PTF_void        forminit;    /* user function    */
  110.     PTF_void        formterm;    /* user function    */
  111.     PTF_void        fieldinit;    /* user function    */
  112.     PTF_void        fieldterm;    /* user function    */
  113. }
  114.     FORM;
  115.  
  116.     /***************************
  117.     *  miscellaneous #defines  *
  118.     ***************************/
  119. /*
  120.     field justification
  121. */
  122. #define NO_JUSTIFICATION    0
  123. #define JUSTIFY_LEFT        1
  124. #define JUSTIFY_CENTER        2
  125. #define JUSTIFY_RIGHT        3
  126. /*
  127.     field options
  128. */
  129. #define O_VISIBLE        0x0001
  130. #define O_ACTIVE        0x0002
  131. #define O_PUBLIC        0x0004
  132. #define O_EDIT            0x0008
  133. #define O_WRAP            0x0010
  134. #define O_BLANK            0x0020
  135. #define O_AUTOSKIP        0x0040
  136. #define O_NULLOK        0x0080
  137. #define O_PASSOK        0x0100
  138. #define O_STATIC        0x0200
  139. /*
  140.     form options
  141. */
  142. #define O_NL_OVERLOAD        0x0001
  143. #define O_BS_OVERLOAD        0x0002
  144. /*
  145.     form driver commands
  146. */
  147. #define REQ_NEXT_PAGE        (KEY_MAX + 1)    /* move to next page        */
  148. #define REQ_PREV_PAGE        (KEY_MAX + 2)    /* move to previous page    */
  149. #define REQ_FIRST_PAGE        (KEY_MAX + 3)    /* move to first page        */
  150. #define REQ_LAST_PAGE        (KEY_MAX + 4)    /* move to last page        */
  151.  
  152. #define REQ_NEXT_FIELD        (KEY_MAX + 5)    /* move to next field        */
  153. #define REQ_PREV_FIELD        (KEY_MAX + 6)    /* move to previous field    */
  154. #define REQ_FIRST_FIELD        (KEY_MAX + 7)    /* move to first field        */
  155. #define REQ_LAST_FIELD        (KEY_MAX + 8)    /* move to last field        */
  156. #define REQ_SNEXT_FIELD        (KEY_MAX + 9)    /* move to sorted next field    */
  157. #define REQ_SPREV_FIELD        (KEY_MAX + 10)    /* move to sorted prev field    */
  158. #define REQ_SFIRST_FIELD    (KEY_MAX + 11)    /* move to sorted first field    */
  159. #define REQ_SLAST_FIELD        (KEY_MAX + 12)    /* move to sorted last field    */
  160. #define REQ_LEFT_FIELD        (KEY_MAX + 13)    /* move to left to field    */
  161. #define REQ_RIGHT_FIELD        (KEY_MAX + 14)    /* move to right to field    */
  162. #define REQ_UP_FIELD        (KEY_MAX + 15)    /* move to up to field        */
  163. #define REQ_DOWN_FIELD        (KEY_MAX + 16)    /* move to down to field    */
  164.  
  165. #define REQ_NEXT_CHAR        (KEY_MAX + 17)    /* move to next char in field    */
  166. #define REQ_PREV_CHAR        (KEY_MAX + 18)    /* move to prev char in field    */
  167. #define REQ_NEXT_LINE        (KEY_MAX + 19)    /* move to next line in field    */
  168. #define REQ_PREV_LINE        (KEY_MAX + 20)    /* move to prev line in field    */
  169. #define REQ_NEXT_WORD        (KEY_MAX + 21)    /* move to next word in field    */
  170. #define REQ_PREV_WORD        (KEY_MAX + 22)    /* move to prev word in field    */
  171. #define REQ_BEG_FIELD        (KEY_MAX + 23)    /* move to first char in field    */
  172. #define REQ_END_FIELD        (KEY_MAX + 24)    /* move after last char in fld    */
  173. #define REQ_BEG_LINE        (KEY_MAX + 25)    /* move to beginning of line    */
  174. #define REQ_END_LINE        (KEY_MAX + 26)    /* move after last char in line    */
  175. #define REQ_LEFT_CHAR        (KEY_MAX + 27)    /* move left in field        */
  176. #define REQ_RIGHT_CHAR        (KEY_MAX + 28)    /* move right in field        */
  177. #define REQ_UP_CHAR        (KEY_MAX + 29)    /* move up in field        */
  178. #define REQ_DOWN_CHAR        (KEY_MAX + 30)    /* move down in field        */
  179.  
  180. #define REQ_NEW_LINE        (KEY_MAX + 31)    /* insert/overlay new line    */
  181. #define REQ_INS_CHAR        (KEY_MAX + 32)    /* insert blank char at cursor    */
  182. #define REQ_INS_LINE        (KEY_MAX + 33)    /* insert blank line at cursor    */
  183. #define REQ_DEL_CHAR        (KEY_MAX + 34)    /* delete char at cursor    */
  184. #define REQ_DEL_PREV        (KEY_MAX + 35)    /* delete char before cursor    */
  185. #define REQ_DEL_LINE        (KEY_MAX + 36)    /* delete line at cursor    */
  186. #define REQ_DEL_WORD        (KEY_MAX + 37)    /* delete line at cursor    */
  187. #define REQ_CLR_EOL        (KEY_MAX + 38)    /* clear to end of line        */
  188. #define REQ_CLR_EOF        (KEY_MAX + 39)    /* clear to end of field    */
  189. #define REQ_CLR_FIELD        (KEY_MAX + 40)    /* clear entire field        */
  190. #define REQ_OVL_MODE        (KEY_MAX + 41)    /* begin overlay mode        */
  191. #define REQ_INS_MODE        (KEY_MAX + 42)    /* begin insert mode        */
  192.  
  193. #define REQ_SCR_FLINE        (KEY_MAX + 43)    /* scroll field forward a line    */
  194. #define REQ_SCR_BLINE        (KEY_MAX + 44)    /* scroll field backward a line    */
  195. #define REQ_SCR_FPAGE        (KEY_MAX + 45)    /* scroll field forward a page    */
  196. #define REQ_SCR_BPAGE        (KEY_MAX + 46)    /* scroll field backward a page    */
  197. #define REQ_SCR_FHPAGE        (KEY_MAX + 47)    /* scroll field forward half page */
  198. #define REQ_SCR_BHPAGE        (KEY_MAX + 48)    /* scroll field backward half page */
  199.  
  200. #define    REQ_SCR_FCHAR        (KEY_MAX + 49)    /* horizontal scroll char */
  201. #define    REQ_SCR_BCHAR        (KEY_MAX + 50)    /* horizontal scroll char */
  202. #define    REQ_SCR_HFLINE        (KEY_MAX + 51)    /* horizontal scroll line */
  203. #define    REQ_SCR_HBLINE        (KEY_MAX + 52)    /* horizontal scroll line */
  204. #define    REQ_SCR_HFHALF        (KEY_MAX + 53)    /* horizontal scroll half line */
  205. #define    REQ_SCR_HBHALF        (KEY_MAX + 54)    /* horizontal scroll half line */
  206.  
  207. #define REQ_VALIDATION        (KEY_MAX + 55)    /* validate field        */
  208. #define REQ_NEXT_CHOICE        (KEY_MAX + 56)    /* display next field choice    */
  209. #define REQ_PREV_CHOICE        (KEY_MAX + 57)    /* display prev field choice    */
  210.  
  211. #define MIN_FORM_COMMAND    (KEY_MAX + 1)    /* used by form_driver        */
  212. #define MAX_FORM_COMMAND    (KEY_MAX + 57)    /* used by form_driver        */
  213.  
  214. #ifdef __cplusplus
  215. extern "C" {
  216. #endif
  217.  
  218.     /*************************
  219.     *  standard field types  *
  220.     *************************/
  221.  
  222. extern FIELDTYPE *    TYPE_ALPHA;
  223. extern FIELDTYPE *    TYPE_ALNUM;
  224. extern FIELDTYPE *    TYPE_ENUM;
  225. extern FIELDTYPE *    TYPE_INTEGER;
  226. extern FIELDTYPE *    TYPE_NUMERIC;
  227. extern FIELDTYPE *    TYPE_REGEXP;
  228.  
  229.     /********************
  230.     *  default objects  *
  231.     ********************/
  232.  
  233. extern FORM *        _DEFAULT_FORM;
  234. extern FIELD *        _DEFAULT_FIELD;
  235.  
  236.  
  237.     /***********************
  238.     *  FIELDTYPE routines  *
  239.     ***********************/
  240.  
  241. extern FIELDTYPE *    new_fieldtype ( PTF_int, PTF_int );
  242. extern FIELDTYPE *    link_fieldtype ( FIELDTYPE *, FIELDTYPE * );
  243. extern int        free_fieldtype ( FIELDTYPE * );
  244. extern int        set_fieldtype_arg ( FIELDTYPE *, PTF_charP,
  245.                         PTF_charP, PTF_void );
  246. extern int        set_fieldtype_choice ( FIELDTYPE *, PTF_int, PTF_int );
  247.  
  248.     /*******************
  249.     *  FIELD routines  *
  250.     *******************/
  251.  
  252. extern FIELD *        new_field ( int, int, int, int, int, int );
  253. extern FIELD *        dup_field ( FIELD *, int, int );
  254. extern FIELD *        link_field ( FIELD *, int, int );
  255. extern int        free_field ( FIELD * );
  256. extern int        field_info ( FIELD *, int *, int *,
  257.                      int *,int *, int *, int * );
  258. extern int        dynamic_field_info ( FIELD *, int *, int *, int * );
  259. extern int        set_max_field ( FIELD *, int );
  260. extern int        move_field ( FIELD *, int, int );
  261. extern int        set_field_type ( FIELD *, FIELDTYPE *, ... );
  262. extern FIELDTYPE *    field_type ( FIELD * );
  263. extern char *        field_arg ( FIELD * );
  264. extern int        set_new_page ( FIELD *, int );
  265. extern int        new_page ( FIELD * );
  266. extern int        set_field_just ( FIELD *, int );
  267. extern int        field_just ( FIELD * );
  268. extern int        set_field_fore ( FIELD *, chtype );
  269. extern chtype        field_fore ( FIELD * );
  270. extern int        set_field_back ( FIELD *, chtype );
  271. extern chtype        field_back ( FIELD * );
  272. extern int        set_field_pad ( FIELD *, int );
  273. extern int        field_pad ( FIELD * );
  274. extern int        set_field_buffer ( FIELD *, int, char * );
  275. extern char *        field_buffer ( FIELD *, int );
  276. extern int        set_field_status ( FIELD *, int );
  277. extern int        field_status ( FIELD * );
  278. extern int        set_field_userptr ( FIELD *, char * );
  279. extern char *        field_userptr ( FIELD * );
  280. extern int        set_field_opts ( FIELD *, OPTIONS );
  281. extern OPTIONS        field_opts ( FIELD * );
  282. extern int        field_opts_on ( FIELD *, OPTIONS );
  283. extern int        field_opts_off ( FIELD *, OPTIONS );
  284. extern int        field_index ( FIELD * );
  285.  
  286.     /******************
  287.     *  FORM routines  *
  288.     ******************/
  289.  
  290. extern FORM *        new_form ( FIELD ** );
  291. extern int        free_form ( FORM * );
  292. extern int        set_form_fields ( FORM *, FIELD ** );
  293. extern FIELD **        form_fields ( FORM * );
  294. extern int        field_count ( FORM * );
  295. extern int        set_form_win ( FORM *, WINDOW * );
  296. extern WINDOW *        form_win ( FORM * );
  297. extern int        set_form_sub ( FORM *, WINDOW * );
  298. extern WINDOW *        form_sub ( FORM * );
  299. extern int        set_current_field ( FORM *, FIELD * );
  300. extern FIELD *        current_field ( FORM * );
  301. extern int        set_form_page ( FORM *, int );
  302. extern int        form_page ( FORM * );
  303. extern int        scale_form ( FORM *, int *, int * );
  304. extern int        set_form_init ( FORM *, PTF_void );
  305. extern PTF_void        form_init ( FORM * );
  306. extern int        set_form_term ( FORM *, PTF_void );
  307. extern PTF_void        form_term ( FORM * );
  308. extern int        set_field_init ( FORM *, PTF_void );
  309. extern PTF_void        field_init ( FORM * );
  310. extern int        set_field_term ( FORM *, PTF_void );
  311. extern PTF_void        field_term ( FORM * );
  312. extern int        post_form ( FORM * );
  313. extern int        unpost_form ( FORM * );
  314. extern int        pos_form_cursor ( FORM * );
  315. extern int        form_driver ( FORM *, int );
  316. extern int        set_form_userptr ( FORM *, char * );
  317. extern char *        form_userptr ( FORM * );
  318. extern int        set_form_opts ( FORM *, OPTIONS );
  319. extern OPTIONS        form_opts ( FORM * );
  320. extern int        form_opts_on ( FORM * , OPTIONS );
  321. extern int        form_opts_off ( FORM * , OPTIONS );
  322. extern int        data_ahead ( FORM * );
  323. extern int        data_behind ( FORM * );
  324.  
  325. #ifdef __cplusplus
  326. }
  327. #endif
  328.  
  329. #endif /*FORM_H*/
  330.