libpurple/plugins.c

Sun, 15 Sep 2019 17:11:46 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Sun, 15 Sep 2019 17:11:46 -0400
changeset 39894
7eab91ea30a1
parent 39893
e264fc382216
child 40264
d253f767f6cc
permissions
-rw-r--r--

Replace Purple type macros by GObject macros.

These were necessary to support both static and dynamic plugins, but
we're just leaving the to GPlugin now.

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
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
24 #include "core.h"
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
25 #include "debug.h"
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
26 #include "enums.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
27 #include "plugins.h"
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
28
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
29 typedef struct _PurplePluginInfoPrivate PurplePluginInfoPrivate;
6822
4adcde13ad17 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6639
diff changeset
30
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
31 /**************************************************************************
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
32 * Plugin info private data
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
33 **************************************************************************/
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
34 struct _PurplePluginInfoPrivate {
37071
3ebf3bb2d317 Merge gtkdoc-conversion
Ankit Vani <a@nevitus.org>
parents: 35462 37008
diff changeset
35 char *ui_requirement; /* ID of UI that is required to load the plugin */
3ebf3bb2d317 Merge gtkdoc-conversion
Ankit Vani <a@nevitus.org>
parents: 35462 37008
diff changeset
36 char *error; /* Why a plugin is not loadable */
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
37
37071
3ebf3bb2d317 Merge gtkdoc-conversion
Ankit Vani <a@nevitus.org>
parents: 35462 37008
diff changeset
38 PurplePluginInfoFlags flags; /* Flags for the plugin */
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
39
37071
3ebf3bb2d317 Merge gtkdoc-conversion
Ankit Vani <a@nevitus.org>
parents: 35462 37008
diff changeset
40 /* Callback that returns a list of actions the plugin can perform */
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
41 PurplePluginActionsCb actions_cb;
36487
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
42
37071
3ebf3bb2d317 Merge gtkdoc-conversion
Ankit Vani <a@nevitus.org>
parents: 35462 37008
diff changeset
43 /* Callback that returns extra information about a plugin */
36976
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
44 PurplePluginExtraCb extra_cb;
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
45
37071
3ebf3bb2d317 Merge gtkdoc-conversion
Ankit Vani <a@nevitus.org>
parents: 35462 37008
diff changeset
46 /* Callback that returns a preferences frame for a plugin */
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
47 PurplePluginPrefFrameCb pref_frame_cb;
36474
e4f3c025cb62 Do not auto-load load-on-query plugins that have been unloaded once
Ankit Vani <a@nevitus.org>
parents: 36472
diff changeset
48
37071
3ebf3bb2d317 Merge gtkdoc-conversion
Ankit Vani <a@nevitus.org>
parents: 35462 37008
diff changeset
49 /* Callback that returns a preferences request handle for a plugin */
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
50 PurplePluginPrefRequestCb pref_request_cb;
36929
eed15b8d51a1 Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36926
diff changeset
51
37071
3ebf3bb2d317 Merge gtkdoc-conversion
Ankit Vani <a@nevitus.org>
parents: 35462 37008
diff changeset
52 /* TRUE if a plugin has been unloaded at least once. Auto-load
3ebf3bb2d317 Merge gtkdoc-conversion
Ankit Vani <a@nevitus.org>
parents: 35462 37008
diff changeset
53 * plugins that have been unloaded once will not be auto-loaded again. */
36474
e4f3c025cb62 Do not auto-load load-on-query plugins that have been unloaded once
Ankit Vani <a@nevitus.org>
parents: 36472
diff changeset
54 gboolean unloaded;
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
55 };
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
56
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
57 enum
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
58 {
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
59 PROP_0,
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
60 PROP_UI_REQUIREMENT,
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
61 PROP_ACTIONS_CB,
36976
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
62 PROP_EXTRA_CB,
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
63 PROP_PREF_FRAME_CB,
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
64 PROP_PREF_REQUEST_CB,
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
65 PROP_FLAGS,
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
66 PROP_LAST
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
67 };
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
68
39380
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
69 G_DEFINE_TYPE_WITH_PRIVATE(PurplePluginInfo, purple_plugin_info,
39411
b1272e3a1c55 Remove guards around GPlugin functions and libpurple plugin API
Mike Ruprecht <cmaiku@gmail.com>
parents: 39380
diff changeset
70 GPLUGIN_TYPE_PLUGIN_INFO);
10682
c293ad49121e [gaim-migrate @ 12228]
Richard Laager <rlaager@pidgin.im>
parents: 10504
diff changeset
71
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
72 /**************************************************************************
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
73 * Globals
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
74 **************************************************************************/
36397
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
75 static GList *loaded_plugins = NULL;
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
76 static GList *plugins_to_disable = NULL;
10682
c293ad49121e [gaim-migrate @ 12228]
Richard Laager <rlaager@pidgin.im>
parents: 10504
diff changeset
77
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
78 /**************************************************************************
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
79 * Plugin API
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
80 **************************************************************************/
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
81 static gboolean
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
82 plugin_loading_cb(GObject *manager, PurplePlugin *plugin, GError **error,
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
83 gpointer data)
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
84 {
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
85 PurplePluginInfo *info;
36511
1ebd4a8f2b4a Removed purple_plugin_is_loadable() and purple_plugin_get_error() from the API
Ankit Vani <a@nevitus.org>
parents: 36508
diff changeset
86 PurplePluginInfoPrivate *priv;
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
87
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
88 g_return_val_if_fail(PURPLE_IS_PLUGIN(plugin), FALSE);
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
89
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
90 info = purple_plugin_get_info(plugin);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
91 if (!info)
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
92 return TRUE; /* a GPlugin internal plugin */
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
93
39380
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
94 priv = purple_plugin_info_get_instance_private(info);
36508
88400e054286 Return a GError if load or unload fails
Ankit Vani <a@nevitus.org>
parents: 36507
diff changeset
95
36513
e7b9735ffdb9 Removed unnecessary variable 'loadable'
Ankit Vani <a@nevitus.org>
parents: 36511
diff changeset
96 if (priv->error) {
36511
1ebd4a8f2b4a Removed purple_plugin_is_loadable() and purple_plugin_get_error() from the API
Ankit Vani <a@nevitus.org>
parents: 36508
diff changeset
97 purple_debug_error("plugins", "Failed to load plugin %s: %s",
39835
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
98 gplugin_plugin_get_filename(plugin),
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
99 priv->error);
36511
1ebd4a8f2b4a Removed purple_plugin_is_loadable() and purple_plugin_get_error() from the API
Ankit Vani <a@nevitus.org>
parents: 36508
diff changeset
100
1ebd4a8f2b4a Removed purple_plugin_is_loadable() and purple_plugin_get_error() from the API
Ankit Vani <a@nevitus.org>
parents: 36508
diff changeset
101 g_set_error(error, PURPLE_PLUGINS_DOMAIN, 0,
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
102 "Plugin is not loadable: %s", priv->error);
36508
88400e054286 Return a GError if load or unload fails
Ankit Vani <a@nevitus.org>
parents: 36507
diff changeset
103
36431
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36429
diff changeset
104 return FALSE;
36456
380500e9aff2 Fixed the type of pref used to store loaded plugins, and added some debug messages
Ankit Vani <a@nevitus.org>
parents: 36450
diff changeset
105 }
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
106
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
107 return TRUE;
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
108 }
36508
88400e054286 Return a GError if load or unload fails
Ankit Vani <a@nevitus.org>
parents: 36507
diff changeset
109
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
110 static void
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
111 plugin_loaded_cb(GObject *manager, PurplePlugin *plugin)
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
112 {
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
113 PurplePluginInfo *info;
36508
88400e054286 Return a GError if load or unload fails
Ankit Vani <a@nevitus.org>
parents: 36507
diff changeset
114
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
115 g_return_if_fail(PURPLE_IS_PLUGIN(plugin));
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
116
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
117 info = purple_plugin_get_info(plugin);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
118 if (!info)
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
119 return; /* a GPlugin internal plugin */
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
120
37008
9dca610b3bf2 Prepend newly-loaded plugins to the loaded list
Ankit Vani <a@nevitus.org>
parents: 37001
diff changeset
121 loaded_plugins = g_list_prepend(loaded_plugins, plugin);
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
122
36456
380500e9aff2 Fixed the type of pref used to store loaded plugins, and added some debug messages
Ankit Vani <a@nevitus.org>
parents: 36450
diff changeset
123 purple_debug_info("plugins", "Loaded plugin %s\n",
39835
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
124 gplugin_plugin_get_filename(plugin));
36456
380500e9aff2 Fixed the type of pref used to store loaded plugins, and added some debug messages
Ankit Vani <a@nevitus.org>
parents: 36450
diff changeset
125
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
126 purple_signal_emit(purple_plugins_get_handle(), "plugin-load", plugin);
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
127 }
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
128
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
129 static gboolean
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
130 plugin_unloading_cb(GObject *manager, PurplePlugin *plugin, GError **error,
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
131 gpointer data)
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
132 {
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
133 PurplePluginInfo *info;
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
134
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
135 g_return_val_if_fail(PURPLE_IS_PLUGIN(plugin), FALSE);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
136
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
137 info = purple_plugin_get_info(plugin);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
138 if (info) {
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
139 purple_debug_info("plugins", "Unloading plugin %s\n",
39835
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
140 gplugin_plugin_get_filename(plugin));
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
141 }
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
142
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
143 return TRUE;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
144 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
145
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
146 static void
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
147 plugin_unloaded_cb(GObject *manager, PurplePlugin *plugin)
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
148 {
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
149 PurplePluginInfo *info;
36469
304912384a5c Free actions on plugin unload, and updated documentation
Ankit Vani <a@nevitus.org>
parents: 36468
diff changeset
150 PurplePluginInfoPrivate *priv;
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
151
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
152 g_return_if_fail(PURPLE_IS_PLUGIN(plugin));
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
153
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
154 info = purple_plugin_get_info(plugin);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
155 if (!info)
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
156 return; /* a GPlugin internal plugin */
36508
88400e054286 Return a GError if load or unload fails
Ankit Vani <a@nevitus.org>
parents: 36507
diff changeset
157
39380
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
158 priv = purple_plugin_info_get_instance_private(info);
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
159
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
160 /* cancel any pending dialogs the plugin has */
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
161 purple_request_close_with_handle(plugin);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
162 purple_notify_close_with_handle(plugin);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
163
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
164 purple_signals_disconnect_by_handle(plugin);
36527
016e4be6f3da Unregister signals on plugin unload and protocol removal
Ankit Vani <a@nevitus.org>
parents: 36515
diff changeset
165 purple_signals_unregister_by_instance(plugin);
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
166
36474
e4f3c025cb62 Do not auto-load load-on-query plugins that have been unloaded once
Ankit Vani <a@nevitus.org>
parents: 36472
diff changeset
167 priv->unloaded = TRUE;
36469
304912384a5c Free actions on plugin unload, and updated documentation
Ankit Vani <a@nevitus.org>
parents: 36468
diff changeset
168
36397
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
169 loaded_plugins = g_list_remove(loaded_plugins, plugin);
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
170 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
171
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
172 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
173
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
174 purple_prefs_disconnect_by_handle(plugin);
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
175 }
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
176
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
177 gboolean
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
178 purple_plugin_load(PurplePlugin *plugin, GError **error)
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
179 {
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
180 GError *err = NULL;
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
181
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
182 g_return_val_if_fail(plugin != NULL, FALSE);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
183
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
184 if (purple_plugin_is_loaded(plugin))
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
185 return TRUE;
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
186
36902
cd1a4ca0b65a Updated plugins.c according to GPlugin's re-namespacing
Ankit Vani <a@nevitus.org>
parents: 36871
diff changeset
187 if (!gplugin_manager_load_plugin(plugin, &err)) {
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
188 purple_debug_error("plugins", "Failed to load plugin %s: %s",
39835
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
189 gplugin_plugin_get_filename(plugin),
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
190 err ? err->message : "Unknown reason");
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
191
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
192 if (error)
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
193 *error = g_error_copy(err);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
194 g_error_free(err);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
195
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
196 return FALSE;
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
197 }
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
198
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
199 return TRUE;
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
200 }
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
201
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
202 gboolean
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
203 purple_plugin_unload(PurplePlugin *plugin, GError **error)
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
204 {
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
205 GError *err = NULL;
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
206
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
207 g_return_val_if_fail(plugin != NULL, FALSE);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
208
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
209 if (!purple_plugin_is_loaded(plugin))
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
210 return TRUE;
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
211
36902
cd1a4ca0b65a Updated plugins.c according to GPlugin's re-namespacing
Ankit Vani <a@nevitus.org>
parents: 36871
diff changeset
212 if (!gplugin_manager_unload_plugin(plugin, &err)) {
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
213 purple_debug_error("plugins", "Failed to unload plugin %s: %s",
39835
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
214 gplugin_plugin_get_filename(plugin),
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
215 err ? err->message : "Unknown reason");
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
216
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
217 if (error)
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
218 *error = g_error_copy(err);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
219 g_error_free(err);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
220
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
221 return FALSE;
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
222 }
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
223
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
224 return TRUE;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
225 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
226
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
227 gboolean
39420
92213bd9538b plugins: Drop consts from arguments to mirror new GPlugin 0.28 API
Mike Ruprecht <cmaiku@gmail.com>
parents: 39419
diff changeset
228 purple_plugin_is_loaded(PurplePlugin *plugin)
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
229 {
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
230 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
231
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
232 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
233 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
234
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
235 PurplePluginInfo *
39420
92213bd9538b plugins: Drop consts from arguments to mirror new GPlugin 0.28 API
Mike Ruprecht <cmaiku@gmail.com>
parents: 39419
diff changeset
236 purple_plugin_get_info(PurplePlugin *plugin)
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
237 {
36432
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
238 GPluginPluginInfo *info;
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
239
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
240 g_return_val_if_fail(plugin != NULL, NULL);
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
241
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
242 info = gplugin_plugin_get_info(plugin);
36990
b1471cc401a4 Document the g_object_unref before returning a plugin info or a plugin instance
Ankit Vani <a@nevitus.org>
parents: 36986
diff changeset
243
b1471cc401a4 Document the g_object_unref before returning a plugin info or a plugin instance
Ankit Vani <a@nevitus.org>
parents: 36986
diff changeset
244 /* GPlugin refs the plugin info object before returning it. This workaround
b1471cc401a4 Document the g_object_unref before returning a plugin info or a plugin instance
Ankit Vani <a@nevitus.org>
parents: 36986
diff changeset
245 * is to avoid managing the reference counts everywhere in our codebase
37001
e94e70e965e3 Better wording for comments in plugins.c
Ankit Vani <a@nevitus.org>
parents: 36990
diff changeset
246 * where we use the plugin info. The plugin info instance is guaranteed to
e94e70e965e3 Better wording for comments in plugins.c
Ankit Vani <a@nevitus.org>
parents: 36990
diff changeset
247 * exist as long as the plugin exists. */
36431
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36429
diff changeset
248 g_object_unref(info);
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36429
diff changeset
249
36654
61014b39bac3 Removed an unnecessary call to gplugin
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
250 if (PURPLE_IS_PLUGIN_INFO(info))
61014b39bac3 Removed an unnecessary call to gplugin
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
251 return PURPLE_PLUGIN_INFO(info);
61014b39bac3 Removed an unnecessary call to gplugin
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
252 else
61014b39bac3 Removed an unnecessary call to gplugin
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
253 return NULL;
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
254 }
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
255
36396
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
256 void
36439
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
257 purple_plugin_disable(PurplePlugin *plugin)
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
258 {
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
259 g_return_if_fail(plugin != NULL);
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
260
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
261 if (!g_list_find(plugins_to_disable, plugin))
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
262 plugins_to_disable = g_list_prepend(plugins_to_disable, plugin);
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
263 }
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
264
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
265 gboolean
39420
92213bd9538b plugins: Drop consts from arguments to mirror new GPlugin 0.28 API
Mike Ruprecht <cmaiku@gmail.com>
parents: 39419
diff changeset
266 purple_plugin_is_internal(PurplePlugin *plugin)
36467
52aa83c47311 Replaced purple_plugin_loads_on_query() with purple_plugin_is_internal().
Ankit Vani <a@nevitus.org>
parents: 36463
diff changeset
267 {
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
268 PurplePluginInfo *info;
36467
52aa83c47311 Replaced purple_plugin_loads_on_query() with purple_plugin_is_internal().
Ankit Vani <a@nevitus.org>
parents: 36463
diff changeset
269
52aa83c47311 Replaced purple_plugin_loads_on_query() with purple_plugin_is_internal().
Ankit Vani <a@nevitus.org>
parents: 36463
diff changeset
270 g_return_val_if_fail(plugin != NULL, FALSE);
52aa83c47311 Replaced purple_plugin_loads_on_query() with purple_plugin_is_internal().
Ankit Vani <a@nevitus.org>
parents: 36463
diff changeset
271
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
272 info = purple_plugin_get_info(plugin);
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
273 if (!info)
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
274 return TRUE;
36472
1945ae79bbb3 Added checks in case a plugin does not return a PluginInfo
Ankit Vani <a@nevitus.org>
parents: 36469
diff changeset
275
36654
61014b39bac3 Removed an unnecessary call to gplugin
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
276 return (purple_plugin_info_get_flags(info) &
61014b39bac3 Removed an unnecessary call to gplugin
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
277 PURPLE_PLUGIN_INFO_FLAGS_INTERNAL);
36467
52aa83c47311 Replaced purple_plugin_loads_on_query() with purple_plugin_is_internal().
Ankit Vani <a@nevitus.org>
parents: 36463
diff changeset
278 }
52aa83c47311 Replaced purple_plugin_loads_on_query() with purple_plugin_is_internal().
Ankit Vani <a@nevitus.org>
parents: 36463
diff changeset
279
36439
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
280 GSList *
39420
92213bd9538b plugins: Drop consts from arguments to mirror new GPlugin 0.28 API
Mike Ruprecht <cmaiku@gmail.com>
parents: 39419
diff changeset
281 purple_plugin_get_dependent_plugins(PurplePlugin *plugin)
36439
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
282 {
36986
2326ab164e3a Add reminders to display perl and tcl status in gtkdialog when API available
Ankit Vani <a@nevitus.org>
parents: 36976
diff changeset
283 #warning TODO: Implement this when GPlugin can return dependent plugins.
36439
7f8921ef1bfc Moved PurplePluginInfo's get_actions(), is_loadable(), get_error(), get_dependent_plugins() API to PurplePlugin
Ankit Vani <a@nevitus.org>
parents: 36437
diff changeset
284 return NULL;
36397
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
285 }
4ae45b445bb9 Added purple_plugin_disable()
Ankit Vani <a@nevitus.org>
parents: 36396
diff changeset
286
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
287 /**************************************************************************
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
288 * GObject code for PurplePluginInfo
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
289 **************************************************************************/
36615
5f6a105b4c52 Register and unregister plugin info with dbus
Ankit Vani <a@nevitus.org>
parents: 36527
diff changeset
290 /* GObject initialization function */
5f6a105b4c52 Register and unregister plugin info with dbus
Ankit Vani <a@nevitus.org>
parents: 36527
diff changeset
291 static void
39380
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
292 purple_plugin_info_init(PurplePluginInfo *info)
36615
5f6a105b4c52 Register and unregister plugin info with dbus
Ankit Vani <a@nevitus.org>
parents: 36527
diff changeset
293 {
5f6a105b4c52 Register and unregister plugin info with dbus
Ankit Vani <a@nevitus.org>
parents: 36527
diff changeset
294 }
5f6a105b4c52 Register and unregister plugin info with dbus
Ankit Vani <a@nevitus.org>
parents: 36527
diff changeset
295
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
296 /* Set method for GObject properties */
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
297 static void
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
298 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
299 GParamSpec *pspec)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
300 {
36435
f3ae5a24fb61 Added get functions for GPlugin's plugin icon and license. Added category for plugins.
Ankit Vani <a@nevitus.org>
parents: 36432
diff changeset
301 PurplePluginInfo *info = PURPLE_PLUGIN_INFO(obj);
39380
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
302 PurplePluginInfoPrivate *priv =
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
303 purple_plugin_info_get_instance_private(info);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
304
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
305 switch (param_id) {
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
306 case PROP_UI_REQUIREMENT:
39423
6b457e717666 Use g_value_dup_string where needed.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39421
diff changeset
307 priv->ui_requirement = g_value_dup_string(value);
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
308 break;
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
309 case PROP_ACTIONS_CB:
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
310 priv->actions_cb = g_value_get_pointer(value);
36487
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
311 break;
36976
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
312 case PROP_EXTRA_CB:
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
313 priv->extra_cb = g_value_get_pointer(value);
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
314 break;
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
315 case PROP_PREF_FRAME_CB:
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
316 priv->pref_frame_cb = g_value_get_pointer(value);
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
317 break;
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
318 case PROP_PREF_REQUEST_CB:
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
319 priv->pref_request_cb = g_value_get_pointer(value);
36929
eed15b8d51a1 Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36926
diff changeset
320 break;
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
321 case PROP_FLAGS:
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
322 priv->flags = g_value_get_flags(value);
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
323 break;
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
324 default:
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
325 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
326 break;
7956
21d891f33b89 [gaim-migrate @ 8631]
Nathan Walp <nwalp@pidgin.im>
parents: 7279
diff changeset
327 }
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
328 }
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
329
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
330 /* Get method for GObject properties */
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
331 static void
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
332 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
333 GParamSpec *pspec)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
334 {
36435
f3ae5a24fb61 Added get functions for GPlugin's plugin icon and license. Added category for plugins.
Ankit Vani <a@nevitus.org>
parents: 36432
diff changeset
335 PurplePluginInfo *info = PURPLE_PLUGIN_INFO(obj);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
336
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
337 switch (param_id) {
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
338 case PROP_ACTIONS_CB:
36487
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
339 g_value_set_pointer(value,
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
340 purple_plugin_info_get_actions_cb(info));
36487
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
341 break;
36976
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
342 case PROP_EXTRA_CB:
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
343 g_value_set_pointer(value,
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
344 purple_plugin_info_get_extra_cb(info));
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
345 break;
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
346 case PROP_PREF_FRAME_CB:
36395
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
347 g_value_set_pointer(value,
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
348 purple_plugin_info_get_pref_frame_cb(info));
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
349 break;
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
350 case PROP_PREF_REQUEST_CB:
36929
eed15b8d51a1 Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36926
diff changeset
351 g_value_set_pointer(value,
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
352 purple_plugin_info_get_pref_request_cb(info));
36929
eed15b8d51a1 Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36926
diff changeset
353 break;
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
354 case PROP_FLAGS:
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
355 g_value_set_flags(value, purple_plugin_info_get_flags(info));
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
356 break;
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
357 default:
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
358 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
359 break;
6822
4adcde13ad17 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6639
diff changeset
360 }
4adcde13ad17 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6639
diff changeset
361 }
4adcde13ad17 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6639
diff changeset
362
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
363 /* Called when done constructing */
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
364 static void
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
365 purple_plugin_info_constructed(GObject *object)
6822
4adcde13ad17 [gaim-migrate @ 7366]
Christian Hammond <chipx86@chipx86.com>
parents: 6639
diff changeset
366 {
36435
f3ae5a24fb61 Added get functions for GPlugin's plugin icon and license. Added category for plugins.
Ankit Vani <a@nevitus.org>
parents: 36432
diff changeset
367 PurplePluginInfo *info = PURPLE_PLUGIN_INFO(object);
39834
0345d198dbd6 Remove redundant purple_plugin_info_get_* wrappers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39782
diff changeset
368 GPluginPluginInfo *ginfo = GPLUGIN_PLUGIN_INFO(info);
39380
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
369 PurplePluginInfoPrivate *priv =
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
370 purple_plugin_info_get_instance_private(info);
39834
0345d198dbd6 Remove redundant purple_plugin_info_get_* wrappers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39782
diff changeset
371 const char *id = gplugin_plugin_info_get_id(ginfo);
36481
76943492ab1b Added property "purple-version"
Ankit Vani <a@nevitus.org>
parents: 36480
diff changeset
372 guint32 version;
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
373
39380
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
374 G_OBJECT_CLASS(purple_plugin_info_parent_class)->constructed(object);
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
375
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
376 if (id == NULL || *id == '\0')
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
377 priv->error = g_strdup(_("This plugin has not defined an ID."));
10479
e9165b73e60b [gaim-migrate @ 11766]
Nathan Walp <nwalp@pidgin.im>
parents: 10464
diff changeset
378
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
379 if (priv->ui_requirement && !purple_strequal(priv->ui_requirement, purple_core_get_ui()))
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
380 {
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
381 priv->error = g_strdup_printf(_("You are using %s, but this plugin requires %s."),
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
382 purple_core_get_ui(), priv->ui_requirement);
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
383 purple_debug_error("plugins", "%s is not loadable: The UI requirement is not met. (%s)\n",
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
384 id, priv->error);
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
385 }
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
386
39834
0345d198dbd6 Remove redundant purple_plugin_info_get_* wrappers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39782
diff changeset
387 version = gplugin_plugin_info_get_abi_version(ginfo);
36481
76943492ab1b Added property "purple-version"
Ankit Vani <a@nevitus.org>
parents: 36480
diff changeset
388 if (PURPLE_PLUGIN_ABI_MAJOR_VERSION(version) != PURPLE_MAJOR_VERSION ||
76943492ab1b Added property "purple-version"
Ankit Vani <a@nevitus.org>
parents: 36480
diff changeset
389 PURPLE_PLUGIN_ABI_MINOR_VERSION(version) > PURPLE_MINOR_VERSION)
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
390 {
36514
2a9bbadc255c Better wording for ABI mismatch error
Ankit Vani <a@nevitus.org>
parents: 36513
diff changeset
391 priv->error = g_strdup_printf(_("Your libpurple version is %d.%d.x (need %d.%d.x)"),
2a9bbadc255c Better wording for ABI mismatch error
Ankit Vani <a@nevitus.org>
parents: 36513
diff changeset
392 PURPLE_MAJOR_VERSION, PURPLE_MINOR_VERSION,
36481
76943492ab1b Added property "purple-version"
Ankit Vani <a@nevitus.org>
parents: 36480
diff changeset
393 PURPLE_PLUGIN_ABI_MAJOR_VERSION(version),
36514
2a9bbadc255c Better wording for ABI mismatch error
Ankit Vani <a@nevitus.org>
parents: 36513
diff changeset
394 PURPLE_PLUGIN_ABI_MINOR_VERSION(version));
2a9bbadc255c Better wording for ABI mismatch error
Ankit Vani <a@nevitus.org>
parents: 36513
diff changeset
395 purple_debug_error("plugins", "%s is not loadable: libpurple version is %d.%d.x (need %d.%d.x)\n",
2a9bbadc255c Better wording for ABI mismatch error
Ankit Vani <a@nevitus.org>
parents: 36513
diff changeset
396 id, PURPLE_MAJOR_VERSION, PURPLE_MINOR_VERSION,
2a9bbadc255c Better wording for ABI mismatch error
Ankit Vani <a@nevitus.org>
parents: 36513
diff changeset
397 PURPLE_PLUGIN_ABI_MAJOR_VERSION(version),
2a9bbadc255c Better wording for ABI mismatch error
Ankit Vani <a@nevitus.org>
parents: 36513
diff changeset
398 PURPLE_PLUGIN_ABI_MINOR_VERSION(version));
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
399 }
5838
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5794
diff changeset
400 }
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5794
diff changeset
401
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
402 /* GObject finalize function */
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
403 static void
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
404 purple_plugin_info_finalize(GObject *object)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
405 {
39380
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
406 PurplePluginInfoPrivate *priv =
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
407 purple_plugin_info_get_instance_private(
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
408 PURPLE_PLUGIN_INFO(object));
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
409
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
410 g_free(priv->ui_requirement);
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
411 g_free(priv->error);
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
412
39380
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
413 G_OBJECT_CLASS(purple_plugin_info_parent_class)->finalize(object);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
414 }
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
415
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
416 /* Class initializer function */
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
417 static void purple_plugin_info_class_init(PurplePluginInfoClass *klass)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
418 {
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
419 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
8749
fb487e9e101a [gaim-migrate @ 9504]
Christian Hammond <chipx86@chipx86.com>
parents: 8046
diff changeset
420
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
421 obj_class->constructed = purple_plugin_info_constructed;
36615
5f6a105b4c52 Register and unregister plugin info with dbus
Ankit Vani <a@nevitus.org>
parents: 36527
diff changeset
422 obj_class->finalize = purple_plugin_info_finalize;
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
423
36357
1a49a1a9ce18 Started the new GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34821
diff changeset
424 /* Setup properties */
36368
0898810f4e9c Removed PurplePlugin and added PurplePluginInfo, which inherits GPluginPluginInfo
Ankit Vani <a@nevitus.org>
parents: 36367
diff changeset
425 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
426 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
427
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
428 g_object_class_install_property(obj_class, PROP_UI_REQUIREMENT,
36871
8da5914b107a Removed GObject property name defines
Ankit Vani <a@nevitus.org>
parents: 36869
diff changeset
429 g_param_spec_string("ui-requirement",
36949
06cbd6ed97ed Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36937
diff changeset
430 "UI Requirement",
06cbd6ed97ed Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36937
diff changeset
431 "ID of UI that is required by this plugin", NULL,
36954
26c2cf81a97a Added G_PARAM_STATIC_STRINGS flag to PluginInfo properties
Ankit Vani <a@nevitus.org>
parents: 36949
diff changeset
432 G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS));
36412
b57d4ad74b55 Added purple_plugin_info_is_loadable(), UI requirement, error and PURPLE_ABI_VERSION_* macros
Ankit Vani <a@nevitus.org>
parents: 36402
diff changeset
433
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
434 g_object_class_install_property(obj_class, PROP_ACTIONS_CB,
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
435 g_param_spec_pointer("actions-cb",
36949
06cbd6ed97ed Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36937
diff changeset
436 "Plugin actions",
06cbd6ed97ed Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36937
diff changeset
437 "Callback that returns list of plugin's actions",
36954
26c2cf81a97a Added G_PARAM_STATIC_STRINGS flag to PluginInfo properties
Ankit Vani <a@nevitus.org>
parents: 36949
diff changeset
438 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
26c2cf81a97a Added G_PARAM_STATIC_STRINGS flag to PluginInfo properties
Ankit Vani <a@nevitus.org>
parents: 36949
diff changeset
439 G_PARAM_STATIC_STRINGS));
36487
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
440
36976
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
441 g_object_class_install_property(obj_class, PROP_EXTRA_CB,
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
442 g_param_spec_pointer("extra-cb",
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
443 "Extra info callback",
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
444 "Callback that returns extra info about the plugin",
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
445 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
446 G_PARAM_STATIC_STRINGS));
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
447
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
448 g_object_class_install_property(obj_class, PROP_PREF_FRAME_CB,
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
449 g_param_spec_pointer("pref-frame-cb",
36949
06cbd6ed97ed Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36937
diff changeset
450 "Preferences frame callback",
06cbd6ed97ed Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36937
diff changeset
451 "The callback that returns the preferences frame",
36954
26c2cf81a97a Added G_PARAM_STATIC_STRINGS flag to PluginInfo properties
Ankit Vani <a@nevitus.org>
parents: 36949
diff changeset
452 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
26c2cf81a97a Added G_PARAM_STATIC_STRINGS flag to PluginInfo properties
Ankit Vani <a@nevitus.org>
parents: 36949
diff changeset
453 G_PARAM_STATIC_STRINGS));
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
454
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
455 g_object_class_install_property(obj_class, PROP_PREF_REQUEST_CB,
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
456 g_param_spec_pointer("pref-request-cb",
36949
06cbd6ed97ed Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36937
diff changeset
457 "Preferences request callback",
06cbd6ed97ed Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36937
diff changeset
458 "Callback that returns preferences request handle",
36954
26c2cf81a97a Added G_PARAM_STATIC_STRINGS flag to PluginInfo properties
Ankit Vani <a@nevitus.org>
parents: 36949
diff changeset
459 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
26c2cf81a97a Added G_PARAM_STATIC_STRINGS flag to PluginInfo properties
Ankit Vani <a@nevitus.org>
parents: 36949
diff changeset
460 G_PARAM_STATIC_STRINGS));
36929
eed15b8d51a1 Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36926
diff changeset
461
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
462 g_object_class_install_property(obj_class, PROP_FLAGS,
36871
8da5914b107a Removed GObject property name defines
Ankit Vani <a@nevitus.org>
parents: 36869
diff changeset
463 g_param_spec_flags("flags",
36949
06cbd6ed97ed Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36937
diff changeset
464 "Plugin flags",
06cbd6ed97ed Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36937
diff changeset
465 "The flags for the plugin",
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
466 PURPLE_TYPE_PLUGIN_INFO_FLAGS, 0,
36954
26c2cf81a97a Added G_PARAM_STATIC_STRINGS flag to PluginInfo properties
Ankit Vani <a@nevitus.org>
parents: 36949
diff changeset
467 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
26c2cf81a97a Added G_PARAM_STATIC_STRINGS flag to PluginInfo properties
Ankit Vani <a@nevitus.org>
parents: 36949
diff changeset
468 G_PARAM_STATIC_STRINGS));
34783
cefe6df8c6c6 Made PurplePlugin a GBoxed
Ankit Vani <a@nevitus.org>
parents: 34173
diff changeset
469 }
cefe6df8c6c6 Made PurplePlugin a GBoxed
Ankit Vani <a@nevitus.org>
parents: 34173
diff changeset
470
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
471 /**************************************************************************
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
472 * PluginInfo API
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
473 **************************************************************************/
36446
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
474 PurplePluginInfo *
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
475 purple_plugin_info_new(const char *first_property, ...)
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
476 {
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
477 GObject *info;
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
478 va_list var_args;
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
479
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
480 /* at least ID is required */
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
481 if (!first_property)
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
482 return NULL;
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
483
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
484 va_start(var_args, first_property);
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
485 info = g_object_new_valist(PURPLE_TYPE_PLUGIN_INFO, first_property,
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
486 var_args);
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
487 va_end(var_args);
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
488
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
489 return PURPLE_PLUGIN_INFO(info);
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
490 }
e75794a5a7f0 Added [purple,pidgin,finch]_plugin_info_new()
Ankit Vani <a@nevitus.org>
parents: 36441
diff changeset
491
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
492 PurplePluginActionsCb
39380
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
493 purple_plugin_info_get_actions_cb(PurplePluginInfo *info)
36487
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
494 {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
495 PurplePluginInfoPrivate *priv = NULL;
36487
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
496
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
497 g_return_val_if_fail(PURPLE_IS_PLUGIN_INFO(info), NULL);
36487
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
498
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
499 priv = purple_plugin_info_get_instance_private(info);
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
500 return priv->actions_cb;
36487
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
501 }
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
502
36976
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
503 PurplePluginExtraCb
39380
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
504 purple_plugin_info_get_extra_cb(PurplePluginInfo *info)
36976
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
505 {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
506 PurplePluginInfoPrivate *priv = NULL;
36976
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
507
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
508 g_return_val_if_fail(PURPLE_IS_PLUGIN_INFO(info), NULL);
36976
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
509
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
510 priv = purple_plugin_info_get_instance_private(info);
36976
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
511 return priv->extra_cb;
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
512 }
46c2822b7c58 Added the "extra-cb" property for plugins.
Ankit Vani <a@nevitus.org>
parents: 36954
diff changeset
513
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
514 PurplePluginPrefFrameCb
39380
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
515 purple_plugin_info_get_pref_frame_cb(PurplePluginInfo *info)
36395
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
516 {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
517 PurplePluginInfoPrivate *priv = NULL;
36395
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
518
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
519 g_return_val_if_fail(PURPLE_IS_PLUGIN_INFO(info), NULL);
36395
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
520
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
521 priv = purple_plugin_info_get_instance_private(info);
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
522 return priv->pref_frame_cb;
36395
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
523 }
a27e8b7a2938 Added a callback to return preferences frame to plugin info.
Ankit Vani <a@nevitus.org>
parents: 36389
diff changeset
524
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
525 PurplePluginPrefRequestCb
39380
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
526 purple_plugin_info_get_pref_request_cb(PurplePluginInfo *info)
36929
eed15b8d51a1 Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36926
diff changeset
527 {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
528 PurplePluginInfoPrivate *priv = NULL;
36929
eed15b8d51a1 Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36926
diff changeset
529
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
530 g_return_val_if_fail(PURPLE_IS_PLUGIN_INFO(info), NULL);
36929
eed15b8d51a1 Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36926
diff changeset
531
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
532 priv = purple_plugin_info_get_instance_private(info);
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
533 return priv->pref_request_cb;
36929
eed15b8d51a1 Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36926
diff changeset
534 }
eed15b8d51a1 Merged soc.2013.gobjectification branch
Ankit Vani <a@nevitus.org>
parents: 36926
diff changeset
535
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
536 PurplePluginInfoFlags
39380
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
537 purple_plugin_info_get_flags(PurplePluginInfo *info)
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
538 {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
539 PurplePluginInfoPrivate *priv = NULL;
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
540
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
541 g_return_val_if_fail(PURPLE_IS_PLUGIN_INFO(info), 0);
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
542
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
543 priv = purple_plugin_info_get_instance_private(info);
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
544 return priv->flags;
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
545 }
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
546
36515
28631d5a44f5 Added purple_plugin_info_get_error()
Ankit Vani <a@nevitus.org>
parents: 36514
diff changeset
547 const gchar *
39380
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
548 purple_plugin_info_get_error(PurplePluginInfo *info)
36515
28631d5a44f5 Added purple_plugin_info_get_error()
Ankit Vani <a@nevitus.org>
parents: 36514
diff changeset
549 {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
550 PurplePluginInfoPrivate *priv = NULL;
36515
28631d5a44f5 Added purple_plugin_info_get_error()
Ankit Vani <a@nevitus.org>
parents: 36514
diff changeset
551
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
552 g_return_val_if_fail(PURPLE_IS_PLUGIN_INFO(info), NULL);
36515
28631d5a44f5 Added purple_plugin_info_get_error()
Ankit Vani <a@nevitus.org>
parents: 36514
diff changeset
553
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
554 priv = purple_plugin_info_get_instance_private(info);
36515
28631d5a44f5 Added purple_plugin_info_get_error()
Ankit Vani <a@nevitus.org>
parents: 36514
diff changeset
555 return priv->error;
28631d5a44f5 Added purple_plugin_info_get_error()
Ankit Vani <a@nevitus.org>
parents: 36514
diff changeset
556 }
28631d5a44f5 Added purple_plugin_info_get_error()
Ankit Vani <a@nevitus.org>
parents: 36514
diff changeset
557
36926
d2c0c68a9816 Merged soc.2013.gobjectification branch.
Ankit Vani <a@nevitus.org>
parents: 36902
diff changeset
558 void
d2c0c68a9816 Merged soc.2013.gobjectification branch.
Ankit Vani <a@nevitus.org>
parents: 36902
diff changeset
559 purple_plugin_info_set_ui_data(PurplePluginInfo *info, gpointer ui_data)
d2c0c68a9816 Merged soc.2013.gobjectification branch.
Ankit Vani <a@nevitus.org>
parents: 36902
diff changeset
560 {
d2c0c68a9816 Merged soc.2013.gobjectification branch.
Ankit Vani <a@nevitus.org>
parents: 36902
diff changeset
561 g_return_if_fail(PURPLE_IS_PLUGIN_INFO(info));
d2c0c68a9816 Merged soc.2013.gobjectification branch.
Ankit Vani <a@nevitus.org>
parents: 36902
diff changeset
562
d2c0c68a9816 Merged soc.2013.gobjectification branch.
Ankit Vani <a@nevitus.org>
parents: 36902
diff changeset
563 info->ui_data = ui_data;
d2c0c68a9816 Merged soc.2013.gobjectification branch.
Ankit Vani <a@nevitus.org>
parents: 36902
diff changeset
564 }
d2c0c68a9816 Merged soc.2013.gobjectification branch.
Ankit Vani <a@nevitus.org>
parents: 36902
diff changeset
565
d2c0c68a9816 Merged soc.2013.gobjectification branch.
Ankit Vani <a@nevitus.org>
parents: 36902
diff changeset
566 gpointer
39837
4cd31f854f9a Remove extra const in purple_plugin_info_get_ui_data.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39835
diff changeset
567 purple_plugin_info_get_ui_data(PurplePluginInfo *info)
36926
d2c0c68a9816 Merged soc.2013.gobjectification branch.
Ankit Vani <a@nevitus.org>
parents: 36902
diff changeset
568 {
d2c0c68a9816 Merged soc.2013.gobjectification branch.
Ankit Vani <a@nevitus.org>
parents: 36902
diff changeset
569 g_return_val_if_fail(PURPLE_IS_PLUGIN_INFO(info), NULL);
d2c0c68a9816 Merged soc.2013.gobjectification branch.
Ankit Vani <a@nevitus.org>
parents: 36902
diff changeset
570
d2c0c68a9816 Merged soc.2013.gobjectification branch.
Ankit Vani <a@nevitus.org>
parents: 36902
diff changeset
571 return info->ui_data;
d2c0c68a9816 Merged soc.2013.gobjectification branch.
Ankit Vani <a@nevitus.org>
parents: 36902
diff changeset
572 }
d2c0c68a9816 Merged soc.2013.gobjectification branch.
Ankit Vani <a@nevitus.org>
parents: 36902
diff changeset
573
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
574 /**************************************************************************
36396
add1d5e2314c Renamed actions_add functions to add_action functions
Ankit Vani <a@nevitus.org>
parents: 36395
diff changeset
575 * 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
576 **************************************************************************/
36487
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
577 PurplePluginAction *
36934
e7268aeb3b89 Renamed plugin info callback properties to end with "-cb", and their respective symbols.
Ankit Vani <a@nevitus.org>
parents: 36929
diff changeset
578 purple_plugin_action_new(const char* label, PurplePluginActionCb callback)
36487
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
579 {
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
580 PurplePluginAction *action;
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
581
36488
48c3419844f0 Undo action-related changes in UI
Ankit Vani <a@nevitus.org>
parents: 36487
diff changeset
582 g_return_val_if_fail(label != NULL && callback != NULL, NULL);
36487
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
583
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
584 action = g_new0(PurplePluginAction, 1);
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
585
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
586 action->label = g_strdup(label);
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
587 action->callback = callback;
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
588
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
589 return action;
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
590 }
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
591
725e37471387 Make actions a callback again, so that a plugin/protocol can change them
Ankit Vani <a@nevitus.org>
parents: 36483
diff changeset
592 void
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
593 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
594 {
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
595 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
596
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
597 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
598 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
599 }
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
600
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
601 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
602 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
603 {
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
604 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
605
37120
9b5c7e27c8d9 Use purple_plugin_action_new to create a new PurplePluginAction in its GBoxed copy function
Ankit Vani <a@nevitus.org>
parents: 37071
diff changeset
606 return purple_plugin_action_new(action->label, action->callback);
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
607 }
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
608
39893
e264fc382216 Use GObject macros for some plugin types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39837
diff changeset
609 G_DEFINE_BOXED_TYPE(PurplePluginAction, purple_plugin_action,
e264fc382216 Use GObject macros for some plugin types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39837
diff changeset
610 purple_plugin_action_copy, purple_plugin_action_free)
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
611
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
612 /**************************************************************************
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
613 * Plugins API
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
614 **************************************************************************/
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
615 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
616 purple_plugins_find_all(void)
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
617 {
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
618 GList *ret = NULL, *ids, *l;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
619 GSList *plugins, *ll;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
620
36902
cd1a4ca0b65a Updated plugins.c according to GPlugin's re-namespacing
Ankit Vani <a@nevitus.org>
parents: 36871
diff changeset
621 ids = gplugin_manager_list_plugins();
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
622
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
623 for (l = ids; l; l = l->next) {
36902
cd1a4ca0b65a Updated plugins.c according to GPlugin's re-namespacing
Ankit Vani <a@nevitus.org>
parents: 36871
diff changeset
624 plugins = gplugin_manager_find_plugins(l->data);
36806
c55849ed482d Make sure purple_plugins_find_all() returns only purple plugins
Ankit Vani <a@nevitus.org>
parents: 36782
diff changeset
625
c55849ed482d Make sure purple_plugins_find_all() returns only purple plugins
Ankit Vani <a@nevitus.org>
parents: 36782
diff changeset
626 for (ll = plugins; ll; ll = ll->next) {
c55849ed482d Make sure purple_plugins_find_all() returns only purple plugins
Ankit Vani <a@nevitus.org>
parents: 36782
diff changeset
627 PurplePlugin *plugin = PURPLE_PLUGIN(ll->data);
c55849ed482d Make sure purple_plugins_find_all() returns only purple plugins
Ankit Vani <a@nevitus.org>
parents: 36782
diff changeset
628 if (purple_plugin_get_info(plugin))
c55849ed482d Make sure purple_plugins_find_all() returns only purple plugins
Ankit Vani <a@nevitus.org>
parents: 36782
diff changeset
629 ret = g_list_append(ret, plugin);
c55849ed482d Make sure purple_plugins_find_all() returns only purple plugins
Ankit Vani <a@nevitus.org>
parents: 36782
diff changeset
630 }
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
631
36902
cd1a4ca0b65a Updated plugins.c according to GPlugin's re-namespacing
Ankit Vani <a@nevitus.org>
parents: 36871
diff changeset
632 gplugin_manager_free_plugin_list(plugins);
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
633 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
634 g_list_free(ids);
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
635
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
636 return ret;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
637 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
638
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
639 GList *
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
640 purple_plugins_get_loaded(void)
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
641 {
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
642 return loaded_plugins;
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
643 }
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
644
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
645 void
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
646 purple_plugins_add_search_path(const gchar *path)
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
647 {
36902
cd1a4ca0b65a Updated plugins.c according to GPlugin's re-namespacing
Ankit Vani <a@nevitus.org>
parents: 36871
diff changeset
648 gplugin_manager_append_path(path);
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
649 }
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
650
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
651 void
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
652 purple_plugins_refresh(void)
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
653 {
36463
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
654 GList *plugins, *l;
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
655
36902
cd1a4ca0b65a Updated plugins.c according to GPlugin's re-namespacing
Ankit Vani <a@nevitus.org>
parents: 36871
diff changeset
656 gplugin_manager_refresh();
36463
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
657
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
658 plugins = purple_plugins_find_all();
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
659 for (l = plugins; l != NULL; l = l->next) {
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
660 PurplePlugin *plugin = PURPLE_PLUGIN(l->data);
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
661 PurplePluginInfo *info;
36474
e4f3c025cb62 Do not auto-load load-on-query plugins that have been unloaded once
Ankit Vani <a@nevitus.org>
parents: 36472
diff changeset
662 PurplePluginInfoPrivate *priv;
e4f3c025cb62 Do not auto-load load-on-query plugins that have been unloaded once
Ankit Vani <a@nevitus.org>
parents: 36472
diff changeset
663
36463
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
664 if (purple_plugin_is_loaded(plugin))
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
665 continue;
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
666
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
667 info = purple_plugin_get_info(plugin);
39380
3088866c22f4 libpurple: Port almost self-contained code from g_type_class_add_private()
Mike Ruprecht <cmaiku@gmail.com>
parents: 39352
diff changeset
668 priv = purple_plugin_info_get_instance_private(info);
36474
e4f3c025cb62 Do not auto-load load-on-query plugins that have been unloaded once
Ankit Vani <a@nevitus.org>
parents: 36472
diff changeset
669
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
670 if (!priv->unloaded && purple_plugin_info_get_flags(info) &
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
671 PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD) {
36463
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
672 purple_debug_info("plugins", "Auto-loading plugin %s\n",
39835
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
673 gplugin_plugin_get_filename(plugin));
36508
88400e054286 Return a GError if load or unload fails
Ankit Vani <a@nevitus.org>
parents: 36507
diff changeset
674 purple_plugin_load(plugin, NULL);
36463
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
675 }
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
676 }
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
677
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
678 g_list_free(plugins);
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
679 }
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
680
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
681 PurplePlugin *
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
682 purple_plugins_find_plugin(const gchar *id)
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
683 {
36432
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
684 PurplePlugin *plugin;
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
685
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
686 g_return_val_if_fail(id != NULL && *id != '\0', NULL);
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
687
36902
cd1a4ca0b65a Updated plugins.c according to GPlugin's re-namespacing
Ankit Vani <a@nevitus.org>
parents: 36871
diff changeset
688 plugin = gplugin_manager_find_plugin(id);
36990
b1471cc401a4 Document the g_object_unref before returning a plugin info or a plugin instance
Ankit Vani <a@nevitus.org>
parents: 36986
diff changeset
689
37178
b6865740b29c Fix tests built on Fedora
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 37146
diff changeset
690 if (!plugin)
b6865740b29c Fix tests built on Fedora
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 37146
diff changeset
691 return NULL;
b6865740b29c Fix tests built on Fedora
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 37146
diff changeset
692
36990
b1471cc401a4 Document the g_object_unref before returning a plugin info or a plugin instance
Ankit Vani <a@nevitus.org>
parents: 36986
diff changeset
693 /* GPlugin refs the plugin object before returning it. This workaround is
b1471cc401a4 Document the g_object_unref before returning a plugin info or a plugin instance
Ankit Vani <a@nevitus.org>
parents: 36986
diff changeset
694 * to avoid managing the reference counts everywhere in our codebase where
37001
e94e70e965e3 Better wording for comments in plugins.c
Ankit Vani <a@nevitus.org>
parents: 36990
diff changeset
695 * we use plugin instances. A plugin object will exist till the plugins
e94e70e965e3 Better wording for comments in plugins.c
Ankit Vani <a@nevitus.org>
parents: 36990
diff changeset
696 * subsystem is uninitialized. */
36431
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36429
diff changeset
697 g_object_unref(plugin);
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36429
diff changeset
698
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36429
diff changeset
699 return plugin;
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
700 }
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
701
36428
ba8ead8477cb Added PurplePlugin as an alias for GPluginPlugin
Ankit Vani <a@nevitus.org>
parents: 36412
diff changeset
702 PurplePlugin *
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
703 purple_plugins_find_by_filename(const char *filename)
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
704 {
36401
b820d9a76ce9 Refactored libpurple to use the ref'd plugins list
Ankit Vani <a@nevitus.org>
parents: 36400
diff changeset
705 GList *plugins, *l;
36432
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
706
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
707 g_return_val_if_fail(filename != NULL && *filename != '\0', NULL);
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
708
36401
b820d9a76ce9 Refactored libpurple to use the ref'd plugins list
Ankit Vani <a@nevitus.org>
parents: 36400
diff changeset
709 plugins = purple_plugins_find_all();
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
710
36401
b820d9a76ce9 Refactored libpurple to use the ref'd plugins list
Ankit Vani <a@nevitus.org>
parents: 36400
diff changeset
711 for (l = plugins; l != NULL; l = l->next) {
36428
ba8ead8477cb Added PurplePlugin as an alias for GPluginPlugin
Ankit Vani <a@nevitus.org>
parents: 36412
diff changeset
712 PurplePlugin *plugin = PURPLE_PLUGIN(l->data);
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
713
39835
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
714 if (purple_strequal(gplugin_plugin_get_filename(plugin),
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
715 filename)) {
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
716 g_list_free(plugins);
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
717 return 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
718 }
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
719 }
36429
5c2bc13927b0 Added wrappers for some gplugin functions
Ankit Vani <a@nevitus.org>
parents: 36428
diff changeset
720 g_list_free(plugins);
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
721
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
722 return NULL;
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
723 }
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
724
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
725 void
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
726 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
727 {
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
728 GList *pl;
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
729 GList *files = NULL;
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
730
36432
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
731 g_return_if_fail(key != NULL && *key != '\0');
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
732
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
733 for (pl = purple_plugins_get_loaded(); pl != NULL; pl = pl->next) {
36428
ba8ead8477cb Added PurplePlugin as an alias for GPluginPlugin
Ankit Vani <a@nevitus.org>
parents: 36412
diff changeset
734 PurplePlugin *plugin = PURPLE_PLUGIN(pl->data);
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
735 PurplePluginInfo *info = purple_plugin_get_info(plugin);
36472
1945ae79bbb3 Added checks in case a plugin does not return a PluginInfo
Ankit Vani <a@nevitus.org>
parents: 36469
diff changeset
736 if (!info)
1945ae79bbb3 Added checks in case a plugin does not return a PluginInfo
Ankit Vani <a@nevitus.org>
parents: 36469
diff changeset
737 continue;
1945ae79bbb3 Added checks in case a plugin does not return a PluginInfo
Ankit Vani <a@nevitus.org>
parents: 36469
diff changeset
738
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
739 if (purple_plugin_info_get_flags(info) &
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
740 PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD)
36463
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
741 continue;
b1ce7f2998e4 Added purple_plugin_loads_on_query()
Ankit Vani <a@nevitus.org>
parents: 36460
diff changeset
742
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
743 if (!g_list_find(plugins_to_disable, plugin))
39835
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
744 files = g_list_append(
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
745 files,
c28a375781dd Remove purple_plugin_get_filename wrapper as well.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39834
diff changeset
746 (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
747 }
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
748
36456
380500e9aff2 Fixed the type of pref used to store loaded plugins, and added some debug messages
Ankit Vani <a@nevitus.org>
parents: 36450
diff changeset
749 purple_prefs_set_path_list(key, files);
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
750 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
751 }
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
752
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
753 void
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
754 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
755 {
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
756 GList *l, *files;
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
757
36432
2de90f1d0c15 Added some checks
Ankit Vani <a@nevitus.org>
parents: 36431
diff changeset
758 g_return_if_fail(key != NULL && *key != '\0');
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
759
36456
380500e9aff2 Fixed the type of pref used to store loaded plugins, and added some debug messages
Ankit Vani <a@nevitus.org>
parents: 36450
diff changeset
760 files = purple_prefs_get_path_list(key);
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
761
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
762 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
763 {
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
764 char *file;
36428
ba8ead8477cb Added PurplePlugin as an alias for GPluginPlugin
Ankit Vani <a@nevitus.org>
parents: 36412
diff changeset
765 PurplePlugin *plugin;
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
766
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
767 if (l->data == NULL)
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
768 continue;
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
769
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
770 file = l->data;
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
771 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
772
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
773 if (plugin) {
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
774 purple_debug_info("plugins", "Loading saved plugin %s\n", file);
36508
88400e054286 Return a GError if load or unload fails
Ankit Vani <a@nevitus.org>
parents: 36507
diff changeset
775 purple_plugin_load(plugin, NULL);
36377
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
776 } else {
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
777 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
778 }
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
779
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
780 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
781 }
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
782
36399
f5d2c9da9ea0 Added purple_plugins_find_by_filename()
Ankit Vani <a@nevitus.org>
parents: 36397
diff changeset
783 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
784 }
28ec73fbb37d Added purple_plugins_save_loaded() and purple_plugins_load_saved()
Ankit Vani <a@nevitus.org>
parents: 36374
diff changeset
785
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
786 /**************************************************************************
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
787 * 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
788 **************************************************************************/
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
789 void *
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
790 purple_plugins_get_handle(void)
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
791 {
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
792 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
793
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
794 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
795 }
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
796
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
797 void
36370
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
798 purple_plugins_init(void)
04a6a552bee4 Added the following functions to plugins.[ch]:
Ankit Vani <a@nevitus.org>
parents: 36368
diff changeset
799 {
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
800 void *handle = purple_plugins_get_handle();
37495
f28a27411235 Add PURPLE_PLUGIN_PATH environment variable
Mike Ruprecht <cmaiku@gmail.com>
parents: 37178
diff changeset
801 const gchar *search_path;
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
802
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
803 purple_signal_register(handle, "plugin-load",
36483
5ecc9c19fd15 Replaced an assertion with a condition
Ankit Vani <a@nevitus.org>
parents: 36482
diff changeset
804 purple_marshal_VOID__POINTER,
5ecc9c19fd15 Replaced an assertion with a condition
Ankit Vani <a@nevitus.org>
parents: 36482
diff changeset
805 G_TYPE_NONE, 1, PURPLE_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
806 purple_signal_register(handle, "plugin-unload",
36483
5ecc9c19fd15 Replaced an assertion with a condition
Ankit Vani <a@nevitus.org>
parents: 36482
diff changeset
807 purple_marshal_VOID__POINTER,
5ecc9c19fd15 Replaced an assertion with a condition
Ankit Vani <a@nevitus.org>
parents: 36482
diff changeset
808 G_TYPE_NONE, 1, PURPLE_TYPE_PLUGIN);
36503
bdaf9e0edf5c Register signals before initializing gplugin
Ankit Vani <a@nevitus.org>
parents: 36499
diff changeset
809
bdaf9e0edf5c Register signals before initializing gplugin
Ankit Vani <a@nevitus.org>
parents: 36499
diff changeset
810 gplugin_init();
37495
f28a27411235 Add PURPLE_PLUGIN_PATH environment variable
Mike Ruprecht <cmaiku@gmail.com>
parents: 37178
diff changeset
811
f28a27411235 Add PURPLE_PLUGIN_PATH environment variable
Mike Ruprecht <cmaiku@gmail.com>
parents: 37178
diff changeset
812 search_path = g_getenv("PURPLE_PLUGIN_PATH");
f28a27411235 Add PURPLE_PLUGIN_PATH environment variable
Mike Ruprecht <cmaiku@gmail.com>
parents: 37178
diff changeset
813 if (search_path) {
f28a27411235 Add PURPLE_PLUGIN_PATH environment variable
Mike Ruprecht <cmaiku@gmail.com>
parents: 37178
diff changeset
814 gchar **paths;
f28a27411235 Add PURPLE_PLUGIN_PATH environment variable
Mike Ruprecht <cmaiku@gmail.com>
parents: 37178
diff changeset
815 int i;
f28a27411235 Add PURPLE_PLUGIN_PATH environment variable
Mike Ruprecht <cmaiku@gmail.com>
parents: 37178
diff changeset
816
f28a27411235 Add PURPLE_PLUGIN_PATH environment variable
Mike Ruprecht <cmaiku@gmail.com>
parents: 37178
diff changeset
817 paths = g_strsplit(search_path, G_SEARCHPATH_SEPARATOR_S, 0);
f28a27411235 Add PURPLE_PLUGIN_PATH environment variable
Mike Ruprecht <cmaiku@gmail.com>
parents: 37178
diff changeset
818 for (i = 0; paths[i]; ++i) {
f28a27411235 Add PURPLE_PLUGIN_PATH environment variable
Mike Ruprecht <cmaiku@gmail.com>
parents: 37178
diff changeset
819 purple_plugins_add_search_path(paths[i]);
f28a27411235 Add PURPLE_PLUGIN_PATH environment variable
Mike Ruprecht <cmaiku@gmail.com>
parents: 37178
diff changeset
820 }
f28a27411235 Add PURPLE_PLUGIN_PATH environment variable
Mike Ruprecht <cmaiku@gmail.com>
parents: 37178
diff changeset
821
f28a27411235 Add PURPLE_PLUGIN_PATH environment variable
Mike Ruprecht <cmaiku@gmail.com>
parents: 37178
diff changeset
822 g_strfreev(paths);
f28a27411235 Add PURPLE_PLUGIN_PATH environment variable
Mike Ruprecht <cmaiku@gmail.com>
parents: 37178
diff changeset
823 }
f28a27411235 Add PURPLE_PLUGIN_PATH environment variable
Mike Ruprecht <cmaiku@gmail.com>
parents: 37178
diff changeset
824
36937
c6a5ce2be21b Call gplugin_manager_add_default_paths() from purple_plugins_init
Ankit Vani <a@nevitus.org>
parents: 36934
diff changeset
825 gplugin_manager_add_default_paths();
c6a5ce2be21b Call gplugin_manager_add_default_paths() from purple_plugins_init
Ankit Vani <a@nevitus.org>
parents: 36934
diff changeset
826
38834
e4144efa975e Clean up a bunch of the cruft I accidentally created
Gary Kramlich <grim@reaperworld.com>
parents: 38358
diff changeset
827 if(!g_getenv("PURPLE_PLUGINS_SKIP")) {
e4144efa975e Clean up a bunch of the cruft I accidentally created
Gary Kramlich <grim@reaperworld.com>
parents: 38358
diff changeset
828 purple_plugins_add_search_path(PURPLE_LIBDIR);
e4144efa975e Clean up a bunch of the cruft I accidentally created
Gary Kramlich <grim@reaperworld.com>
parents: 38358
diff changeset
829 } else {
e4144efa975e Clean up a bunch of the cruft I accidentally created
Gary Kramlich <grim@reaperworld.com>
parents: 38358
diff changeset
830 purple_debug_info("plugins", "PURPLE_PLUGINS_SKIP environment variable set, skipping normal plugin paths");
e4144efa975e Clean up a bunch of the cruft I accidentally created
Gary Kramlich <grim@reaperworld.com>
parents: 38358
diff changeset
831 }
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
832
36902
cd1a4ca0b65a Updated plugins.c according to GPlugin's re-namespacing
Ankit Vani <a@nevitus.org>
parents: 36871
diff changeset
833 g_signal_connect(gplugin_manager_get_instance(), "loading-plugin",
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
834 G_CALLBACK(plugin_loading_cb), NULL);
36902
cd1a4ca0b65a Updated plugins.c according to GPlugin's re-namespacing
Ankit Vani <a@nevitus.org>
parents: 36871
diff changeset
835 g_signal_connect(gplugin_manager_get_instance(), "loaded-plugin",
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
836 G_CALLBACK(plugin_loaded_cb), NULL);
36902
cd1a4ca0b65a Updated plugins.c according to GPlugin's re-namespacing
Ankit Vani <a@nevitus.org>
parents: 36871
diff changeset
837 g_signal_connect(gplugin_manager_get_instance(), "unloading-plugin",
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
838 G_CALLBACK(plugin_unloading_cb), NULL);
36902
cd1a4ca0b65a Updated plugins.c according to GPlugin's re-namespacing
Ankit Vani <a@nevitus.org>
parents: 36871
diff changeset
839 g_signal_connect(gplugin_manager_get_instance(), "unloaded-plugin",
36859
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
840 G_CALLBACK(plugin_unloaded_cb), NULL);
6775d88f996a Implemented handlers for GPlugin's "(un)loading-plugin" and "(un)loaded-plugin" signals
Ankit Vani <a@nevitus.org>
parents: 36847
diff changeset
841
36503
bdaf9e0edf5c Register signals before initializing gplugin
Ankit Vani <a@nevitus.org>
parents: 36499
diff changeset
842 purple_plugins_refresh();
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
843 }
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
844
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
845 void
36511
1ebd4a8f2b4a Removed purple_plugin_is_loadable() and purple_plugin_get_error() from the API
Ankit Vani <a@nevitus.org>
parents: 36508
diff changeset
846 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
847 {
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
848 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
849
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
850 purple_debug_info("plugins", "Unloading all plugins\n");
36468
64d359bbe6f6 Removed purple_plugins_unload_all() from the API
Ankit Vani <a@nevitus.org>
parents: 36467
diff changeset
851 while (loaded_plugins != NULL)
36508
88400e054286 Return a GError if load or unload fails
Ankit Vani <a@nevitus.org>
parents: 36507
diff changeset
852 purple_plugin_unload(loaded_plugins->data, NULL);
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
853
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
854 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
855 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
856
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
857 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
858 }

mercurial