libpurple/plugins/helloworld.c

Sun, 20 Oct 2013 16:44:19 +0530

author
Ankit Vani <a@nevitus.org>
date
Sun, 20 Oct 2013 16:44:19 +0530
branch
soc.2013.gobjectification.plugins
changeset 36909
68cfb4e93457
parent 36906
729bdf55b919
parent 35027
bf4e1f00ec72
child 36934
e7268aeb3b89
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
35027
bf4e1f00ec72 Included internal.h in notify_example
Ankit Vani <a@nevitus.org>
parents: 35026
diff changeset
24 #include <internal.h>
35026
fde23518e1e5 Moved PurpleHash to cipher.[ch]
Ankit Vani <a@nevitus.org>
parents: 34964
diff changeset
25
34964
54ebd3dcae16 Simplified example plugins by including purple.h
Ankit Vani <a@nevitus.org>
parents: 34963
diff changeset
26 /* 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
27 #include <purple.h>
19873
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
28
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
29 /* 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
30 * 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
31 * 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
32 static void
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
33 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
34 {
34963
de6836a8b324 Removed unnecessary globally defined plugin variable in example plugins
Ankit Vani <a@nevitus.org>
parents: 34449
diff changeset
35 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
36 "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
37 NULL, NULL);
19873
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
38 }
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
39
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
40 /* 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
41 * 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
42 * 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
43 static GList *
36742
5d43951cabc0 More refactoring
Ankit Vani <a@nevitus.org>
parents: 36740
diff changeset
44 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
45 {
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
46 /* 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
47 * 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
48 * 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
49 * 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
50 GList *list = NULL;
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
51 PurplePluginAction *action = NULL;
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
52
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
53 /* 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
54 * callback function to call. */
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
55 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
56
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
57 /* 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
58 * 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
59 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
60
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
61 /* 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
62 return list;
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
63 }
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
64
36740
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
65 static PurplePluginInfo *
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
66 plugin_query (GError ** error)
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
67 {
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
68 const gchar * const authors[] = {
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
69 "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
70 NULL
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
71 };
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
72
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
73 /* 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
74 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
75 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
76 "id", "core-hello_world",
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
77 "name", "Hello World!",
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
78 "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
79 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
80 "category", "Example",
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
81 "summary", "Hello World Plugin",
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
82 "description", "Hello World Plugin",
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
83 "authors", authors,
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
84 "website", "http://helloworld.tld",
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
85 "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
86 "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
87 of plugin actions. */
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
88 NULL
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
89 );
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
90 }
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
91
19873
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
92 static gboolean
36740
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
93 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
94 {
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
95 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
96 "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
97 NULL, NULL);
19873
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 return TRUE;
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
100 }
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
101
36740
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
102 static gboolean
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
103 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
104 {
36740
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
105 return TRUE;
19873
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
106 }
84d19abe0d67 Adding the helloworld.c plugin used in the BasicPluginHowto and the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
diff changeset
107
36740
569f0d81876a Refactored the helloworld plugin to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
108 PURPLE_PLUGIN_INIT (hello_world, plugin_query, plugin_load, plugin_unload);

mercurial