Mercurial > pidgin.yaz
annotate pidgin/plugins/gtkbuddynote.c @ 26262:b03430dae08e
Add xmlnode_set_attrib_full that enables you to set an attribute with both
a prefix and a namespace. Also, change xmlnode_remove_attribute to remove
all existing attributes that match the name. Otherwise, it would just take
out the first one, and may not do what you want.
Change Bonjour and XMPP to use the new function.
References #7681.
Fixes #8318.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Fri, 13 Mar 2009 04:29:11 +0000 |
parents | 3cc856ca2338 |
children | fddded5ee514 |
rev | line source |
---|---|
17812
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
1 /* |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
2 * GtkBuddyNote - Store notes on particular buddies |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
3 * Copyright (C) 2007 Etan Reisner <deryni@pidgin.im> |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
4 * |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
5 * This program is free software; you can redistribute it and/or |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
6 * modify it under the terms of the GNU General Public License |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
7 * as published by the Free Software Foundation; either version 2 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
8 * of the License, or (at your option) any later version. |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
9 * |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
10 * This program is distributed in the hope that it will be useful, |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
13 * GNU General Public License for more details. |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
14 * |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
16 * along with this program; if not, write to the Free Software |
19680
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
18626
diff
changeset
|
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301, USA. |
17812
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
18 */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
19 #include "internal.h" |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
20 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
21 #include <gtkblist.h> |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
22 #include <gtkplugin.h> |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
23 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
24 #include <debug.h> |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
25 #include <version.h> |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
26 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
27 static void |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
28 append_to_tooltip(PurpleBlistNode *node, GString *text, gboolean full) |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
29 { |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
30 if (full) { |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
31 const gchar *note = purple_blist_node_get_string(node, "notes"); |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
32 |
18264
a2c488006756
Make gtkbuddynote load itself if it finds buddynote was loaded and it is
Stu Tomlinson <stu@nosnilmot.com>
parents:
17812
diff
changeset
|
33 if ((note != NULL) && (*note != '\0')) { |
20157
2a8b576590d8
Convert buddy notes to plain text before displaying in the tooltip to
Stu Tomlinson <stu@nosnilmot.com>
parents:
19680
diff
changeset
|
34 char *tmp; |
2a8b576590d8
Convert buddy notes to plain text before displaying in the tooltip to
Stu Tomlinson <stu@nosnilmot.com>
parents:
19680
diff
changeset
|
35 purple_markup_html_to_xhtml(note, NULL, &tmp); |
18264
a2c488006756
Make gtkbuddynote load itself if it finds buddynote was loaded and it is
Stu Tomlinson <stu@nosnilmot.com>
parents:
17812
diff
changeset
|
36 g_string_append_printf(text, _("\n<b>Buddy Note</b>: %s"), |
20157
2a8b576590d8
Convert buddy notes to plain text before displaying in the tooltip to
Stu Tomlinson <stu@nosnilmot.com>
parents:
19680
diff
changeset
|
37 tmp); |
2a8b576590d8
Convert buddy notes to plain text before displaying in the tooltip to
Stu Tomlinson <stu@nosnilmot.com>
parents:
19680
diff
changeset
|
38 g_free(tmp); |
17812
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
39 } |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
40 } |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
41 } |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
42 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
43 static gboolean |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
44 plugin_load(PurplePlugin *plugin) |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
45 { |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
46 purple_signal_connect(pidgin_blist_get_handle(), "drawing-tooltip", |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
47 plugin, PURPLE_CALLBACK(append_to_tooltip), NULL); |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
48 return TRUE; |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
49 } |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
50 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
51 static gboolean |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
52 plugin_unload(PurplePlugin *plugin) |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
53 { |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
54 PurplePlugin *buddynote = NULL; |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
55 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
56 buddynote = purple_plugins_find_with_id("core-plugin_pack-buddynote"); |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
57 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
58 purple_plugin_unload(buddynote); |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
59 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
60 return TRUE; |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
61 } |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
62 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
63 static PurplePluginInfo info = |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
64 { |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
65 PURPLE_PLUGIN_MAGIC, |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
66 PURPLE_MAJOR_VERSION, /**< major version */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
67 PURPLE_MINOR_VERSION, /**< minor version */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
68 PURPLE_PLUGIN_STANDARD, /**< type */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
69 PIDGIN_PLUGIN_TYPE, /**< ui_requirement */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
70 0, /**< flags */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
71 NULL, /**< dependencies */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
72 PURPLE_PRIORITY_DEFAULT, /**< priority */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
73 "gtkbuddynote", /**< id */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
74 N_("Buddy Notes"), /**< name */ |
21030
3cc856ca2338
Add a --with-extraversion option to ./configure so packagers can fine tune
Stu Tomlinson <stu@nosnilmot.com>
parents:
20157
diff
changeset
|
75 DISPLAY_VERSION, /**< version */ |
17812
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
76 N_("Store notes on particular buddies."), /**< summary */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
77 N_("Adds the option to store notes for buddies " |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
78 "on your buddy list."), /**< description */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
79 "Etan Reisner <deryni@pidgin.im>", /**< author */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
80 PURPLE_WEBSITE, /**< homepage */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
81 plugin_load, /**< load */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
82 plugin_unload, /**< unload */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
83 NULL, /**< destroy */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
84 NULL, /**< ui_info */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
85 NULL, /**< extra_info */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
86 NULL, /**< prefs_info */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
87 NULL, /**< actions */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
88 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
89 /* padding */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
90 NULL, |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
91 NULL, |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
92 NULL, |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
93 NULL |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
94 }; |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
95 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
96 static gboolean |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
97 check_for_buddynote(gpointer data) |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
98 { |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
99 PurplePlugin *buddynote = NULL; |
18264
a2c488006756
Make gtkbuddynote load itself if it finds buddynote was loaded and it is
Stu Tomlinson <stu@nosnilmot.com>
parents:
17812
diff
changeset
|
100 PurplePlugin *plugin = (PurplePlugin *)data; |
17812
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
101 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
102 buddynote = purple_plugins_find_with_id("core-plugin_pack-buddynote"); |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
103 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
104 if (buddynote == NULL) { |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
105 buddynote = purple_plugins_find_with_basename("buddynote"); |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
106 } |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
107 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
108 if (buddynote != NULL) { |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
109 PurplePluginInfo *bninfo = buddynote->info; |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
110 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
111 bninfo->flags = PURPLE_PLUGIN_FLAG_INVISIBLE; |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
112 |
18264
a2c488006756
Make gtkbuddynote load itself if it finds buddynote was loaded and it is
Stu Tomlinson <stu@nosnilmot.com>
parents:
17812
diff
changeset
|
113 |
a2c488006756
Make gtkbuddynote load itself if it finds buddynote was loaded and it is
Stu Tomlinson <stu@nosnilmot.com>
parents:
17812
diff
changeset
|
114 /* If non-gtk buddy note plugin is loaded, but we are not, then load |
a2c488006756
Make gtkbuddynote load itself if it finds buddynote was loaded and it is
Stu Tomlinson <stu@nosnilmot.com>
parents:
17812
diff
changeset
|
115 * ourselves, otherwise people upgrading from pre-gtkbuddynote days |
a2c488006756
Make gtkbuddynote load itself if it finds buddynote was loaded and it is
Stu Tomlinson <stu@nosnilmot.com>
parents:
17812
diff
changeset
|
116 * will not have 'Buddy Notes' showing as loaded in the plugins list. |
a2c488006756
Make gtkbuddynote load itself if it finds buddynote was loaded and it is
Stu Tomlinson <stu@nosnilmot.com>
parents:
17812
diff
changeset
|
117 * We also trigger a save on the list of plugins because it's not been |
a2c488006756
Make gtkbuddynote load itself if it finds buddynote was loaded and it is
Stu Tomlinson <stu@nosnilmot.com>
parents:
17812
diff
changeset
|
118 * loaded through the UI. */ |
a2c488006756
Make gtkbuddynote load itself if it finds buddynote was loaded and it is
Stu Tomlinson <stu@nosnilmot.com>
parents:
17812
diff
changeset
|
119 if (purple_plugin_is_loaded(buddynote) && |
a2c488006756
Make gtkbuddynote load itself if it finds buddynote was loaded and it is
Stu Tomlinson <stu@nosnilmot.com>
parents:
17812
diff
changeset
|
120 !purple_plugin_is_loaded(plugin)) { |
a2c488006756
Make gtkbuddynote load itself if it finds buddynote was loaded and it is
Stu Tomlinson <stu@nosnilmot.com>
parents:
17812
diff
changeset
|
121 purple_plugin_load(plugin); |
a2c488006756
Make gtkbuddynote load itself if it finds buddynote was loaded and it is
Stu Tomlinson <stu@nosnilmot.com>
parents:
17812
diff
changeset
|
122 pidgin_plugins_save(); |
a2c488006756
Make gtkbuddynote load itself if it finds buddynote was loaded and it is
Stu Tomlinson <stu@nosnilmot.com>
parents:
17812
diff
changeset
|
123 } |
a2c488006756
Make gtkbuddynote load itself if it finds buddynote was loaded and it is
Stu Tomlinson <stu@nosnilmot.com>
parents:
17812
diff
changeset
|
124 |
17812
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
125 } else { |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
126 info.flags = PURPLE_PLUGIN_FLAG_INVISIBLE; |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
127 } |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
128 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
129 return FALSE; |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
130 } |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
131 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
132 static void |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
133 init_plugin(PurplePlugin *plugin) |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
134 { |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
135 /* Use g_idle_add so that the rest of the plugins can get loaded |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
136 * before we do our check. */ |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
137 g_idle_add(check_for_buddynote, plugin); |
18626
f05360b5470d
Fix core plugin dependency registering for gtkbuddynote to happen in plugin_init() so that it can work correctly. Add an additional sanity check in the core plugin unloading so that messed up dependency registrations don't cause crashes in the future. Thanks to deryni for helping figure this out.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18264
diff
changeset
|
138 |
f05360b5470d
Fix core plugin dependency registering for gtkbuddynote to happen in plugin_init() so that it can work correctly. Add an additional sanity check in the core plugin unloading so that messed up dependency registrations don't cause crashes in the future. Thanks to deryni for helping figure this out.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18264
diff
changeset
|
139 info.dependencies = g_list_append(info.dependencies, |
f05360b5470d
Fix core plugin dependency registering for gtkbuddynote to happen in plugin_init() so that it can work correctly. Add an additional sanity check in the core plugin unloading so that messed up dependency registrations don't cause crashes in the future. Thanks to deryni for helping figure this out.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18264
diff
changeset
|
140 "core-plugin_pack-buddynote"); |
17812
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
141 } |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
142 |
f2869d5facfe
Fix #318 which asked for the buddynote plugins notes to be shown in the
Etan Reisner <pidgin@unreliablesource.net>
parents:
diff
changeset
|
143 PURPLE_INIT_PLUGIN(gtkbuddynote, init_plugin, info) |