Fri, 05 Mar 2021 03:31:29 -0600
Create a PidginAvatar widget.
This does everything the existing code does, but trying to integrate right now
is kind of difficult. The plan is to use this in a new PidginInfoPane I have
started, but that change got very large so I just packed it into the end of
the existing info pane.
The only things that are not implement right now, are making menu items
insensitive and that's because we need to figure out a better want to handle
custom avatars for users.
Testing Done:
Ran locally.
Reviewed at https://reviews.imfreedom.org/r/528/
|
35704
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
1 | /* pidgin |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
2 | * |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
3 | * Pidgin is the legal property of its developers, whose names are too numerous |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
4 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
5 | * source distribution. |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
6 | * |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
7 | * This program is free software; you can redistribute it and/or modify |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
8 | * it under the terms of the GNU General Public License as published by |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
9 | * the Free Software Foundation; either version 2 of the License, or |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
10 | * (at your option) any later version. |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
11 | * |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
12 | * This program is distributed in the hope that it will be useful, |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
15 | * GNU General Public License for more details. |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
16 | * |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
17 | * You should have received a copy of the GNU General Public License |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
18 | * along with this program; if not, write to the Free Software |
|
35781
8c621fbbee8e
Comments: PidginSmileyTheme
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35769
diff
changeset
|
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
35704
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
20 | */ |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
21 | |
|
40439
e9838d634d5e
Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents:
40360
diff
changeset
|
22 | #ifdef HAVE_CONFIG_H |
|
e9838d634d5e
Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents:
40360
diff
changeset
|
23 | # include <config.h> |
|
e9838d634d5e
Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents:
40360
diff
changeset
|
24 | #endif |
|
35704
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
25 | |
|
40496
6941fece679b
phase2 of pidgin.h: move existing file to pidgincore.h
Gary Kramlich <grim@reaperworld.com>
parents:
40439
diff
changeset
|
26 | #include <glib/gstdio.h> |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
27 | |
|
40360
e21f3bbcc2a5
Update all of the pidgin code to include purple.h
Gary Kramlich <grim@reaperworld.com>
parents:
40195
diff
changeset
|
28 | #include <purple.h> |
|
35706
6a0bbe6adc4a
PidginSmileyTheme: some fixes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35705
diff
changeset
|
29 | |
|
40496
6941fece679b
phase2 of pidgin.h: move existing file to pidgincore.h
Gary Kramlich <grim@reaperworld.com>
parents:
40439
diff
changeset
|
30 | #include "gtksmiley-theme.h" |
|
35708
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
31 | |
|
40496
6941fece679b
phase2 of pidgin.h: move existing file to pidgincore.h
Gary Kramlich <grim@reaperworld.com>
parents:
40439
diff
changeset
|
32 | #include "gtkutils.h" |
|
6941fece679b
phase2 of pidgin.h: move existing file to pidgincore.h
Gary Kramlich <grim@reaperworld.com>
parents:
40439
diff
changeset
|
33 | #include "pidgincore.h" |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
34 | |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
35 | #define PIDGIN_SMILEY_THEME_MAX_LINES 1024 |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
36 | #define PIDGIN_SMILEY_THEME_MAX_TOKENS 1024 |
|
35706
6a0bbe6adc4a
PidginSmileyTheme: some fixes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35705
diff
changeset
|
37 | |
|
39542
0575720e51bd
Use G_DECLARE* macros in smiley themes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39465
diff
changeset
|
38 | /** |
|
0575720e51bd
Use G_DECLARE* macros in smiley themes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39465
diff
changeset
|
39 | * PidginSmileyTheme: |
|
0575720e51bd
Use G_DECLARE* macros in smiley themes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39465
diff
changeset
|
40 | * |
|
0575720e51bd
Use G_DECLARE* macros in smiley themes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39465
diff
changeset
|
41 | * An implementation of a smiley theme. |
|
0575720e51bd
Use G_DECLARE* macros in smiley themes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39465
diff
changeset
|
42 | */ |
|
0575720e51bd
Use G_DECLARE* macros in smiley themes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39465
diff
changeset
|
43 | struct _PidginSmileyTheme |
|
0575720e51bd
Use G_DECLARE* macros in smiley themes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39465
diff
changeset
|
44 | { |
|
0575720e51bd
Use G_DECLARE* macros in smiley themes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39465
diff
changeset
|
45 | PurpleSmileyTheme parent; |
|
0575720e51bd
Use G_DECLARE* macros in smiley themes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39465
diff
changeset
|
46 | }; |
|
0575720e51bd
Use G_DECLARE* macros in smiley themes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39465
diff
changeset
|
47 | |
|
35704
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
48 | typedef struct |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
49 | { |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
50 | gchar *path; |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
51 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
52 | gchar *name; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
53 | gchar *desc; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
54 | gchar *icon; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
55 | gchar *author; |
|
35708
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
56 | |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
57 | GdkPixbuf *icon_pixbuf; |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
58 | |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
59 | GHashTable *smiley_lists_map; |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
60 | } PidginSmileyThemePrivate; |
|
35704
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
61 | |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
62 | static gchar **probe_dirs; |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
63 | static GList *smiley_themes = NULL; |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
64 | |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
65 | typedef struct |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
66 | { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
67 | gchar *name; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
68 | gchar *desc; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
69 | gchar *icon; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
70 | gchar *author; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
71 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
72 | GList *protocols; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
73 | } PidginSmileyThemeIndex; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
74 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
75 | typedef struct |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
76 | { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
77 | gchar *name; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
78 | GList *smileys; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
79 | } PidginSmileyThemeIndexProtocol; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
80 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
81 | typedef struct |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
82 | { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
83 | gchar *file; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
84 | gboolean hidden; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
85 | GList *shortcuts; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
86 | } PidginSmileyThemeIndexSmiley; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
87 | |
|
39238
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
88 | G_DEFINE_TYPE_WITH_PRIVATE(PidginSmileyTheme, pidgin_smiley_theme, |
|
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
89 | PURPLE_TYPE_SMILEY_THEME); |
|
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
90 | |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
91 | /******************************************************************************* |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
92 | * Theme index parsing |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
93 | ******************************************************************************/ |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
94 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
95 | static void |
| 40135 | 96 | pidgin_smiley_theme_index_smiley_free(PidginSmileyThemeIndexSmiley *smiley) |
| 97 | { | |
| 40139 | 98 | g_return_if_fail(smiley != NULL); |
| 99 | ||
| 40135 | 100 | g_free(smiley->file); |
| 101 | g_list_free_full(smiley->shortcuts, g_free); | |
| 102 | g_free(smiley); | |
| 103 | } | |
| 104 | ||
| 105 | static void | |
| 106 | pidgin_smiley_theme_index_protocol_free(PidginSmileyThemeIndexProtocol *proto) | |
| 107 | { | |
| 40139 | 108 | g_return_if_fail(proto != NULL); |
| 109 | ||
| 40135 | 110 | g_free(proto->name); |
| 111 | g_list_free_full(proto->smileys, (GDestroyNotify)pidgin_smiley_theme_index_smiley_free); | |
| 112 | g_free(proto); | |
| 113 | } | |
| 114 | ||
| 115 | static void | |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
116 | pidgin_smiley_theme_index_free(PidginSmileyThemeIndex *index) |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
117 | { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
118 | g_return_if_fail(index != NULL); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
119 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
120 | g_free(index->name); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
121 | g_free(index->desc); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
122 | g_free(index->icon); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
123 | g_free(index->author); |
| 40135 | 124 | g_list_free_full(index->protocols, (GDestroyNotify)pidgin_smiley_theme_index_protocol_free); |
|
39465
3b48e07c3625
Fix a leak in Pidgin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39461
diff
changeset
|
125 | g_free(index); |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
126 | } |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
127 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
128 | static PidginSmileyThemeIndex * |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
129 | pidgin_smiley_theme_index_parse(const gchar *theme_path, gboolean load_contents) |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
130 | { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
131 | PidginSmileyThemeIndex *index; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
132 | PidginSmileyThemeIndexProtocol *proto = NULL; |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
133 | gchar *index_path; |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
134 | FILE *file; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
135 | int line_no = 0; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
136 | gboolean inv_frm = FALSE; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
137 | |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
138 | index_path = g_build_filename(theme_path, "theme", NULL); |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
139 | file = g_fopen(index_path, "r"); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
140 | if (!file) { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
141 | purple_debug_error("gtksmiley-theme", |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
142 | "Failed to open index file %s", index_path); |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
143 | g_free(index_path); |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
144 | return NULL; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
145 | } |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
146 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
147 | index = g_new0(PidginSmileyThemeIndex, 1); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
148 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
149 | while (!feof(file)) { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
150 | PidginSmileyThemeIndexSmiley *smiley; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
151 | gchar buff[1024]; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
152 | gchar *line, *eqchr; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
153 | gchar **split; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
154 | int i; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
155 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
156 | if (++line_no > PIDGIN_SMILEY_THEME_MAX_LINES) { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
157 | purple_debug_warning("gtksmiley-theme", "file too big"); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
158 | break; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
159 | } |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
160 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
161 | if (!fgets(buff, sizeof(buff), file)) |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
162 | break; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
163 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
164 | /* strip comments */ |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
165 | if (buff[0] == '#') |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
166 | continue; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
167 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
168 | g_strstrip(buff); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
169 | if (buff[0] == '\0') |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
170 | continue; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
171 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
172 | if (!g_utf8_validate(buff, -1, NULL)) { |
|
35769
00e61752e21c
Fix build and warnings after merge
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35757
diff
changeset
|
173 | purple_debug_error("gtksmiley-theme", |
|
00e61752e21c
Fix build and warnings after merge
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35757
diff
changeset
|
174 | "%s:%d is invalid UTF-8", |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
175 | index_path, line_no); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
176 | continue; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
177 | } |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
178 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
179 | line = buff; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
180 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
181 | if (line[0] == '[') { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
182 | gchar *end; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
183 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
184 | if (!load_contents) |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
185 | break; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
186 | line++; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
187 | end = strchr(line, ']'); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
188 | if (!end) { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
189 | inv_frm = TRUE; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
190 | break; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
191 | } |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
192 | |
|
35799
04b439a886e6
Smileys: don't shuffle smileys when displaying smiley toolbar window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35781
diff
changeset
|
193 | if (proto) |
|
04b439a886e6
Smileys: don't shuffle smileys when displaying smiley toolbar window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35781
diff
changeset
|
194 | proto->smileys = g_list_reverse(proto->smileys); |
|
04b439a886e6
Smileys: don't shuffle smileys when displaying smiley toolbar window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35781
diff
changeset
|
195 | |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
196 | proto = g_new0(PidginSmileyThemeIndexProtocol, 1); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
197 | proto->name = g_strndup(line, end - line); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
198 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
199 | index->protocols = |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
200 | g_list_prepend(index->protocols, proto); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
201 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
202 | continue; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
203 | } |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
204 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
205 | if ((eqchr = strchr(line, '='))) { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
206 | *eqchr = '\0'; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
207 | if (g_ascii_strcasecmp(line, "name") == 0) { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
208 | g_free(index->name); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
209 | index->name = g_strdup(eqchr + 1); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
210 | g_strchug(index->name); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
211 | continue; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
212 | } else if (g_ascii_strcasecmp(line, "description") == 0) { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
213 | g_free(index->desc); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
214 | index->desc = g_strdup(eqchr + 1); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
215 | g_strchug(index->desc); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
216 | continue; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
217 | } else if (g_ascii_strcasecmp(line, "icon") == 0) { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
218 | g_free(index->icon); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
219 | index->icon = g_strdup(eqchr + 1); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
220 | g_strchug(index->icon); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
221 | continue; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
222 | } else if (g_ascii_strcasecmp(line, "author") == 0) { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
223 | g_free(index->author); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
224 | index->author = g_strdup(eqchr + 1); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
225 | g_strchug(index->author); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
226 | continue; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
227 | } |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
228 | *eqchr = '='; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
229 | } |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
230 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
231 | /* parsing section content */ |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
232 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
233 | if (proto == NULL) { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
234 | inv_frm = FALSE; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
235 | break; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
236 | } |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
237 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
238 | smiley = g_new0(PidginSmileyThemeIndexSmiley, 1); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
239 | proto->smileys = g_list_prepend(proto->smileys, smiley); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
240 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
241 | smiley->hidden = FALSE; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
242 | if (line[0] == '!') { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
243 | smiley->hidden = TRUE; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
244 | line++; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
245 | } |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
246 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
247 | split = g_strsplit_set(line, " \t", |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
248 | PIDGIN_SMILEY_THEME_MAX_TOKENS); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
249 | for (i = 0; split[i]; i++) { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
250 | gchar *token = split[i]; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
251 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
252 | if (token[0] == '\0') |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
253 | continue; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
254 | if (i == PIDGIN_SMILEY_THEME_MAX_TOKENS - 1) |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
255 | break; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
256 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
257 | if (!smiley->file) { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
258 | smiley->file = g_strdup(token); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
259 | continue; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
260 | } |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
261 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
262 | smiley->shortcuts = g_list_prepend(smiley->shortcuts, |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
263 | g_strdup(token)); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
264 | } |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
265 | g_strfreev(split); |
|
35713
4423f463a782
Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35710
diff
changeset
|
266 | smiley->shortcuts = g_list_reverse(smiley->shortcuts); |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
267 | } |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
268 | |
|
35799
04b439a886e6
Smileys: don't shuffle smileys when displaying smiley toolbar window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35781
diff
changeset
|
269 | if (proto) |
|
04b439a886e6
Smileys: don't shuffle smileys when displaying smiley toolbar window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35781
diff
changeset
|
270 | proto->smileys = g_list_reverse(proto->smileys); |
|
04b439a886e6
Smileys: don't shuffle smileys when displaying smiley toolbar window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35781
diff
changeset
|
271 | |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
272 | fclose(file); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
273 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
274 | if (inv_frm) { |
|
35769
00e61752e21c
Fix build and warnings after merge
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35757
diff
changeset
|
275 | purple_debug_error("gtksmiley-theme", "%s:%d" |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
276 | " invalid format", index_path, line_no); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
277 | pidgin_smiley_theme_index_free(index); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
278 | index = NULL; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
279 | } |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
280 | |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
281 | g_free(index_path); |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
282 | return index; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
283 | } |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
284 | |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
285 | /******************************************************************************* |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
286 | * Theme loading |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
287 | ******************************************************************************/ |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
288 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
289 | static void |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
290 | pidgin_smiley_theme_load(const gchar *theme_path) |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
291 | { |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
292 | PidginSmileyTheme *theme; |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
293 | PidginSmileyThemePrivate *priv; |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
294 | PidginSmileyThemeIndex *index; |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
295 | GList *it; |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
296 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
297 | /* it's not super-efficient, but we don't expect huge amount of |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
298 | * installed themes */ |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
299 | for (it = smiley_themes; it; it = g_list_next(it)) { |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
300 | PidginSmileyThemePrivate *priv = |
|
39238
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
301 | pidgin_smiley_theme_get_instance_private(it->data); |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
302 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
303 | /* theme is already loaded */ |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
304 | if (g_strcmp0(priv->path, theme_path) == 0) |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
305 | return; |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
306 | } |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
307 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
308 | theme = g_object_new(PIDGIN_TYPE_SMILEY_THEME, NULL); |
|
39238
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
309 | priv = pidgin_smiley_theme_get_instance_private(theme); |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
310 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
311 | priv->path = g_strdup(theme_path); |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
312 | |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
313 | index = pidgin_smiley_theme_index_parse(theme_path, FALSE); |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
314 | |
|
35707
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
315 | if (!index->name || index->name[0] == '\0') { |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
316 | purple_debug_warning("gtksmiley-theme", |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
317 | "incomplete theme %s", theme_path); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
318 | pidgin_smiley_theme_index_free(index); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
319 | g_object_unref(theme); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
320 | return; |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
321 | } |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
322 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
323 | priv->name = g_strdup(index->name); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
324 | if (index->desc && index->desc[0]) |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
325 | priv->desc = g_strdup(index->desc); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
326 | if (index->icon && index->icon[0]) |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
327 | priv->icon = g_strdup(index->icon); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
328 | if (index->author && index->author[0]) |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
329 | priv->author = g_strdup(index->author); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
330 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
331 | pidgin_smiley_theme_index_free(index); |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
332 | |
|
2979d2a75df8
PidginSmileyTheme: index file parsing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
333 | smiley_themes = g_list_append(smiley_themes, theme); |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
334 | } |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
335 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
336 | static void |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
337 | pidgin_smiley_theme_probe(void) |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
338 | { |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
339 | GList *it, *next; |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
340 | int i; |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
341 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
342 | /* remove non-existing themes */ |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
343 | for (it = smiley_themes; it; it = next) { |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
344 | PidginSmileyTheme *theme = it->data; |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
345 | PidginSmileyThemePrivate *priv = |
|
39238
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
346 | pidgin_smiley_theme_get_instance_private(theme); |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
347 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
348 | next = g_list_next(it); |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
349 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
350 | if (g_file_test(priv->path, G_FILE_TEST_EXISTS)) |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
351 | continue; |
|
35757
05981ff3fb7b
Custom smileys: send them with xmpp
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35739
diff
changeset
|
352 | smiley_themes = g_list_delete_link(smiley_themes, it); |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
353 | g_object_unref(theme); |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
354 | } |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
355 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
356 | /* scan for themes */ |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
357 | for (i = 0; probe_dirs[i]; i++) { |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
358 | GDir *dir = g_dir_open(probe_dirs[i], 0, NULL); |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
359 | const gchar *theme_dir_name; |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
360 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
361 | if (!dir) |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
362 | continue; |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
363 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
364 | while ((theme_dir_name = g_dir_read_name(dir))) { |
|
35706
6a0bbe6adc4a
PidginSmileyTheme: some fixes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35705
diff
changeset
|
365 | gchar *theme_path; |
|
6a0bbe6adc4a
PidginSmileyTheme: some fixes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35705
diff
changeset
|
366 | |
|
6a0bbe6adc4a
PidginSmileyTheme: some fixes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35705
diff
changeset
|
367 | /* Ignore Pidgin 2.x.y "none" theme. */ |
|
6a0bbe6adc4a
PidginSmileyTheme: some fixes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35705
diff
changeset
|
368 | if (g_strcmp0(theme_dir_name, "none") == 0) |
|
6a0bbe6adc4a
PidginSmileyTheme: some fixes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35705
diff
changeset
|
369 | continue; |
|
6a0bbe6adc4a
PidginSmileyTheme: some fixes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35705
diff
changeset
|
370 | |
|
6a0bbe6adc4a
PidginSmileyTheme: some fixes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35705
diff
changeset
|
371 | theme_path = g_build_filename( |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
372 | probe_dirs[i], theme_dir_name, NULL); |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
373 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
374 | if (g_file_test(theme_path, G_FILE_TEST_IS_DIR)) |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
375 | pidgin_smiley_theme_load(theme_path); |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
376 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
377 | g_free(theme_path); |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
378 | } |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
379 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
380 | g_dir_close(dir); |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
381 | } |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
382 | } |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
383 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
384 | |
|
35704
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
385 | /******************************************************************************* |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
386 | * API implementation |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
387 | ******************************************************************************/ |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
388 | |
|
35708
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
389 | const gchar * |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
390 | pidgin_smiley_theme_get_name(PidginSmileyTheme *theme) |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
391 | { |
|
39783
0d43b09199e6
Fix broken `priv != NULL` checks in Pidgin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39776
diff
changeset
|
392 | PidginSmileyThemePrivate *priv = NULL; |
|
35708
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
393 | |
|
39783
0d43b09199e6
Fix broken `priv != NULL` checks in Pidgin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39776
diff
changeset
|
394 | g_return_val_if_fail(PIDGIN_IS_SMILEY_THEME(theme), NULL); |
|
35708
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
395 | |
|
39783
0d43b09199e6
Fix broken `priv != NULL` checks in Pidgin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39776
diff
changeset
|
396 | priv = pidgin_smiley_theme_get_instance_private(theme); |
|
35708
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
397 | return priv->name; |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
398 | } |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
399 | |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
400 | const gchar * |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
401 | pidgin_smiley_theme_get_description(PidginSmileyTheme *theme) |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
402 | { |
|
39783
0d43b09199e6
Fix broken `priv != NULL` checks in Pidgin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39776
diff
changeset
|
403 | PidginSmileyThemePrivate *priv = NULL; |
|
35708
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
404 | |
|
39783
0d43b09199e6
Fix broken `priv != NULL` checks in Pidgin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39776
diff
changeset
|
405 | g_return_val_if_fail(PIDGIN_IS_SMILEY_THEME(theme), NULL); |
|
35708
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
406 | |
|
39783
0d43b09199e6
Fix broken `priv != NULL` checks in Pidgin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39776
diff
changeset
|
407 | priv = pidgin_smiley_theme_get_instance_private(theme); |
|
35708
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
408 | return priv->desc; |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
409 | } |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
410 | |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
411 | GdkPixbuf * |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
412 | pidgin_smiley_theme_get_icon(PidginSmileyTheme *theme) |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
413 | { |
|
39783
0d43b09199e6
Fix broken `priv != NULL` checks in Pidgin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39776
diff
changeset
|
414 | PidginSmileyThemePrivate *priv = NULL; |
|
35708
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
415 | |
|
39783
0d43b09199e6
Fix broken `priv != NULL` checks in Pidgin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39776
diff
changeset
|
416 | g_return_val_if_fail(PIDGIN_IS_SMILEY_THEME(theme), NULL); |
|
0d43b09199e6
Fix broken `priv != NULL` checks in Pidgin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39776
diff
changeset
|
417 | priv = pidgin_smiley_theme_get_instance_private(theme); |
|
35708
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
418 | |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
419 | if (priv->icon == NULL) |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
420 | return NULL; |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
421 | |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
422 | if (!priv->icon_pixbuf) { |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
423 | gchar *icon_path = g_build_filename( |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
424 | priv->path, priv->icon, NULL); |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
425 | priv->icon_pixbuf = pidgin_pixbuf_new_from_file(icon_path); |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
426 | g_free(icon_path); |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
427 | } |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
428 | |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
429 | return priv->icon_pixbuf; |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
430 | } |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
431 | |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
432 | const gchar * |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
433 | pidgin_smiley_theme_get_author(PidginSmileyTheme *theme) |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
434 | { |
|
39783
0d43b09199e6
Fix broken `priv != NULL` checks in Pidgin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39776
diff
changeset
|
435 | PidginSmileyThemePrivate *priv = NULL; |
|
35708
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
436 | |
|
39783
0d43b09199e6
Fix broken `priv != NULL` checks in Pidgin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39776
diff
changeset
|
437 | g_return_val_if_fail(PIDGIN_IS_SMILEY_THEME(theme), NULL); |
|
35708
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
438 | |
|
39783
0d43b09199e6
Fix broken `priv != NULL` checks in Pidgin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39776
diff
changeset
|
439 | priv = pidgin_smiley_theme_get_instance_private(theme); |
|
35708
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
440 | return priv->author; |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
441 | } |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
442 | |
|
35713
4423f463a782
Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35710
diff
changeset
|
443 | PurpleSmileyList * |
|
4423f463a782
Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35710
diff
changeset
|
444 | pidgin_smiley_theme_for_conv(PurpleConversation *conv) |
|
4423f463a782
Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35710
diff
changeset
|
445 | { |
|
35739
cb9acfd6fa1e
Smileys: hide hidden smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35738
diff
changeset
|
446 | PurpleAccount *acc = NULL; |
|
35713
4423f463a782
Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35710
diff
changeset
|
447 | PurpleSmileyTheme *theme; |
|
35738
030ce6840163
Smileys: toolbar button sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35713
diff
changeset
|
448 | const gchar *proto_name = NULL; |
|
35713
4423f463a782
Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35710
diff
changeset
|
449 | |
|
4423f463a782
Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35710
diff
changeset
|
450 | theme = purple_smiley_theme_get_current(); |
|
4423f463a782
Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35710
diff
changeset
|
451 | if (theme == NULL) |
|
4423f463a782
Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35710
diff
changeset
|
452 | return NULL; |
|
4423f463a782
Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35710
diff
changeset
|
453 | |
|
35738
030ce6840163
Smileys: toolbar button sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35713
diff
changeset
|
454 | if (conv) |
|
030ce6840163
Smileys: toolbar button sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35713
diff
changeset
|
455 | acc = purple_conversation_get_account(conv); |
|
030ce6840163
Smileys: toolbar button sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35713
diff
changeset
|
456 | if (acc) |
|
030ce6840163
Smileys: toolbar button sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35713
diff
changeset
|
457 | proto_name = purple_account_get_protocol_name(acc); |
|
35713
4423f463a782
Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35710
diff
changeset
|
458 | |
|
4423f463a782
Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35710
diff
changeset
|
459 | return purple_smiley_theme_get_smileys(theme, (gpointer)proto_name); |
|
4423f463a782
Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35710
diff
changeset
|
460 | } |
|
4423f463a782
Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35710
diff
changeset
|
461 | |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
462 | static void |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
463 | pidgin_smiley_theme_activate_impl(PurpleSmileyTheme *theme) |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
464 | { |
|
39238
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
465 | PidginSmileyThemePrivate *priv = |
|
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
466 | pidgin_smiley_theme_get_instance_private( |
|
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
467 | PIDGIN_SMILEY_THEME(theme)); |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
468 | PidginSmileyThemeIndex *index; |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
469 | GHashTable *smap; |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
470 | GList *it, *it2, *it3; |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
471 | |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
472 | if (priv->smiley_lists_map) |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
473 | return; |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
474 | |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
475 | priv->smiley_lists_map = smap = g_hash_table_new_full( |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
476 | g_str_hash, g_str_equal, g_free, g_object_unref); |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
477 | |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
478 | index = pidgin_smiley_theme_index_parse(priv->path, TRUE); |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
479 | |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
480 | for (it = index->protocols; it; it = g_list_next(it)) { |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
481 | PidginSmileyThemeIndexProtocol *proto_idx = it->data; |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
482 | PurpleSmileyList *proto_smileys; |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
483 | |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
484 | proto_smileys = g_hash_table_lookup(smap, proto_idx->name); |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
485 | if (!proto_smileys) { |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
486 | proto_smileys = purple_smiley_list_new(); |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
487 | g_hash_table_insert(smap, |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
488 | g_strdup(proto_idx->name), proto_smileys); |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
489 | } |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
490 | |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
491 | for (it2 = proto_idx->smileys; it2; it2 = g_list_next(it2)) { |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
492 | PidginSmileyThemeIndexSmiley *smiley_idx = it2->data; |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
493 | gchar *smiley_path; |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
494 | |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
495 | smiley_path = g_build_filename( |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
496 | priv->path, smiley_idx->file, NULL); |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
497 | if (!g_file_test(smiley_path, G_FILE_TEST_EXISTS)) { |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
498 | purple_debug_warning("gtksmiley-theme", |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
499 | "Smiley %s is missing", smiley_path); |
|
39461
a4ae05d3be93
Fix several g_build_filename leaks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39238
diff
changeset
|
500 | g_free(smiley_path); |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
501 | continue; |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
502 | } |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
503 | |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
504 | for (it3 = smiley_idx->shortcuts; it3; |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
505 | it3 = g_list_next(it3)) |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
506 | { |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
507 | PurpleSmiley *smiley; |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
508 | gchar *shortcut = it3->data; |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
509 | |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
510 | smiley = purple_smiley_new( |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
511 | shortcut, smiley_path); |
|
35739
cb9acfd6fa1e
Smileys: hide hidden smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35738
diff
changeset
|
512 | g_object_set_data(G_OBJECT(smiley), |
|
cb9acfd6fa1e
Smileys: hide hidden smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35738
diff
changeset
|
513 | "pidgin-smiley-hidden", |
|
cb9acfd6fa1e
Smileys: hide hidden smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35738
diff
changeset
|
514 | GINT_TO_POINTER(smiley_idx->hidden)); |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
515 | purple_smiley_list_add(proto_smileys, smiley); |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
516 | g_object_unref(smiley); |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
517 | } |
|
39461
a4ae05d3be93
Fix several g_build_filename leaks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39238
diff
changeset
|
518 | |
|
a4ae05d3be93
Fix several g_build_filename leaks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39238
diff
changeset
|
519 | g_free(smiley_path); |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
520 | } |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
521 | } |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
522 | |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
523 | pidgin_smiley_theme_index_free(index); |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
524 | } |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
525 | |
|
35704
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
526 | static PurpleSmileyList * |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
527 | pidgin_smiley_theme_get_smileys_impl(PurpleSmileyTheme *theme, gpointer ui_data) |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
528 | { |
|
39238
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
529 | PidginSmileyThemePrivate *priv = |
|
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
530 | pidgin_smiley_theme_get_instance_private( |
|
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
531 | PIDGIN_SMILEY_THEME(theme)); |
|
35739
cb9acfd6fa1e
Smileys: hide hidden smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35738
diff
changeset
|
532 | PurpleSmileyList *smileys = NULL; |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
533 | |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
534 | pidgin_smiley_theme_activate_impl(theme); |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
535 | |
|
35739
cb9acfd6fa1e
Smileys: hide hidden smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35738
diff
changeset
|
536 | if (ui_data) |
|
cb9acfd6fa1e
Smileys: hide hidden smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35738
diff
changeset
|
537 | smileys = g_hash_table_lookup(priv->smiley_lists_map, ui_data); |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
538 | if (smileys != NULL) |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
539 | return smileys; |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
540 | |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
541 | return g_hash_table_lookup(priv->smiley_lists_map, "default"); |
|
35704
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
542 | } |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
543 | |
|
35781
8c621fbbee8e
Comments: PidginSmileyTheme
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35769
diff
changeset
|
544 | GList * |
|
8c621fbbee8e
Comments: PidginSmileyTheme
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35769
diff
changeset
|
545 | pidgin_smiley_theme_get_all(void) |
|
8c621fbbee8e
Comments: PidginSmileyTheme
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35769
diff
changeset
|
546 | { |
|
8c621fbbee8e
Comments: PidginSmileyTheme
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35769
diff
changeset
|
547 | pidgin_smiley_theme_probe(); |
|
8c621fbbee8e
Comments: PidginSmileyTheme
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35769
diff
changeset
|
548 | |
|
8c621fbbee8e
Comments: PidginSmileyTheme
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35769
diff
changeset
|
549 | return smiley_themes; |
|
8c621fbbee8e
Comments: PidginSmileyTheme
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35769
diff
changeset
|
550 | } |
|
8c621fbbee8e
Comments: PidginSmileyTheme
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35769
diff
changeset
|
551 | |
|
35704
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
552 | void |
|
35781
8c621fbbee8e
Comments: PidginSmileyTheme
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35769
diff
changeset
|
553 | _pidgin_smiley_theme_init(void) |
|
35704
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
554 | { |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
555 | GList *it; |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
556 | const gchar *user_smileys_dir; |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
557 | const gchar *theme_name; |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
558 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
559 | probe_dirs = g_new0(gchar*, 3); |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
560 | probe_dirs[0] = g_build_filename( |
|
35850
1abeda205d6c
cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35799
diff
changeset
|
561 | PURPLE_DATADIR, "pixmaps", "pidgin", "emotes", NULL); |
|
39955
0ab521bb0887
Move smileys and themes to XDG data directory.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39783
diff
changeset
|
562 | user_smileys_dir = probe_dirs[1] = |
|
0ab521bb0887
Move smileys and themes to XDG data directory.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39783
diff
changeset
|
563 | g_build_filename(purple_data_dir(), "smileys", NULL); |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
564 | |
|
36049
bffbd724134d
Fix CWE-252 coverity issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35850
diff
changeset
|
565 | if (!g_file_test(user_smileys_dir, G_FILE_TEST_IS_DIR)) { |
|
bffbd724134d
Fix CWE-252 coverity issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35850
diff
changeset
|
566 | if (g_mkdir(user_smileys_dir, S_IRUSR | S_IWUSR | S_IXUSR) == 0) { |
|
bffbd724134d
Fix CWE-252 coverity issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35850
diff
changeset
|
567 | purple_debug_error("gtksmiley-theme", |
|
bffbd724134d
Fix CWE-252 coverity issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35850
diff
changeset
|
568 | "Failed to create user smileys dir"); |
|
bffbd724134d
Fix CWE-252 coverity issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35850
diff
changeset
|
569 | } |
|
bffbd724134d
Fix CWE-252 coverity issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35850
diff
changeset
|
570 | } |
|
35706
6a0bbe6adc4a
PidginSmileyTheme: some fixes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35705
diff
changeset
|
571 | |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
572 | /* setting theme by name (copy-paste from gtkprefs) */ |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
573 | pidgin_smiley_theme_probe(); |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
574 | theme_name = purple_prefs_get_string( |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
575 | PIDGIN_PREFS_ROOT "/smileys/theme"); |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
576 | for (it = smiley_themes; it; it = g_list_next(it)) { |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
577 | PidginSmileyTheme *theme = it->data; |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
578 | |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
579 | if (g_strcmp0(pidgin_smiley_theme_get_name(theme), theme_name)) |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
580 | continue; |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
581 | |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
582 | purple_smiley_theme_set_current(PURPLE_SMILEY_THEME(theme)); |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
583 | } |
|
35704
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
584 | } |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
585 | |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
586 | void |
|
35781
8c621fbbee8e
Comments: PidginSmileyTheme
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35769
diff
changeset
|
587 | _pidgin_smiley_theme_uninit(void) |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
588 | { |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
589 | g_strfreev(probe_dirs); |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
590 | } |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
591 | |
|
35704
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
592 | /******************************************************************************* |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
593 | * Object stuff |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
594 | ******************************************************************************/ |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
595 | |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
596 | static void |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
597 | pidgin_smiley_theme_finalize(GObject *obj) |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
598 | { |
|
39238
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
599 | PidginSmileyThemePrivate *priv = |
|
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
600 | pidgin_smiley_theme_get_instance_private( |
|
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
601 | PIDGIN_SMILEY_THEME(obj)); |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
602 | |
|
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
603 | g_free(priv->path); |
|
35708
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
604 | g_free(priv->name); |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
605 | g_free(priv->desc); |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
606 | g_free(priv->icon); |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
607 | g_free(priv->author); |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
608 | if (priv->icon_pixbuf) |
|
8903e6402d5b
PidginSmileyTheme: working implementation for gtkprefs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35707
diff
changeset
|
609 | g_object_unref(priv->icon_pixbuf); |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
610 | if (priv->smiley_lists_map) |
|
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
611 | g_hash_table_destroy(priv->smiley_lists_map); |
|
35705
3203e0f1b1bd
PidginSmileyTheme: probe themes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35704
diff
changeset
|
612 | |
|
39238
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
613 | G_OBJECT_CLASS(pidgin_smiley_theme_parent_class)->finalize(obj); |
|
35704
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
614 | } |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
615 | |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
616 | static void |
|
35706
6a0bbe6adc4a
PidginSmileyTheme: some fixes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35705
diff
changeset
|
617 | pidgin_smiley_theme_class_init(PidginSmileyThemeClass *klass) |
|
35704
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
618 | { |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
619 | GObjectClass *gobj_class = G_OBJECT_CLASS(klass); |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
620 | PurpleSmileyThemeClass *pst_class = PURPLE_SMILEY_THEME_CLASS(klass); |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
621 | |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
622 | gobj_class->finalize = pidgin_smiley_theme_finalize; |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
623 | |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
624 | pst_class->get_smileys = pidgin_smiley_theme_get_smileys_impl; |
|
35709
0d7a84931572
Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35708
diff
changeset
|
625 | pst_class->activate = pidgin_smiley_theme_activate_impl; |
|
35704
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
626 | } |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
627 | |
|
39238
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
628 | static void |
|
53cfb9400de8
Port Pidgin away from deprecated g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents:
36049
diff
changeset
|
629 | pidgin_smiley_theme_init(PidginSmileyTheme *theme) |
|
35704
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
630 | { |
|
aa22dcef8913
Initial PidginSmileyTheme implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
631 | } |