2008-02-18 Alp Toker <alp@atoker.com>
[WebKit-https.git] / WebKit / gtk / webkit / webkitwebview.h
1 /*
2  * Copyright (C) 2007 Holger Hans Peter Freyther
3  * Copyright (C) 2007, 2008 Alp Toker <alp@atoker.com>
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Library General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Library General Public License for more details.
14  *
15  * You should have received a copy of the GNU Library General Public License
16  * along with this library; see the file COPYING.LIB.  If not, write to
17  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  * Boston, MA 02110-1301, USA.
19  */
20
21 #ifndef WEBKIT_WEB_VIEW_H
22 #define WEBKIT_WEB_VIEW_H
23
24 #include <gtk/gtk.h>
25 #include <JavaScriptCore/JSBase.h>
26
27 #include <webkit/webkitdefines.h>
28 #include <webkit/webkitwebbackforwardlist.h>
29 #include <webkit/webkitwebhistoryitem.h>
30 #include <webkit/webkitwebsettings.h>
31
32 G_BEGIN_DECLS
33
34 #define WEBKIT_TYPE_WEB_VIEW            (webkit_web_view_get_type())
35 #define WEBKIT_WEB_VIEW(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_VIEW, WebKitWebView))
36 #define WEBKIT_WEB_VIEW_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass),  WEBKIT_TYPE_WEB_VIEW, WebKitWebViewClass))
37 #define WEBKIT_IS_WEB_VIEW(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_VIEW))
38 #define WEBKIT_IS_WEB_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),  WEBKIT_TYPE_WEB_VIEW))
39 #define WEBKIT_WEB_VIEW_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj),  WEBKIT_TYPE_WEB_VIEW, WebKitWebViewClass))
40
41 typedef struct _WebKitWebViewPrivate WebKitWebViewPrivate;
42
43 typedef enum {
44     WEBKIT_NAVIGATION_RESPONSE_ACCEPT,
45     WEBKIT_NAVIGATION_RESPONSE_IGNORE,
46     WEBKIT_NAVIGATION_RESPONSE_DOWNLOAD
47 } WebKitNavigationResponse;
48
49 typedef enum
50 {
51     WEBKIT_WEB_VIEW_TARGET_INFO_HTML = - 1,
52     WEBKIT_WEB_VIEW_TARGET_INFO_TEXT = - 2
53 } WebKitWebViewTargetInfo;
54
55 struct _WebKitWebView {
56     GtkContainer parent_instance;
57
58     WebKitWebViewPrivate* priv;
59 };
60
61 struct _WebKitWebViewClass {
62     GtkContainerClass parent_class;
63
64     /*
65      * default handler/virtual methods
66      * DISCUSS: create_web_view needs a request and should we make this a signal with default handler? this would
67      * require someone doing a g_signal_stop_emission_by_name
68      * WebUIDelegate has nothing for create_frame, WebPolicyDelegate as well...
69      */
70     WebKitWebView*  (*create_web_view)  (WebKitWebView* web_view);
71
72     /*
73      * TODO: FIXME: Create something like WebPolicyDecisionListener_Protocol instead
74      */
75     WebKitNavigationResponse (*navigation_requested) (WebKitWebView* web_view, WebKitWebFrame* frame, WebKitNetworkRequest* request);
76
77     void (*window_object_cleared) (WebKitWebView* web_view, WebKitWebFrame* frame, JSGlobalContextRef context, JSObjectRef window_object);
78     gchar*   (*choose_file) (WebKitWebView* web_view, WebKitWebFrame* frame, const gchar* old_file);
79     gboolean (*script_alert) (WebKitWebView* web_view, WebKitWebFrame* frame, const gchar* alert_message);
80     gboolean (*script_confirm) (WebKitWebView* web_view, WebKitWebFrame* frame, const gchar* confirm_message, gboolean* did_confirm);
81     gboolean (*script_prompt) (WebKitWebView* web_view, WebKitWebFrame* frame, const gchar* message, const gchar* default_value, gchar** value);
82     gboolean (*console_message) (WebKitWebView* web_view, const gchar* message, unsigned int line_number, const gchar* source_id);
83     void (*select_all) (WebKitWebView* web_view);
84     void (*cut_clipboard) (WebKitWebView* web_view);
85     void (*copy_clipboard) (WebKitWebView* web_view);
86     void (*paste_clipboard) (WebKitWebView* web_view);
87
88     /*
89      * internal
90      */
91     void   (*set_scroll_adjustments) (WebKitWebView*, GtkAdjustment*, GtkAdjustment*);
92 };
93
94 WEBKIT_API GType
95 webkit_web_view_get_type (void);
96
97 WEBKIT_API GtkWidget*
98 webkit_web_view_new (void);
99
100 WEBKIT_API void
101 webkit_web_view_set_maintains_back_forward_list (WebKitWebView* web_view, gboolean flag);
102
103 WEBKIT_API WebKitWebBackForwardList*
104 webkit_web_view_get_back_forward_list (WebKitWebView* web_view);
105
106 WEBKIT_API gboolean
107 webkit_web_view_go_to_back_forward_item (WebKitWebView *web_view, WebKitWebHistoryItem* item);
108
109 WEBKIT_API gboolean
110 webkit_web_view_can_go_back (WebKitWebView* web_view);
111
112 WEBKIT_API gboolean
113 webkit_web_view_can_go_back_or_forward (WebKitWebView* web_view, gint steps);
114
115 WEBKIT_API gboolean
116 webkit_web_view_can_go_forward (WebKitWebView* web_view);
117
118 WEBKIT_API void
119 webkit_web_view_go_back (WebKitWebView* web_view);
120
121 WEBKIT_API void
122 webkit_web_view_go_back_or_forward (WebKitWebView* web_view, gint steps);
123
124 WEBKIT_API void
125 webkit_web_view_go_forward (WebKitWebView* web_view);
126
127 WEBKIT_API void
128 webkit_web_view_stop_loading (WebKitWebView* web_view);
129
130 WEBKIT_API void
131 webkit_web_view_open (WebKitWebView* web_view, const gchar* uri);
132
133 WEBKIT_API void
134 webkit_web_view_reload (WebKitWebView *web_view);
135
136 WEBKIT_API void
137 webkit_web_view_load_string (WebKitWebView* web_view, const gchar* content, const gchar* content_mime_type, const gchar* content_encoding, const gchar* base_uri);
138
139 WEBKIT_API void
140 webkit_web_view_load_html_string (WebKitWebView* web_view, const gchar* content, const gchar* base_uri);
141
142 WEBKIT_API gboolean
143 webkit_web_view_search_text (WebKitWebView* web_view, const gchar* string, gboolean case_sensitive, gboolean forward, gboolean wrap);
144
145 WEBKIT_API guint
146 webkit_web_view_mark_text_matches (WebKitWebView* web_view, const gchar* string, gboolean case_sensitive, guint limit);
147
148 WEBKIT_API void
149 webkit_web_view_set_highlight_text_matches (WebKitWebView* web_view, gboolean highlight);
150
151 WEBKIT_API void
152 webkit_web_view_unmark_text_matches (WebKitWebView* web_view);
153
154 WEBKIT_API WebKitWebFrame*
155 webkit_web_view_get_main_frame (WebKitWebView* web_view);
156
157 WEBKIT_API WebKitWebFrame*
158 webkit_web_view_get_focused_frame (WebKitWebView* web_view);
159
160 WEBKIT_API void
161 webkit_web_view_execute_script (WebKitWebView* web_view, const gchar* script);
162
163 WEBKIT_API gboolean
164 webkit_web_view_can_cut_clipboard (WebKitWebView* web_view);
165
166 WEBKIT_API gboolean
167 webkit_web_view_can_copy_clipboard (WebKitWebView* web_view);
168
169 WEBKIT_API gboolean
170 webkit_web_view_can_paste_clipboard (WebKitWebView* web_view);
171
172 WEBKIT_API void
173 webkit_web_view_cut_clipboard (WebKitWebView* web_view);
174
175 WEBKIT_API void
176 webkit_web_view_copy_clipboard (WebKitWebView* web_view);
177
178 WEBKIT_API void
179 webkit_web_view_paste_clipboard (WebKitWebView* web_view);
180
181 WEBKIT_API void
182 webkit_web_view_delete_selection (WebKitWebView* web_view);
183
184 WEBKIT_API gboolean
185 webkit_web_view_has_selection (WebKitWebView* web_view);
186
187 WEBKIT_API void
188 webkit_web_view_select_all (WebKitWebView* web_view);
189
190 WEBKIT_API gboolean
191 webkit_web_view_get_editable (WebKitWebView* web_view);
192
193 WEBKIT_API void
194 webkit_web_view_set_editable (WebKitWebView* web_view, gboolean flag);
195
196 WEBKIT_API GtkTargetList*
197 webkit_web_view_get_copy_target_list (WebKitWebView* web_view);
198
199 WEBKIT_API GtkTargetList*
200 webkit_web_view_get_paste_target_list (WebKitWebView* web_view);
201
202 WEBKIT_API void
203 webkit_web_view_set_settings (WebKitWebView* web_view, WebKitWebSettings* settings);
204
205 WEBKIT_API WebKitWebSettings*
206 webkit_web_view_get_settings (WebKitWebView* web_view);
207
208 WEBKIT_OBSOLETE_API gboolean
209 webkit_web_view_can_go_backward (WebKitWebView* web_view);
210
211 WEBKIT_OBSOLETE_API void
212 webkit_web_view_go_backward (WebKitWebView* web_view);
213
214 G_END_DECLS
215
216 #endif