aboutsummaryrefslogtreecommitdiffstats
path: root/embed
diff options
context:
space:
mode:
Diffstat (limited to 'embed')
-rw-r--r--embed/ephy-embed.c8
-rw-r--r--embed/ephy-embed.h5
-rw-r--r--embed/mozilla/EphyWrapper.cpp18
-rw-r--r--embed/mozilla/EphyWrapper.h6
-rw-r--r--embed/mozilla/mozilla-embed.cpp29
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)