libpurple/plugins.c

Thu, 01 Aug 2013 16:39:24 +0530

author
Ankit Vani <a@nevitus.org>
date
Thu, 01 Aug 2013 16:39:24 +0530
branch
soc.2013.gobjectification.plugins
changeset 36402
a0d82b6f4081
parent 36401
b820d9a76ce9
child 36412
b57d4ad74b55
permissions
-rw-r--r--

Removed referencing of plugin from PurplePluginAction, since it is a part of the plugin.

5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15523
diff changeset
2 * purple
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15523
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7956
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7956
diff changeset
6 * source distribution.
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
7 *
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * (at your option) any later version.
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 *
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * GNU General Public License for more details.
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 *
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * 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: 18889
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 */
36372
5a1fe926f37b Fixed build errors for plugins.c, and used gplugin_plugin_manager_free_plugin_list()
Ankit Vani <a@nevitus.org>
parents: 36370
diff changeset
22 #include "internal.h"
5a1fe926f37b Fixed build errors for plugins.c, and used gplugin_plugin_manager_free_plugin_list()
Ankit Vani <a@nevitus.org>
parents: 36370
diff changeset
23
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
24 #include "debug.h"
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
25 #include "plugins.h"
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
26
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
27 #define PURPLE_PLUGIN_INFO_GET_PRIVATE(obj) \
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
28 (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_PLUGIN_INFO, PurplePluginInfoPrivate))
6822
4adcde13ad17 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6639
diff changeset
29
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
30 /** @copydoc _PurplePluginInfoPrivate */
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
31 typedef struct _PurplePluginInfoPrivate PurplePluginInfoPrivate;
6822
4adcde13ad17 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6639
diff changeset
32
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
33 /**************************************************************************
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
34 * Plugin info private data
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
35 **************************************************************************/
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
36 struct _PurplePluginInfoPrivate {
36395
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
37 GList *actions; /**< Actions that the plugin can perform >*/
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
38 PurplePluginPrefFrameCallback get_pref_frame; /**< Callback that returns a
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
39 preferences frame for a
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
40 plugin >*/
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
41 };
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
42
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
43 enum
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
44 {
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
45 PROP_0,
36395
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
46 PROP_PREF_FRAME_CALLBACK,
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
47 PROP_LAST
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
48 };
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
49
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
50 static GPluginPluginInfoClass *parent_class;
10682
c293ad49121e [gaim-migrate @ 12228]
Richard Laager <rlaager@pidgin.im>
parents: 10504
diff changeset
51
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
52 /**************************************************************************
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
53 * Globals
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
54 **************************************************************************/
36397
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
55 static GList *loaded_plugins = NULL;
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
56 static GList *plugins_to_disable = NULL;
10682
c293ad49121e [gaim-migrate @ 12228]
Richard Laager <rlaager@pidgin.im>
parents: 10504
diff changeset
57
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
58 /**************************************************************************
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
59 * Plugin API
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
60 **************************************************************************/
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
61 gboolean
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
62 purple_plugin_load(GPluginPlugin *plugin)
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
63 {
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
64 GError *error = NULL;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
65
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
66 g_return_val_if_fail(plugin != NULL, FALSE);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
67
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
68 if (purple_plugin_is_loaded(plugin))
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
69 return TRUE;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
70
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
71 if (!gplugin_plugin_manager_load_plugin(plugin, &error)) {
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
72 purple_debug_error("plugins", "Failed to load plugin %s: %s",
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
73 gplugin_plugin_get_filename(plugin), error->message);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
74 g_error_free(error);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
75 return FALSE;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
76 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
77
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
78 loaded_plugins = g_list_append(loaded_plugins, plugin);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
79
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
80 purple_signal_emit(purple_plugins_get_handle(), "plugin-load", plugin);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
81
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
82 return TRUE;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
83 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
84
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
85 gboolean
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
86 purple_plugin_unload(GPluginPlugin *plugin)
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
87 {
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
88 GError *error = NULL;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
89
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
90 g_return_val_if_fail(plugin != NULL, FALSE);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
91 g_return_val_if_fail(purple_plugin_is_loaded(plugin), FALSE);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
92
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
93 purple_debug_info("plugins", "Unloading plugin %s\n",
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
94 gplugin_plugin_get_filename(plugin));
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
95
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
96 if (!gplugin_plugin_manager_unload_plugin(plugin, &error)) {
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
97 purple_debug_error("plugins", "Failed to unload plugin %s: %s",
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
98 gplugin_plugin_get_filename(plugin), error->message);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
99 g_error_free(error);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
100 return FALSE;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
101 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
102
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
103 /* cancel any pending dialogs the plugin has */
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
104 purple_request_close_with_handle(plugin);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
105 purple_notify_close_with_handle(plugin);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
106
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
107 purple_signals_disconnect_by_handle(plugin);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
108
36397
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
109 loaded_plugins = g_list_remove(loaded_plugins, plugin);
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
110 plugins_to_disable = g_list_remove(plugins_to_disable, plugin);
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
111
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
112 purple_signal_emit(purple_plugins_get_handle(), "plugin-unload", plugin);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
113
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
114 purple_prefs_disconnect_by_handle(plugin);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
115
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
116 return TRUE;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
117 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
118
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
119 gboolean
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
120 purple_plugin_is_loaded(const GPluginPlugin *plugin)
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
121 {
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
122 g_return_val_if_fail(plugin != NULL, FALSE);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
123
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
124 return (gplugin_plugin_get_state(plugin) == GPLUGIN_PLUGIN_STATE_LOADED);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
125 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
126
36396
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
127 void
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
128 purple_plugin_add_action(GPluginPlugin *plugin, const char* label,
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
129 PurplePluginActionCallback callback)
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
130 {
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
131 GPluginPluginInfo *plugin_info;
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
132 PurplePluginInfoPrivate *priv;
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
133 PurplePluginAction *action;
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
134
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
135 g_return_if_fail(plugin != NULL);
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
136 g_return_if_fail(label != NULL && callback != NULL);
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
137
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
138 plugin_info = gplugin_plugin_get_info(plugin);
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
139 priv = PURPLE_PLUGIN_INFO_GET_PRIVATE(plugin_info);
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
140
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
141 action = g_new0(PurplePluginAction, 1);
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
142
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
143 action->label = g_strdup(label);
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
144 action->callback = callback;
36402
a0d82b6f4081 Removed referencing of plugin from PurplePluginAction, since it is a part of the plugin.
Ankit Vani <a@nevitus.org>
parents: 36401
diff changeset
145 action->plugin = plugin;
36396
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
146
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
147 priv->actions = g_list_append(priv->actions, action);
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
148
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
149 g_object_unref(plugin_info);
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
150 }
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
151
36397
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
152 void
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
153 purple_plugin_disable(GPluginPlugin *plugin)
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
154 {
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
155 g_return_if_fail(plugin != NULL);
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
156
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
157 if (!g_list_find(plugins_to_disable, plugin))
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
158 plugins_to_disable = g_list_prepend(plugins_to_disable, plugin);
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
159 }
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
160
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
161 /**************************************************************************
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
162 * GObject code for PurplePluginInfo
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
163 **************************************************************************/
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
164 /* GObject Property names */
36395
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
165 #define PROP_PREF_FRAME_CALLBACK_S "pref-frame-callback"
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
166
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
167 /* Set method for GObject properties */
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
168 static void
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
169 purple_plugin_info_set_property(GObject *obj, guint param_id, const GValue *value,
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
170 GParamSpec *pspec)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
171 {
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
172 PurplePluginInfo *plugin_info = PURPLE_PLUGIN_INFO(obj);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
173
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
174 switch (param_id) {
36395
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
175 case PROP_PREF_FRAME_CALLBACK:
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
176 purple_plugin_info_set_pref_frame_callback(plugin_info,
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
177 g_value_get_pointer(value));
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
178 break;
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
179 default:
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
180 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
181 break;
7956
21d891f33b89 [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7279
diff changeset
182 }
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
183 }
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
184
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
185 /* Get method for GObject properties */
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
186 static void
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
187 purple_plugin_info_get_property(GObject *obj, guint param_id, GValue *value,
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
188 GParamSpec *pspec)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
189 {
36372
5a1fe926f37b Fixed build errors for plugins.c, and used gplugin_plugin_manager_free_plugin_list()
Ankit Vani <a@nevitus.org>
parents: 36370
diff changeset
190 PurplePluginInfo *plugin_info = PURPLE_PLUGIN_INFO(obj);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
191
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
192 switch (param_id) {
36395
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
193 case PROP_PREF_FRAME_CALLBACK:
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
194 g_value_set_pointer(value,
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
195 purple_plugin_info_get_pref_frame_callback(plugin_info));
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
196 break;
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
197 default:
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
198 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
199 break;
6822
4adcde13ad17 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6639
diff changeset
200 }
4adcde13ad17 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6639
diff changeset
201 }
4adcde13ad17 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6639
diff changeset
202
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
203 /* GObject initialization function */
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
204 static void
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
205 purple_plugin_info_init(GTypeInstance *instance, gpointer klass)
6822
4adcde13ad17 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6639
diff changeset
206 {
10479
e9165b73e60b [gaim-migrate @ 11766]
Nathan Walp <nwalp@pidgin.im>
parents: 10464
diff changeset
207 }
e9165b73e60b [gaim-migrate @ 11766]
Nathan Walp <nwalp@pidgin.im>
parents: 10464
diff changeset
208
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
209 /* GObject dispose function */
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
210 static void
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
211 purple_plugin_info_dispose(GObject *object)
15357
590859c5ee92 [gaim-migrate @ 18086]
Nathan Walp <nwalp@pidgin.im>
parents: 14918
diff changeset
212 {
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
213 G_OBJECT_CLASS(parent_class)->dispose(object);
5838
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5794
diff changeset
214 }
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5794
diff changeset
215
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
216 /* GObject finalize function */
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
217 static void
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
218 purple_plugin_info_finalize(GObject *object)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
219 {
36386
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
220 PurplePluginInfoPrivate *priv = PURPLE_PLUGIN_INFO_GET_PRIVATE(object);
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
221
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
222 while (priv->actions) {
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
223 g_boxed_free(PURPLE_TYPE_PLUGIN_ACTION, priv->actions->data);
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
224 priv->actions = g_list_delete_link(priv->actions, priv->actions);
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
225 }
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
226
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
227 G_OBJECT_CLASS(parent_class)->finalize(object);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
228 }
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
229
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
230 /* Class initializer function */
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
231 static void purple_plugin_info_class_init(PurplePluginInfoClass *klass)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
232 {
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
233 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
8749
fb487e9e101a [gaim-migrate @ 9504]
Christian Hammond <chipx86@chipx86.com>
parents: 8046
diff changeset
234
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
235 parent_class = g_type_class_peek_parent(klass);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
236
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
237 g_type_class_add_private(klass, sizeof(PurplePluginInfoPrivate));
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
238
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
239 obj_class->dispose = purple_plugin_info_dispose;
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
240 obj_class->finalize = purple_plugin_info_finalize;
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
241
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
242 /* Setup properties */
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
243 obj_class->get_property = purple_plugin_info_get_property;
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
244 obj_class->set_property = purple_plugin_info_set_property;
36395
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
245
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
246 g_object_class_install_property(obj_class, PROP_PREF_FRAME_CALLBACK,
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
247 g_param_spec_pointer(PROP_PREF_FRAME_CALLBACK_S,
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
248 "Preferences frame callback",
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
249 "The callback that returns the preferences frame",
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
250 G_PARAM_READWRITE));
34783
cefe6df8c6c6 Made PurplePlugin a GBoxed
Ankit Vani <a@nevitus.org>
parents: 34173
diff changeset
251 }
cefe6df8c6c6 Made PurplePlugin a GBoxed
Ankit Vani <a@nevitus.org>
parents: 34173
diff changeset
252
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
253 /**************************************************************************
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
254 * PluginInfo API
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
255 **************************************************************************/
34783
cefe6df8c6c6 Made PurplePlugin a GBoxed
Ankit Vani <a@nevitus.org>
parents: 34173
diff changeset
256 GType
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
257 purple_plugin_info_get_type(void)
34783
cefe6df8c6c6 Made PurplePlugin a GBoxed
Ankit Vani <a@nevitus.org>
parents: 34173
diff changeset
258 {
cefe6df8c6c6 Made PurplePlugin a GBoxed
Ankit Vani <a@nevitus.org>
parents: 34173
diff changeset
259 static GType type = 0;
cefe6df8c6c6 Made PurplePlugin a GBoxed
Ankit Vani <a@nevitus.org>
parents: 34173
diff changeset
260
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
261 if (G_UNLIKELY(type == 0)) {
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
262 static const GTypeInfo info = {
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
263 .class_size = sizeof(PurplePluginInfoClass),
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
264 .class_init = (GClassInitFunc)purple_plugin_info_class_init,
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
265 .instance_size = sizeof(PurplePluginInfo),
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
266 .instance_init = (GInstanceInitFunc)purple_plugin_info_init,
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
267 };
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
268
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
269 type = g_type_register_static(GPLUGIN_TYPE_PLUGIN_INFO,
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
270 "PurplePluginInfo", &info, 0);
34783
cefe6df8c6c6 Made PurplePlugin a GBoxed
Ankit Vani <a@nevitus.org>
parents: 34173
diff changeset
271 }
cefe6df8c6c6 Made PurplePlugin a GBoxed
Ankit Vani <a@nevitus.org>
parents: 34173
diff changeset
272
cefe6df8c6c6 Made PurplePlugin a GBoxed
Ankit Vani <a@nevitus.org>
parents: 34173
diff changeset
273 return type;
cefe6df8c6c6 Made PurplePlugin a GBoxed
Ankit Vani <a@nevitus.org>
parents: 34173
diff changeset
274 }
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
275
36389
8d86658a3b68 Added 'plugin' field to PurplePluginAction. Added purple_plugin_info_get_actions().
Ankit Vani <a@nevitus.org>
parents: 36386
diff changeset
276 GList *
8d86658a3b68 Added 'plugin' field to PurplePluginAction. Added purple_plugin_info_get_actions().
Ankit Vani <a@nevitus.org>
parents: 36386
diff changeset
277 purple_plugin_info_get_actions(PurplePluginInfo *plugin_info)
8d86658a3b68 Added 'plugin' field to PurplePluginAction. Added purple_plugin_info_get_actions().
Ankit Vani <a@nevitus.org>
parents: 36386
diff changeset
278 {
8d86658a3b68 Added 'plugin' field to PurplePluginAction. Added purple_plugin_info_get_actions().
Ankit Vani <a@nevitus.org>
parents: 36386
diff changeset
279 PurplePluginInfoPrivate *priv = PURPLE_PLUGIN_INFO_GET_PRIVATE(plugin_info);
8d86658a3b68 Added 'plugin' field to PurplePluginAction. Added purple_plugin_info_get_actions().
Ankit Vani <a@nevitus.org>
parents: 36386
diff changeset
280
8d86658a3b68 Added 'plugin' field to PurplePluginAction. Added purple_plugin_info_get_actions().
Ankit Vani <a@nevitus.org>
parents: 36386
diff changeset
281 g_return_val_if_fail(priv != NULL, NULL);
8d86658a3b68 Added 'plugin' field to PurplePluginAction. Added purple_plugin_info_get_actions().
Ankit Vani <a@nevitus.org>
parents: 36386
diff changeset
282
8d86658a3b68 Added 'plugin' field to PurplePluginAction. Added purple_plugin_info_get_actions().
Ankit Vani <a@nevitus.org>
parents: 36386
diff changeset
283 return priv->actions;
8d86658a3b68 Added 'plugin' field to PurplePluginAction. Added purple_plugin_info_get_actions().
Ankit Vani <a@nevitus.org>
parents: 36386
diff changeset
284 }
8d86658a3b68 Added 'plugin' field to PurplePluginAction. Added purple_plugin_info_get_actions().
Ankit Vani <a@nevitus.org>
parents: 36386
diff changeset
285
36395
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
286 void
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
287 purple_plugin_info_set_pref_frame_callback(PurplePluginInfo *plugin_info,
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
288 PurplePluginPrefFrameCallback callback)
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
289 {
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
290 PurplePluginInfoPrivate *priv = PURPLE_PLUGIN_INFO_GET_PRIVATE(plugin_info);
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
291
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
292 g_return_if_fail(priv != NULL);
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
293
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
294 priv->get_pref_frame = callback;
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
295 }
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
296
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
297 PurplePluginPrefFrameCallback
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
298 purple_plugin_info_get_pref_frame_callback(PurplePluginInfo *plugin_info)
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
299 {
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
300 PurplePluginInfoPrivate *priv = PURPLE_PLUGIN_INFO_GET_PRIVATE(plugin_info);
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
301
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
302 g_return_val_if_fail(priv != NULL, NULL);
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
303
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
304 return priv->get_pref_frame;
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
305 }
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
306
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
307 /**************************************************************************
36396
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
308 * PluginAction API
36386
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
309 **************************************************************************/
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
310 static void
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
311 purple_plugin_action_free(PurplePluginAction *action)
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
312 {
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
313 g_return_if_fail(action != NULL);
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
314
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
315 g_free(action->label);
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
316 g_free(action);
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
317 }
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
318
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
319 static PurplePluginAction *
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
320 purple_plugin_action_copy(PurplePluginAction *action)
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
321 {
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
322 PurplePluginAction *action_copy;
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
323
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
324 g_return_val_if_fail(action != NULL, NULL);
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
325
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
326 action_copy = g_new(PurplePluginAction, 1);
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
327
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
328 action_copy->label = g_strdup(action->label);
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
329 action_copy->callback = action->callback;
36402
a0d82b6f4081 Removed referencing of plugin from PurplePluginAction, since it is a part of the plugin.
Ankit Vani <a@nevitus.org>
parents: 36401
diff changeset
330 action_copy->plugin = action->plugin;
36386
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
331
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
332 return action_copy;
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
333 }
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
334
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
335 GType
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
336 purple_plugin_action_get_type(void)
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
337 {
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
338 static GType type = 0;
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
339
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
340 if (G_UNLIKELY(type == 0)) {
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
341 type = g_boxed_type_register_static("PurplePluginAction",
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
342 (GBoxedCopyFunc)purple_plugin_action_copy,
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
343 (GBoxedFreeFunc)purple_plugin_action_free);
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
344 }
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
345
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
346 return type;
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
347 }
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
348
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
349 /**************************************************************************
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
350 * Plugins API
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
351 **************************************************************************/
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
352 GList *
36400
2ccd829171ec Renamed purple_plugins_get_all() to purple_plugins_find_all() since the list is generated.
Ankit Vani <a@nevitus.org>
parents: 36399
diff changeset
353 purple_plugins_find_all(void)
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
354 {
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
355 GList *ret = NULL, *ids, *l;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
356 GSList *plugins, *ll;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
357
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
358 ids = gplugin_plugin_manager_list_plugins();
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
359
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
360 for (l = ids; l; l = l->next) {
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
361 plugins = gplugin_plugin_manager_find_plugins(l->data);
36372
5a1fe926f37b Fixed build errors for plugins.c, and used gplugin_plugin_manager_free_plugin_list()
Ankit Vani <a@nevitus.org>
parents: 36370
diff changeset
362 for (ll = plugins; ll; ll = ll->next)
36400
2ccd829171ec Renamed purple_plugins_get_all() to purple_plugins_find_all() since the list is generated.
Ankit Vani <a@nevitus.org>
parents: 36399
diff changeset
363 ret = g_list_append(ret, g_object_ref(ll->data));
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
364
36372
5a1fe926f37b Fixed build errors for plugins.c, and used gplugin_plugin_manager_free_plugin_list()
Ankit Vani <a@nevitus.org>
parents: 36370
diff changeset
365 gplugin_plugin_manager_free_plugin_list(plugins);
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
366 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
367 g_list_free(ids);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
368
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
369 return ret;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
370 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
371
36400
2ccd829171ec Renamed purple_plugins_get_all() to purple_plugins_find_all() since the list is generated.
Ankit Vani <a@nevitus.org>
parents: 36399
diff changeset
372 void
2ccd829171ec Renamed purple_plugins_get_all() to purple_plugins_find_all() since the list is generated.
Ankit Vani <a@nevitus.org>
parents: 36399
diff changeset
373 purple_plugins_free_found_list(GList *plugins)
2ccd829171ec Renamed purple_plugins_get_all() to purple_plugins_find_all() since the list is generated.
Ankit Vani <a@nevitus.org>
parents: 36399
diff changeset
374 {
2ccd829171ec Renamed purple_plugins_get_all() to purple_plugins_find_all() since the list is generated.
Ankit Vani <a@nevitus.org>
parents: 36399
diff changeset
375 GList *l;
2ccd829171ec Renamed purple_plugins_get_all() to purple_plugins_find_all() since the list is generated.
Ankit Vani <a@nevitus.org>
parents: 36399
diff changeset
376
2ccd829171ec Renamed purple_plugins_get_all() to purple_plugins_find_all() since the list is generated.
Ankit Vani <a@nevitus.org>
parents: 36399
diff changeset
377 for (l = plugins; l != NULL; l = l->next)
2ccd829171ec Renamed purple_plugins_get_all() to purple_plugins_find_all() since the list is generated.
Ankit Vani <a@nevitus.org>
parents: 36399
diff changeset
378 g_object_unref(l->data);
2ccd829171ec Renamed purple_plugins_get_all() to purple_plugins_find_all() since the list is generated.
Ankit Vani <a@nevitus.org>
parents: 36399
diff changeset
379
2ccd829171ec Renamed purple_plugins_get_all() to purple_plugins_find_all() since the list is generated.
Ankit Vani <a@nevitus.org>
parents: 36399
diff changeset
380 g_list_free(plugins);
2ccd829171ec Renamed purple_plugins_get_all() to purple_plugins_find_all() since the list is generated.
Ankit Vani <a@nevitus.org>
parents: 36399
diff changeset
381 }
2ccd829171ec Renamed purple_plugins_get_all() to purple_plugins_find_all() since the list is generated.
Ankit Vani <a@nevitus.org>
parents: 36399
diff changeset
382
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
383 GList *
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
384 purple_plugins_get_loaded(void)
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
385 {
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
386 return loaded_plugins;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
387 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
388
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
389 GPluginPlugin *
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
390 purple_plugins_find_by_filename(const char *filename)
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
391 {
36401
b820d9a76ce9 Refactored libpurple to use the ref'd plugins list
Ankit Vani <a@nevitus.org>
parents: 36400
diff changeset
392 GList *plugins, *l;
b820d9a76ce9 Refactored libpurple to use the ref'd plugins list
Ankit Vani <a@nevitus.org>
parents: 36400
diff changeset
393 plugins = purple_plugins_find_all();
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
394
36401
b820d9a76ce9 Refactored libpurple to use the ref'd plugins list
Ankit Vani <a@nevitus.org>
parents: 36400
diff changeset
395 for (l = plugins; l != NULL; l = l->next) {
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
396 GPluginPlugin *plugin = GPLUGIN_PLUGIN(l->data);
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
397
36402
a0d82b6f4081 Removed referencing of plugin from PurplePluginAction, since it is a part of the plugin.
Ankit Vani <a@nevitus.org>
parents: 36401
diff changeset
398 if (purple_strequal(gplugin_plugin_get_filename(plugin), filename)) {
a0d82b6f4081 Removed referencing of plugin from PurplePluginAction, since it is a part of the plugin.
Ankit Vani <a@nevitus.org>
parents: 36401
diff changeset
399 purple_plugins_free_found_list(plugins);
36400
2ccd829171ec Renamed purple_plugins_get_all() to purple_plugins_find_all() since the list is generated.
Ankit Vani <a@nevitus.org>
parents: 36399
diff changeset
400 return g_object_ref(plugin);
36402
a0d82b6f4081 Removed referencing of plugin from PurplePluginAction, since it is a part of the plugin.
Ankit Vani <a@nevitus.org>
parents: 36401
diff changeset
401 }
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
402 }
36401
b820d9a76ce9 Refactored libpurple to use the ref'd plugins list
Ankit Vani <a@nevitus.org>
parents: 36400
diff changeset
403 purple_plugins_free_found_list(plugins);
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
404
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
405 return NULL;
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
406 }
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
407
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
408 void
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
409 purple_plugins_save_loaded(const char *key)
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
410 {
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
411 GList *pl;
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
412 GList *files = NULL;
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
413
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
414 for (pl = purple_plugins_get_loaded(); pl != NULL; pl = pl->next) {
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
415 GPluginPlugin *plugin = GPLUGIN_PLUGIN(pl->data);
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
416 if (!g_list_find(plugins_to_disable, plugin))
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
417 files = g_list_append(files, (gchar *)gplugin_plugin_get_filename(plugin));
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
418 }
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
419
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
420 purple_prefs_set_string_list(key, files);
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
421 g_list_free(files);
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
422 }
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
423
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
424 void
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
425 purple_plugins_load_saved(const char *key)
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
426 {
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
427 GList *l, *files;
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
428
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
429 g_return_if_fail(key != NULL);
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
430
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
431 files = purple_prefs_get_string_list(key);
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
432
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
433 for (l = files; l; l = l->next)
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
434 {
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
435 char *file;
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
436 GPluginPlugin *plugin;
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
437
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
438 if (l->data == NULL)
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
439 continue;
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
440
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
441 file = l->data;
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
442 plugin = purple_plugins_find_by_filename(file);
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
443
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
444 if (plugin) {
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
445 purple_debug_info("plugins", "Loading saved plugin %s\n", file);
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
446 purple_plugin_load(plugin);
36383
f4f8d1914a65 unref plugin info after using gplugin_plugin_get_info()
Ankit Vani <a@nevitus.org>
parents: 36377
diff changeset
447 g_object_unref(plugin);
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
448 } else {
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
449 purple_debug_error("plugins", "Unable to find saved plugin %s\n", file);
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
450 }
36386
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
451
d402ca995746 Added a boxed type PurplePluginAction with purple_plugin_actions_add() to add an action to a plugin.
Ankit Vani <a@nevitus.org>
parents: 36383
diff changeset
452 g_free(l->data);
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
453 }
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
454
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
455 g_list_free(files);
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
456 }
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
457
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
458 void
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
459 purple_plugins_unload_all(void)
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
460 {
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
461 while (loaded_plugins != NULL)
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
462 purple_plugin_unload(loaded_plugins->data);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
463 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
464
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
465 /**************************************************************************
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
466 * Plugins Subsystem API
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
467 **************************************************************************/
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
468 void *
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
469 purple_plugins_get_handle(void)
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
470 {
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
471 static int handle;
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
472
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
473 return &handle;
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
474 }
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
475
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
476 void
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
477 purple_plugins_init(void)
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
478 {
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
479 void *handle = purple_plugins_get_handle();
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
480
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
481 gplugin_init();
36374
73caecc76e44 Register plugin info type by gplugin_set_plugin_info_type()
Ankit Vani <a@nevitus.org>
parents: 36372
diff changeset
482 gplugin_set_plugin_info_type(PURPLE_TYPE_PLUGIN_INFO);
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
483 gplugin_plugin_manager_append_path(LIBDIR);
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
484 gplugin_plugin_manager_refresh();
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
485
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
486 /* TODO GPlugin already has signals for these, these should be removed once
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
487 the new plugin API is properly established */
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
488 purple_signal_register(handle, "plugin-load",
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
489 purple_marshal_VOID__POINTER,
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
490 G_TYPE_NONE, 1, GPLUGIN_TYPE_PLUGIN);
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
491 purple_signal_register(handle, "plugin-unload",
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
492 purple_marshal_VOID__POINTER,
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
493 G_TYPE_NONE, 1, GPLUGIN_TYPE_PLUGIN);
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
494 }
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
495
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
496 void
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
497 purple_plugins_uninit(void)
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
498 {
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
499 void *handle = purple_plugins_get_handle();
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
500
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
501 purple_debug_info("plugins", "Unloading all plugins\n");
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
502 purple_plugins_unload_all();
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
503
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
504 purple_signals_disconnect_by_handle(handle);
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
505 purple_signals_unregister_by_instance(handle);
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
506
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
507 gplugin_uninit();
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 36357
diff changeset
508 }

mercurial