src/themes.c

Sun, 08 Aug 2004 00:48:19 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Sun, 08 Aug 2004 00:48:19 +0000
changeset 9709
2e73f176cc80
parent 8892
de17c81eb8ec
child 9791
f5c5bda0b96b
permissions
-rw-r--r--

[gaim-migrate @ 10570]
This patch is freaking massive.
Renamed ui.h to gtkdialogs.h
Renamed dialogs.c to gtkdialogs.c
sed'ed the hell out of the .po files

These files are similar to gtkutil.c/.h. They are meant to contain
dialogs such as the "New Instant Message" window, which does not
belong in gtkblist.c or gtkconv.c, and is called from both places.

Eventually the functions in gtkdialogs.c/.h should be changed to
conform to Gaim's naming convention.

4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1 /*
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2 * Themes for Gaim
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
3 *
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7956
diff changeset
4 * Gaim is the legal property of its developers, whose names are too numerous
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7956
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7956
diff changeset
6 * source distribution.
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
7 *
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
11 * (at your option) any later version.
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
12 *
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
16 * GNU General Public License for more details.
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
17 *
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
21 *
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
22 */
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
23 #include "gtkinternal.h"
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
24
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
25 #include "conversation.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
26 #include "debug.h"
4667
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
27 #include "prpl.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
28 #include "util.h"
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
29
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
30 #include "gtkconv.h"
9709
2e73f176cc80 [gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents: 8892
diff changeset
31 #include "gtkdialogs.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
32 #include "gtkimhtml.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
33
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
34 struct smiley_list {
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
35 char *sml;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
36 GSList *smileys;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
37 struct smiley_list *next;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
38 };
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
39
4892
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
40 GSList *smiley_themes = NULL;
4288
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
41 struct smiley_theme *current_smiley_theme;
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
42
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
43 void smiley_themeize(GtkWidget *imhtml)
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
44 {
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
45 struct smiley_list *list;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
46 if (!current_smiley_theme)
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
47 return;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
48
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
49 gtk_imhtml_remove_smileys(GTK_IMHTML(imhtml));
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
50 list = current_smiley_theme->list;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
51 while (list) {
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
52 char *sml = !strcmp(list->sml, "default") ? NULL : list->sml;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
53 GSList *icons = list->smileys;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
54 while (icons) {
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
55 gtk_imhtml_associate_smiley(GTK_IMHTML(imhtml), sml, icons->data);
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
56 icons = icons->next;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
57 }
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
58 list = list->next;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
59 }
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
60 }
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
61
4892
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
62 void load_smiley_theme(const char *file, gboolean load)
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
63 {
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
64 FILE *f = fopen(file, "r");
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
65 char buf[256];
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
66 char *i;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
67 struct smiley_theme *theme=NULL;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
68 struct smiley_list *list = NULL;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
69 GSList *lst = smiley_themes;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
70 char *dirname;
4892
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
71
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
72 if (!f)
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
73 return;
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4398
diff changeset
74
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
75 while (lst) {
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
76 struct smiley_theme *thm = lst->data;
4288
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
77 if (!strcmp(thm->path, file)) {
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
78 theme = thm;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
79 break;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
80 }
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
81 lst = lst->next;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
82 }
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4398
diff changeset
83
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
84 if (!theme) {
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
85 theme = g_new0(struct smiley_theme, 1);
4288
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
86 theme->path = g_strdup(file);
4892
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
87 smiley_themes = g_slist_append(smiley_themes, theme);
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
88 }
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4398
diff changeset
89
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
90 dirname = g_path_get_dirname(file);
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
91 if (load) {
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
92 if (current_smiley_theme) {
4288
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
93 GSList *already_freed = NULL;
4892
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
94 struct smiley_list *wer = current_smiley_theme->list, *wer2;
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
95 while (wer) {
4288
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
96 while (wer->smileys) {
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
97 GtkIMHtmlSmiley *uio = wer->smileys->data;
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
98 if (uio->icon)
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
99 g_object_unref(uio->icon);
4288
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
100 if (!g_slist_find(already_freed, uio->file)) {
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
101 g_free(uio->file);
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
102 already_freed = g_slist_append(already_freed, uio->file);
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
103 }
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
104 g_free(uio->smile);
4288
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
105 g_free(uio);
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
106 wer->smileys=g_slist_remove(wer->smileys, uio);
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
107 }
4892
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
108 wer2 = wer->next;
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
109 g_free(wer->sml);
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
110 g_free(wer);
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
111 wer = wer2;
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
112 }
4288
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
113 current_smiley_theme->list = NULL;
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
114 g_slist_free(already_freed);
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
115 }
4288
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
116 current_smiley_theme = theme;
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
117 }
4816
497ee39d4b64 [gaim-migrate @ 5140]
Luke Schierer <lschiere@pidgin.im>
parents: 4814
diff changeset
118
497ee39d4b64 [gaim-migrate @ 5140]
Luke Schierer <lschiere@pidgin.im>
parents: 4814
diff changeset
119
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
120 while (!feof(f)) {
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
121 if (!fgets(buf, sizeof(buf), f)) {
4288
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
122 break;
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
123 }
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4398
diff changeset
124
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4398
diff changeset
125 if (buf[0] == '#' || buf[0] == '\0')
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
126 continue;
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4398
diff changeset
127
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
128 i = buf;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
129 while (isspace(*i))
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
130 i++;
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4398
diff changeset
131
4816
497ee39d4b64 [gaim-migrate @ 5140]
Luke Schierer <lschiere@pidgin.im>
parents: 4814
diff changeset
132 if (*i == '[' && strchr(i, ']') && load) {
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
133 struct smiley_list *child = g_new0(struct smiley_list, 1);
6478
2c3fe7c8659b [gaim-migrate @ 6991]
Robert McQueen <robot101@debian.org>
parents: 6371
diff changeset
134 child->sml = g_strndup(i+1, strchr(i, ']') - i - 1);
4816
497ee39d4b64 [gaim-migrate @ 5140]
Luke Schierer <lschiere@pidgin.im>
parents: 4814
diff changeset
135 if (theme->list)
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
136 list->next = child;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
137 else
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
138 theme->list = child;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
139 list = child;
4816
497ee39d4b64 [gaim-migrate @ 5140]
Luke Schierer <lschiere@pidgin.im>
parents: 4814
diff changeset
140 } else if (!g_ascii_strncasecmp(i, "Name=", strlen("Name="))) {
4892
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
141 if(theme->name)
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
142 g_free(theme->name);
4816
497ee39d4b64 [gaim-migrate @ 5140]
Luke Schierer <lschiere@pidgin.im>
parents: 4814
diff changeset
143 theme->name = g_strdup(i+ strlen("Name="));
497ee39d4b64 [gaim-migrate @ 5140]
Luke Schierer <lschiere@pidgin.im>
parents: 4814
diff changeset
144 theme->name[strlen(theme->name)-1] = 0;
497ee39d4b64 [gaim-migrate @ 5140]
Luke Schierer <lschiere@pidgin.im>
parents: 4814
diff changeset
145 } else if (!g_ascii_strncasecmp(i, "Description=", strlen("Description="))) {
4892
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
146 if(theme->desc)
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
147 g_free(theme->desc);
4816
497ee39d4b64 [gaim-migrate @ 5140]
Luke Schierer <lschiere@pidgin.im>
parents: 4814
diff changeset
148 theme->desc = g_strdup(i + strlen("Description="));
497ee39d4b64 [gaim-migrate @ 5140]
Luke Schierer <lschiere@pidgin.im>
parents: 4814
diff changeset
149 theme->desc[strlen(theme->desc)-1] = 0;
497ee39d4b64 [gaim-migrate @ 5140]
Luke Schierer <lschiere@pidgin.im>
parents: 4814
diff changeset
150 } else if (!g_ascii_strncasecmp(i, "Icon=", strlen("Icon="))) {
4892
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
151 if(theme->icon)
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
152 g_free(theme->icon);
4816
497ee39d4b64 [gaim-migrate @ 5140]
Luke Schierer <lschiere@pidgin.im>
parents: 4814
diff changeset
153 theme->icon = g_build_filename(dirname, i + strlen("Icon="), NULL);
497ee39d4b64 [gaim-migrate @ 5140]
Luke Schierer <lschiere@pidgin.im>
parents: 4814
diff changeset
154 theme->icon[strlen(theme->icon)-1] = 0;
497ee39d4b64 [gaim-migrate @ 5140]
Luke Schierer <lschiere@pidgin.im>
parents: 4814
diff changeset
155 } else if (!g_ascii_strncasecmp(i, "Author=", strlen("Author="))) {
4892
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
156 if(theme->author)
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
157 g_free(theme->author);
4816
497ee39d4b64 [gaim-migrate @ 5140]
Luke Schierer <lschiere@pidgin.im>
parents: 4814
diff changeset
158 theme->author = g_strdup(i + strlen("Author="));
497ee39d4b64 [gaim-migrate @ 5140]
Luke Schierer <lschiere@pidgin.im>
parents: 4814
diff changeset
159 theme->author[strlen(theme->author)-1] = 0;
497ee39d4b64 [gaim-migrate @ 5140]
Luke Schierer <lschiere@pidgin.im>
parents: 4814
diff changeset
160 } else if (load && list) {
4667
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
161 gboolean hidden = FALSE;
4288
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
162 char *sfile = NULL;
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4398
diff changeset
163
4266
0cd42c6ff5fb [gaim-migrate @ 4517]
Sean Egan <seanegan@pidgin.im>
parents: 4263
diff changeset
164 if (*i == '!' && *(i + 1) == ' ') {
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
165 hidden = TRUE;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
166 i = i + 2;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
167 }
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
168 while (*i) {
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
169 char l[64];
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
170 int li = 0;
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4398
diff changeset
171 while (!isspace(*i))
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
172 l[li++] = *(i++);
4288
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
173 if (!sfile) {
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
174 l[li] = 0;
4288
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
175 sfile = g_build_filename(dirname, l, NULL);
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
176 } else {
4632
c3b2f7bc58e1 [gaim-migrate @ 4930]
Luke Schierer <lschiere@pidgin.im>
parents: 4630
diff changeset
177 GtkIMHtmlSmiley *smiley = g_new0(GtkIMHtmlSmiley, 1);
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
178 l[li] = 0;
4288
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
179 smiley->file = sfile;
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
180 smiley->smile = g_strdup(l);
4667
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
181 smiley->hidden = hidden;
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
182 list->smileys = g_slist_append(list->smileys, smiley);
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
183 }
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4398
diff changeset
184 while (isspace(*i))
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
185 i++;
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4398
diff changeset
186
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
187 }
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
188 }
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
189 }
4288
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
190
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
191 if (load) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4341
diff changeset
192 GList *cnv;
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4398
diff changeset
193
4375
1788e74229eb [gaim-migrate @ 4641]
Christian Hammond <chipx86@chipx86.com>
parents: 4359
diff changeset
194 for (cnv = gaim_get_conversations(); cnv != NULL; cnv = cnv->next) {
5676
d3c2fdaf4821 [gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
195 GaimConversation *conv = cnv->data;
4630
14945964677b [gaim-migrate @ 4921]
Nathan Walp <nwalp@pidgin.im>
parents: 4398
diff changeset
196
7736
193179c9a307 [gaim-migrate @ 8381]
Sean Egan <seanegan@pidgin.im>
parents: 6478
diff changeset
197 if (GAIM_IS_GTK_CONVERSATION(conv)) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4341
diff changeset
198 smiley_themeize(GAIM_GTK_CONVERSATION(conv)->imhtml);
7736
193179c9a307 [gaim-migrate @ 8381]
Sean Egan <seanegan@pidgin.im>
parents: 6478
diff changeset
199 smiley_themeize(GAIM_GTK_CONVERSATION(conv)->entry);
193179c9a307 [gaim-migrate @ 8381]
Sean Egan <seanegan@pidgin.im>
parents: 6478
diff changeset
200 }
4338
e4ad226358d1 [gaim-migrate @ 4602]
Christian Hammond <chipx86@chipx86.com>
parents: 4323
diff changeset
201 }
4288
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
202 }
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4266
diff changeset
203
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
204 g_free(dirname);
4989
9878cf519ae8 [gaim-migrate @ 5324]
Nathan Walp <nwalp@pidgin.im>
parents: 4892
diff changeset
205 fclose(f);
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
206 }
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
207
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
208 void smiley_theme_probe()
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
209 {
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
210 GDir *dir;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
211 const gchar *file;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
212 gchar *path;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
213 int l;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
214
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
215 char* probedirs[3];
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
216 probedirs[0] = g_build_filename(DATADIR, "pixmaps", "gaim", "smileys", NULL);
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
217 probedirs[1] = g_build_filename(gaim_user_dir(), "smileys", NULL);
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
218 probedirs[2] = 0;
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
219 for (l=0; probedirs[l]; l++) {
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
220 dir = g_dir_open(probedirs[l], 0, NULL);
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
221 if (dir) {
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
222 while ((file = g_dir_read_name(dir))) {
4301
016439275f14 [gaim-migrate @ 4555]
Sean Egan <seanegan@pidgin.im>
parents: 4298
diff changeset
223 path = g_build_filename(probedirs[l], file, "theme", NULL);
4892
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
224
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
225 /* Here we check to see that the theme has proper syntax.
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
226 * We set the second argument to FALSE so that it doesn't load
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
227 * the theme yet.
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
228 */
4892
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
229 load_smiley_theme(path, FALSE);
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
230 g_free(path);
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
231 }
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
232 g_dir_close(dir);
4341
01e60b0ab430 [gaim-migrate @ 4605]
Sean Egan <seanegan@pidgin.im>
parents: 4338
diff changeset
233 } else if (l == 1) {
01e60b0ab430 [gaim-migrate @ 4605]
Sean Egan <seanegan@pidgin.im>
parents: 4338
diff changeset
234 mkdir(probedirs[l], S_IRUSR | S_IWUSR | S_IXUSR);
4892
37b4a5ac5ebe [gaim-migrate @ 5222]
Nathan Walp <nwalp@pidgin.im>
parents: 4816
diff changeset
235 }
4263
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
236 g_free(probedirs[l]);
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
237 }
054b3ea4e7c5 [gaim-migrate @ 4514]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
238 }
4667
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
239
7956
21d891f33b89 [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7736
diff changeset
240 GSList *get_proto_smileys(const char *id) {
21d891f33b89 [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7736
diff changeset
241 GaimPlugin *proto = gaim_find_prpl(id);
4667
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
242 struct smiley_list *list, *def;
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
243
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
244 if(!current_smiley_theme)
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
245 return NULL;
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
246
8892
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8046
diff changeset
247 if(!current_smiley_theme->list)
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8046
diff changeset
248 return NULL;
de17c81eb8ec [gaim-migrate @ 9661]
Kevin Stange <kstange@pidgin.im>
parents: 8046
diff changeset
249
4667
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
250 def = list = current_smiley_theme->list;
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
251
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
252 while(list) {
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
253 if(!strcmp(list->sml, "default"))
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
254 def = list;
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 4989
diff changeset
255 else if(proto && !strcmp(proto->info->name, list->sml))
4667
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
256 break;
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
257
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
258 list = list->next;
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
259 }
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
260
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
261 return list ? list->smileys : def->smileys;
687237fa1ef5 [gaim-migrate @ 4978]
Nathan Walp <nwalp@pidgin.im>
parents: 4632
diff changeset
262 }

mercurial