libpurple/plugins/helloworld.c

Mon, 23 Sep 2013 14:09:28 +0530

author
Ankit Vani <a@nevitus.org>
date
Mon, 23 Sep 2013 14:09:28 +0530
branch
soc.2013.gobjectification.plugins
changeset 36801
70047858a8fd
parent 36794
ab220f8db631
parent 34964
54ebd3dcae16
child 36906
729bdf55b919
permissions
-rw-r--r--

Merged soc.2013.gobjectification branch

19873
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
1 /*
19874
5cf8fc23a5db Fix the top of the header and also correct for the new FSF address.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19873
diff changeset
2 * Hello World Plugin
19873
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
3 *
19874
5cf8fc23a5db Fix the top of the header and also correct for the new FSF address.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19873
diff changeset
4 * Copyright (C) 2004, Gary Kramlich <grim@guifications.org>,
19878
aa9d2cfa70bf Fix my e-mail address to match my MTN key since it now is a real e-mail address.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19874
diff changeset
5 * 2007, John Bailey <rekkanoryo@cpw.pidgin.im>
19873
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
6 *
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
8 * modify it under the terms of the GNU General Public License as
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
9 * published by the Free Software Foundation; either version 2 of the
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
10 * License, or (at your option) any later version.
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
11 *
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful, but
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
15 * General Public License for more details.
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
16 *
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
19874
5cf8fc23a5db Fix the top of the header and also correct for the new FSF address.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19873
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
5cf8fc23a5db Fix the top of the header and also correct for the new FSF address.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19873
diff changeset
20 * 02111-1301, USA.
5cf8fc23a5db Fix the top of the header and also correct for the new FSF address.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19873
diff changeset
21 *
19873
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
22 */
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
23
34964
54ebd3dcae16 Simplified example plugins by including purple.h
Ankit Vani <a@nevitus.org>
parents: 34963
diff changeset
24 /* This file defines PURPLE_PLUGINS and includes all the libpurple headers */
54ebd3dcae16 Simplified example plugins by including purple.h
Ankit Vani <a@nevitus.org>
parents: 34963
diff changeset
25 #include <purple.h>
19873
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
26
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
27 /* This function is the callback for the plugin action we added. All we're
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
28 * doing here is displaying a message. When the user selects the plugin
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
29 * action, this function is called. */
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
30 static void
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
31 plugin_action_test_cb (PurplePluginAction * action)
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
32 {
34963
de6836a8b324 Removed unnecessary globally defined plugin variable in example plugins
Ankit Vani <a@nevitus.org>
parents: 34449
diff changeset
33 purple_notify_message (action->plugin, PURPLE_NOTIFY_MSG_INFO,
19873
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
34 "Plugin Actions Test", "This is a plugin actions test :)", NULL, NULL,
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 20288
diff changeset
35 NULL, NULL);
19873
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
36 }
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
37
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
38 /* we tell libpurple in the PurplePluginInfo struct to call this function to
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
39 * get a list of plugin actions to use for the plugin. This function gives
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
40 * libpurple that list of actions. */
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
41 static GList *
36742
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 36740
diff changeset
42 plugin_actions (PurplePlugin * plugin)
19873
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
43 {
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
44 /* some C89 (a.k.a. ANSI C) compilers will warn if any variable declaration
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
45 * includes an initilization that calls a function. To avoid that, we
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
46 * generally initialize our variables first with constant values like NULL
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
47 * or 0 and assign to them with function calls later */
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
48 GList *list = NULL;
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
49 PurplePluginAction *action = NULL;
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
50
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
51 /* The action gets created by specifying a name to show in the UI and a
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
52 * callback function to call. */
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
53 action = purple_plugin_action_new ("Plugin Action Test", plugin_action_test_cb);
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
54
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
55 /* libpurple requires a GList of plugin actions, even if there is only one
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
56 * action in the list. We append the action to a GList here. */
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
57 list = g_list_append (list, action);
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
58
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
59 /* Once the list is complete, we send it to libpurple. */
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
60 return list;
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
61 }
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
62
36740
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
63 static PurplePluginInfo *
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
64 plugin_query (GError ** error)
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
65 {
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
66 const gchar * const authors[] = {
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
67 "John Bailey <rekkanoryo@cpw.pidgin.im>", /* correct author */
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
68 NULL
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
69 };
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
70
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
71 /* For specific notes on the meanings of each of these members, consult the
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
72 C Plugin Howto on the website. */
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
73 return purple_plugin_info_new (
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
74 "id", "core-hello_world",
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
75 "name", "Hello World!",
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
76 "version", DISPLAY_VERSION, /* This constant is defined in config.h, but you shouldn't use it for your
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
77 own plugins. We use it here because it's our plugin. And we're lazy. */
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
78 "category", "Example",
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
79 "summary", "Hello World Plugin",
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
80 "description", "Hello World Plugin",
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
81 "authors", authors,
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
82 "website", "http://helloworld.tld",
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
83 "abi-version", PURPLE_ABI_VERSION,
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
84 "get-actions", plugin_actions, /* this tells libpurple the address of the function to call to get the list
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
85 of plugin actions. */
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
86 NULL
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
87 );
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
88 }
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
89
19873
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
90 static gboolean
36740
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
91 plugin_load (PurplePlugin * plugin, GError ** error)
19873
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
92 {
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
93 purple_notify_message (plugin, PURPLE_NOTIFY_MSG_INFO, "Hello World!",
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
94 "This is the Hello World! plugin :)", NULL, NULL,
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 20288
diff changeset
95 NULL, NULL);
19873
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
96
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
97 return TRUE;
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
98 }
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
99
36740
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
100 static gboolean
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
101 plugin_unload (PurplePlugin * plugin, GError ** error)
19873
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
102 {
36740
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
103 return TRUE;
19873
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
104 }
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
105
36740
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
106 PURPLE_PLUGIN_INIT (hello_world, plugin_query, plugin_load, plugin_unload);

mercurial