From 666d79684f69b4ca1bc775dff0f157747c5e6204 Mon Sep 17 00:00:00 2001 From: Xan Lopez Date: Fri, 12 Dec 2008 00:14:24 +0000 Subject: Enable Web Inspector. Bug #562446 svn path=/trunk/; revision=8634 --- embed/ephy-embed-prefs.h | 1 + embed/webkit/webkit-embed-prefs.c | 5 ++- embed/webkit/webkit-embed.c | 64 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 1 deletion(-) (limited to 'embed') diff --git a/embed/ephy-embed-prefs.h b/embed/ephy-embed-prefs.h index 0222c96cb..79c381816 100644 --- a/embed/ephy-embed-prefs.h +++ b/embed/ephy-embed-prefs.h @@ -17,6 +17,7 @@ #define CONF_IMAGE_ANIMATION_MODE "/apps/epiphany/web/image_animation" #define CONF_IMAGE_LOADING_MODE "/apps/epiphany/web/image_loading" #define CONF_DISPLAY_SMOOTHSCROLL "/apps/epiphany/web/smooth_scroll" +#define CONF_WEB_INSPECTOR_ENABLED "/apps/epiphany/web/inspector_enabled" /* These are defined gnome wide now */ #define CONF_NETWORK_PROXY_MODE "/system/proxy/mode" diff --git a/embed/webkit/webkit-embed-prefs.c b/embed/webkit/webkit-embed-prefs.c index 978be49fb..4ee0d0ea0 100644 --- a/embed/webkit/webkit-embed-prefs.c +++ b/embed/webkit/webkit-embed-prefs.c @@ -111,7 +111,10 @@ static const PrefData webkit_pref_entries[] = webkit_pref_callback_boolean }, { CONF_LANGUAGE_DEFAULT_ENCODING, "default-encoding", - webkit_pref_callback_string } + webkit_pref_callback_string }, + { CONF_WEB_INSPECTOR_ENABLED, + "enable-developer-extras", + webkit_pref_callback_boolean } }; static void diff --git a/embed/webkit/webkit-embed.c b/embed/webkit/webkit-embed.c index 198ff07f8..59bf4aeee 100644 --- a/embed/webkit/webkit-embed.c +++ b/embed/webkit/webkit-embed.c @@ -1,4 +1,5 @@ /* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */ +/* vim: set sw=2 ts=2 sts=2 et: */ /* * Copyright © 2007 Xan Lopez * Copyright © 2008 Jan Alonzo @@ -32,6 +33,7 @@ #include #include +#include #include "webkit-embed.h" #include "webkit-embed-prefs.h" @@ -59,6 +61,7 @@ struct WebKitEmbedPrivate WebKitEmbedLoadState load_state; char *loading_uri; EphyHistory *history; + GtkWidget *inspector_window; guint is_setting_zoom : 1; }; @@ -301,11 +304,45 @@ webkit_embed_class_init (WebKitEmbedClass *klass) g_type_class_add_private (object_class, sizeof(WebKitEmbedPrivate)); } +static WebKitWebView * +webkit_embed_inspect_web_view_cb (WebKitWebInspector *inspector, + WebKitWebView *web_view, + gpointer data) +{ + GtkWidget *inspector_sw = GTK_WIDGET (data); + GtkWidget *inspector_web_view; + + inspector_web_view = webkit_web_view_new (); + gtk_container_add (GTK_CONTAINER (inspector_sw), inspector_web_view); + + gtk_widget_show_all (gtk_widget_get_toplevel (inspector_sw)); + + return WEBKIT_WEB_VIEW (inspector_web_view); +} + +static gboolean +webkit_embed_inspect_show_cb (WebKitWebInspector *inspector, + GtkWidget *widget) +{ + gtk_widget_show (widget); + return TRUE; +} + +static gboolean +webkit_embed_inspect_close_cb (WebKitWebInspector *inspector, + GtkWidget *widget) +{ + gtk_widget_hide (widget); + return TRUE; +} + static void webkit_embed_init (WebKitEmbed *embed) { WebKitWebView *web_view; + WebKitWebInspector *inspector; GtkWidget *sw; + GtkWidget *inspector_sw; embed->priv = WEBKIT_EMBED_GET_PRIVATE (embed); @@ -334,6 +371,33 @@ webkit_embed_init (WebKitEmbed *embed) g_signal_connect (web_view, "notify::zoom-level", G_CALLBACK (webkit_web_view_zoom_change_cb), embed); + embed->priv->inspector_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + inspector = webkit_web_view_get_inspector (web_view); + + inspector_sw = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (inspector_sw), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_container_add (GTK_CONTAINER (embed->priv->inspector_window), + inspector_sw); + + gtk_window_set_title (GTK_WINDOW (embed->priv->inspector_window), + _("Web Inspector")); + gtk_window_set_default_size (GTK_WINDOW (embed->priv->inspector_window), + 400, 300); + + g_signal_connect (embed->priv->inspector_window, + "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), + NULL); + + g_object_connect (inspector, + "signal::inspect-web-view", G_CALLBACK (webkit_embed_inspect_web_view_cb), + inspector_sw, + "signal::show-window", G_CALLBACK (webkit_embed_inspect_show_cb), + embed->priv->inspector_window, + "signal::close-window", G_CALLBACK (webkit_embed_inspect_close_cb), + embed->priv->inspector_window, + NULL); + webkit_embed_prefs_add_embed (embed); embed->priv->history = EPHY_HISTORY (ephy_embed_shell_get_global_history (ephy_embed_shell_get_default ())); -- cgit v1.2.3