1 /***************************************************************************/
2 /*    This code is part of WWW grabber called pavuk                        */
3 /*    Copyright (c) 1997 - 2001 Stefan Ondrejicka                          */
4 /*    Distributed under GPL 2 or later                                     */
5 /***************************************************************************/
6 
7 #ifndef _form_h_
8 #define _form_h_
9 
10 #include "dllist.h"
11 
12 typedef enum
13 {
14   FORM_T_TEXT,
15   FORM_T_PASSWORD,
16   FORM_T_CHECKBOX,
17   FORM_T_RADIO,
18   FORM_T_SUBMIT,
19   FORM_T_RESET,
20   FORM_T_FILE,
21   FORM_T_HIDDEN,
22   FORM_T_IMAGE,
23   FORM_T_BUTTON,
24   FORM_T_SELECT,
25   FORM_T_OPTION,
26   FORM_T_OPTGROUP,
27   FORM_T_TEXTAREA,
28   FORM_T_NONFORM,
29   FORM_T_UNKNOWN
30 } form_field_types;
31 
32 typedef struct
33 {
34   form_method method;
35   form_encoding encoding;
36   char *action;
37   dllist *infos;
38   char *text;
39   void *parent_url;
40 } form_info;
41 
42 typedef struct
43 {
44   form_field_types type;
45   char *name;
46   char *value;
47 } form_field;
48 
49 extern dllist *form_parse_urlencoded_query(char *);
50 extern char *form_decode_urlencoded_str(char *, int);
51 extern char *form_encode_urlencoded_str(char *);
52 extern char *form_encode_urlencoded(dllist *);
53 extern char *form_encode_multipart_boundary(void);
54 extern char *form_encode_multipart(dllist *, char *, int *);
55 extern char *form_encode_query(form_info *, int *);
56 
57 extern form_field *form_field_new(char *, char *);
58 extern form_field *form_field_duplicate(form_field *);
59 extern int form_field_compare(dllist_t, dllist_t);
60 extern int form_field_compare_name(dllist_t, dllist_t);
61 
62 extern form_info *form_info_dup(form_info *);
63 
64 
65 #ifdef GTK_FACE
66 #include <gtk/gtkwidget.h>
67 #endif
68 
69 typedef struct
70 {
71   form_field_types type;
72   char *name;
73   char *default_value;
74   char *text;
75   int width;
76   int height;
77   int maxlen;
78   int readonly;
79   int checked;
80   int disabled;
81   int multiple;
82   int selected;
83   dllist *infos;
84 #ifdef GTK_FACE
85   GtkWidget *widget;
86   GSList *rg;
87   int idx;
88 #endif
89 } form_field_info;
90 
91 extern char *form_get_text(int, char *, int, int *);
92 extern void form_free(form_info *);
93 extern form_info *form_parse(char *, int);
94 extern void form_get_default_successful(char *, dllist *, dllist **);
95 
96 #ifdef GTK_FACE
97 extern void form_edit_dlg(void);
98 extern void form_edit_dlg_clear(void);
99 #endif
100 
101 #endif
102