libpurple/theme-manager.c

Wed, 13 May 2009 20:29:03 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Wed, 13 May 2009 20:29:03 +0000
changeset 27110
05ca719b901b
parent 26778
42e6ec9c8320
child 27445
b8bbf88abd0f
permissions
-rw-r--r--

Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.

23634
cefd759a125b 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 /*
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
2 * Themes for libpurple
23634
cefd759a125b 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 *
cefd759a125b 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
cefd759a125b 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
cefd759a125b 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.
cefd759a125b 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 *
cefd759a125b 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
cefd759a125b 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
cefd759a125b 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
cefd759a125b 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.
cefd759a125b 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 *
cefd759a125b 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,
cefd759a125b 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
cefd759a125b 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
cefd759a125b 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.
cefd759a125b 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 *
cefd759a125b 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
cefd759a125b 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
cefd759a125b 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
cefd759a125b 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 */
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
22
25005
e86ff053dd10 Fix some theme manager assertion failures.
Richard Laager <rlaager@pidgin.im>
parents: 24139
diff changeset
23 #include <glib.h>
23664
cf938922baa5 Changed how the prefs handle themes
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23655
diff changeset
24 #include <string.h>
cf938922baa5 Changed how the prefs handle themes
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23655
diff changeset
25
25005
e86ff053dd10 Fix some theme manager assertion failures.
Richard Laager <rlaager@pidgin.im>
parents: 24139
diff changeset
26 #include "internal.h"
23634
cefd759a125b 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
27 #include "theme-manager.h"
24138
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
28 #include "util.h"
23634
cefd759a125b 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
29
23635
8d9926d33ff9 Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23634
diff changeset
30 /******************************************************************************
8d9926d33ff9 Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23634
diff changeset
31 * Globals
8d9926d33ff9 Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23634
diff changeset
32 *****************************************************************************/
23634
cefd759a125b 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
23645
6901039a86fb Fixed purple sound loader class init function (bug on startup) and added shell sound theme selector
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23644
diff changeset
34 static GHashTable *theme_table = NULL;
23635
8d9926d33ff9 Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23634
diff changeset
35
23634
cefd759a125b 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 /*****************************************************************************
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
37 * GObject Stuff
23634
cefd759a125b 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
38 ****************************************************************************/
cefd759a125b 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
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
40 GType
23972
90e0da03c053 theme loader cleanup, and remove a few warnings
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23664
diff changeset
41 purple_theme_manager_get_type(void)
23634
cefd759a125b 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
42 {
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
43 static GType type = 0;
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
44 if (type == 0) {
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
45 static const GTypeInfo info = {
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
46 sizeof(PurpleThemeManagerClass),
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
47 NULL, /* base_init */
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
48 NULL, /* base_finalize */
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
49 NULL, /* class_init */
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
50 NULL, /* class_finalize */
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
51 NULL, /* class_data */
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
52 sizeof(PurpleThemeManager),
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
53 0, /* n_preallocs */
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
54 NULL, /* instance_init */
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
55 NULL, /* Value Table */
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
56 };
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
57 type = g_type_register_static(G_TYPE_OBJECT,
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
58 "PurpleThemeManager", &info, 0);
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
59 }
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
60 return type;
23634
cefd759a125b 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 }
cefd759a125b 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
cefd759a125b 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
63 /******************************************************************************
cefd759a125b 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 * Helpers
cefd759a125b 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 *****************************************************************************/
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
66
23634
cefd759a125b 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 /* makes a key of <type> + '/' + <name> */
cefd759a125b 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
68 static gchar *
cefd759a125b 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
69 purple_theme_manager_make_key(const gchar *name, const gchar *type)
cefd759a125b 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
70 {
25005
e86ff053dd10 Fix some theme manager assertion failures.
Richard Laager <rlaager@pidgin.im>
parents: 24139
diff changeset
71 g_return_val_if_fail(name && *name, NULL);
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
72 g_return_val_if_fail(type && *type, NULL);
23647
b856721ba8dd more gobject fixed
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23646
diff changeset
73 return g_strconcat(type, "/", name, NULL);
23634
cefd759a125b 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 }
cefd759a125b 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
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
76 /* returns TRUE if theme is of type "user_data" */
23634
cefd759a125b 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
77 static gboolean
cefd759a125b 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 purple_theme_manager_is_theme_type(gchar *key,
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
79 gpointer value,
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
80 gchar *user_data)
23634
cefd759a125b 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 {
23653
79934bf9a349 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: 23651
diff changeset
82 return g_str_has_prefix(key, g_strconcat(user_data, "/", NULL));
23634
cefd759a125b 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 }
cefd759a125b 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
84
cefd759a125b 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
85 static gboolean
cefd759a125b 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 purple_theme_manager_is_theme(gchar *key,
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
87 gpointer value,
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
88 gchar *user_data)
23634
cefd759a125b 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 {
cefd759a125b 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 return PURPLE_IS_THEME(value);
cefd759a125b 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 }
cefd759a125b 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
92
cefd759a125b 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
93 static void
cefd759a125b 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 purple_theme_manager_function_wrapper(gchar *key,
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
95 gpointer value,
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
96 PTFunc user_data)
23634
cefd759a125b 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 {
23636
0ba7de721f35 Fixed some leaks formatting
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23635
diff changeset
98 if (PURPLE_IS_THEME(value))
23972
90e0da03c053 theme loader cleanup, and remove a few warnings
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23664
diff changeset
99 (* user_data)(value);
23634
cefd759a125b 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
100 }
cefd759a125b 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
cefd759a125b 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
102 static void
23642
ea82d96e4ebd Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23641
diff changeset
103 purple_theme_manager_build_dir(const gchar *root)
23634
cefd759a125b 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
104 {
24138
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
105 gchar *purple_dir, *theme_dir;
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
106 const gchar *name = NULL, *type = NULL;
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
107 GDir *rdir, *tdir;
23634
cefd759a125b 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 PurpleThemeLoader *loader;
cefd759a125b 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
109
24138
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
110 rdir = g_dir_open(root, 0, NULL);
23634
cefd759a125b 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
25005
e86ff053dd10 Fix some theme manager assertion failures.
Richard Laager <rlaager@pidgin.im>
parents: 24139
diff changeset
112 if (!rdir)
e86ff053dd10 Fix some theme manager assertion failures.
Richard Laager <rlaager@pidgin.im>
parents: 24139
diff changeset
113 return;
23634
cefd759a125b 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
114
cefd759a125b 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
115 /* Parses directory by root/name/purple/type */
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
116 while ((name = g_dir_read_name(rdir))) {
23641
cab1a8ff75a1 Added sound builder (implete still needs a good way to go from xml file to xml node)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23636
diff changeset
117 purple_dir = g_build_filename(root, name, "purple", NULL);
25005
e86ff053dd10 Fix some theme manager assertion failures.
Richard Laager <rlaager@pidgin.im>
parents: 24139
diff changeset
118 tdir = g_dir_open(purple_dir, 0, NULL);
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
119
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
120 if (!tdir) {
24138
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
121 g_free(purple_dir);
23634
cefd759a125b 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
122
24138
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
123 continue;
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
124 }
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
125
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
126 while ((type = g_dir_read_name(tdir))) {
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
127 if ((loader = g_hash_table_lookup(theme_table, type))) {
24138
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
128 PurpleTheme *theme = NULL;
23636
0ba7de721f35 Fixed some leaks formatting
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23635
diff changeset
129
24138
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
130 theme_dir = g_build_filename(purple_dir, type, NULL);
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
131
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
132 theme = purple_theme_loader_build(loader, theme_dir);
26778
42e6ec9c8320 Fix a leak when loading themes.
Paul Aurich <darkrain42@pidgin.im>
parents: 25875
diff changeset
133 g_free(theme_dir);
23636
0ba7de721f35 Fixed some leaks formatting
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23635
diff changeset
134
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
135 if (PURPLE_IS_THEME(theme))
24138
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
136 purple_theme_manager_add_theme(theme);
23634
cefd759a125b 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
137 }
23636
0ba7de721f35 Fixed some leaks formatting
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23635
diff changeset
138 }
24138
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
139
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
140 g_dir_close(tdir);
23636
0ba7de721f35 Fixed some leaks formatting
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23635
diff changeset
141 g_free(purple_dir);
23634
cefd759a125b 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 }
24138
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
143
23634
cefd759a125b 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 g_dir_close(rdir);
cefd759a125b 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
145 }
cefd759a125b 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
cefd759a125b 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 /*****************************************************************************
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
148 * Public API functions
23634
cefd759a125b 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
149 *****************************************************************************/
cefd759a125b 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
23635
8d9926d33ff9 Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23634
diff changeset
151 void
23972
90e0da03c053 theme loader cleanup, and remove a few warnings
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23664
diff changeset
152 purple_theme_manager_init(void)
23634
cefd759a125b 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
153 {
23972
90e0da03c053 theme loader cleanup, and remove a few warnings
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23664
diff changeset
154 theme_table = g_hash_table_new_full(g_str_hash,
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
155 g_str_equal, g_free, g_object_unref);
23642
ea82d96e4ebd Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23641
diff changeset
156 }
ea82d96e4ebd Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23641
diff changeset
157
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
158 void
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
159 purple_theme_manager_refresh(void)
23642
ea82d96e4ebd Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23641
diff changeset
160 {
24138
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
161 gchar *path = NULL;
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
162 const gchar *xdg = NULL;
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
163 gint i = 0;
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
164
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
165 g_hash_table_foreach_remove(theme_table,
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
166 (GHRFunc) purple_theme_manager_is_theme, NULL);
24138
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
167
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
168 /* Add themes from ~/.purple */
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
169 path = g_build_filename(purple_user_dir(), "themes", NULL);
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
170 purple_theme_manager_build_dir(path);
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
171 g_free(path);
23642
ea82d96e4ebd Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23641
diff changeset
172
24138
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
173 /* look for XDG_DATA_HOME. If we don't have it use ~/.local, and add it */
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
174 if ((xdg = g_getenv("XDG_DATA_HOME")) != NULL)
24138
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
175 path = g_build_filename(xdg, "themes", NULL);
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
176 else
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
177 path = g_build_filename(purple_home_dir(), ".local", "themes", NULL);
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
178
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
179 purple_theme_manager_build_dir(path);
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
180 g_free(path);
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
181
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
182 /* now dig through XDG_DATA_DIRS and add those too */
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
183 xdg = g_getenv("XDG_DATA_DIRS");
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
184 if (xdg) {
24138
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
185 gchar **xdg_dirs = g_strsplit(xdg, G_SEARCHPATH_SEPARATOR_S, 0);
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
186
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
187 for (i = 0; xdg_dirs[i]; i++) {
24138
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
188 path = g_build_filename(xdg_dirs[i], "themes", NULL);
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
189 purple_theme_manager_build_dir(path);
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
190 g_free(path);
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
191 }
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
192
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
193 g_strfreev(xdg_dirs);
13f8a8066fb4 cleaned up purple_theme_manager_build_dir
Gary Kramlich <grim@reaperworld.com>
parents: 23664
diff changeset
194 }
23642
ea82d96e4ebd Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23641
diff changeset
195 }
ea82d96e4ebd Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23641
diff changeset
196
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
197 void
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
198 purple_theme_manager_uninit(void)
23642
ea82d96e4ebd Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23641
diff changeset
199 {
ea82d96e4ebd Fixed some things needed for proper gobfication (init/finalize/etc)
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23641
diff changeset
200 g_hash_table_destroy(theme_table);
23634
cefd759a125b 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
201 }
cefd759a125b 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
cefd759a125b 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 void
23635
8d9926d33ff9 Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23634
diff changeset
204 purple_theme_manager_register_type(PurpleThemeLoader *loader)
23634
cefd759a125b 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 {
cefd759a125b 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 gchar *type;
cefd759a125b 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
207
cefd759a125b 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(PURPLE_IS_THEME_LOADER(loader));
cefd759a125b 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
23645
6901039a86fb Fixed purple sound loader class init function (bug on startup) and added shell sound theme selector
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23644
diff changeset
210 type = g_strdup(purple_theme_loader_get_type_string(loader));
23634
cefd759a125b 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
211 g_return_if_fail(type);
cefd759a125b 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
212
cefd759a125b 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 /* if something is already there do nothing */
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
214 if (!g_hash_table_lookup(theme_table, type))
23635
8d9926d33ff9 Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23634
diff changeset
215 g_hash_table_insert(theme_table, type, loader);
23634
cefd759a125b 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
216 }
cefd759a125b 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
cefd759a125b 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
218 void
23635
8d9926d33ff9 Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23634
diff changeset
219 purple_theme_manager_unregister_type(PurpleThemeLoader *loader)
23634
cefd759a125b 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 {
23655
704a67a69ce0 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: 23653
diff changeset
221 const gchar *type;
23634
cefd759a125b 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
cefd759a125b 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(PURPLE_IS_THEME_LOADER(loader));
cefd759a125b 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
cefd759a125b 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
225 type = purple_theme_loader_get_type_string(loader);
cefd759a125b 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
226 g_return_if_fail(type);
cefd759a125b 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
227
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
228 if (g_hash_table_lookup(theme_table, type) == loader)
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
229 {
23972
90e0da03c053 theme loader cleanup, and remove a few warnings
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23664
diff changeset
230 g_hash_table_remove(theme_table, type);
23634
cefd759a125b 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
231
23972
90e0da03c053 theme loader cleanup, and remove a few warnings
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23664
diff changeset
232 g_hash_table_foreach_remove(theme_table,
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
233 (GHRFunc)purple_theme_manager_is_theme_type, (gpointer)type);
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
234 } /* only free if given registered loader */
23634
cefd759a125b 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
235 }
cefd759a125b 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
236
cefd759a125b 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 PurpleTheme *
23635
8d9926d33ff9 Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23634
diff changeset
238 purple_theme_manager_find_theme(const gchar *name,
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
239 const gchar *type)
23634
cefd759a125b 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
240 {
23653
79934bf9a349 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: 23651
diff changeset
241 gchar *key;
79934bf9a349 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: 23651
diff changeset
242 PurpleTheme *theme;
79934bf9a349 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: 23651
diff changeset
243
79934bf9a349 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: 23651
diff changeset
244 key = purple_theme_manager_make_key(name, type);
23634
cefd759a125b 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
245
23653
79934bf9a349 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: 23651
diff changeset
246 g_return_val_if_fail(key, NULL);
79934bf9a349 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: 23651
diff changeset
247
79934bf9a349 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: 23651
diff changeset
248 theme = g_hash_table_lookup(theme_table, key);
79934bf9a349 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: 23651
diff changeset
249
79934bf9a349 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: 23651
diff changeset
250 g_free(key);
79934bf9a349 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: 23651
diff changeset
251
79934bf9a349 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: 23651
diff changeset
252 return theme;
23634
cefd759a125b 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
253 }
cefd759a125b 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
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
255 void
23635
8d9926d33ff9 Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23634
diff changeset
256 purple_theme_manager_add_theme(PurpleTheme *theme)
23634
cefd759a125b 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 {
cefd759a125b 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 gchar *key;
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
259
23634
cefd759a125b 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
260 g_return_if_fail(PURPLE_IS_THEME(theme));
cefd759a125b 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
cefd759a125b 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 key = purple_theme_manager_make_key(purple_theme_get_name(theme),
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
263 purple_theme_get_type_string(theme));
23634
cefd759a125b 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
cefd759a125b 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
265 g_return_if_fail(key);
23648
a71b9a2345ea fixed images to appear in pref menu
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23647
diff changeset
266
23634
cefd759a125b 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 /* if something is already there do nothing */
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
268 if (g_hash_table_lookup(theme_table, key) == NULL)
23635
8d9926d33ff9 Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23634
diff changeset
269 g_hash_table_insert(theme_table, key, theme);
23634
cefd759a125b 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
270 }
cefd759a125b 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
cefd759a125b 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 void
23635
8d9926d33ff9 Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23634
diff changeset
273 purple_theme_manager_remove_theme(PurpleTheme *theme)
23634
cefd759a125b 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 {
cefd759a125b 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 gchar *key;
cefd759a125b 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
cefd759a125b 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
277 g_return_if_fail(PURPLE_IS_THEME(theme));
cefd759a125b 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
cefd759a125b 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 key = purple_theme_manager_make_key(purple_theme_get_name(theme),
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
280 purple_theme_get_type_string(theme));
23634
cefd759a125b 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
281
cefd759a125b 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 g_return_if_fail(key);
cefd759a125b 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
283
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
284 g_hash_table_remove(theme_table, key);
23634
cefd759a125b 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
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
286 g_free(key);
23634
cefd759a125b 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
287 }
cefd759a125b 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
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
289 void
23635
8d9926d33ff9 Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23634
diff changeset
290 purple_theme_manager_for_each_theme(PTFunc func)
23634
cefd759a125b 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
291 {
cefd759a125b 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
292 g_return_if_fail(func);
cefd759a125b 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
23635
8d9926d33ff9 Fixed theme-manager to be more of a singleton and less-gobject like
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents: 23634
diff changeset
294 g_hash_table_foreach(theme_table,
25875
a98b16817658 Lots of minor whitespace and comment changes:
Mark Doliner <markdoliner@pidgin.im>
parents: 25005
diff changeset
295 (GHFunc) purple_theme_manager_function_wrapper, func);
23634
cefd759a125b 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
296 }

mercurial