gtk/gtkthemes.c

Sat, 18 Nov 2006 05:30:57 +0000

author
Sadrul Habib Chowdhury <sadrul@pidgin.im>
date
Sat, 18 Nov 2006 05:30:57 +0000
changeset 15057
909e807e3070
parent 14253
b63ebf84c42b
child 15338
f3d45039290d
permissions
-rw-r--r--

[gaim-migrate @ 17774]
The data for "plugin_action" is set with a destructor function. So freeing it
twice would cause a crash. The reason it's not crashing is, the children of the
container are not the menuitems, but GtkAccelLabel (or some such thing). So all
we are doing is freeing null. Also, when the menu is destroyed, all the
menuitems are also destroyed anyway. So get rid of the unrequired loop.

Also, isdigit expects a character, not a string.

10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
1 /*
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
2 * Themes for Gaim
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
3 *
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
4 * Gaim is the legal property of its developers, whose names are too numerous
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
6 * source distribution.
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
7 *
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
11 * (at your option) any later version.
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
12 *
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
16 * GNU General Public License for more details.
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
17 *
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
21 *
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
22 */
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
23 #include "internal.h"
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
24 #include "gtkgaim.h"
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
25
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
26 #include "conversation.h"
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
27 #include "debug.h"
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
28 #include "prpl.h"
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
29 #include "util.h"
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
30
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
31 #include "gtkconv.h"
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
32 #include "gtkdialogs.h"
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
33 #include "gtkimhtml.h"
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
34 #include "gtkthemes.h"
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
35
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
36 GSList *smiley_themes = NULL;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
37 struct smiley_theme *current_smiley_theme;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
38
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
39 gboolean gaim_gtkthemes_smileys_disabled()
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
40 {
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
41 if (!current_smiley_theme)
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
42 return 1;
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
43
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
44 return strcmp(current_smiley_theme->name, "none") == 0;
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
45 }
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
46
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
47 void gaim_gtkthemes_smiley_themeize(GtkWidget *imhtml)
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
48 {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
49 struct smiley_list *list;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
50 if (!current_smiley_theme)
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
51 return;
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
52
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
53 gtk_imhtml_remove_smileys(GTK_IMHTML(imhtml));
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
54 list = current_smiley_theme->list;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
55 while (list) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
56 char *sml = !strcmp(list->sml, "default") ? NULL : list->sml;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
57 GSList *icons = list->smileys;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
58 while (icons) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
59 gtk_imhtml_associate_smiley(GTK_IMHTML(imhtml), sml, icons->data);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
60 icons = icons->next;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
61 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
62 list = list->next;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
63 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
64 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
65
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
66 void gaim_gtkthemes_load_smiley_theme(const char *file, gboolean load)
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
67 {
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 10295
diff changeset
68 FILE *f = g_fopen(file, "r");
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
69 char buf[256];
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
70 char *i;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
71 struct smiley_theme *theme=NULL;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
72 struct smiley_list *list = NULL;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
73 GSList *lst = smiley_themes;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
74 char *dirname;
13587
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
75 gboolean new_theme = FALSE;
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
76
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
77 if (!f)
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
78 return;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
79
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
80 while (lst) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
81 struct smiley_theme *thm = lst->data;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
82 if (!strcmp(thm->path, file)) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
83 theme = thm;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
84 break;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
85 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
86 lst = lst->next;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
87 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
88
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
89 if (!theme) {
13587
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
90 new_theme = TRUE;
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
91 theme = g_new0(struct smiley_theme, 1);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
92 theme->path = g_strdup(file);
13587
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
93 } else if (theme == current_smiley_theme) {
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
94 /* Don't reload the theme if it is already loaded */
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
95 fclose(f);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
96 return;
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
97 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
98
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
99 dirname = g_path_get_dirname(file);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
100
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
101 while (!feof(f)) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
102 if (!fgets(buf, sizeof(buf), f)) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
103 break;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
104 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
105
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
106 if (buf[0] == '#' || buf[0] == '\0')
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
107 continue;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
108
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
109 i = buf;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
110 while (isspace(*i))
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
111 i++;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
112
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
113 if (*i == '[' && strchr(i, ']') && load) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
114 struct smiley_list *child = g_new0(struct smiley_list, 1);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
115 child->sml = g_strndup(i+1, strchr(i, ']') - i - 1);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
116 if (theme->list)
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
117 list->next = child;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
118 else
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
119 theme->list = child;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
120 list = child;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
121 } else if (!g_ascii_strncasecmp(i, "Name=", strlen("Name="))) {
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13625
diff changeset
122 g_free(theme->name);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
123 theme->name = g_strdup(i+ strlen("Name="));
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
124 theme->name[strlen(theme->name)-1] = 0;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
125 } else if (!g_ascii_strncasecmp(i, "Description=", strlen("Description="))) {
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13625
diff changeset
126 g_free(theme->desc);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
127 theme->desc = g_strdup(i + strlen("Description="));
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
128 theme->desc[strlen(theme->desc)-1] = 0;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
129 } else if (!g_ascii_strncasecmp(i, "Icon=", strlen("Icon="))) {
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13625
diff changeset
130 g_free(theme->icon);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
131 theme->icon = g_build_filename(dirname, i + strlen("Icon="), NULL);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
132 theme->icon[strlen(theme->icon)-1] = 0;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
133 } else if (!g_ascii_strncasecmp(i, "Author=", strlen("Author="))) {
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13625
diff changeset
134 g_free(theme->author);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
135 theme->author = g_strdup(i + strlen("Author="));
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
136 theme->author[strlen(theme->author)-1] = 0;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
137 } else if (load && list) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
138 gboolean hidden = FALSE;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
139 char *sfile = NULL;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
140
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
141 if (*i == '!' && *(i + 1) == ' ') {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
142 hidden = TRUE;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
143 i = i + 2;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
144 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
145 while (*i) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
146 char l[64];
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
147 int li = 0;
13134
e5898f2191a4 [gaim-migrate @ 15495]
Christophe Chapuis <tofe2tofe@users.sourceforge.net>
parents: 12915
diff changeset
148 while (!isspace(*i) && li < sizeof(l) - 1) {
e5898f2191a4 [gaim-migrate @ 15495]
Christophe Chapuis <tofe2tofe@users.sourceforge.net>
parents: 12915
diff changeset
149 if (*i == '\\' && *(i+1) != '\0' && *(i+1) != '\n' && *(i+1) != '\r')
12915
d3efd3201aec [gaim-migrate @ 15268]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11557
diff changeset
150 i++;
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
151 l[li++] = *(i++);
12915
d3efd3201aec [gaim-migrate @ 15268]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11557
diff changeset
152 }
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
153 if (!sfile) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
154 l[li] = 0;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
155 sfile = g_build_filename(dirname, l, NULL);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
156 } else {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
157 GtkIMHtmlSmiley *smiley = g_new0(GtkIMHtmlSmiley, 1);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
158 l[li] = 0;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
159 smiley->file = sfile;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
160 smiley->smile = g_strdup(l);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
161 smiley->hidden = hidden;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
162 list->smileys = g_slist_append(list->smileys, smiley);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
163 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
164 while (isspace(*i))
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
165 i++;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
166
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
167 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
168 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
169 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
170
13587
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
171 g_free(dirname);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
172 fclose(f);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
173
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
174 if (!theme->name || !theme->desc || !theme->author) {
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
175 GSList *already_freed = NULL;
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
176 struct smiley_list *wer = theme->list, *wer2;
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
177
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
178 gaim_debug_error("gtkthemes", "Invalid file format, not loading smiley theme from '%s'\n", file);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
179
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
180 while (wer) {
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
181 while (wer->smileys) {
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
182 GtkIMHtmlSmiley *uio = wer->smileys->data;
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
183 if (uio->icon)
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
184 g_object_unref(uio->icon);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
185 if (!g_slist_find(already_freed, uio->file)) {
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
186 g_free(uio->file);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
187 already_freed = g_slist_append(already_freed, uio->file);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
188 }
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
189 g_free(uio->smile);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
190 g_free(uio);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
191 wer->smileys = g_slist_remove(wer->smileys, uio);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
192 }
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
193 wer2 = wer->next;
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
194 g_free(wer->sml);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
195 g_free(wer);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
196 wer = wer2;
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
197 }
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
198 theme->list = NULL;
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
199 g_slist_free(already_freed);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
200
13625
4768bf7afce2 [gaim-migrate @ 16011]
Daniel Atallah <datallah@pidgin.im>
parents: 13587
diff changeset
201 g_free(theme->name);
4768bf7afce2 [gaim-migrate @ 16011]
Daniel Atallah <datallah@pidgin.im>
parents: 13587
diff changeset
202 g_free(theme->desc);
4768bf7afce2 [gaim-migrate @ 16011]
Daniel Atallah <datallah@pidgin.im>
parents: 13587
diff changeset
203 g_free(theme->author);
4768bf7afce2 [gaim-migrate @ 16011]
Daniel Atallah <datallah@pidgin.im>
parents: 13587
diff changeset
204 g_free(theme->icon);
13587
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
205 g_free(theme->path);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
206 g_free(theme);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
207
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
208 return;
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
209 }
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
210
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
211 if (new_theme) {
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
212 smiley_themes = g_slist_append(smiley_themes, theme);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
213 }
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
214
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
215 if (load) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
216 GList *cnv;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
217
13587
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
218 if (current_smiley_theme) {
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
219 GSList *already_freed = NULL;
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
220 struct smiley_list *wer = current_smiley_theme->list, *wer2;
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
221 while (wer) {
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
222 while (wer->smileys) {
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
223 GtkIMHtmlSmiley *uio = wer->smileys->data;
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
224 if (uio->icon)
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
225 g_object_unref(uio->icon);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
226 if (!g_slist_find(already_freed, uio->file)) {
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
227 g_free(uio->file);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
228 already_freed = g_slist_append(already_freed, uio->file);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
229 }
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
230 g_free(uio->smile);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
231 g_free(uio);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
232 wer->smileys = g_slist_remove(wer->smileys, uio);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
233 }
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
234 wer2 = wer->next;
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
235 g_free(wer->sml);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
236 g_free(wer);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
237 wer = wer2;
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
238 }
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
239 current_smiley_theme->list = NULL;
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
240 g_slist_free(already_freed);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
241 }
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
242 current_smiley_theme = theme;
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
243
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
244 for (cnv = gaim_get_conversations(); cnv != NULL; cnv = cnv->next) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
245 GaimConversation *conv = cnv->data;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
246
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
247 if (GAIM_IS_GTK_CONVERSATION(conv)) {
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
248 gaim_gtkthemes_smiley_themeize(GAIM_GTK_CONVERSATION(conv)->imhtml);
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
249 gaim_gtkthemes_smiley_themeize(GAIM_GTK_CONVERSATION(conv)->entry);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
250 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
251 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
252 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
253 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
254
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
255 void gaim_gtkthemes_smiley_theme_probe()
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
256 {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
257 GDir *dir;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
258 const gchar *file;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
259 gchar *path;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
260 int l;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
261
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
262 char* probedirs[3];
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
263 probedirs[0] = g_build_filename(DATADIR, "pixmaps", "gaim", "smileys", NULL);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
264 probedirs[1] = g_build_filename(gaim_user_dir(), "smileys", NULL);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
265 probedirs[2] = 0;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
266 for (l=0; probedirs[l]; l++) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
267 dir = g_dir_open(probedirs[l], 0, NULL);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
268 if (dir) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
269 while ((file = g_dir_read_name(dir))) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
270 path = g_build_filename(probedirs[l], file, "theme", NULL);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
271
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
272 /* Here we check to see that the theme has proper syntax.
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
273 * We set the second argument to FALSE so that it doesn't load
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
274 * the theme yet.
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
275 */
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
276 gaim_gtkthemes_load_smiley_theme(path, FALSE);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
277 g_free(path);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
278 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
279 g_dir_close(dir);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
280 } else if (l == 1) {
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 10295
diff changeset
281 g_mkdir(probedirs[l], S_IRUSR | S_IWUSR | S_IXUSR);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
282 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
283 g_free(probedirs[l]);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
284 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
285 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
286
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
287 GSList *gaim_gtkthemes_get_proto_smileys(const char *id) {
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
288 GaimPlugin *proto;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
289 struct smiley_list *list, *def;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
290
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
291 if ((current_smiley_theme == NULL) || (current_smiley_theme->list == NULL))
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
292 return NULL;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
293
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
294 def = list = current_smiley_theme->list;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
296 if (id == NULL)
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
297 return def->smileys;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
298
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
299 proto = gaim_find_prpl(id);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
300
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
301 while (list) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
302 if (!strcmp(list->sml, "default"))
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
303 def = list;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
304 else if (proto && !strcmp(proto->info->name, list->sml))
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
305 break;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
306
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
307 list = list->next;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
308 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
309
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
310 return list ? list->smileys : def->smileys;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
311 }
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
312
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
313 void gaim_gtkthemes_init()
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
314 {
11557
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
315 GSList *l;
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
316 const char *current_theme =
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
317 gaim_prefs_get_string("/gaim/gtk/smileys/theme");
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
318
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
319 gaim_gtkthemes_smiley_theme_probe();
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
320
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
321 for (l = smiley_themes; l; l = l->next) {
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
322 struct smiley_theme *smile = l->data;
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
323 if (smile->name && strcmp(current_theme, smile->name) == 0) {
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
324 gaim_gtkthemes_load_smiley_theme(smile->path, TRUE);
11557
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
325 break;
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
326 }
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
327 }
11557
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
328
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
329 /* If we still don't have a smiley theme, choose the first one */
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
330 if (!current_smiley_theme && smiley_themes) {
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
331 struct smiley_theme *smile = smiley_themes->data;
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
332 gaim_gtkthemes_load_smiley_theme(smile->path, TRUE);
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
333 }
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
334
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
335 }

mercurial