Mercurial > pidgin
annotate libpurple/theme-manager.c @ 30820:4b0cb9435414
Prevent a crash, this should never happen. It needs a little more work before being fixed.
author | masca@cpw.pidgin.im |
---|---|
date | Tue, 22 Jun 2010 22:03:55 +0000 |
parents | f1437342cc0e |
children | a8cc50c2279f |
rev | line source |
---|---|
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
1 /* |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
2 * Themes for libpurple |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
3 * |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
4 * Pidgin is the legal property of its developers, whose names are too numerous |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
5 * to list here. Please refer to the COPYRIGHT file distributed with this |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
6 * source distribution. |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
7 * |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
8 * This program is free software; you can redistribute it and/or modify |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
9 * it under the terms of the GNU General Public License as published by |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
10 * the Free Software Foundation; either version 2 of the License, or |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
11 * (at your option) any later version. |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
12 * |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
13 * This program is distributed in the hope that it will be useful, |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
16 * GNU General Public License for more details. |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
17 * |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
18 * You should have received a copy of the GNU General Public License |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
19 * along with this program; if not, write to the Free Software |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
21 */ |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
22 |
25858
1eacf60a73dd
Fix some theme manager assertion failures.
Richard Laager <rlaager@wiktel.com>
parents:
25128
diff
changeset
|
23 #include "internal.h" |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
24 #include "theme-manager.h" |
25127
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
25 #include "util.h" |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
26 |
25078
0ece981e44f5
Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25077
diff
changeset
|
27 /****************************************************************************** |
0ece981e44f5
Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25077
diff
changeset
|
28 * Globals |
0ece981e44f5
Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25077
diff
changeset
|
29 *****************************************************************************/ |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
30 |
25088
9ffbfbcf307d
Fixed purple sound loader class init function (bug on startup) and added shell sound theme selector
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25087
diff
changeset
|
31 static GHashTable *theme_table = NULL; |
25078
0ece981e44f5
Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25077
diff
changeset
|
32 |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
33 /***************************************************************************** |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
34 * GObject Stuff |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
35 ****************************************************************************/ |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
36 |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
37 GType |
25122
9525fb966efb
theme loader cleanup, and remove a few warnings
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25107
diff
changeset
|
38 purple_theme_manager_get_type(void) |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
39 { |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
40 static GType type = 0; |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
41 if (type == 0) { |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
42 static const GTypeInfo info = { |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
43 sizeof(PurpleThemeManagerClass), |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
44 NULL, /* base_init */ |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
45 NULL, /* base_finalize */ |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
46 NULL, /* class_init */ |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
47 NULL, /* class_finalize */ |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
48 NULL, /* class_data */ |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
49 sizeof(PurpleThemeManager), |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
50 0, /* n_preallocs */ |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
51 NULL, /* instance_init */ |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
52 NULL, /* Value Table */ |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
53 }; |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
54 type = g_type_register_static(G_TYPE_OBJECT, |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
55 "PurpleThemeManager", &info, 0); |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
56 } |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
57 return type; |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
58 } |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
59 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
60 /****************************************************************************** |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
61 * Helpers |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
62 *****************************************************************************/ |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
63 |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
64 /* makes a key of <type> + '/' + <name> */ |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
65 static gchar * |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
66 purple_theme_manager_make_key(const gchar *name, const gchar *type) |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
67 { |
25858
1eacf60a73dd
Fix some theme manager assertion failures.
Richard Laager <rlaager@wiktel.com>
parents:
25128
diff
changeset
|
68 g_return_val_if_fail(name && *name, NULL); |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
69 g_return_val_if_fail(type && *type, NULL); |
25090
5a02912e0bac
more gobject fixed
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25089
diff
changeset
|
70 return g_strconcat(type, "/", name, NULL); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
71 } |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
72 |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
73 /* returns TRUE if theme is of type "user_data" */ |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
74 static gboolean |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
75 purple_theme_manager_is_theme_type(gchar *key, |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
76 gpointer value, |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
77 gchar *user_data) |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
78 { |
25096
fbf72bbd1084
Fixed up a few typos, readability, leaks, and bugs, all minor and mostly in theme and theme loader classes
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25094
diff
changeset
|
79 return g_str_has_prefix(key, g_strconcat(user_data, "/", NULL)); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
80 } |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
81 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
82 static gboolean |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
83 purple_theme_manager_is_theme(gchar *key, |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
84 gpointer value, |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
85 gchar *user_data) |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
86 { |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
87 return PURPLE_IS_THEME(value); |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
88 } |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
89 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
90 static void |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
91 purple_theme_manager_function_wrapper(gchar *key, |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
92 gpointer value, |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
93 PTFunc user_data) |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
94 { |
25079
d5c5512adc69
Fixed some leaks formatting
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25078
diff
changeset
|
95 if (PURPLE_IS_THEME(value)) |
25122
9525fb966efb
theme loader cleanup, and remove a few warnings
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25107
diff
changeset
|
96 (* user_data)(value); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
97 } |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
98 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
99 static void |
25085
fecc8e2612c4
Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25084
diff
changeset
|
100 purple_theme_manager_build_dir(const gchar *root) |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
101 { |
25127
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
102 gchar *purple_dir, *theme_dir; |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
103 const gchar *name = NULL, *type = NULL; |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
104 GDir *rdir, *tdir; |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
105 PurpleThemeLoader *loader; |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
106 |
25127
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
107 rdir = g_dir_open(root, 0, NULL); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
108 |
25858
1eacf60a73dd
Fix some theme manager assertion failures.
Richard Laager <rlaager@wiktel.com>
parents:
25128
diff
changeset
|
109 if (!rdir) |
1eacf60a73dd
Fix some theme manager assertion failures.
Richard Laager <rlaager@wiktel.com>
parents:
25128
diff
changeset
|
110 return; |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
111 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
112 /* Parses directory by root/name/purple/type */ |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
113 while ((name = g_dir_read_name(rdir))) { |
25084
623f0b40f6f6
Added sound builder (implete still needs a good way to go from xml file to xml node)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25079
diff
changeset
|
114 purple_dir = g_build_filename(root, name, "purple", NULL); |
25858
1eacf60a73dd
Fix some theme manager assertion failures.
Richard Laager <rlaager@wiktel.com>
parents:
25128
diff
changeset
|
115 tdir = g_dir_open(purple_dir, 0, NULL); |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
116 |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
117 if (!tdir) { |
25127
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
118 g_free(purple_dir); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
119 |
25127
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
120 continue; |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
121 } |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
122 |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
123 while ((type = g_dir_read_name(tdir))) { |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
124 if ((loader = g_hash_table_lookup(theme_table, type))) { |
25127
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
125 PurpleTheme *theme = NULL; |
25079
d5c5512adc69
Fixed some leaks formatting
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25078
diff
changeset
|
126 |
25127
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
127 theme_dir = g_build_filename(purple_dir, type, NULL); |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
128 |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
129 theme = purple_theme_loader_build(loader, theme_dir); |
26547
652efbbf1b45
Fix a leak when loading themes.
Paul Aurich <paul@darkrain42.org>
parents:
25911
diff
changeset
|
130 g_free(theme_dir); |
25079
d5c5512adc69
Fixed some leaks formatting
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25078
diff
changeset
|
131 |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
132 if (PURPLE_IS_THEME(theme)) |
25127
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
133 purple_theme_manager_add_theme(theme); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
134 } |
25079
d5c5512adc69
Fixed some leaks formatting
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25078
diff
changeset
|
135 } |
25127
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
136 |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
137 g_dir_close(tdir); |
25079
d5c5512adc69
Fixed some leaks formatting
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25078
diff
changeset
|
138 g_free(purple_dir); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
139 } |
25127
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
140 |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
141 g_dir_close(rdir); |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
142 } |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
143 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
144 /***************************************************************************** |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
145 * Public API functions |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
146 *****************************************************************************/ |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
147 |
25078
0ece981e44f5
Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25077
diff
changeset
|
148 void |
25122
9525fb966efb
theme loader cleanup, and remove a few warnings
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25107
diff
changeset
|
149 purple_theme_manager_init(void) |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
150 { |
25122
9525fb966efb
theme loader cleanup, and remove a few warnings
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25107
diff
changeset
|
151 theme_table = g_hash_table_new_full(g_str_hash, |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
152 g_str_equal, g_free, g_object_unref); |
25085
fecc8e2612c4
Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25084
diff
changeset
|
153 } |
fecc8e2612c4
Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25084
diff
changeset
|
154 |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
155 void |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
156 purple_theme_manager_refresh(void) |
25085
fecc8e2612c4
Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25084
diff
changeset
|
157 { |
25127
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
158 gchar *path = NULL; |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
159 const gchar *xdg = NULL; |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
160 gint i = 0; |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
161 |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
162 g_hash_table_foreach_remove(theme_table, |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
163 (GHRFunc) purple_theme_manager_is_theme, NULL); |
25127
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
164 |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
165 /* Add themes from ~/.purple */ |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
166 path = g_build_filename(purple_user_dir(), "themes", NULL); |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
167 purple_theme_manager_build_dir(path); |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
168 g_free(path); |
25085
fecc8e2612c4
Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25084
diff
changeset
|
169 |
25127
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
170 /* look for XDG_DATA_HOME. If we don't have it use ~/.local, and add it */ |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
171 if ((xdg = g_getenv("XDG_DATA_HOME")) != NULL) |
25127
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
172 path = g_build_filename(xdg, "themes", NULL); |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
173 else |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
174 path = g_build_filename(purple_home_dir(), ".local", "themes", NULL); |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
175 |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
176 purple_theme_manager_build_dir(path); |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
177 g_free(path); |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
178 |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
179 /* now dig through XDG_DATA_DIRS and add those too */ |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
180 xdg = g_getenv("XDG_DATA_DIRS"); |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
181 if (xdg) { |
25127
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
182 gchar **xdg_dirs = g_strsplit(xdg, G_SEARCHPATH_SEPARATOR_S, 0); |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
183 |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
184 for (i = 0; xdg_dirs[i]; i++) { |
25127
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
185 path = g_build_filename(xdg_dirs[i], "themes", NULL); |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
186 purple_theme_manager_build_dir(path); |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
187 g_free(path); |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
188 } |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
189 |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
190 g_strfreev(xdg_dirs); |
4575b578a54b
cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents:
25107
diff
changeset
|
191 } |
25085
fecc8e2612c4
Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25084
diff
changeset
|
192 } |
fecc8e2612c4
Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25084
diff
changeset
|
193 |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
194 void |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
195 purple_theme_manager_uninit(void) |
25085
fecc8e2612c4
Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25084
diff
changeset
|
196 { |
fecc8e2612c4
Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25084
diff
changeset
|
197 g_hash_table_destroy(theme_table); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
198 } |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
199 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
200 void |
25078
0ece981e44f5
Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25077
diff
changeset
|
201 purple_theme_manager_register_type(PurpleThemeLoader *loader) |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
202 { |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
203 gchar *type; |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
204 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
205 g_return_if_fail(PURPLE_IS_THEME_LOADER(loader)); |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
206 |
25088
9ffbfbcf307d
Fixed purple sound loader class init function (bug on startup) and added shell sound theme selector
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25087
diff
changeset
|
207 type = g_strdup(purple_theme_loader_get_type_string(loader)); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
208 g_return_if_fail(type); |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
209 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
210 /* if something is already there do nothing */ |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
211 if (!g_hash_table_lookup(theme_table, type)) |
25078
0ece981e44f5
Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25077
diff
changeset
|
212 g_hash_table_insert(theme_table, type, loader); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
213 } |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
214 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
215 void |
25078
0ece981e44f5
Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25077
diff
changeset
|
216 purple_theme_manager_unregister_type(PurpleThemeLoader *loader) |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
217 { |
25098
331a7a69d955
Changed the theme_manager_init function to do less, makes it cleaner and faster (won't have to build
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25096
diff
changeset
|
218 const gchar *type; |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
219 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
220 g_return_if_fail(PURPLE_IS_THEME_LOADER(loader)); |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
221 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
222 type = purple_theme_loader_get_type_string(loader); |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
223 g_return_if_fail(type); |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
224 |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
225 if (g_hash_table_lookup(theme_table, type) == loader) |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
226 { |
25122
9525fb966efb
theme loader cleanup, and remove a few warnings
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25107
diff
changeset
|
227 g_hash_table_remove(theme_table, type); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
228 |
25122
9525fb966efb
theme loader cleanup, and remove a few warnings
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25107
diff
changeset
|
229 g_hash_table_foreach_remove(theme_table, |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
230 (GHRFunc)purple_theme_manager_is_theme_type, (gpointer)type); |
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
231 } /* only free if given registered loader */ |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
232 } |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
233 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
234 PurpleTheme * |
25078
0ece981e44f5
Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25077
diff
changeset
|
235 purple_theme_manager_find_theme(const gchar *name, |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
236 const gchar *type) |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
237 { |
25096
fbf72bbd1084
Fixed up a few typos, readability, leaks, and bugs, all minor and mostly in theme and theme loader classes
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25094
diff
changeset
|
238 gchar *key; |
fbf72bbd1084
Fixed up a few typos, readability, leaks, and bugs, all minor and mostly in theme and theme loader classes
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25094
diff
changeset
|
239 PurpleTheme *theme; |
fbf72bbd1084
Fixed up a few typos, readability, leaks, and bugs, all minor and mostly in theme and theme loader classes
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25094
diff
changeset
|
240 |
fbf72bbd1084
Fixed up a few typos, readability, leaks, and bugs, all minor and mostly in theme and theme loader classes
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25094
diff
changeset
|
241 key = purple_theme_manager_make_key(name, type); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
242 |
25096
fbf72bbd1084
Fixed up a few typos, readability, leaks, and bugs, all minor and mostly in theme and theme loader classes
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25094
diff
changeset
|
243 g_return_val_if_fail(key, NULL); |
fbf72bbd1084
Fixed up a few typos, readability, leaks, and bugs, all minor and mostly in theme and theme loader classes
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25094
diff
changeset
|
244 |
fbf72bbd1084
Fixed up a few typos, readability, leaks, and bugs, all minor and mostly in theme and theme loader classes
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25094
diff
changeset
|
245 theme = g_hash_table_lookup(theme_table, key); |
fbf72bbd1084
Fixed up a few typos, readability, leaks, and bugs, all minor and mostly in theme and theme loader classes
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25094
diff
changeset
|
246 |
fbf72bbd1084
Fixed up a few typos, readability, leaks, and bugs, all minor and mostly in theme and theme loader classes
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25094
diff
changeset
|
247 g_free(key); |
fbf72bbd1084
Fixed up a few typos, readability, leaks, and bugs, all minor and mostly in theme and theme loader classes
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25094
diff
changeset
|
248 |
fbf72bbd1084
Fixed up a few typos, readability, leaks, and bugs, all minor and mostly in theme and theme loader classes
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25094
diff
changeset
|
249 return theme; |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
250 } |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
251 |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
252 void |
25078
0ece981e44f5
Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25077
diff
changeset
|
253 purple_theme_manager_add_theme(PurpleTheme *theme) |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
254 { |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
255 gchar *key; |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
256 |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
257 g_return_if_fail(PURPLE_IS_THEME(theme)); |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
258 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
259 key = purple_theme_manager_make_key(purple_theme_get_name(theme), |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
260 purple_theme_get_type_string(theme)); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
261 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
262 g_return_if_fail(key); |
25091
655a37bc0eb0
fixed images to appear in pref menu
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25090
diff
changeset
|
263 |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
264 /* if something is already there do nothing */ |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
265 if (g_hash_table_lookup(theme_table, key) == NULL) |
25078
0ece981e44f5
Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25077
diff
changeset
|
266 g_hash_table_insert(theme_table, key, theme); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
267 } |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
268 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
269 void |
25078
0ece981e44f5
Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25077
diff
changeset
|
270 purple_theme_manager_remove_theme(PurpleTheme *theme) |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
271 { |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
272 gchar *key; |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
273 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
274 g_return_if_fail(PURPLE_IS_THEME(theme)); |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
275 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
276 key = purple_theme_manager_make_key(purple_theme_get_name(theme), |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
277 purple_theme_get_type_string(theme)); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
278 |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
279 g_return_if_fail(key); |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
280 |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
281 g_hash_table_remove(theme_table, key); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
282 |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
283 g_free(key); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
284 } |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
285 |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
286 void |
25078
0ece981e44f5
Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25077
diff
changeset
|
287 purple_theme_manager_for_each_theme(PTFunc func) |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
288 { |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
289 g_return_if_fail(func); |
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
290 |
25078
0ece981e44f5
Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
25077
diff
changeset
|
291 g_hash_table_foreach(theme_table, |
25911
0c7b74fc558e
Lots of minor whitespace and comment changes:
Mark Doliner <mark@kingant.net>
parents:
25858
diff
changeset
|
292 (GHFunc) purple_theme_manager_function_wrapper, func); |
25077
6356f402079c
Added the theme-manager and basic functionality (needs to be given proper directories to find themes)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
diff
changeset
|
293 } |
27203
d629a42c8340
Allow drag-and-drop of all sorts of themes.
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
26547
diff
changeset
|
294 |
d629a42c8340
Allow drag-and-drop of all sorts of themes.
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
26547
diff
changeset
|
295 PurpleTheme * |
d629a42c8340
Allow drag-and-drop of all sorts of themes.
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
26547
diff
changeset
|
296 purple_theme_manager_load_theme(const gchar *theme_dir, const gchar *type) |
d629a42c8340
Allow drag-and-drop of all sorts of themes.
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
26547
diff
changeset
|
297 { |
d629a42c8340
Allow drag-and-drop of all sorts of themes.
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
26547
diff
changeset
|
298 PurpleThemeLoader *loader; |
d629a42c8340
Allow drag-and-drop of all sorts of themes.
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
26547
diff
changeset
|
299 |
d629a42c8340
Allow drag-and-drop of all sorts of themes.
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
26547
diff
changeset
|
300 g_return_val_if_fail(theme_dir != NULL && type != NULL, NULL); |
d629a42c8340
Allow drag-and-drop of all sorts of themes.
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
26547
diff
changeset
|
301 |
d629a42c8340
Allow drag-and-drop of all sorts of themes.
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
26547
diff
changeset
|
302 loader = g_hash_table_lookup(theme_table, type); |
d629a42c8340
Allow drag-and-drop of all sorts of themes.
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
26547
diff
changeset
|
303 g_return_val_if_fail(PURPLE_IS_THEME_LOADER(loader), NULL); |
d629a42c8340
Allow drag-and-drop of all sorts of themes.
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
26547
diff
changeset
|
304 |
d629a42c8340
Allow drag-and-drop of all sorts of themes.
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
26547
diff
changeset
|
305 return purple_theme_loader_build(loader, theme_dir); |
d629a42c8340
Allow drag-and-drop of all sorts of themes.
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
26547
diff
changeset
|
306 } |