aboutsummaryrefslogtreecommitdiffstats
path: root/embed/ephy-embed-factory.c
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@gnome.org>2003-11-22 19:32:34 +0800
committerMarco Pesenti Gritti <marco@src.gnome.org>2003-11-22 19:32:34 +0800
commita0e702ef16f5e52c9c366713934c07aa3dc2ce7a (patch)
treee9f71380e21af46897b068308cb1983d942f920e /embed/ephy-embed-factory.c
parentd961598c3761da5a673acef2d2f7abd33586f1c1 (diff)
downloadgsoc2013-epiphany-a0e702ef16f5e52c9c366713934c07aa3dc2ce7a.tar
gsoc2013-epiphany-a0e702ef16f5e52c9c366713934c07aa3dc2ce7a.tar.gz
gsoc2013-epiphany-a0e702ef16f5e52c9c366713934c07aa3dc2ce7a.tar.bz2
gsoc2013-epiphany-a0e702ef16f5e52c9c366713934c07aa3dc2ce7a.tar.lz
gsoc2013-epiphany-a0e702ef16f5e52c9c366713934c07aa3dc2ce7a.tar.xz
gsoc2013-epiphany-a0e702ef16f5e52c9c366713934c07aa3dc2ce7a.tar.zst
gsoc2013-epiphany-a0e702ef16f5e52c9c366713934c07aa3dc2ce7a.zip
Add a factory to create embed objects and use it. Deal with dependency of
2003-11-22 Marco Pesenti Gritti <marco@gnome.org> * doc/reference/Makefile.am: * embed/Makefile.am: * embed/ephy-embed-persist.c: (ephy_embed_persist_save): * embed/ephy-embed-persist.h: * embed/ephy-embed-popup-control.c: (save_url), (embed_popup_set_image_as_background_cmd): * embed/ephy-embed-shell.c: (ephy_embed_shell_get_embed_single): * embed/ephy-embed.c: * embed/ephy-embed.h: * embed/ephy-favicon-cache.c: (ephy_favicon_cache_download): * embed/mozilla/mozilla-embed-persist.cpp: * embed/mozilla/mozilla-embed-single.cpp: * embed/mozilla/mozilla-embed-single.h: * embed/mozilla/mozilla-embed.cpp: * src/Makefile.am: * src/ephy-nautilus-view.c: (ephy_nautilus_view_instance_init): * src/ephy-tab.c: (ephy_tab_init): * src/popup-commands.c: (save_property_url), (popup_cmd_set_image_as_background): * src/window-commands.c: (window_cmd_file_save_as), (save_temp_source): Add a factory to create embed objects and use it. Deal with dependency of mozilla-embed and mozilla-embed-persist on mozilla-embed-single internally.
Diffstat (limited to 'embed/ephy-embed-factory.c')
-rw-r--r--embed/ephy-embed-factory.c80
1 files changed, 80 insertions, 0 deletions
diff --git a/embed/ephy-embed-factory.c b/embed/ephy-embed-factory.c
new file mode 100644
index 000000000..74dfd4853
--- /dev/null
+++ b/embed/ephy-embed-factory.c
@@ -0,0 +1,80 @@
+/*
+ * 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
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+#include "ephy-embed-factory.h"
+#include "mozilla-embed.h"
+#include "mozilla-embed-persist.h"
+#include "mozilla-embed-single.h"
+
+#include <string.h>
+
+typedef enum
+{
+ EPHY_EMBED_OBJECT,
+ EPHY_EMBED_PERSIST_OBJECT,
+ EPHY_EMBED_SINGLE_OBJECT
+} EmbedObjectType;
+
+static EmbedObjectType
+type_from_id (const char *object_id)
+{
+ EmbedObjectType result = 0;
+
+ if (strcmp (object_id, "EphyEmbed") == 0)
+ {
+ result = EPHY_EMBED_OBJECT;
+ }
+ else if (strcmp (object_id, "EphyEmbedPersist") == 0)
+ {
+ result = EPHY_EMBED_PERSIST_OBJECT;
+ }
+ else if (strcmp (object_id, "EphyEmbedSingle") == 0)
+ {
+ result = EPHY_EMBED_SINGLE_OBJECT;
+ }
+ else
+ {
+ g_assert_not_reached ();
+ }
+
+ return result;
+}
+
+GObject *
+ephy_embed_factory_new_object (const char *object_id)
+{
+ GObject *object;
+
+ switch (type_from_id (object_id))
+ {
+ case EPHY_EMBED_OBJECT:
+ object = g_object_new (MOZILLA_TYPE_EMBED, NULL);
+ break;
+ case EPHY_EMBED_PERSIST_OBJECT:
+ object = g_object_new (MOZILLA_TYPE_EMBED_PERSIST, NULL);
+ break;
+ case EPHY_EMBED_SINGLE_OBJECT:
+ object = g_object_new (MOZILLA_TYPE_EMBED_SINGLE, NULL);
+ break;
+ default:
+ object = NULL;
+ }
+
+ return object;
+}