Mercurial > pidgin
comparison libpurple/theme-loader.c @ 32819:2c6510167895 default tip
propagate from branch 'im.pidgin.pidgin.2.x.y' (head 3315c5dfbd0ad16511bdcf865e5b07c02d07df24)
to branch 'im.pidgin.pidgin' (head cbd1eda6bcbf0565ae7766396bb8f6f419cb6a9a)
| author | Elliott Sales de Andrade <qulogic@pidgin.im> |
|---|---|
| date | Sat, 02 Jun 2012 02:30:49 +0000 |
| parents | 5050da3d9c95 |
| children |
comparison
equal
deleted
inserted
replaced
| 32818:01ff09d4a463 | 32819:2c6510167895 |
|---|---|
| 22 | 22 |
| 23 #include "internal.h" | 23 #include "internal.h" |
| 24 #include "theme-loader.h" | 24 #include "theme-loader.h" |
| 25 | 25 |
| 26 #define PURPLE_THEME_LOADER_GET_PRIVATE(PurpleThemeLoader) \ | 26 #define PURPLE_THEME_LOADER_GET_PRIVATE(PurpleThemeLoader) \ |
| 27 ((PurpleThemeLoaderPrivate *) ((PurpleThemeLoader)->priv)) | 27 (G_TYPE_INSTANCE_GET_PRIVATE((PurpleThemeLoader), PURPLE_TYPE_THEME_LOADER, PurpleThemeLoaderPrivate)) |
| 28 | 28 |
| 29 void purple_theme_loader_set_type_string(PurpleThemeLoader *loader, const gchar *type); | 29 void purple_theme_loader_set_type_string(PurpleThemeLoader *loader, const gchar *type); |
| 30 | 30 |
| 31 /****************************************************************************** | 31 /****************************************************************************** |
| 32 * Structs | 32 * Structs |
| 83 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec); | 83 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec); |
| 84 break; | 84 break; |
| 85 } | 85 } |
| 86 } | 86 } |
| 87 | 87 |
| 88 static void | 88 static gboolean |
| 89 purple_theme_loader_init(GTypeInstance *instance, | 89 purple_theme_loader_probe_directory(PurpleThemeLoader *loader, const gchar *dir) |
| 90 gpointer klass) | 90 { |
| 91 { | 91 const gchar *type = purple_theme_loader_get_type_string(loader); |
| 92 PurpleThemeLoader *loader = PURPLE_THEME_LOADER(instance); | 92 char *themedir; |
| 93 loader->priv = g_new0(PurpleThemeLoaderPrivate, 1); | 93 gboolean result; |
| 94 | |
| 95 /* Checks for directory as $root/purple/$type */ | |
| 96 themedir = g_build_filename(dir, "purple", type, NULL); | |
| 97 result = g_file_test(themedir, G_FILE_TEST_IS_DIR); | |
| 98 g_free(themedir); | |
| 99 | |
| 100 return result; | |
| 94 } | 101 } |
| 95 | 102 |
| 96 static void | 103 static void |
| 97 purple_theme_loader_finalize(GObject *obj) | 104 purple_theme_loader_finalize(GObject *obj) |
| 98 { | 105 { |
| 99 PurpleThemeLoader *loader = PURPLE_THEME_LOADER(obj); | 106 PurpleThemeLoader *loader = PURPLE_THEME_LOADER(obj); |
| 100 PurpleThemeLoaderPrivate *priv = PURPLE_THEME_LOADER_GET_PRIVATE(loader); | 107 PurpleThemeLoaderPrivate *priv = PURPLE_THEME_LOADER_GET_PRIVATE(loader); |
| 101 | 108 |
| 102 g_free(priv->type); | 109 g_free(priv->type); |
| 103 g_free(priv); | |
| 104 | 110 |
| 105 parent_class->finalize(obj); | 111 parent_class->finalize(obj); |
| 106 } | 112 } |
| 107 | 113 |
| 108 static void | 114 static void |
| 110 { | 116 { |
| 111 GObjectClass *obj_class = G_OBJECT_CLASS(klass); | 117 GObjectClass *obj_class = G_OBJECT_CLASS(klass); |
| 112 GParamSpec *pspec; | 118 GParamSpec *pspec; |
| 113 | 119 |
| 114 parent_class = g_type_class_peek_parent(klass); | 120 parent_class = g_type_class_peek_parent(klass); |
| 121 | |
| 122 g_type_class_add_private(klass, sizeof(PurpleThemeLoaderPrivate)); | |
| 115 | 123 |
| 116 obj_class->get_property = purple_theme_loader_get_property; | 124 obj_class->get_property = purple_theme_loader_get_property; |
| 117 obj_class->set_property = purple_theme_loader_set_property; | 125 obj_class->set_property = purple_theme_loader_set_property; |
| 118 obj_class->finalize = purple_theme_loader_finalize; | 126 obj_class->finalize = purple_theme_loader_finalize; |
| 119 | 127 |
| 137 (GClassInitFunc)purple_theme_loader_class_init, /* class_init */ | 145 (GClassInitFunc)purple_theme_loader_class_init, /* class_init */ |
| 138 NULL, /* class_finalize */ | 146 NULL, /* class_finalize */ |
| 139 NULL, /* class_data */ | 147 NULL, /* class_data */ |
| 140 sizeof(PurpleThemeLoader), | 148 sizeof(PurpleThemeLoader), |
| 141 0, /* n_preallocs */ | 149 0, /* n_preallocs */ |
| 142 purple_theme_loader_init, /* instance_init */ | 150 NULL, /* instance_init */ |
| 143 NULL, /* value table */ | 151 NULL, /* value table */ |
| 144 }; | 152 }; |
| 145 type = g_type_register_static(G_TYPE_OBJECT, | 153 type = g_type_register_static(G_TYPE_OBJECT, |
| 146 "PurpleThemeLoader", &info, G_TYPE_FLAG_ABSTRACT); | 154 "PurpleThemeLoader", &info, G_TYPE_FLAG_ABSTRACT); |
| 147 } | 155 } |
| 180 PurpleTheme * | 188 PurpleTheme * |
| 181 purple_theme_loader_build(PurpleThemeLoader *loader, const gchar *dir) | 189 purple_theme_loader_build(PurpleThemeLoader *loader, const gchar *dir) |
| 182 { | 190 { |
| 183 return PURPLE_THEME_LOADER_GET_CLASS(loader)->purple_theme_loader_build(dir); | 191 return PURPLE_THEME_LOADER_GET_CLASS(loader)->purple_theme_loader_build(dir); |
| 184 } | 192 } |
| 193 | |
| 194 gboolean | |
| 195 purple_theme_loader_probe(PurpleThemeLoader *loader, const gchar *dir) | |
| 196 { | |
| 197 if (PURPLE_THEME_LOADER_GET_CLASS(loader)->probe_directory != NULL) | |
| 198 return PURPLE_THEME_LOADER_GET_CLASS(loader)->probe_directory(dir); | |
| 199 else | |
| 200 return purple_theme_loader_probe_directory(loader, dir); | |
| 201 } | |
| 202 |
