about summary refs log tree commit diff stats
path: root/src/HTForms.h
blob: 75587213726152d1edd402c9b2ff5f911f9dd341 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#ifndef HTFORMS_H
#define HTFORMS_H

#ifndef LYSTRUCTS_H
#include <LYStructs.h>
#endif /* LYSTRUCTS_H */

/* in LYForms.c */

/* 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,
			    BOOLEAN use_last_tfpos,
			    BOOLEAN immediate_submit);

extern int change_form_link_ex(int cur,
			       DocInfo *newdoc,
			       BOOLEAN *refresh_screen,
			       BOOLEAN use_last_tfpos,
			       BOOLEAN immediate_submit,
			       BOOLEAN 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 *class;
    int disabled;
    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;
    const char *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 */
    unsigned 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 name_cs;
    int value_cs;
    char *accept_cs;
} FormInfo;

/*
 * 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 */
    /* except for the last two, the following fields aren't actually used.. */
    int disabled;		/* If YES, can't change values */
    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 */

#define F_TEXT_TYPE	   1
#define F_PASSWORD_TYPE    2
#define F_CHECKBOX_TYPE    3
#define F_RADIO_TYPE	   4
#define F_SUBMIT_TYPE	   5
#define F_RESET_TYPE	   6
#define F_OPTION_LIST_TYPE 7
#define F_HIDDEN_TYPE      8
#define F_TEXTAREA_TYPE    9
#define F_RANGE_TYPE      10
#define F_FILE_TYPE       11
#define F_TEXT_SUBMIT_TYPE 12
#define F_IMAGE_SUBMIT_TYPE 13
#define F_KEYGEN_TYPE     14

#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);

#endif /* HTFORMS_H */