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