Mercurial > pidgin.yaz
diff libpurple/theme-loader.c @ 23461:fecc8e2612c4
Fixed some things needed for proper gobfication (init/finalize/etc)
| author | Justin Rodriguez <ffdragon@soc.pidgin.im> |
|---|---|
| date | Mon, 16 Jun 2008 19:48:56 +0000 |
| parents | c1cabd5eb625 |
| children | 51bdbab30704 |
line wrap: on
line diff
--- a/libpurple/theme-loader.c Fri Jun 13 21:33:17 2008 +0000 +++ b/libpurple/theme-loader.c Mon Jun 16 19:48:56 2008 +0000 @@ -26,7 +26,7 @@ #define PURPLE_THEME_LOADER_GET_PRIVATE(PurpleThemeLoader) \ ((PurpleThemeLoaderPrivate *) ((PurpleThemeLoader)->priv)) - +void purple_theme_loader_set_type_string(PurpleThemeLoader *loader, const gchar *type); /****************************************************************************** * Structs *****************************************************************************/ @@ -38,6 +38,8 @@ * Globals *****************************************************************************/ +static GObjectClass *parent_class = NULL; + /****************************************************************************** * Enums *****************************************************************************/ @@ -68,16 +70,43 @@ } static void +purple_theme_loader_set_property(GObject *obj, guint param_id, const GValue *value, + GParamSpec *psec) +{ + PurpleThemeLoader *loader = PURPLE_THEME_LOADER(obj); + + switch(param_id) { + case PROP_TYPE: + purple_theme_loader_set_type_string(loader, g_value_get_string(value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec); + break; + } +} + +static void +purple_theme_loader_finalize(GObject *obj) +{ + PurpleThemeLoader *loader = PURPLE_THEME_LOADER(obj); + PurpleThemeLoaderPrivate *priv = PURPLE_THEME_LOADER_GET_PRIVATE(loader); + + g_free(priv->type); + + parent_class->finalize (obj); +} + +static void purple_theme_loader_class_init (PurpleThemeLoaderClass *klass) { GObjectClass *obj_class = G_OBJECT_CLASS(klass); GParamSpec *pspec; - /* 2.4 - * g_type_class_add_private(klass, sizeof(PurpleThemePrivate)); */ - + parent_class = g_type_class_peek_parent (klass); obj_class->get_property = purple_theme_loader_get_property; + obj_class->set_property = purple_theme_loader_set_property; + obj_class->finalize = purple_theme_loader_finalize; /* TYPE STRING (read only) */ pspec = g_param_spec_string(PROP_TYPE_S, "Type", @@ -129,8 +158,23 @@ return priv->type; } +/* < private > */ +void +purple_theme_loader_set_type_string(PurpleThemeLoader *loader, const gchar *type) +{ + PurpleThemeLoaderPrivate *priv; + + g_return_if_fail(PURPLE_IS_THEME_LOADER(loader)); + + priv = PURPLE_THEME_LOADER_GET_PRIVATE(loader); + + g_free(priv->type); + priv->type = g_strdup (type); +} + PurpleTheme * purple_theme_loader_build (PurpleThemeLoader *loader, const gchar *dir) { - return PURPLE_THEME_LOADER_GET_CLASS(loader)->_purple_theme_loader_build(dir); + /* TODO: fix warning */ + return PURPLE_THEME_LOADER_GET_CLASS(loader)->purple_theme_loader_build(dir); }
