Initial import of ephy (rev# 7126) from svn
[ephy-soc.git] / embed / ephy-embed-dialog.c
blob99bb16c54c5312b823a6c60a08f65f9b4adc8cbb
1 /*
2 * Copyright © 2000, 2001, 2002 Marco Pesenti Gritti
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2, or (at your option)
7 * any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 * $Id: ephy-embed-dialog.c 7012 2007-04-24 19:39:18Z diegoe $
21 #include "config.h"
23 #include "ephy-embed-dialog.h"
25 static void
26 ephy_embed_dialog_class_init (EphyEmbedDialogClass *klass);
27 static void
28 ephy_embed_dialog_init (EphyEmbedDialog *window);
29 static void
30 ephy_embed_dialog_finalize (GObject *object);
31 static void
32 ephy_embed_dialog_get_property (GObject *object,
33 guint prop_id,
34 GValue *value,
35 GParamSpec *pspec);
36 static void
37 ephy_embed_dialog_set_property (GObject *object,
38 guint prop_id,
39 const GValue *value,
40 GParamSpec *pspec);
42 enum
44 PROP_0,
45 PROP_EPHY_EMBED
48 #define EPHY_EMBED_DIALOG_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), EPHY_TYPE_EMBED_DIALOG, EphyEmbedDialogPrivate))
50 struct _EphyEmbedDialogPrivate
52 EphyEmbed *embed;
55 static GObjectClass *parent_class = NULL;
57 GType
58 ephy_embed_dialog_get_type (void)
60 static GType type = 0;
62 if (G_UNLIKELY (type == 0))
64 const GTypeInfo our_info =
66 sizeof (EphyEmbedDialogClass),
67 NULL, /* base_init */
68 NULL, /* base_finalize */
69 (GClassInitFunc) ephy_embed_dialog_class_init,
70 NULL,
71 NULL, /* class_data */
72 sizeof (EphyEmbedDialog),
73 0, /* n_preallocs */
74 (GInstanceInitFunc) ephy_embed_dialog_init
77 type = g_type_register_static (EPHY_TYPE_DIALOG,
78 "EphyEmbedDialog",
79 &our_info, 0);
82 return type;
85 static void
86 ephy_embed_dialog_class_init (EphyEmbedDialogClass *klass)
88 GObjectClass *object_class = G_OBJECT_CLASS (klass);
90 parent_class = g_type_class_peek_parent (klass);
92 object_class->finalize = ephy_embed_dialog_finalize;
93 object_class->set_property = ephy_embed_dialog_set_property;
94 object_class->get_property = ephy_embed_dialog_get_property;
96 g_object_class_install_property (object_class,
97 PROP_EPHY_EMBED,
98 g_param_spec_object ("embed",
99 "Embed",
100 "The dialog's embed",
101 G_TYPE_OBJECT,
102 G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
104 g_type_class_add_private (object_class, sizeof(EphyEmbedDialogPrivate));
107 static void
108 ephy_embed_dialog_init (EphyEmbedDialog *dialog)
110 dialog->priv = EPHY_EMBED_DIALOG_GET_PRIVATE (dialog);
113 static void
114 unset_embed (EphyEmbedDialog *dialog)
116 if (dialog->priv->embed != NULL)
118 EphyEmbed **embedptr;
119 embedptr = &dialog->priv->embed;
120 g_object_remove_weak_pointer (G_OBJECT (dialog->priv->embed),
121 (gpointer *) embedptr);
125 static void
126 ephy_embed_dialog_finalize (GObject *object)
128 EphyEmbedDialog *dialog = EPHY_EMBED_DIALOG (object);
130 unset_embed (dialog);
132 G_OBJECT_CLASS (parent_class)->finalize (object);
135 static void
136 ephy_embed_dialog_set_property (GObject *object,
137 guint prop_id,
138 const GValue *value,
139 GParamSpec *pspec)
141 EphyEmbedDialog *d = EPHY_EMBED_DIALOG (object);
143 switch (prop_id)
145 case PROP_EPHY_EMBED:
146 ephy_embed_dialog_set_embed (d, g_value_get_object (value));
147 break;
151 static void
152 ephy_embed_dialog_get_property (GObject *object,
153 guint prop_id,
154 GValue *value,
155 GParamSpec *pspec)
157 EphyEmbedDialog *d = EPHY_EMBED_DIALOG (object);
159 switch (prop_id)
161 case PROP_EPHY_EMBED:
162 g_value_set_object (value, d->priv->embed);
163 break;
167 EphyEmbedDialog *
168 ephy_embed_dialog_new (EphyEmbed *embed)
170 return EPHY_EMBED_DIALOG (g_object_new (EPHY_TYPE_EMBED_DIALOG,
171 "embed", embed,
172 NULL));
175 EphyEmbedDialog *
176 ephy_embed_dialog_new_with_parent (GtkWidget *parent_window,
177 EphyEmbed *embed)
179 return EPHY_EMBED_DIALOG (g_object_new
180 (EPHY_TYPE_EMBED_DIALOG,
181 "parent-window", parent_window,
182 "embed", embed,
183 NULL));
186 void
187 ephy_embed_dialog_set_embed (EphyEmbedDialog *dialog,
188 EphyEmbed *embed)
190 EphyEmbed **embedptr;
192 unset_embed (dialog);
193 dialog->priv->embed = embed;
195 embedptr = &dialog->priv->embed;
196 g_object_add_weak_pointer (G_OBJECT (dialog->priv->embed),
197 (gpointer *) embedptr);
198 g_object_notify (G_OBJECT (dialog), "embed");
201 EphyEmbed *
202 ephy_embed_dialog_get_embed (EphyEmbedDialog *dialog)
204 return dialog->priv->embed;