diff options
Diffstat (limited to 'embed')
-rw-r--r-- | embed/ephy-embed.c | 8 | ||||
-rw-r--r-- | embed/ephy-embed.h | 5 | ||||
-rw-r--r-- | embed/mozilla/EphyWrapper.cpp | 18 | ||||
-rw-r--r-- | embed/mozilla/EphyWrapper.h | 6 | ||||
-rw-r--r-- | embed/mozilla/mozilla-embed.cpp | 29 |
5 files changed, 62 insertions, 4 deletions
diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c index 9b3b31289..145498665 100644 --- a/embed/ephy-embed.c +++ b/embed/ephy-embed.c @@ -575,6 +575,14 @@ ephy_embed_set_encoding (EphyEmbed *embed, } gresult +ephy_embed_get_encoding (EphyEmbed *embed, + char **encoding) +{ + EphyEmbedClass *klass = EPHY_EMBED_GET_CLASS (embed); + return klass->get_encoding (embed, encoding); +} + +gresult ephy_embed_print (EphyEmbed *embed, EmbedPrintInfo *info) { diff --git a/embed/ephy-embed.h b/embed/ephy-embed.h index 07daea595..5bcac1ae1 100644 --- a/embed/ephy-embed.h +++ b/embed/ephy-embed.h @@ -270,6 +270,8 @@ struct EphyEmbedClass gint pageNum); gresult (* set_encoding) (EphyEmbed *embed, const char *encoding); + gresult (* get_encoding) (EphyEmbed *embed, + char **encoding); }; GType ephy_embed_get_type (void); @@ -390,6 +392,9 @@ gresult ephy_embed_find_next (EphyEmbed *embed, gresult ephy_embed_set_encoding (EphyEmbed *embed, const char *encoding); +gresult ephy_embed_get_encoding (EphyEmbed *embed, + char **encoding); + gresult ephy_embed_activate (EphyEmbed *embed); /* Printing */ diff --git a/embed/mozilla/EphyWrapper.cpp b/embed/mozilla/EphyWrapper.cpp index 8bd7051d4..bd3fe3ab4 100644 --- a/embed/mozilla/EphyWrapper.cpp +++ b/embed/mozilla/EphyWrapper.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000 Marco Pesenti Gritti + * Copyright (C) 2000-2003 Marco Pesenti Gritti * * 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 @@ -14,6 +14,8 @@ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Id$ */ #include "EphyWrapper.h" @@ -749,3 +751,17 @@ nsresult EphyWrapper::PopTargetDocument () return NS_OK; } + +nsresult EphyWrapper::GetEncoding (nsCString &aEncoding) +{ + nsresult result; + + nsCOMPtr<nsIDOMDocument> domDoc; + result = GetDOMDocument (getter_AddRefs(domDoc)); + if (NS_FAILED (result) || !domDoc) return NS_ERROR_FAILURE; + + nsCOMPtr<nsIDocument> doc = do_QueryInterface(domDoc, &result); + if (NS_FAILED (result) || !doc) return NS_ERROR_FAILURE; + + return doc->GetDocumentCharacterSet (aEncoding); +} diff --git a/embed/mozilla/EphyWrapper.h b/embed/mozilla/EphyWrapper.h index 2f5131ee6..51e99ad66 100644 --- a/embed/mozilla/EphyWrapper.h +++ b/embed/mozilla/EphyWrapper.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000 Marco Pesenti Gritti + * Copyright (C) 2000-2003 Marco Pesenti Gritti * * 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 @@ -14,6 +14,8 @@ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Id$ */ #ifndef EPHY_WRAPPER_H @@ -76,6 +78,8 @@ public: nsresult ForceEncoding (const char *encoding); + nsresult GetEncoding (nsCString &aEncoding); + nsresult CanCutSelection(PRBool *result); nsresult CanCopySelection(PRBool *result); diff --git a/embed/mozilla/mozilla-embed.cpp b/embed/mozilla/mozilla-embed.cpp index 0ca866a05..ae1f7f7b1 100644 --- a/embed/mozilla/mozilla-embed.cpp +++ b/embed/mozilla/mozilla-embed.cpp @@ -147,7 +147,9 @@ impl_get_security_level (EphyEmbed *embed, static gresult impl_set_encoding (EphyEmbed *embed, const char *encoding); - +static gresult +impl_get_encoding (EphyEmbed *embed, + char **encoding); static gresult impl_print (EphyEmbed *embed, EmbedPrintInfo *info); @@ -378,6 +380,7 @@ ephy_embed_init (EphyEmbedClass *embed_class) embed_class->activate = impl_activate; embed_class->find_set_properties = impl_find_set_properties; embed_class->set_encoding = impl_set_encoding; + embed_class->get_encoding = impl_get_encoding; embed_class->select_all = impl_select_all; embed_class->print = impl_print; embed_class->print_preview_close = impl_print_preview_close; @@ -1173,7 +1176,7 @@ static gresult impl_set_encoding (EphyEmbed *embed, const char *encoding) { - nsresult result = NS_OK; + nsresult result; EphyWrapper *wrapper; wrapper = MOZILLA_EMBED(embed)->priv->wrapper; @@ -1188,6 +1191,28 @@ impl_set_encoding (EphyEmbed *embed, return NS_SUCCEEDED(result) ? G_OK : G_FAILED; } +static gresult +impl_get_encoding (EphyEmbed *embed, + char **encoding) +{ + nsresult result; + EphyWrapper *wrapper; + nsCAutoString enc; + + g_return_val_if_fail (encoding != NULL, G_FAILED); + *encoding = NULL; + + wrapper = MOZILLA_EMBED(embed)->priv->wrapper; + g_return_val_if_fail (wrapper != NULL, G_FAILED); + + result = wrapper->GetEncoding (enc); + if (NS_FAILED (result)) return G_FAILED; + + *encoding = g_strdup (enc.get()); + + return G_OK; +} + static void mozilla_embed_location_changed_cb (GtkMozEmbed *embed, MozillaEmbed *membed) |