#ifndef _FORM_H
#define _FORM_H
#include <curses.h>
#include <eti.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct typenode {
int status;
int ref;
struct typenode * left;
struct typenode * right;
PTF_charP makearg;
PTF_charP copyarg;
PTF_void freearg;
PTF_int fcheck;
PTF_int ccheck;
PTF_int next;
PTF_int prev;
}
FIELDTYPE;
typedef struct {
int pmin;
int pmax;
int smin;
int smax;
}
_PAGE;
typedef struct fieldnode {
int status;
int rows;
int cols;
int frow;
int fcol;
int drows;
int dcols;
int maxgrow;
int nrow;
int nbuf;
int just;
int page;
int index;
int pad;
chtype fore;
chtype back;
OPTIONS opts;
struct fieldnode * snext;
struct fieldnode * sprev;
struct fieldnode * link;
struct formnode * form;
FIELDTYPE * type;
char * arg;
char * buf;
char * usrptr;
}
FIELD;
typedef struct formnode {
int status;
int rows;
int cols;
int currow;
int curcol;
int toprow;
int begincol;
int maxfield;
int maxpage;
int curpage;
OPTIONS opts;
WINDOW * win;
WINDOW * sub;
WINDOW * w;
FIELD ** field;
FIELD * current;
_PAGE * page;
char * usrptr;
PTF_void forminit;
PTF_void formterm;
PTF_void fieldinit;
PTF_void fieldterm;
}
FORM;
#define NO_JUSTIFICATION 0
#define JUSTIFY_LEFT 1
#define JUSTIFY_CENTER 2
#define JUSTIFY_RIGHT 3
#define O_VISIBLE 0x0001
#define O_ACTIVE 0x0002
#define O_PUBLIC 0x0004
#define O_EDIT 0x0008
#define O_WRAP 0x0010
#define O_BLANK 0x0020
#define O_AUTOSKIP 0x0040
#define O_NULLOK 0x0080
#define O_PASSOK 0x0100
#define O_STATIC 0x0200
#define O_NL_OVERLOAD 0x0001
#define O_BS_OVERLOAD 0x0002
#define REQ_NEXT_PAGE (KEY_MAX + 1)
#define REQ_PREV_PAGE (KEY_MAX + 2)
#define REQ_FIRST_PAGE (KEY_MAX + 3)
#define REQ_LAST_PAGE (KEY_MAX + 4)
#define REQ_NEXT_FIELD (KEY_MAX + 5)
#define REQ_PREV_FIELD (KEY_MAX + 6)
#define REQ_FIRST_FIELD (KEY_MAX + 7)
#define REQ_LAST_FIELD (KEY_MAX + 8)
#define REQ_SNEXT_FIELD (KEY_MAX + 9)
#define REQ_SPREV_FIELD (KEY_MAX + 10)
#define REQ_SFIRST_FIELD (KEY_MAX + 11)
#define REQ_SLAST_FIELD (KEY_MAX + 12)
#define REQ_LEFT_FIELD (KEY_MAX + 13)
#define REQ_RIGHT_FIELD (KEY_MAX + 14)
#define REQ_UP_FIELD (KEY_MAX + 15)
#define REQ_DOWN_FIELD (KEY_MAX + 16)
#define REQ_NEXT_CHAR (KEY_MAX + 17)
#define REQ_PREV_CHAR (KEY_MAX + 18)
#define REQ_NEXT_LINE (KEY_MAX + 19)
#define REQ_PREV_LINE (KEY_MAX + 20)
#define REQ_NEXT_WORD (KEY_MAX + 21)
#define REQ_PREV_WORD (KEY_MAX + 22)
#define REQ_BEG_FIELD (KEY_MAX + 23)
#define REQ_END_FIELD (KEY_MAX + 24)
#define REQ_BEG_LINE (KEY_MAX + 25)
#define REQ_END_LINE (KEY_MAX + 26)
#define REQ_LEFT_CHAR (KEY_MAX + 27)
#define REQ_RIGHT_CHAR (KEY_MAX + 28)
#define REQ_UP_CHAR (KEY_MAX + 29)
#define REQ_DOWN_CHAR (KEY_MAX + 30)
#define REQ_NEW_LINE (KEY_MAX + 31)
#define REQ_INS_CHAR (KEY_MAX + 32)
#define REQ_INS_LINE (KEY_MAX + 33)
#define REQ_DEL_CHAR (KEY_MAX + 34)
#define REQ_DEL_PREV (KEY_MAX + 35)
#define REQ_DEL_LINE (KEY_MAX + 36)
#define REQ_DEL_WORD (KEY_MAX + 37)
#define REQ_CLR_EOL (KEY_MAX + 38)
#define REQ_CLR_EOF (KEY_MAX + 39)
#define REQ_CLR_FIELD (KEY_MAX + 40)
#define REQ_OVL_MODE (KEY_MAX + 41)
#define REQ_INS_MODE (KEY_MAX + 42)
#define REQ_SCR_FLINE (KEY_MAX + 43)
#define REQ_SCR_BLINE (KEY_MAX + 44)
#define REQ_SCR_FPAGE (KEY_MAX + 45)
#define REQ_SCR_BPAGE (KEY_MAX + 46)
#define REQ_SCR_FHPAGE (KEY_MAX + 47)
#define REQ_SCR_BHPAGE (KEY_MAX + 48)
#define REQ_SCR_FCHAR (KEY_MAX + 49)
#define REQ_SCR_BCHAR (KEY_MAX + 50)
#define REQ_SCR_HFLINE (KEY_MAX + 51)
#define REQ_SCR_HBLINE (KEY_MAX + 52)
#define REQ_SCR_HFHALF (KEY_MAX + 53)
#define REQ_SCR_HBHALF (KEY_MAX + 54)
#define REQ_VALIDATION (KEY_MAX + 55)
#define REQ_NEXT_CHOICE (KEY_MAX + 56)
#define REQ_PREV_CHOICE (KEY_MAX + 57)
#define MIN_FORM_COMMAND (KEY_MAX + 1)
#define MAX_FORM_COMMAND (KEY_MAX + 57)
extern FIELDTYPE * TYPE_ALPHA;
extern FIELDTYPE * TYPE_ALNUM;
extern FIELDTYPE * TYPE_ENUM;
extern FIELDTYPE * TYPE_INTEGER;
extern FIELDTYPE * TYPE_NUMERIC;
extern FIELDTYPE * TYPE_REGEXP;
extern FORM * _DEFAULT_FORM;
extern FIELD * _DEFAULT_FIELD;
#ifdef __STDC__
extern FIELDTYPE * new_fieldtype(PTF_int, PTF_int);
extern FIELDTYPE * link_fieldtype(FIELDTYPE *, FIELDTYPE *);
extern int free_fieldtype(FIELDTYPE *);
extern int set_fieldtype_arg(FIELDTYPE *, PTF_charP,
PTF_charP, PTF_void);
extern int set_fieldtype_choice(FIELDTYPE *, PTF_int, PTF_int);
extern FIELD * new_field(int, int, int, int, int, int);
extern FIELD * dup_field(FIELD *, int, int);
extern FIELD * link_field(FIELD *, int, int);
extern int free_field(FIELD *);
extern int field_info(FIELD *, int *, int *, int *, int *,
int *, int *);
extern int dynamic_field_info(FIELD *, int *, int *, int *);
extern int set_max_field(FIELD *, int);
extern int move_field(FIELD *, int, int);
extern int set_field_type(FIELD *, FIELDTYPE *, ...);
extern FIELDTYPE * field_type(FIELD *);
extern char * field_arg(FIELD *);
extern int set_new_page(FIELD *, int);
extern int new_page(FIELD *);
extern int set_field_just(FIELD *, int);
extern int field_just(FIELD *);
extern int set_field_fore(FIELD *, chtype);
extern chtype field_fore(FIELD *);
extern int set_field_back(FIELD *, chtype);
extern chtype field_back(FIELD *);
extern int set_field_pad(FIELD *, int);
extern int field_pad(FIELD *);
extern int set_field_buffer(FIELD *, int, char *);
extern char * field_buffer(FIELD *, int);
extern int set_field_status(FIELD *, int);
extern int field_status(FIELD *);
extern int set_field_userptr(FIELD *, char *);
extern char * field_userptr(FIELD *);
extern int set_field_opts(FIELD *, OPTIONS);
extern OPTIONS field_opts(FIELD *);
extern int field_opts_on(FIELD *, OPTIONS);
extern int field_opts_off(FIELD *, OPTIONS);
extern int field_index(FIELD *);
extern FORM * new_form(FIELD **);
extern int free_form(FORM *);
extern int set_form_fields(FORM *, FIELD **);
extern FIELD ** form_fields(FORM *);
extern int field_count(FORM *);
extern int set_form_win(FORM *, WINDOW *);
extern WINDOW * form_win(FORM *);
extern int set_form_sub(FORM *, WINDOW *);
extern WINDOW * form_sub(FORM *);
extern int set_current_field(FORM *, FIELD *);
extern FIELD * current_field(FORM *);
extern int set_form_page(FORM *, int);
extern int form_page(FORM *);
extern int scale_form(FORM *, int *, int *);
extern int set_form_init(FORM *, PTF_void);
extern PTF_void form_init(FORM *);
extern int set_form_term(FORM *, PTF_void);
extern PTF_void form_term(FORM *);
extern int set_field_init(FORM *, PTF_void);
extern PTF_void field_init(FORM *);
extern int set_field_term(FORM *, PTF_void);
extern PTF_void field_term(FORM *);
extern int post_form(FORM *);
extern int unpost_form(FORM *);
extern int pos_form_cursor(FORM *);
extern int form_driver(FORM *, int);
extern int set_form_userptr(FORM *, char *);
extern char * form_userptr(FORM *);
extern int set_form_opts(FORM *, OPTIONS);
extern OPTIONS form_opts(FORM *);
extern int form_opts_on(FORM *, OPTIONS);
extern int form_opts_off(FORM *, OPTIONS);
extern int data_ahead(FORM *);
extern int data_behind(FORM *);
#else
extern FIELDTYPE * new_fieldtype();
extern FIELDTYPE * link_fieldtype();
extern int free_fieldtype();
extern int set_fieldtype_arg();
extern int set_fieldtype_choice();
extern FIELD * new_field();
extern FIELD * dup_field();
extern FIELD * link_field();
extern int free_field();
extern int field_info();
extern int dynamic_field_info();
extern int set_max_field();
extern int move_field();
extern int set_field_type();
extern FIELDTYPE * field_type();
extern char * field_arg();
extern int set_new_page();
extern int new_page();
extern int set_field_just();
extern int field_just();
extern int set_field_fore();
extern chtype field_fore();
extern int set_field_back();
extern chtype field_back();
extern int set_field_pad();
extern int field_pad();
extern int set_field_buffer();
extern char * field_buffer();
extern int set_field_status();
extern int field_status();
extern int set_field_userptr();
extern char * field_userptr();
extern int set_field_opts();
extern OPTIONS field_opts();
extern int field_opts_on();
extern int field_opts_off();
extern int field_index();
extern FORM * new_form();
extern int free_form();
extern int set_form_fields();
extern FIELD ** form_fields();
extern int field_count();
extern int set_form_win();
extern WINDOW * form_win();
extern int set_form_sub();
extern WINDOW * form_sub();
extern int set_current_field();
extern FIELD * current_field();
extern int set_form_page();
extern int form_page();
extern int scale_form();
extern int set_form_init();
extern PTF_void form_init();
extern int set_form_term();
extern PTF_void form_term();
extern int set_field_init();
extern PTF_void field_init();
extern int set_field_term();
extern PTF_void field_term();
extern int post_form();
extern int unpost_form();
extern int pos_form_cursor();
extern int form_driver();
extern int set_form_userptr();
extern char * form_userptr();
extern int set_form_opts();
extern OPTIONS form_opts();
extern int form_opts_on();
extern int form_opts_off();
extern int data_ahead();
extern int data_behind();
#endif
#ifdef __cplusplus
}
#endif
#endif