diff options
Diffstat (limited to 'embed')
-rw-r--r-- | embed/Makefile.am | 6 | ||||
-rw-r--r-- | embed/ephy-embed-factory.c | 80 | ||||
-rw-r--r-- | embed/ephy-embed-factory.h | 32 | ||||
-rw-r--r-- | embed/ephy-embed-persist.c | 8 | ||||
-rw-r--r-- | embed/ephy-embed-persist.h | 2 | ||||
-rw-r--r-- | embed/ephy-embed-popup-control.c | 7 | ||||
-rw-r--r-- | embed/ephy-embed-shell.c | 4 | ||||
-rw-r--r-- | embed/ephy-embed.c | 8 | ||||
-rw-r--r-- | embed/ephy-embed.h | 2 | ||||
-rw-r--r-- | embed/ephy-favicon-cache.c | 4 | ||||
-rw-r--r-- | embed/mozilla/mozilla-embed-persist.cpp | 14 | ||||
-rw-r--r-- | embed/mozilla/mozilla-embed-single.cpp | 6 | ||||
-rw-r--r-- | embed/mozilla/mozilla-embed-single.h | 2 | ||||
-rw-r--r-- | embed/mozilla/mozilla-embed.cpp | 17 |
14 files changed, 154 insertions, 38 deletions
diff --git a/embed/Makefile.am b/embed/Makefile.am index 511050639..e082e2c91 100644 --- a/embed/Makefile.am +++ b/embed/Makefile.am @@ -13,7 +13,7 @@ INCLUDES += -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED \ -DGNOME_DISABLE_DEPRECATED -DBONOBO_DISABLE_DEPRECATED $(WARN_CFLAGS) endif -noinst_LTLIBRARIES = libephyembed.la +noinst_LTLIBRARIES = libephyembed.la libephyembedfactory.la headerdir = $(prefix)/include/epiphany-@EPIPHANY_MAJOR@/epiphany header_DATA = $(INST_H_FILES) @@ -63,4 +63,6 @@ libephyembed_la_SOURCES = \ $(INST_H_FILES) \ $(NOINST_H_FILES) -libephyembed_la_LIBADD = $(top_builddir)/embed/mozilla/libephymozillaembed.la +libephyembedfactory_la_SOURCES = \ + ephy-embed-factory.c \ + ephy-embed-factory.h 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; +} diff --git a/embed/ephy-embed-factory.h b/embed/ephy-embed-factory.h new file mode 100644 index 000000000..c32c9cdff --- /dev/null +++ b/embed/ephy-embed-factory.h @@ -0,0 +1,32 @@ +/* + * 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. + * + */ + +#ifndef EPHY_EMBED_FACTORY_H +#define EPHY_EMBED_FACTORY_H + +#include <glib-object.h> +#include <glib.h> + +G_BEGIN_DECLS + +GObject *ephy_embed_factory_new_object (const char *object_id); + +G_END_DECLS + +#endif diff --git a/embed/ephy-embed-persist.c b/embed/ephy-embed-persist.c index 41224a38e..28cddbb2b 100644 --- a/embed/ephy-embed-persist.c +++ b/embed/ephy-embed-persist.c @@ -435,11 +435,3 @@ ephy_embed_persist_save (EphyEmbedPersist *persist) EphyEmbedPersistClass *klass = EPHY_EMBED_PERSIST_GET_CLASS (persist); return klass->save (persist); } - -EphyEmbedPersist * -ephy_embed_persist_new (EphyEmbed *embed) -{ - return EPHY_EMBED_PERSIST (g_object_new (MOZILLA_TYPE_EMBED_PERSIST, - "embed", embed, - NULL)); -} diff --git a/embed/ephy-embed-persist.h b/embed/ephy-embed-persist.h index 1eadb5940..403544973 100644 --- a/embed/ephy-embed-persist.h +++ b/embed/ephy-embed-persist.h @@ -73,8 +73,6 @@ struct EphyEmbedPersistClass GType ephy_embed_persist_get_type (void); -EphyEmbedPersist *ephy_embed_persist_new (EphyEmbed *embed); - gboolean ephy_embed_persist_save (EphyEmbedPersist *persist); void ephy_embed_persist_cancel (EphyEmbedPersist *persist); diff --git a/embed/ephy-embed-popup-control.c b/embed/ephy-embed-popup-control.c index 0fc39c767..157f13744 100644 --- a/embed/ephy-embed-popup-control.c +++ b/embed/ephy-embed-popup-control.c @@ -20,6 +20,7 @@ */ #include "ephy-embed-popup-control.h" +#include "ephy-embed-factory.h" #include "ephy-embed-persist.h" #include "ephy-bonobo-extensions.h" #include "ephy-prefs.h" @@ -488,7 +489,8 @@ save_url (EphyEmbedPopupControl *popup, widget = GTK_WIDGET (popup->priv->embed); window = gtk_widget_get_toplevel (widget); - persist = ephy_embed_persist_new (popup->priv->embed); + persist = EPHY_EMBED_PERSIST + (ephy_embed_factory_new_object ("EphyEmbedPersist")); ephy_embed_persist_set_fc_title (persist, title); ephy_embed_persist_set_fc_parent (persist,GTK_WINDOW (window)); @@ -593,7 +595,8 @@ embed_popup_set_image_as_background_cmd (BonoboUIComponent *uic, ephy_embed_event_get_property (info, "image", &value); location = g_value_get_string (value); - persist = ephy_embed_persist_new (popup->priv->embed); + persist = EPHY_EMBED_PERSIST + (ephy_embed_factory_new_object ("EphyEmbedPersist")); base = g_path_get_basename (location); dest = g_build_filename (ephy_dot_dir (), base, NULL); diff --git a/embed/ephy-embed-shell.c b/embed/ephy-embed-shell.c index e15aba244..9797751ea 100644 --- a/embed/ephy-embed-shell.c +++ b/embed/ephy-embed-shell.c @@ -21,6 +21,7 @@ #include <config.h> #include "ephy-embed-shell.h" +#include "ephy-embed-factory.h" #include "ephy-marshal.h" #include "ephy-file-helpers.h" #include "ephy-favicon-cache.h" @@ -209,7 +210,8 @@ ephy_embed_shell_get_embed_single (EphyEmbedShell *shell) if (!shell->priv->embed_single) { - shell->priv->embed_single = mozilla_embed_single_new (); + shell->priv->embed_single = EPHY_EMBED_SINGLE + (ephy_embed_factory_new_object ("EphyEmbedSingle")); } return shell->priv->embed_single; diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c index 78f137fe1..6028472fe 100644 --- a/embed/ephy-embed.c +++ b/embed/ephy-embed.c @@ -156,14 +156,6 @@ ephy_embed_base_init (gpointer g_class) } } -EphyEmbed * -ephy_embed_new (GObject *single) -{ - g_assert (MOZILLA_IS_EMBED_SINGLE (single)); - - return EPHY_EMBED (g_object_new (MOZILLA_TYPE_EMBED, NULL)); -} - void ephy_embed_load_url (EphyEmbed *embed, const char *url) diff --git a/embed/ephy-embed.h b/embed/ephy-embed.h index e3e577c95..8d16da850 100644 --- a/embed/ephy-embed.h +++ b/embed/ephy-embed.h @@ -243,8 +243,6 @@ struct EphyEmbedClass GType ephy_embed_get_type (void); -EphyEmbed *ephy_embed_new (GObject *single); - /* Base */ void ephy_embed_load_url (EphyEmbed *embed, const char *url); diff --git a/embed/ephy-favicon-cache.c b/embed/ephy-favicon-cache.c index 6c443773f..4da3ab2e8 100644 --- a/embed/ephy-favicon-cache.c +++ b/embed/ephy-favicon-cache.c @@ -25,6 +25,7 @@ #include <sys/stat.h> #include "ephy-embed-persist.h" +#include "ephy-embed-factory.h" #include "ephy-file-helpers.h" #include "ephy-favicon-cache.h" #include "ephy-node-common.h" @@ -354,7 +355,8 @@ ephy_favicon_cache_download (EphyFaviconCache *cache, dest = g_build_filename (cache->priv->directory, filename, NULL); - persist = ephy_embed_persist_new (NULL); + persist = EPHY_EMBED_PERSIST + (ephy_embed_factory_new_object ("EphyEmbedPersist")); ephy_embed_persist_set_dest (persist, dest); ephy_embed_persist_set_flags (persist, EMBED_PERSIST_NO_VIEW); diff --git a/embed/mozilla/mozilla-embed-persist.cpp b/embed/mozilla/mozilla-embed-persist.cpp index 166942139..2818bb3b4 100644 --- a/embed/mozilla/mozilla-embed-persist.cpp +++ b/embed/mozilla/mozilla-embed-persist.cpp @@ -24,6 +24,7 @@ #include "mozilla-embed-persist.h" #include "mozilla-embed.h" +#include "ephy-embed-shell.h" #include "EphyBrowser.h" #include "EphyHeaderSniffer.h" #include "MozDownload.h" @@ -85,7 +86,6 @@ static void mozilla_embed_persist_init (MozillaEmbedPersist *persist) { persist->priv = MOZILLA_EMBED_PERSIST_GET_PRIVATE (persist); - persist->priv->mPersist = do_CreateInstance (NS_WEBBROWSERPERSIST_CONTRACTID); } @@ -264,6 +264,17 @@ impl_save (EphyEmbedPersist *persist) return TRUE; } +static GObject * +mozilla_embed_persist_constructor (GType type, guint n_construct_properties, + GObjectConstructParam *construct_params) +{ + /* we depend on single because of mozilla initialization */ + ephy_embed_shell_get_embed_single (embed_shell); + + return parent_class->constructor (type, n_construct_properties, + construct_params); +} + static void mozilla_embed_persist_class_init (MozillaEmbedPersistClass *klass) { @@ -273,6 +284,7 @@ mozilla_embed_persist_class_init (MozillaEmbedPersistClass *klass) parent_class = (GObjectClass *) g_type_class_peek_parent (klass); object_class->finalize = mozilla_embed_persist_finalize; + object_class->constructor = mozilla_embed_persist_constructor; persist_class->save = impl_save; persist_class->cancel = impl_cancel; diff --git a/embed/mozilla/mozilla-embed-single.cpp b/embed/mozilla/mozilla-embed-single.cpp index a3a88c465..3df1860ad 100644 --- a/embed/mozilla/mozilla-embed-single.cpp +++ b/embed/mozilla/mozilla-embed-single.cpp @@ -173,12 +173,6 @@ mozilla_embed_single_get_type (void) return type; } -EphyEmbedSingle * -mozilla_embed_single_new (void) -{ - return EPHY_EMBED_SINGLE (g_object_new (MOZILLA_TYPE_EMBED_SINGLE, NULL)); -} - static gboolean mozilla_set_default_prefs (MozillaEmbedSingle *mes) { diff --git a/embed/mozilla/mozilla-embed-single.h b/embed/mozilla/mozilla-embed-single.h index 08732a837..3e47febeb 100644 --- a/embed/mozilla/mozilla-embed-single.h +++ b/embed/mozilla/mozilla-embed-single.h @@ -54,8 +54,6 @@ struct MozillaEmbedSingleClass GType mozilla_embed_single_get_type (void); -EphyEmbedSingle *mozilla_embed_single_new (void); - G_END_DECLS #endif diff --git a/embed/mozilla/mozilla-embed.cpp b/embed/mozilla/mozilla-embed.cpp index 497bc3753..1ebec735a 100644 --- a/embed/mozilla/mozilla-embed.cpp +++ b/embed/mozilla/mozilla-embed.cpp @@ -19,10 +19,9 @@ */ #include "mozilla-embed.h" - +#include "ephy-embed-shell.h" #include "ephy-command-manager.h" #include "ephy-string.h" -#include "ephy-embed.h" #include "ephy-debug.h" #include "MozillaPrivate.h" @@ -247,6 +246,17 @@ mozilla_embed_realize (GtkWidget *widget) } } +static GObject * +mozilla_embed_constructor (GType type, guint n_construct_properties, + GObjectConstructParam *construct_params) +{ + /* we depend on single because of mozilla initialization */ + ephy_embed_shell_get_embed_single (embed_shell); + + return parent_class->constructor (type, n_construct_properties, + construct_params); +} + static void mozilla_embed_class_init (MozillaEmbedClass *klass) { @@ -256,6 +266,8 @@ mozilla_embed_class_init (MozillaEmbedClass *klass) parent_class = (GObjectClass *) g_type_class_peek_parent (klass); + object_class->constructor = mozilla_embed_constructor; + gtk_object_class->destroy = mozilla_embed_destroy; widget_class->realize = mozilla_embed_realize; @@ -267,7 +279,6 @@ static void mozilla_embed_init (MozillaEmbed *embed) { embed->priv = MOZILLA_EMBED_GET_PRIVATE (embed); - embed->priv->browser = new EphyBrowser (); embed->priv->security_state = -1; |