From: Xavier Claessens Date: Tue, 15 Jul 2008 16:56:34 +0000 (+0200) Subject: Add skelet of Adium theme using webkit. X-Git-Url: https://git.0d.be/?p=empathy.git;a=commitdiff_plain;h=4860e692b18ef271889633faa978d546221e8d7b Add skelet of Adium theme using webkit. --- diff --git a/configure.ac b/configure.ac index 8a85a752..9ff98e6e 100644 --- a/configure.ac +++ b/configure.ac @@ -155,6 +155,29 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Gettext package name]) AM_GLIB_GNU_GETTEXT +# ----------------------------------------------------------- +# Webkit +# ----------------------------------------------------------- +AC_ARG_ENABLE(webkit, + AS_HELP_STRING([--enable-webkit=@<:@no/yes/auto@:>@], + [build with webkit support]), , + enable_webkit=auto) + +if test "x$enable_webkit" != "xno"; then + PKG_CHECK_MODULES(WEBKIT, + [ + WebKitGtk + ], have_webkit="yes", have_webkit="no") +else + have_webkit=no +fi + +if test "x$enable_webkit" = "xyes" -a "x$have_webkit" != "xyes"; then + AC_MSG_ERROR([Couldn't find webkit dependencies.]) +fi + +AM_CONDITIONAL(HAVE_WEBKIT, test "x$have_webkit" = "xyes") + # ----------------------------------------------------------- # spellchecking checks: enchant and iso-codes # ----------------------------------------------------------- diff --git a/libempathy-gtk/Makefile.am b/libempathy-gtk/Makefile.am index c3d085fa..6e089d68 100644 --- a/libempathy-gtk/Makefile.am +++ b/libempathy-gtk/Makefile.am @@ -10,6 +10,7 @@ AM_CPPFLAGS = \ $(ENCHANT_CFLAGS) \ $(LIBCHAMPLAIN_CFLAGS) \ $(GEOCLUE_CFLAGS) \ + $(WEBKIT_CFLAGS) \ $(WARN_CFLAGS) \ $(DISABLE_DEPRECATED) @@ -55,6 +56,7 @@ libempathy_gtk_handwritten_source = \ empathy-smiley-manager.c \ empathy-spell.c \ empathy-status-preset-dialog.c \ + empathy-theme-adium.c \ empathy-theme-boxes.c \ empathy-theme-irc.c \ empathy-theme-manager.c \ @@ -73,6 +75,7 @@ libempathy_gtk_la_LIBADD = \ $(ENCHANT_LIBS) \ $(LIBCHAMPLAIN_LIBS) \ $(GEOCLUE_LIBS) \ + $(WEBKIT_LIBS) \ $(top_builddir)/libempathy/libempathy.la libempathy_gtk_la_LDFLAGS = \ @@ -113,6 +116,7 @@ libempathy_gtk_headers = \ empathy-smiley-manager.h \ empathy-spell.h \ empathy-status-preset-dialog.h \ + empathy-theme-adium.h \ empathy-theme-boxes.h \ empathy-theme-irc.h \ empathy-theme-manager.h \ diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c new file mode 100644 index 00000000..61733802 --- /dev/null +++ b/libempathy-gtk/empathy-theme-adium.c @@ -0,0 +1,157 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * Copyright (C) 2008 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Authors: Xavier Claessens + */ + +#include "config.h" + +#include "empathy-theme-adium.h" + +#define DEBUG_FLAG EMPATHY_DEBUG_CHAT +#include + +#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyThemeAdium) + +typedef struct { + guint unused; +} EmpathyThemeAdiumPriv; + +static void theme_adium_iface_init (EmpathyChatViewIface *iface); + +G_DEFINE_TYPE_WITH_CODE (EmpathyThemeAdium, empathy_theme_adium, + GTK_TYPE_TEXT_VIEW, + G_IMPLEMENT_INTERFACE (EMPATHY_TYPE_CHAT_VIEW, + theme_adium_iface_init)); + +static void +theme_adium_finalize (GObject *object) +{ + G_OBJECT_CLASS (empathy_theme_adium_parent_class)->finalize (object); +} + +static void +empathy_theme_adium_class_init (EmpathyThemeAdiumClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = theme_adium_finalize; + + g_type_class_add_private (object_class, sizeof (EmpathyThemeAdiumPriv)); +} + +static void +empathy_theme_adium_init (EmpathyThemeAdium *view) +{ + EmpathyThemeAdiumPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (view, + EMPATHY_TYPE_THEME_ADIUM, EmpathyThemeAdiumPriv); + + view->priv = priv; +} + +static void +theme_adium_scroll_down (EmpathyChatView *view) +{ +} + +static void +theme_adium_append_message (EmpathyChatView *view, + EmpathyMessage *msg) +{ +} + +static void +theme_adium_append_event (EmpathyChatView *view, + const gchar *str) +{ +} + +static void +theme_adium_scroll (EmpathyChatView *view, + gboolean allow_scrolling) +{ +} + +static gboolean +theme_adium_get_has_selection (EmpathyChatView *view) +{ + return FALSE; +} + +static void +theme_adium_clear (EmpathyChatView *view) +{ +} + +static gboolean +theme_adium_find_previous (EmpathyChatView *view, + const gchar *search_criteria, + gboolean new_search) +{ + return FALSE; +} + +static gboolean +theme_adium_find_next (EmpathyChatView *view, + const gchar *search_criteria, + gboolean new_search) +{ + return FALSE; +} + +static void +theme_adium_find_abilities (EmpathyChatView *view, + const gchar *search_criteria, + gboolean *can_do_previous, + gboolean *can_do_next) +{ +} + +static void +theme_adium_highlight (EmpathyChatView *view, + const gchar *text) +{ +} + +static void +theme_adium_copy_clipboard (EmpathyChatView *view) +{ +} + +static void +theme_adium_iface_init (EmpathyChatViewIface *iface) +{ + iface->append_message = theme_adium_append_message; + iface->append_event = theme_adium_append_event; + iface->scroll = theme_adium_scroll; + iface->scroll_down = theme_adium_scroll_down; + iface->get_has_selection = theme_adium_get_has_selection; + iface->clear = theme_adium_clear; + iface->find_previous = theme_adium_find_previous; + iface->find_next = theme_adium_find_next; + iface->find_abilities = theme_adium_find_abilities; + iface->highlight = theme_adium_highlight; + iface->copy_clipboard = theme_adium_copy_clipboard; +} + +EmpathyThemeAdium * +empathy_theme_adium_new (void) +{ + return g_object_new (EMPATHY_TYPE_THEME_ADIUM, NULL); +} + diff --git a/libempathy-gtk/empathy-theme-adium.h b/libempathy-gtk/empathy-theme-adium.h new file mode 100644 index 00000000..090f61c7 --- /dev/null +++ b/libempathy-gtk/empathy-theme-adium.h @@ -0,0 +1,55 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * Copyright (C) 2008 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Authors: Xavier Claessens + */ + +#ifndef __EMPATHY_THEME_ADIUM_H__ +#define __EMPATHY_THEME_ADIUM_H__ + +#include + +#include "empathy-chat-view.h" + +G_BEGIN_DECLS + +#define EMPATHY_TYPE_THEME_ADIUM (empathy_theme_adium_get_type ()) +#define EMPATHY_THEME_ADIUM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_THEME_ADIUM, EmpathyThemeAdium)) +#define EMPATHY_THEME_ADIUM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_THEME_ADIUM, EmpathyThemeAdiumClass)) +#define EMPATHY_IS_THEME_ADIUM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_THEME_ADIUM)) +#define EMPATHY_IS_THEME_ADIUM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_THEME_ADIUM)) +#define EMPATHY_THEME_ADIUM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_THEME_ADIUM, EmpathyThemeAdiumClass)) + +typedef struct _EmpathyThemeAdium EmpathyThemeAdium; +typedef struct _EmpathyThemeAdiumClass EmpathyThemeAdiumClass; + +struct _EmpathyThemeAdium { + WebKitWebView parent; + gpointer priv; +}; + +struct _EmpathyThemeAdiumClass { + WebKitWebViewClass parent_class; +}; + +GType empathy_theme_adium_get_type (void) G_GNUC_CONST; +EmpathyThemeAdium *empathy_theme_adium_new (void); + +G_END_DECLS + +#endif /* __EMPATHY_THEME_ADIUM_H__ */ diff --git a/libempathy-gtk/empathy-theme-manager.c b/libempathy-gtk/empathy-theme-manager.c index 0186b5eb..fe4e241e 100644 --- a/libempathy-gtk/empathy-theme-manager.c +++ b/libempathy-gtk/empathy-theme-manager.c @@ -35,6 +35,7 @@ #include "empathy-chat-view.h" #include "empathy-conf.h" #include "empathy-chat-text-view.h" +#include "empathy-theme-adium.h" #include "empathy-theme-boxes.h" #include "empathy-theme-irc.h" @@ -61,6 +62,7 @@ static const gchar *themes[] = { "simple", N_("Simple"), "clean", N_("Clean"), "blue", N_("Blue"), + "adium", N_("Adium"), NULL }; @@ -321,6 +323,9 @@ empathy_theme_manager_create_view (EmpathyThemeManager *manager) if (strcmp (priv->name, "classic") == 0) { return EMPATHY_CHAT_VIEW (theme_manager_create_irc_view (manager)); } + if (strcmp (priv->name, "adium") == 0) { + return EMPATHY_CHAT_VIEW (empathy_theme_adium_new ()); + } theme = theme_manager_create_boxes_view (manager); theme_manager_update_boxes_theme (manager, theme);