1 /* $Id: form.h,v 1.6 2003/09/22 21:02:18 ukai Exp $ */
2 /*
3  * HTML forms
4  */
5 #ifndef FORM_H
6 #define FORM_H
7 
8 #include "Str.h"
9 
10 #define FORM_UNKNOWN        -1
11 #define FORM_INPUT_TEXT     0
12 #define FORM_INPUT_PASSWORD 1
13 #define FORM_INPUT_CHECKBOX 2
14 #define FORM_INPUT_RADIO    3
15 #define FORM_INPUT_SUBMIT   4
16 #define FORM_INPUT_RESET    5
17 #define FORM_INPUT_HIDDEN   6
18 #define FORM_INPUT_IMAGE    7
19 #define FORM_SELECT         8
20 #define FORM_TEXTAREA       9
21 #define FORM_INPUT_BUTTON   10
22 #define FORM_INPUT_FILE     11
23 
24 #define FORM_I_TEXT_DEFAULT_SIZE 40
25 #define FORM_I_SELECT_DEFAULT_SIZE 40
26 #define FORM_I_TEXTAREA_DEFAULT_WIDTH 40
27 
28 #define FORM_METHOD_GET 0
29 #define FORM_METHOD_POST 1
30 #define FORM_METHOD_INTERNAL 2
31 #define FORM_METHOD_HEAD 3
32 
33 #define FORM_ENCTYPE_URLENCODED 0
34 #define FORM_ENCTYPE_MULTIPART  1
35 
36 #define MAX_TEXTAREA 10		/* max number of <textarea>..</textarea>
37 				 * within one document */
38 #ifdef MENU_SELECT
39 #define MAX_SELECT 10		/* max number of <select>..</select>
40 				 * within one document */
41 #endif				/* MENU_SELECT */
42 
43 typedef struct form_list {
44     struct form_item_list *item;
45     struct form_item_list *lastitem;
46     int method;
47     Str action;
48     char *target;
49     char *name;
50 #ifdef USE_M17N
51     wc_ces charset;
52 #endif
53     int enctype;
54     struct form_list *next;
55     int nitems;
56     char *body;
57     char *boundary;
58     unsigned long length;
59 } FormList;
60 
61 #ifdef MENU_SELECT
62 typedef struct form_select_option_item {
63     Str value;
64     Str label;
65     int checked;
66     struct form_select_option_item *next;
67 } FormSelectOptionItem;
68 
69 typedef struct form_select_option {
70     FormSelectOptionItem *first;
71     FormSelectOptionItem *last;
72 } FormSelectOption;
73 
74 void addSelectOption(FormSelectOption *fso, Str value, Str label, int chk);
75 void chooseSelectOption(struct form_item_list *fi, FormSelectOptionItem *item);
76 void updateSelectOption(struct form_item_list *fi, FormSelectOptionItem *item);
77 int formChooseOptionByMenu(struct form_item_list *fi, int x, int y);
78 #endif				/* MENU_SELECT */
79 
80 typedef struct form_item_list {
81     int type;
82     Str name;
83     Str value, init_value;
84     int checked, init_checked;
85     int accept;
86     int size;
87     int rows;
88     int maxlength;
89     int readonly;
90 #ifdef MENU_SELECT
91     FormSelectOptionItem *select_option;
92     Str label, init_label;
93     int selected, init_selected;
94 #endif				/* MENU_SELECT */
95     struct form_list *parent;
96     struct form_item_list *next;
97 } FormItemList;
98 
99 #endif				/* not FORM_H */
100