/* * $LynxId: HTForms.h,v 1.33 2012/02/12 22:30:53 tom Exp $ */ #ifndef HTFORMS_H #define HTFORMS_H #ifndef LYSTRUCTS_H #include #endif /* LYSTRUCTS_H */ #ifdef __cplusplus extern "C" { #endif /* change_form_link() calls change_form_link_ex() with all its args and FALSE * as last arg */ extern int change_form_link(int cur, DocInfo *newdoc, BOOLEAN *refresh_screen, int use_last_tfpos, int immediate_submit); extern int change_form_link_ex(int cur, DocInfo *newdoc, BOOLEAN *refresh_screen, int use_last_tfpos, int immediate_submit, int draw_only); /* InputFieldData is used to pass the info between HTML.c and Gridtext.c in * HText_beginInput() */ typedef struct _InputFieldData { const char *accept; const char *align; int checked; const char *iclass; int disabled; int readonly; const char *error; const char *height; const char *id; const char *lang; const char *max; const char *maxlength; const char *md; const char *min; const char *name; int size; const char *src; const char *type; char *value; const char *width; int name_cs; /* charset handle for name */ int value_cs; /* charset handle for value */ const char *accept_cs; } InputFieldData; /* The OptionType structure is for a linked list of option entries */ typedef struct _OptionType { char *name; /* the name of the entry */ char *cp_submit_value; /* the value to submit */ int value_cs; /* charset value is in */ struct _OptionType *next; /* the next entry */ } OptionType; /* * The FormInfo structure is used to contain the form field data within each * anchor. A pointer to this structure is in the TextAnchor struct. */ typedef struct _FormInfo { char *name; /* the name of the link */ int number; /* which form is the link within */ int type; /* string, int, etc. */ char *value; /* user entered string data */ char *orig_value; /* the original value */ int size; /* width on the screen */ size_t maxlength; /* max width of data */ int group; /* a group associated with the link * this is used for select's */ int num_value; /* value of the numerical fields */ int hrange; /* high numerical range */ int lrange; /* low numerical range */ OptionType *select_list; /* array of option choices */ char *submit_action; /* form's action */ int submit_method; /* form's method */ char *submit_enctype; /* form's entype */ char *submit_title; /* form's title */ BOOL no_cache; /* Always resubmit? */ char *cp_submit_value; /* option value to submit */ char *orig_submit_value; /* original submit value */ int size_l; /* The length of the option list */ int disabled; /* If YES, can't change values */ int readonly; /* If YES, can't change values */ int name_cs; int value_cs; char *accept_cs; } FormInfo; #define FormIsReadonly(form) ((form) && ((form)->disabled || (form)->readonly)) /* * As structure for info associated with a form. There is some redundancy * here, this shouldn't waste too much memory since the total number of forms * (as opposed to form fields) per doc is expected to be rather small. More * things which are per form rather than per field could be moved here. - kw */ typedef struct _PerFormInfo { int number; /* form number, see GridText.c */ int disabled; /* If YES, can't change values */ FormInfo data; struct _PerFormInfo *next; /* pointer to next form in doc */ int nfields; /* number of fields */ FormInfo *first_field; FormInfo *last_field; /* pointer to last field in form */ char *accept_cs; char *thisacceptcs; /* used during submit */ } PerFormInfo; #define HYPERTEXT_ANCHOR 1 #define INPUT_ANCHOR 2 /* forms mode input fields */ #define INTERNAL_LINK_ANCHOR 5 /* 1+4, can be used as bitflag... - kw */ typedef enum { F_UNKNOWN = 0, F_TEXT_TYPE, F_PASSWORD_TYPE, F_CHECKBOX_TYPE, F_RADIO_TYPE, F_SUBMIT_TYPE, F_RESET_TYPE, F_OPTION_LIST_TYPE, F_HIDDEN_TYPE, F_TEXTAREA_TYPE, F_RANGE_TYPE, F_FILE_TYPE, F_TEXT_SUBMIT_TYPE, F_IMAGE_SUBMIT_TYPE, F_KEYGEN_TYPE, F_BUTTON_TYPE } FieldTypes; #define F_SUBMITLIKE(type) ((type) == F_SUBMIT_TYPE || \ (type) == F_IMAGE_SUBMIT_TYPE || \ (type) == F_TEXT_SUBMIT_TYPE) #define F_TEXTLIKE(type) ((type) == F_TEXT_TYPE || \ (type) == F_TEXT_SUBMIT_TYPE || \ (type) == F_PASSWORD_TYPE || \ (type) == F_FILE_TYPE || \ (type) == F_TEXTAREA_TYPE) #define WWW_FORM_LINK_TYPE 1 #define WWW_LINK_TYPE 2 #define WWW_INTERN_LINK_TYPE 6 /* can be used as a bitflag... - kw */ #define LINK_LINE_FOUND 8 /* used in follow_link_number, others - kw */ #define LINK_DO_ARROWUP 16 /* returned by HTGetLinkOrFieldStart - kw */ /* #define different lynx modes */ #define NORMAL_LYNX_MODE 1 #define FORMS_LYNX_MODE 2 #define FIRST_ORDER 1 #define MIDDLE_ORDER 2 #define LAST_ORDER 3 /* in LYForms.c */ extern void show_formlink_statusline(const FormInfo * form, int for_what); #ifdef __cplusplus } #endif #endif /* HTFORMS_H */