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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10295
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
1 /*
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
2 * Themes for Gaim
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
3 *
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
4 * Gaim is the legal property of its developers, whose names are too numerous
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
6 * source distribution.
11525
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
7 *
10295
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
11 * (at your option) any later version.
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
12 *
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
16 * GNU General Public License for more details.
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
17 *
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
21 *
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
22 */
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
23 #include "internal.h"
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
24 #include "gtkgaim.h"
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
25
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
26 #include "conversation.h"
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
27 #include "debug.h"
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
28 #include "prpl.h"
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
29 #include "util.h"
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
30
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
31 #include "gtkconv.h"
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
32 #include "gtkdialogs.h"
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
33 #include "gtkimhtml.h"
11525
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
34 #include "gtkthemes.h"
10295
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
35
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
36 GSList *smiley_themes = NULL;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
37 struct smiley_theme *current_smiley_theme;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
38
11525
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
39 gboolean gaim_gtkthemes_smileys_disabled()
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
40 {
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
41 if (!current_smiley_theme)
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
42 return 1;
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
43
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
44 return strcmp(current_smiley_theme->name, "none") == 0;
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
45 }
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
46
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
47 void gaim_gtkthemes_smiley_themeize(GtkWidget *imhtml)
10295
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
48 {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
49 struct smiley_list *list;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
50 if (!current_smiley_theme)
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
51 return;
11525
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
52
10295
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
53 gtk_imhtml_remove_smileys(GTK_IMHTML(imhtml));
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
54 list = current_smiley_theme->list;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
55 while (list) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
56 char *sml = !strcmp(list->sml, "default") ? NULL : list->sml;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
57 GSList *icons = list->smileys;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
58 while (icons) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
59 gtk_imhtml_associate_smiley(GTK_IMHTML(imhtml), sml, icons->data);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
60 icons = icons->next;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
61 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
62 list = list->next;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
63 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
64 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
65
11525
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
66 void gaim_gtkthemes_load_smiley_theme(const char *file, gboolean load)
10295
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
67 {
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10295
diff changeset
68 FILE *f = g_fopen(file, "r");
10295
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
69 char buf[256];
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
70 char *i;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
71 struct smiley_theme *theme=NULL;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
72 struct smiley_list *list = NULL;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
73 GSList *lst = smiley_themes;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
74 char *dirname;
13586
0cc7773b1d87 [gaim-migrate @ 15971]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 13133
diff changeset
75 gboolean new_theme = FALSE;
10295
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
76
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
77 if (!f)
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
78 return;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
79
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
80 while (lst) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
81 struct smiley_theme *thm = lst->data;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
82 if (!strcmp(thm->path, file)) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
83 theme = thm;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
84 break;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
85 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
86 lst = lst->next;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
87 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
88
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
89 if (!theme) {
13586
0cc7773b1d87 [gaim-migrate @ 15971]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 13133
diff changeset
90 new_theme = TRUE;
10295
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
91 theme = g_new0(struct smiley_theme, 1);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
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
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
97 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
98
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
99 dirname = g_path_get_dirname(file);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
100
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
101 while (!feof(f)) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
102 if (!fgets(buf, sizeof(buf), f)) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
103 break;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
104 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
105
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
106 if (buf[0] == '#' || buf[0] == '\0')
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
107 continue;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
108
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
109 i = buf;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
110 while (isspace(*i))
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
111 i++;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
112
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
113 if (*i == '[' && strchr(i, ']') && load) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
114 struct smiley_list *child = g_new0(struct smiley_list, 1);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
115 child->sml = g_strndup(i+1, strchr(i, ']') - i - 1);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
116 if (theme->list)
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
117 list->next = child;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
118 else
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
119 theme->list = child;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
120 list = child;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
121 } else if (!g_ascii_strncasecmp(i, "Name=", strlen("Name="))) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
122 if(theme->name)
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
123 g_free(theme->name);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
124 theme->name = g_strdup(i+ strlen("Name="));
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
125 theme->name[strlen(theme->name)-1] = 0;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
126 } else if (!g_ascii_strncasecmp(i, "Description=", strlen("Description="))) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
127 if(theme->desc)
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
128 g_free(theme->desc);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
129 theme->desc = g_strdup(i + strlen("Description="));
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
130 theme->desc[strlen(theme->desc)-1] = 0;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
131 } else if (!g_ascii_strncasecmp(i, "Icon=", strlen("Icon="))) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
132 if(theme->icon)
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
133 g_free(theme->icon);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
134 theme->icon = g_build_filename(dirname, i + strlen("Icon="), NULL);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
135 theme->icon[strlen(theme->icon)-1] = 0;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
136 } else if (!g_ascii_strncasecmp(i, "Author=", strlen("Author="))) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
137 if(theme->author)
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
138 g_free(theme->author);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
139 theme->author = g_strdup(i + strlen("Author="));
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
140 theme->author[strlen(theme->author)-1] = 0;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
141 } else if (load && list) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
142 gboolean hidden = FALSE;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
143 char *sfile = NULL;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
144
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
145 if (*i == '!' && *(i + 1) == ' ') {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
146 hidden = TRUE;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
147 i = i + 2;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
148 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
149 while (*i) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
150 char l[64];
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
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
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
155 l[li++] = *(i++);
12915
fe2cb084ab16 [gaim-migrate @ 15268]
Richard Laager <rlaager@wiktel.com>
parents: 11557
diff changeset
156 }
10295
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
157 if (!sfile) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
158 l[li] = 0;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
159 sfile = g_build_filename(dirname, l, NULL);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
160 } else {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
161 GtkIMHtmlSmiley *smiley = g_new0(GtkIMHtmlSmiley, 1);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
162 l[li] = 0;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
163 smiley->file = sfile;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
164 smiley->smile = g_strdup(l);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
165 smiley->hidden = hidden;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
166 list->smileys = g_slist_append(list->smileys, smiley);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
167 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
168 while (isspace(*i))
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
169 i++;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
170
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
171 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
172 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
173 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
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
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
215 if (load) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
216 GList *cnv;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
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
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
244 for (cnv = gaim_get_conversations(); cnv != NULL; cnv = cnv->next) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
245 GaimConversation *conv = cnv->data;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
246
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
247 if (GAIM_IS_GTK_CONVERSATION(conv)) {
11525
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
248 gaim_gtkthemes_smiley_themeize(GAIM_GTK_CONVERSATION(conv)->imhtml);
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
249 gaim_gtkthemes_smiley_themeize(GAIM_GTK_CONVERSATION(conv)->entry);
10295
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
250 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
251 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
252 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
253 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
254
11525
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
255 void gaim_gtkthemes_smiley_theme_probe()
10295
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
256 {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
257 GDir *dir;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
258 const gchar *file;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
259 gchar *path;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
260 int l;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
261
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
262 char* probedirs[3];
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
263 probedirs[0] = g_build_filename(DATADIR, "pixmaps", "gaim", "smileys", NULL);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
264 probedirs[1] = g_build_filename(gaim_user_dir(), "smileys", NULL);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
265 probedirs[2] = 0;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
266 for (l=0; probedirs[l]; l++) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
267 dir = g_dir_open(probedirs[l], 0, NULL);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
268 if (dir) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
269 while ((file = g_dir_read_name(dir))) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
270 path = g_build_filename(probedirs[l], file, "theme", NULL);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
271
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
272 /* Here we check to see that the theme has proper syntax.
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
273 * We set the second argument to FALSE so that it doesn't load
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
274 * the theme yet.
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
275 */
11525
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
276 gaim_gtkthemes_load_smiley_theme(path, FALSE);
10295
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
277 g_free(path);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
278 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
279 g_dir_close(dir);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
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
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
282 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
283 g_free(probedirs[l]);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
284 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
285 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
286
11525
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
287 GSList *gaim_gtkthemes_get_proto_smileys(const char *id) {
10295
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
288 GaimPlugin *proto;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
289 struct smiley_list *list, *def;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
290
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
291 if ((current_smiley_theme == NULL) || (current_smiley_theme->list == NULL))
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
292 return NULL;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
293
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
294 def = list = current_smiley_theme->list;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
295
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
296 if (id == NULL)
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
297 return def->smileys;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
298
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
299 proto = gaim_find_prpl(id);
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
300
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
301 while (list) {
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
302 if (!strcmp(list->sml, "default"))
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
303 def = list;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
304 else if (proto && !strcmp(proto->info->name, list->sml))
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
305 break;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
306
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
307 list = list->next;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
308 }
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
309
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
310 return list ? list->smileys : def->smileys;
0cf2a686266e [gaim-migrate @ 11474]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
311 }
11525
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
312
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
313 void gaim_gtkthemes_init()
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
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
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
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
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
326 }
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
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
b47708f46a38 [gaim-migrate @ 13773]
Tim Ringenbach <marv@pidgin.im>
parents: 10589
diff changeset
335 }