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