libpurple/plugins/buddynote.c

Sat, 27 Aug 2016 18:16:01 -0500

author
Mike Ruprecht <cmaiku@gmail.com>
date
Sat, 27 Aug 2016 18:16:01 -0500
changeset 37959
e76677ed819c
parent 36742
5d43951cabc0
child 39479
4da996236e9b
permissions
-rw-r--r--

connection: Add purple_connection_take_error()

This patch adds a purple_connection_take_error() function, which
is functionally equivalent to purple_connection_g_error(), except
that it takes ownership of the passed GError.

This is useful to simplify error handling so that the GError doesn't
have to be freed, or, in the future potentially copied, if it's no
longer needed where it's generated. It can also allow for GErrors
being generated without storing them in a variable. This would be
reasonably common if/when all PurpleConnection errors are passed
in via GError.

15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * BuddyNote - Store notes on particular buddies
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) 2004 Stu Tomlinson <stu@nosnilmot.com>
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * This program is free software; you can redistribute it and/or
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * modify it under the terms of the GNU General Public License
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * as published by the Free Software Foundation; either version 2
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 * of the License, or (at your option) any later version.
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 *
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * This program is distributed in the hope that it will be useful,
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 * GNU General Public License for more details.
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 *
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17708
diff changeset
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301, USA.
15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 */
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 #include "internal.h"
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 #include <debug.h>
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22 #include <notify.h>
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include <request.h>
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24 #include <signals.h>
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 #include <util.h>
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 #include <version.h>
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
29 dont_do_it_cb(PurpleBlistNode *node, const char *note)
15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 {
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 }
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
34 do_it_cb(PurpleBlistNode *node, const char *note)
15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
36 purple_blist_node_set_string(node, "notes", note);
15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 }
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
40 buddynote_edit_cb(PurpleBlistNode *node, gpointer data)
15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 {
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 const char *note;
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
44 note = purple_blist_node_get_string(node, "notes");
15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
46 purple_request_input(node, _("Notes"),
15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 _("Enter your notes below..."),
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 NULL,
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 note, TRUE, FALSE, "html",
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 _("Save"), G_CALLBACK(do_it_cb),
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 _("Cancel"), G_CALLBACK(dont_do_it_cb),
34329
ddbc1337332c Request API refactoring: introduce PurpleRequestCommonParameters and switch purple_request_input to it
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 21630
diff changeset
52 NULL, node);
15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 }
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
56 buddynote_extended_menu_cb(PurpleBlistNode *node, GList **m)
15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
58 PurpleMenuAction *bna = NULL;
15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59
34865
764a33b41ac7 Renamed blist node's dont_save to transient.
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
60 if (purple_blist_node_is_transient(node))
17708
0f23250ae460 Prevent the Buddy Notes plugin from offering to edit notes on a buddy list
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16745
diff changeset
61 return;
0f23250ae460 Prevent the Buddy Notes plugin from offering to edit notes on a buddy list
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16745
diff changeset
62
15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63 *m = g_list_append(*m, bna);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
64 bna = purple_menu_action_new(_("Edit Notes..."), PURPLE_CALLBACK(buddynote_edit_cb), NULL, NULL);
15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 *m = g_list_append(*m, bna);
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66 }
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67
36742
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
68 static PurplePluginInfo *
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
69 plugin_query(GError **error)
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
70 {
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
71 const gchar * const authors[] = {
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
72 "Stu Tomlinson <stu@nosnilmot.com>",
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
73 NULL
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
74 };
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
75
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
76 return purple_plugin_info_new(
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
77 "id", "core-plugin_pack-buddynote",
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
78 "name", N_("Buddy Notes"),
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
79 "version", DISPLAY_VERSION,
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
80 "category", N_("Utility"),
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
81 "summary", N_("Store notes on particular buddies."),
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
82 "description", N_("Adds the option to store notes for buddies on your "
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
83 "buddy list."),
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
84 "authors", authors,
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
85 "website", PURPLE_WEBSITE,
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
86 "abi-version", PURPLE_ABI_VERSION,
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
87 NULL
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
88 );
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
89 }
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
90
15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 static gboolean
36742
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
92 plugin_load(PurplePlugin *plugin, GError **error)
15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 {
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
95 purple_signal_connect(purple_blist_get_handle(), "blist-node-extended-menu",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
96 plugin, PURPLE_CALLBACK(buddynote_extended_menu_cb), NULL);
15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 return TRUE;
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 }
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100
36742
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
101 static gboolean
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
102 plugin_unload(PurplePlugin *plugin, GError **error)
15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 {
36742
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
104 return TRUE;
15230
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105 }
e36be229f6d0 [gaim-migrate @ 17954]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106
36742
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 34940
diff changeset
107 PURPLE_PLUGIN_INIT(buddynote, plugin_query, plugin_load, plugin_unload);

mercurial