pidgin/gtkthemes.c

Fri, 24 Mar 2017 02:23:46 +0300

author
qarkai <qarkai@gmail.com>
date
Fri, 24 Mar 2017 02:23:46 +0300
branch
string-comparison-r2
changeset 38259
c593fc9f5438
parent 38258
9a6551eba09c
child 40905
f2cec5958ed7
permissions
-rw-r--r--

Replace strcmp() with purple_strequal()
Didn't touch finch/libgnt files

10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
1 /*
15918
e43e05afc7e7 Fix smileys
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
2 * Themes for Pidgin
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
3 *
15918
e43e05afc7e7 Fix smileys
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
4 * Pidgin is the legal property of its developers, whose names are too numerous
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
6 * source distribution.
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
7 *
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
11 * (at your option) any later version.
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
12 *
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
16 * GNU General Public License for more details.
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
17 *
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 18535
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
21 *
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
22 */
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
23 #include "internal.h"
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
24 #include "pidgin.h"
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
25
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
26 #include "conversation.h"
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
27 #include "debug.h"
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
28 #include "prpl.h"
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
29 #include "util.h"
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
30
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
31 #include "gtkconv.h"
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
32 #include "gtkdialogs.h"
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
33 #include "gtkimhtml.h"
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
34 #include "gtksmiley.h"
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
35 #include "gtkthemes.h"
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
36
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
37 GSList *smiley_themes = NULL;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
38 struct smiley_theme *current_smiley_theme;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
39
17481
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
40 static void pidgin_themes_destroy_smiley_theme_smileys(struct smiley_theme *theme);
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
41
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16212
diff changeset
42 gboolean pidgin_themes_smileys_disabled()
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
43 {
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
44 if (!current_smiley_theme)
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
45 return 1;
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
46
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
47 return purple_strequal(current_smiley_theme->name, "none");
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
48 }
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
49
17481
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
50 static void
18535
360f2b11f562 Eliminate some duplicate code.
Richard Laager <rlaager@pidgin.im>
parents: 18348
diff changeset
51 pidgin_themes_destroy_smiley_theme(struct smiley_theme *theme)
360f2b11f562 Eliminate some duplicate code.
Richard Laager <rlaager@pidgin.im>
parents: 18348
diff changeset
52 {
360f2b11f562 Eliminate some duplicate code.
Richard Laager <rlaager@pidgin.im>
parents: 18348
diff changeset
53 pidgin_themes_destroy_smiley_theme_smileys(theme);
17481
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
54
18535
360f2b11f562 Eliminate some duplicate code.
Richard Laager <rlaager@pidgin.im>
parents: 18348
diff changeset
55 g_free(theme->name);
360f2b11f562 Eliminate some duplicate code.
Richard Laager <rlaager@pidgin.im>
parents: 18348
diff changeset
56 g_free(theme->desc);
360f2b11f562 Eliminate some duplicate code.
Richard Laager <rlaager@pidgin.im>
parents: 18348
diff changeset
57 g_free(theme->author);
360f2b11f562 Eliminate some duplicate code.
Richard Laager <rlaager@pidgin.im>
parents: 18348
diff changeset
58 g_free(theme->icon);
360f2b11f562 Eliminate some duplicate code.
Richard Laager <rlaager@pidgin.im>
parents: 18348
diff changeset
59 g_free(theme->path);
360f2b11f562 Eliminate some duplicate code.
Richard Laager <rlaager@pidgin.im>
parents: 18348
diff changeset
60 g_free(theme);
17481
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
61 }
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
62
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
63 static void pidgin_themes_remove_theme_dir(const char *theme_dir_name)
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
64 {
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
65 GString *str = NULL;
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
66 const char *file_name = NULL;
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
67 GDir *theme_dir = NULL;
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
68
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
69 if ((theme_dir = g_dir_open(theme_dir_name, 0, NULL)) != NULL) {
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
70 if ((str = g_string_new(theme_dir_name)) != NULL) {
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
71 while ((file_name = g_dir_read_name(theme_dir)) != NULL) {
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
72 g_string_printf(str, "%s%s%s", theme_dir_name, G_DIR_SEPARATOR_S, file_name);
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
73 g_unlink(str->str);
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
74 }
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
75 g_string_free(str, TRUE);
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
76 }
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
77 g_dir_close(theme_dir);
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
78 g_rmdir(theme_dir_name);
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
79 }
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
80 }
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
81
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
82 void pidgin_themes_remove_smiley_theme(const char *file)
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
83 {
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
84 char *theme_dir = NULL, *last_slash = NULL;
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
85 g_return_if_fail(NULL != file);
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 24588
diff changeset
86
17481
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
87 if (!g_file_test(file, G_FILE_TEST_EXISTS)) return;
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
88 if ((theme_dir = g_strdup(file)) == NULL) return ;
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
89
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
90 if ((last_slash = g_strrstr(theme_dir, G_DIR_SEPARATOR_S)) != NULL) {
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
91 GSList *iter = NULL;
17482
d4bbeba47e82 Figured out how to keep reflecting current smiley theme after remove.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17481
diff changeset
92 struct smiley_theme *theme = NULL, *new_theme = NULL;
17481
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
93
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
94 *last_slash = 0;
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
95
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
96 /* Delete files on disk */
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
97 pidgin_themes_remove_theme_dir(theme_dir);
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
98
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
99 /* Find theme in themes list and remove it */
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
100 for (iter = smiley_themes ; iter ; iter = iter->next) {
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
101 theme = ((struct smiley_theme *)(iter->data));
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 36256
diff changeset
102 if (purple_strequal(theme->path, file))
17481
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
103 break ;
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
104 }
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
105 if (iter) {
17482
d4bbeba47e82 Figured out how to keep reflecting current smiley theme after remove.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17481
diff changeset
106 if (theme == current_smiley_theme) {
d4bbeba47e82 Figured out how to keep reflecting current smiley theme after remove.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17481
diff changeset
107 new_theme = ((struct smiley_theme *)(NULL == iter->next ? (smiley_themes == iter ? NULL : smiley_themes->data) : iter->next->data));
d4bbeba47e82 Figured out how to keep reflecting current smiley theme after remove.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17481
diff changeset
108 if (new_theme)
d4bbeba47e82 Figured out how to keep reflecting current smiley theme after remove.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17481
diff changeset
109 purple_prefs_set_string(PIDGIN_PREFS_ROOT "/smileys/theme", new_theme->name);
d4bbeba47e82 Figured out how to keep reflecting current smiley theme after remove.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17481
diff changeset
110 else
d4bbeba47e82 Figured out how to keep reflecting current smiley theme after remove.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17481
diff changeset
111 current_smiley_theme = NULL;
d4bbeba47e82 Figured out how to keep reflecting current smiley theme after remove.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17481
diff changeset
112 }
17481
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
113 smiley_themes = g_slist_delete_link(smiley_themes, iter);
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
114
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
115 /* Destroy theme structure */
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
116 pidgin_themes_destroy_smiley_theme(theme);
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
117 }
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
118 }
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
119
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
120 g_free(theme_dir);
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
121 }
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
122
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
123 static void _pidgin_themes_smiley_themeize(GtkWidget *imhtml, gboolean custom)
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
124 {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
125 struct smiley_list *list;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
126 if (!current_smiley_theme)
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
127 return;
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
128
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
129 gtk_imhtml_remove_smileys(GTK_IMHTML(imhtml));
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
130 list = current_smiley_theme->list;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
131 while (list) {
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 36256
diff changeset
132 char *sml = purple_strequal(list->sml, "default") ? NULL : list->sml;
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
133 GSList *icons = list->smileys;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
134 while (icons) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
135 gtk_imhtml_associate_smiley(GTK_IMHTML(imhtml), sml, icons->data);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
136 icons = icons->next;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
137 }
22655
718f1149a81c Introduce API for GtkIMHtmlSmiley. Use this to prevent leaking remote custom emoticons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22443
diff changeset
138
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
139 if (custom == TRUE) {
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
140 icons = pidgin_smileys_get_all();
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
141
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
142 while (icons) {
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
143 gtk_imhtml_associate_smiley(GTK_IMHTML(imhtml), sml, icons->data);
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
144 icons = icons->next;
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
145 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
146 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
147
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
148 list = list->next;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
149 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
150 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
151
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
152 void pidgin_themes_smiley_themeize(GtkWidget *imhtml)
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
153 {
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
154 _pidgin_themes_smiley_themeize(imhtml, FALSE);
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
155 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
156
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
157 void pidgin_themes_smiley_themeize_custom(GtkWidget *imhtml)
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
158 {
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
159 _pidgin_themes_smiley_themeize(imhtml, TRUE);
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
160 }
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
161
16195
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
162 static void
17481
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
163 pidgin_themes_destroy_smiley_theme_smileys(struct smiley_theme *theme)
16195
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
164 {
16211
670c6b68f7c5 Change a g_slist_append() to a g_slist_prepend() in one place, and
Mark Doliner <markdoliner@pidgin.im>
parents: 16195
diff changeset
165 GHashTable *already_freed;
670c6b68f7c5 Change a g_slist_append() to a g_slist_prepend() in one place, and
Mark Doliner <markdoliner@pidgin.im>
parents: 16195
diff changeset
166 struct smiley_list *wer;
16195
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
167
16211
670c6b68f7c5 Change a g_slist_append() to a g_slist_prepend() in one place, and
Mark Doliner <markdoliner@pidgin.im>
parents: 16195
diff changeset
168 already_freed = g_hash_table_new(g_direct_hash, g_direct_equal);
670c6b68f7c5 Change a g_slist_append() to a g_slist_prepend() in one place, and
Mark Doliner <markdoliner@pidgin.im>
parents: 16195
diff changeset
169 for (wer = theme->list; wer != NULL; wer = theme->list) {
16195
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
170 while (wer->smileys) {
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
171 GtkIMHtmlSmiley *uio = wer->smileys->data;
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 24588
diff changeset
172
24588
b2c89babe134 Remove that hack involving GtkIMHtmlSmileys
Marcus Lundblad <malu@pidgin.im>
parents: 22655
diff changeset
173 if (uio->imhtml) {
b2c89babe134 Remove that hack involving GtkIMHtmlSmileys
Marcus Lundblad <malu@pidgin.im>
parents: 22655
diff changeset
174 g_signal_handlers_disconnect_matched(uio->imhtml, G_SIGNAL_MATCH_DATA,
b2c89babe134 Remove that hack involving GtkIMHtmlSmileys
Marcus Lundblad <malu@pidgin.im>
parents: 22655
diff changeset
175 0, 0, NULL, NULL, uio);
b2c89babe134 Remove that hack involving GtkIMHtmlSmileys
Marcus Lundblad <malu@pidgin.im>
parents: 22655
diff changeset
176 }
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 24588
diff changeset
177
16195
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
178 if (uio->icon)
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
179 g_object_unref(uio->icon);
16211
670c6b68f7c5 Change a g_slist_append() to a g_slist_prepend() in one place, and
Mark Doliner <markdoliner@pidgin.im>
parents: 16195
diff changeset
180 if (g_hash_table_lookup(already_freed, uio->file) == NULL) {
16195
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
181 g_free(uio->file);
16211
670c6b68f7c5 Change a g_slist_append() to a g_slist_prepend() in one place, and
Mark Doliner <markdoliner@pidgin.im>
parents: 16195
diff changeset
182 g_hash_table_insert(already_freed, uio->file, GINT_TO_POINTER(1));
16195
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
183 }
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
184 g_free(uio->smile);
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
185 g_free(uio);
28077
c2b493e058f1 Don't use pointers (even opaquely) once they're freed. Closes #9822.
Paul Aurich <darkrain42@pidgin.im>
parents: 28075
diff changeset
186 wer->smileys = g_slist_delete_link(wer->smileys, wer->smileys);
16195
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
187 }
16211
670c6b68f7c5 Change a g_slist_append() to a g_slist_prepend() in one place, and
Mark Doliner <markdoliner@pidgin.im>
parents: 16195
diff changeset
188 theme->list = wer->next;
16195
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
189 g_free(wer->sml);
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
190 g_free(wer);
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
191 }
16211
670c6b68f7c5 Change a g_slist_append() to a g_slist_prepend() in one place, and
Mark Doliner <markdoliner@pidgin.im>
parents: 16195
diff changeset
192 theme->list = NULL;
16195
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
193
16211
670c6b68f7c5 Change a g_slist_append() to a g_slist_prepend() in one place, and
Mark Doliner <markdoliner@pidgin.im>
parents: 16195
diff changeset
194 g_hash_table_destroy(already_freed);
16195
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
195 }
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
196
17521
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
197 static void
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
198 pidgin_smiley_themes_remove_non_existing(void)
17521
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
199 {
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
200 static struct smiley_theme *theme = NULL;
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
201 GSList *iter = NULL;
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
202
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
203 if (!smiley_themes) return ;
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
204
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
205 for (iter = smiley_themes ; iter ; iter = iter->next) {
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
206 theme = ((struct smiley_theme *)(iter->data));
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
207 if (!g_file_test(theme->path, G_FILE_TEST_EXISTS)) {
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
208 if (theme == current_smiley_theme)
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
209 current_smiley_theme = ((struct smiley_theme *)(NULL == iter->next ? NULL : iter->next->data));
18535
360f2b11f562 Eliminate some duplicate code.
Richard Laager <rlaager@pidgin.im>
parents: 18348
diff changeset
210 pidgin_themes_destroy_smiley_theme(theme);
17521
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
211 iter->data = NULL;
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
212 }
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
213 }
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
214 /* Remove all elements whose data is NULL */
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
215 smiley_themes = g_slist_remove_all(smiley_themes, NULL);
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
216
17522
73c2353f2cfa Aaaaaaaah!
Gabriel Schulhof <nix@go-nix.ca>
parents: 17521
diff changeset
217 if (!current_smiley_theme && smiley_themes) {
73c2353f2cfa Aaaaaaaah!
Gabriel Schulhof <nix@go-nix.ca>
parents: 17521
diff changeset
218 struct smiley_theme *smile = g_slist_last(smiley_themes)->data;
73c2353f2cfa Aaaaaaaah!
Gabriel Schulhof <nix@go-nix.ca>
parents: 17521
diff changeset
219 pidgin_themes_load_smiley_theme(smile->path, TRUE);
73c2353f2cfa Aaaaaaaah!
Gabriel Schulhof <nix@go-nix.ca>
parents: 17521
diff changeset
220 }
17521
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
221 }
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
222
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16212
diff changeset
223 void pidgin_themes_load_smiley_theme(const char *file, gboolean load)
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
224 {
34515
93d7461ccc1c Read theme file as binary (to avoid windows messing with line endings and stuff
Daniel Atallah <datallah@pidgin.im>
parents: 34514
diff changeset
225 FILE *f = g_fopen(file, "rb");
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
226 char buf[256];
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
227 char *i;
34514
46ba9c764edc Fix handling of multibyte utf-8 characters in smiley theme files. Fixes #15756.
Daniel Atallah <datallah@pidgin.im>
parents: 31294
diff changeset
228 gsize line_nbr = 0;
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
229 struct smiley_theme *theme=NULL;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
230 struct smiley_list *list = NULL;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
231 GSList *lst = smiley_themes;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
232 char *dirname;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
233
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
234 if (!f)
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
235 return;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
236
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
237 while (lst) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
238 struct smiley_theme *thm = lst->data;
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 36256
diff changeset
239 if (purple_strequal(thm->path, file)) {
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
240 theme = thm;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
241 break;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
242 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
243 lst = lst->next;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
244 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
245
28078
5f3cb020eb74 Oops, fix loading smiley themes.
Paul Aurich <darkrain42@pidgin.im>
parents: 28077
diff changeset
246 if (theme != NULL && theme == current_smiley_theme) {
13587
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
247 /* Don't reload the theme if it is already loaded */
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
248 fclose(f);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
249 return;
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
250 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
251
28075
2d472ed937db Clarify load_smiley_theme a little. Refs #9822.
Paul Aurich <darkrain42@pidgin.im>
parents: 25888
diff changeset
252 if (theme == NULL) {
2d472ed937db Clarify load_smiley_theme a little. Refs #9822.
Paul Aurich <darkrain42@pidgin.im>
parents: 25888
diff changeset
253 theme = g_new0(struct smiley_theme, 1);
2d472ed937db Clarify load_smiley_theme a little. Refs #9822.
Paul Aurich <darkrain42@pidgin.im>
parents: 25888
diff changeset
254 theme->path = g_strdup(file);
2d472ed937db Clarify load_smiley_theme a little. Refs #9822.
Paul Aurich <darkrain42@pidgin.im>
parents: 25888
diff changeset
255 smiley_themes = g_slist_prepend(smiley_themes, theme);
2d472ed937db Clarify load_smiley_theme a little. Refs #9822.
Paul Aurich <darkrain42@pidgin.im>
parents: 25888
diff changeset
256 }
2d472ed937db Clarify load_smiley_theme a little. Refs #9822.
Paul Aurich <darkrain42@pidgin.im>
parents: 25888
diff changeset
257
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
258 dirname = g_path_get_dirname(file);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
259
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
260 while (!feof(f)) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
261 if (!fgets(buf, sizeof(buf), f)) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
262 break;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
263 }
34514
46ba9c764edc Fix handling of multibyte utf-8 characters in smiley theme files. Fixes #15756.
Daniel Atallah <datallah@pidgin.im>
parents: 31294
diff changeset
264 line_nbr++;
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
265
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
266 if (buf[0] == '#' || buf[0] == '\0')
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
267 continue;
29252
0fa50eacbcb3 Fix merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29251
diff changeset
268 else {
0fa50eacbcb3 Fix merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29251
diff changeset
269 int len = strlen(buf);
0fa50eacbcb3 Fix merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29251
diff changeset
270 while (len && (buf[len - 1] == '\r' || buf[len - 1] == '\n'))
0fa50eacbcb3 Fix merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29251
diff changeset
271 buf[--len] = '\0';
0fa50eacbcb3 Fix merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29251
diff changeset
272 if (len == 0)
0fa50eacbcb3 Fix merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29251
diff changeset
273 continue;
0fa50eacbcb3 Fix merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29251
diff changeset
274 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 29252
diff changeset
275
34514
46ba9c764edc Fix handling of multibyte utf-8 characters in smiley theme files. Fixes #15756.
Daniel Atallah <datallah@pidgin.im>
parents: 31294
diff changeset
276 if (! g_utf8_validate(buf, -1, NULL)) {
35967
cde50837937d Ifdef some dead code, fixing coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34515
diff changeset
277 purple_debug_error("gtkthemes", "%s:%" G_GSIZE_FORMAT " is invalid UTF-8\n", file, line_nbr);
34514
46ba9c764edc Fix handling of multibyte utf-8 characters in smiley theme files. Fixes #15756.
Daniel Atallah <datallah@pidgin.im>
parents: 31294
diff changeset
278 continue;
46ba9c764edc Fix handling of multibyte utf-8 characters in smiley theme files. Fixes #15756.
Daniel Atallah <datallah@pidgin.im>
parents: 31294
diff changeset
279 }
46ba9c764edc Fix handling of multibyte utf-8 characters in smiley theme files. Fixes #15756.
Daniel Atallah <datallah@pidgin.im>
parents: 31294
diff changeset
280
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
281 i = buf;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
282 while (isspace(*i))
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
283 i++;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
284
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
285 if (*i == '[' && strchr(i, ']') && load) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
286 struct smiley_list *child = g_new0(struct smiley_list, 1);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
287 child->sml = g_strndup(i+1, strchr(i, ']') - i - 1);
35997
23e05a4a90b3 Silence some already dismissed coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
288 if (list)
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
289 list->next = child;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
290 else
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
291 theme->list = child;
17534
609ab183a700 Reverse the smiley list only after reading the whole list of smileys in.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17474
diff changeset
292 /* Reverse the Smiley list since it was built in reverse order for efficiency reasons */
609ab183a700 Reverse the smiley list only after reading the whole list of smileys in.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17474
diff changeset
293 if (list != NULL)
609ab183a700 Reverse the smiley list only after reading the whole list of smileys in.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17474
diff changeset
294 list->smileys = g_slist_reverse(list->smileys);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
295 list = child;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
296 } else if (!g_ascii_strncasecmp(i, "Name=", strlen("Name="))) {
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13625
diff changeset
297 g_free(theme->name);
17474
a7f61acc10f6 A somewhat-Warmenhoved patch from tfujiwara to allow for the smiley theme
Richard Laager <rlaager@pidgin.im>
parents: 16458
diff changeset
298 theme->name = g_strdup(i + strlen("Name="));
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
299 } else if (!g_ascii_strncasecmp(i, "Description=", strlen("Description="))) {
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13625
diff changeset
300 g_free(theme->desc);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
301 theme->desc = g_strdup(i + strlen("Description="));
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
302 } else if (!g_ascii_strncasecmp(i, "Icon=", strlen("Icon="))) {
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13625
diff changeset
303 g_free(theme->icon);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
304 theme->icon = g_build_filename(dirname, i + strlen("Icon="), NULL);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
305 } else if (!g_ascii_strncasecmp(i, "Author=", strlen("Author="))) {
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13625
diff changeset
306 g_free(theme->author);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
307 theme->author = g_strdup(i + strlen("Author="));
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
308 } else if (load && list) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
309 gboolean hidden = FALSE;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
310 char *sfile = NULL;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
311
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
312 if (*i == '!' && *(i + 1) == ' ') {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
313 hidden = TRUE;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
314 i = i + 2;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
315 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
316 while (*i) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
317 char l[64];
36256
a437550a9308 Remove -Wno-sign-compare and backport fixes from default.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35999
diff changeset
318 size_t li = 0;
34514
46ba9c764edc Fix handling of multibyte utf-8 characters in smiley theme files. Fixes #15756.
Daniel Atallah <datallah@pidgin.im>
parents: 31294
diff changeset
319 char *next;
29246
544942e54b98 Look for non-null before processing theme input. Closes #10521 (again).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29241
diff changeset
320 while (*i && !isspace(*i) && li < sizeof(l) - 1) {
29252
0fa50eacbcb3 Fix merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29251
diff changeset
321 if (*i == '\\' && *(i+1) != '\0')
12915
d3efd3201aec [gaim-migrate @ 15268]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11557
diff changeset
322 i++;
35999
5841bd4da162 Fix even more coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35997
diff changeset
323 /* coverity[tainted_data] */
34514
46ba9c764edc Fix handling of multibyte utf-8 characters in smiley theme files. Fixes #15756.
Daniel Atallah <datallah@pidgin.im>
parents: 31294
diff changeset
324 next = g_utf8_next_char(i);
36256
a437550a9308 Remove -Wno-sign-compare and backport fixes from default.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35999
diff changeset
325 if ((size_t)(next - i) > (sizeof(l) - li -1)) {
34514
46ba9c764edc Fix handling of multibyte utf-8 characters in smiley theme files. Fixes #15756.
Daniel Atallah <datallah@pidgin.im>
parents: 31294
diff changeset
326 break;
46ba9c764edc Fix handling of multibyte utf-8 characters in smiley theme files. Fixes #15756.
Daniel Atallah <datallah@pidgin.im>
parents: 31294
diff changeset
327 }
46ba9c764edc Fix handling of multibyte utf-8 characters in smiley theme files. Fixes #15756.
Daniel Atallah <datallah@pidgin.im>
parents: 31294
diff changeset
328 while (i != next)
46ba9c764edc Fix handling of multibyte utf-8 characters in smiley theme files. Fixes #15756.
Daniel Atallah <datallah@pidgin.im>
parents: 31294
diff changeset
329 l[li++] = *(i++);
12915
d3efd3201aec [gaim-migrate @ 15268]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11557
diff changeset
330 }
22655
718f1149a81c Introduce API for GtkIMHtmlSmiley. Use this to prevent leaking remote custom emoticons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22443
diff changeset
331 l[li] = 0;
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
332 if (!sfile) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
333 sfile = g_build_filename(dirname, l, NULL);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
334 } else {
22655
718f1149a81c Introduce API for GtkIMHtmlSmiley. Use this to prevent leaking remote custom emoticons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22443
diff changeset
335 GtkIMHtmlSmiley *smiley = gtk_imhtml_smiley_create(sfile, l, hidden, 0);
16211
670c6b68f7c5 Change a g_slist_append() to a g_slist_prepend() in one place, and
Mark Doliner <markdoliner@pidgin.im>
parents: 16195
diff changeset
336 list->smileys = g_slist_prepend(list->smileys, smiley);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
337 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
338 while (isspace(*i))
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
339 i++;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
340
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
341 }
16458
e0e45bccd8e2 Fix #273 (Emoticons appearing in reverse order).
Daniel Atallah <datallah@pidgin.im>
parents: 16263
diff changeset
342
e0e45bccd8e2 Fix #273 (Emoticons appearing in reverse order).
Daniel Atallah <datallah@pidgin.im>
parents: 16263
diff changeset
343
22655
718f1149a81c Introduce API for GtkIMHtmlSmiley. Use this to prevent leaking remote custom emoticons.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22443
diff changeset
344 g_free(sfile);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
345 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
346 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
347
17535
5f2b75cc8b92 We also need to reverse the last protocol's smiley list instead of only
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17534
diff changeset
348 /* Reverse the Smiley list since it was built in reverse order for efficiency reasons */
5f2b75cc8b92 We also need to reverse the last protocol's smiley list instead of only
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17534
diff changeset
349 if (list != NULL)
5f2b75cc8b92 We also need to reverse the last protocol's smiley list instead of only
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17534
diff changeset
350 list->smileys = g_slist_reverse(list->smileys);
5f2b75cc8b92 We also need to reverse the last protocol's smiley list instead of only
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17534
diff changeset
351
13587
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
352 g_free(dirname);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
353 fclose(f);
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
354
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
355 if (!theme->name || !theme->desc || !theme->author) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15692
diff changeset
356 purple_debug_error("gtkthemes", "Invalid file format, not loading smiley theme from '%s'\n", file);
13587
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
357
28075
2d472ed937db Clarify load_smiley_theme a little. Refs #9822.
Paul Aurich <darkrain42@pidgin.im>
parents: 25888
diff changeset
358 smiley_themes = g_slist_remove(smiley_themes, theme);
18535
360f2b11f562 Eliminate some duplicate code.
Richard Laager <rlaager@pidgin.im>
parents: 18348
diff changeset
359 pidgin_themes_destroy_smiley_theme(theme);
13587
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
360 return;
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
361 }
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
362
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
363 if (load) {
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
364 GList *cnv;
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
365
16195
4e158cbe65cd Pull out the same block of code from two places and put it into
Mark Doliner <markdoliner@pidgin.im>
parents: 16194
diff changeset
366 if (current_smiley_theme)
17481
0187dfe85231 Need help reflecting selected smiley theme after remove
Gabriel Schulhof <nix@go-nix.ca>
parents: 17480
diff changeset
367 pidgin_themes_destroy_smiley_theme_smileys(current_smiley_theme);
13587
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
368 current_smiley_theme = theme;
fb0245a7ccab [gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents: 13134
diff changeset
369
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15692
diff changeset
370 for (cnv = purple_get_conversations(); cnv != NULL; cnv = cnv->next) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15692
diff changeset
371 PurpleConversation *conv = cnv->data;
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
372
15692
ecda27df58b9 Some more pidgininfication
Daniel Atallah <datallah@pidgin.im>
parents: 15577
diff changeset
373 if (PIDGIN_IS_PIDGIN_CONVERSATION(conv)) {
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
374 /* We want to see our custom smileys on our entry if we write the shortcut */
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16212
diff changeset
375 pidgin_themes_smiley_themeize(PIDGIN_CONVERSATION(conv)->imhtml);
22443
7b8772af6bb7 Apply the custom smiley patches from #1187, from Jorge VillaseƱo (Masca) and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
376 pidgin_themes_smiley_themeize_custom(PIDGIN_CONVERSATION(conv)->entry);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
377 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
378 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
379 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
380 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
381
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16212
diff changeset
382 void pidgin_themes_smiley_theme_probe()
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
383 {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
384 GDir *dir;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
385 const gchar *file;
17521
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
386 gchar *path, *test_path;
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
387 int l;
17521
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
388 char* probedirs[3];
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
389
17521
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
390 pidgin_smiley_themes_remove_non_existing();
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
391
15918
e43e05afc7e7 Fix smileys
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
392 probedirs[0] = g_build_filename(DATADIR, "pixmaps", "pidgin", "emotes", NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15692
diff changeset
393 probedirs[1] = g_build_filename(purple_user_dir(), "smileys", NULL);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
394 probedirs[2] = 0;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
395 for (l=0; probedirs[l]; l++) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
396 dir = g_dir_open(probedirs[l], 0, NULL);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
397 if (dir) {
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
398 while ((file = g_dir_read_name(dir))) {
17521
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
399 test_path = g_build_filename(probedirs[l], file, NULL);
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
400 if (g_file_test(test_path, G_FILE_TEST_IS_DIR)) {
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
401 path = g_build_filename(probedirs[l], file, "theme", NULL);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
402
17521
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
403 /* Here we check to see that the theme has proper syntax.
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
404 * We set the second argument to FALSE so that it doesn't load
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
405 * the theme yet.
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
406 */
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
407 pidgin_themes_load_smiley_theme(path, FALSE);
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
408 g_free(path);
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
409 }
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
410 g_free(test_path);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
411 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
412 g_dir_close(dir);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
413 } else if (l == 1) {
35991
e6937e52930b Fix some CWE-252 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35967
diff changeset
414 if (g_mkdir(probedirs[l], S_IRUSR | S_IWUSR | S_IXUSR) != 0) {
e6937e52930b Fix some CWE-252 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35967
diff changeset
415 purple_debug_error("gtkthemes",
e6937e52930b Fix some CWE-252 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35967
diff changeset
416 "couldn't create smileys dir\n");
e6937e52930b Fix some CWE-252 coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35967
diff changeset
417 }
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
418 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
419 g_free(probedirs[l]);
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
420 }
17521
116e5f0d9eca Weirdness ...
Gabriel Schulhof <nix@go-nix.ca>
parents: 17482
diff changeset
421
17522
73c2353f2cfa Aaaaaaaah!
Gabriel Schulhof <nix@go-nix.ca>
parents: 17521
diff changeset
422 if (!current_smiley_theme && smiley_themes) {
73c2353f2cfa Aaaaaaaah!
Gabriel Schulhof <nix@go-nix.ca>
parents: 17521
diff changeset
423 struct smiley_theme *smile = smiley_themes->data;
73c2353f2cfa Aaaaaaaah!
Gabriel Schulhof <nix@go-nix.ca>
parents: 17521
diff changeset
424 pidgin_themes_load_smiley_theme(smile->path, TRUE);
73c2353f2cfa Aaaaaaaah!
Gabriel Schulhof <nix@go-nix.ca>
parents: 17521
diff changeset
425 }
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
426 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
427
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16212
diff changeset
428 GSList *pidgin_themes_get_proto_smileys(const char *id) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15692
diff changeset
429 PurplePlugin *proto;
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
430 struct smiley_list *list, *def;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
431
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
432 if ((current_smiley_theme == NULL) || (current_smiley_theme->list == NULL))
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
433 return NULL;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
434
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
435 def = list = current_smiley_theme->list;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
436
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
437 if (id == NULL)
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
438 return def->smileys;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
439
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15692
diff changeset
440 proto = purple_find_prpl(id);
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
441
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
442 while (list) {
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 36256
diff changeset
443 if (purple_strequal(list->sml, "default"))
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
444 def = list;
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 36256
diff changeset
445 else if (proto && purple_strequal(proto->info->name, list->sml))
10295
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
446 break;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
447
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
448 list = list->next;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
449 }
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
450
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
451 return list ? list->smileys : def->smileys;
99ed714c92f3 [gaim-migrate @ 11474]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
452 }
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
453
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16212
diff changeset
454 void pidgin_themes_init()
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
455 {
11557
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
456 GSList *l;
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
457 const char *current_theme =
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15918
diff changeset
458 purple_prefs_get_string(PIDGIN_PREFS_ROOT "/smileys/theme");
11557
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
459
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16212
diff changeset
460 pidgin_themes_smiley_theme_probe();
11557
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
461
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
462 for (l = smiley_themes; l; l = l->next) {
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
463 struct smiley_theme *smile = l->data;
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
464 if (smile->name && purple_strequal(current_theme, smile->name)) {
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16212
diff changeset
465 pidgin_themes_load_smiley_theme(smile->path, TRUE);
11557
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
466 break;
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
467 }
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
468 }
11557
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
469
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
470 /* If we still don't have a smiley theme, choose the first one */
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
471 if (!current_smiley_theme && smiley_themes) {
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
472 struct smiley_theme *smile = smiley_themes->data;
16263
27e0ef0f38e6 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents: 16212
diff changeset
473 pidgin_themes_load_smiley_theme(smile->path, TRUE);
11557
7a20e7fb7915 [gaim-migrate @ 13819]
Daniel Atallah <datallah@pidgin.im>
parents: 11525
diff changeset
474 }
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 10589
diff changeset
475 }

mercurial