[epiphany] Adding a new EphyWebView object



commit 682bbd135a3cde308e5c067892ad43e2dcecb44f
Author: Gustavo Noronha Silva <gns gnome org>
Date:   Wed Jan 14 11:31:17 2009 -0200

    Adding a new EphyWebView object
    
    This is an object inheriting from WebKitWebView, and will be used to
    house most of the functionality we move from EphyEmbed.
---
 embed/Makefile.am           |    6 +++-
 embed/ephy-web-view.c       |   57 +++++++++++++++++++++++++++++++++++++
 embed/ephy-web-view.h       |   65 +++++++++++++++++++++++++++++++++++++++++++
 embed/webkit/webkit-embed.c |    5 ++-
 src/Makefile.am             |    1 +
 5 files changed, 131 insertions(+), 3 deletions(-)

diff --git a/embed/Makefile.am b/embed/Makefile.am
index 03b3333..8164a9b 100644
--- a/embed/Makefile.am
+++ b/embed/Makefile.am
@@ -31,7 +31,9 @@ INST_H_FILES = \
 	ephy-embed-utils.h              \
 	ephy-history.h			\
 	ephy-password-manager.h		\
-	ephy-permission-manager.h
+	ephy-permission-manager.h   \
+	ephy-web-view.h
+
 
 BUILT_SOURCES = \
 	ephy-embed-type-builtins.c	\
@@ -56,6 +58,8 @@ libephyembed_la_SOURCES = \
 	ephy-history.c			\
 	ephy-password-manager.c		\
 	ephy-permission-manager.c	\
+	ephy-web-view.c
+
 	$(INST_H_FILES)			\
 	$(NOINST_H_FILES)
 
diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c
new file mode 100644
index 0000000..f5a1dbf
--- /dev/null
+++ b/embed/ephy-web-view.c
@@ -0,0 +1,57 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: f; c-basic-offset: 2 -*- */
+/*
+ *  Copyright © 2008 Gustavo Noronha Silva
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "config.h"
+
+#include "ephy-web-view.h"
+#include "ephy-debug.h"
+
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+static void     ephy_web_view_class_init   (EphyWebViewClass *klass);
+static void     ephy_web_view_init         (EphyWebView *gs);
+
+G_DEFINE_TYPE (EphyWebView, ephy_web_view, WEBKIT_TYPE_WEB_VIEW)
+
+static void
+ephy_web_view_class_init (EphyWebViewClass *klass)
+{
+}
+
+static void
+ephy_web_view_init (EphyWebView *web_view)
+{
+}
+
+/**
+ * ephy_web_view_new:
+ *
+ * Equivalent to g_object_new() but returns an #GtkWidget so you don't have
+ * to cast it when dealing with most code.
+ *
+ * Return value: the newly created #EphyWebView widget
+ **/
+GtkWidget *
+ephy_web_view_new (void)
+{
+  return GTK_WIDGET (g_object_new (EPHY_TYPE_WEB_VIEW, NULL));
+}
+
diff --git a/embed/ephy-web-view.h b/embed/ephy-web-view.h
new file mode 100644
index 0000000..3fe9623
--- /dev/null
+++ b/embed/ephy-web-view.h
@@ -0,0 +1,65 @@
+/*
+ *  Copyright © 2008 Gustavo Noronha Silva
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ *  $Id$
+ */
+
+#if !defined (__EPHY_EPIPHANY_H_INSIDE__) && !defined (EPIPHANY_COMPILATION)
+#error "Only <epiphany/epiphany.h> can be included directly."
+#endif
+
+#ifndef EPHY_WEB_VIEW_H
+#define EPHY_WEB_VIEW_H
+
+#include <glib-object.h>
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+G_BEGIN_DECLS
+
+#define EPHY_TYPE_WEB_VIEW         (ephy_web_view_get_type ())
+#define EPHY_WEB_VIEW(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), EPHY_TYPE_WEB_VIEW, EphyWebView))
+#define EPHY_WEB_VIEW_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), EPHY_TYPE_WEB_VIEW, EphyWebViewClass))
+#define EPHY_IS_WEB_VIEW(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), EPHY_TYPE_WEB_VIEW))
+#define EPHY_IS_WEB_VIEW_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), EPHY_TYPE_WEB_VIEW))
+#define EPHY_WEB_VIEW_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EPHY_TYPE_WEB_VIEW, EphyWebViewClass))
+
+typedef struct _EphyWebViewClass  EphyWebViewClass;
+typedef struct _EphyWebView    EphyWebView;
+typedef struct _EphyWebViewPrivate  EphyWebViewPrivate;
+
+struct _EphyWebView
+{
+  WebKitWebView parent;
+
+  /*< private >*/
+  EphyWebViewPrivate *priv;
+};
+
+struct _EphyWebViewClass
+{
+  WebKitWebViewClass parent_class;
+};
+
+GType        ephy_web_view_get_type            (void);
+
+GtkWidget   *ephy_web_view_new                 (void);
+
+G_END_DECLS
+
+#endif
diff --git a/embed/webkit/webkit-embed.c b/embed/webkit/webkit-embed.c
index 66da62f..778106a 100644
--- a/embed/webkit/webkit-embed.c
+++ b/embed/webkit/webkit-embed.c
@@ -41,6 +41,7 @@
 #include "ephy-embed-event.h"
 #include "ephy-embed-utils.h"
 #include "ephy-prefs.h"
+#include "ephy-web-view.h"
 
 #include <webkit/webkit.h>
 #include <errno.h>
@@ -352,7 +353,7 @@ webkit_embed_inspect_web_view_cb (WebKitWebInspector *inspector,
   GtkWidget *inspector_sw = GTK_WIDGET (data);
   GtkWidget *inspector_web_view;
 
-  inspector_web_view = webkit_web_view_new ();
+  inspector_web_view = ephy_web_view_new ();
   gtk_container_add (GTK_CONTAINER (inspector_sw), inspector_web_view);
 
   gtk_widget_show_all (gtk_widget_get_toplevel (inspector_sw));
@@ -726,7 +727,7 @@ webkit_embed_init (WebKitEmbed *embed)
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
                                   GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
 
-  web_view = WEBKIT_WEB_VIEW (webkit_web_view_new ());
+  web_view = WEBKIT_WEB_VIEW (ephy_web_view_new ());
   embed->priv->web_view = web_view;
   gtk_container_add (GTK_CONTAINER (sw), GTK_WIDGET (web_view));
   gtk_widget_show (sw);
diff --git a/src/Makefile.am b/src/Makefile.am
index 4116b9b..4485739 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -388,6 +388,7 @@ BINDING_HEADERS_SRCDIR_IN = \
 	src/ephy-shell.h				\
 	src/ephy-statusbar.h				\
 	src/ephy-toolbar.h				\
+	src/ephy-web-view.h				\
 	src/ephy-window.h
 
 BINDING_HEADERS_SRCDIR_IGNORE_IN = \



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]