--- a/libpurple/plugins.c Sun Jan 12 16:18:04 2014 +0530 +++ b/libpurple/plugins.c Sun Jan 12 19:28:35 2014 +0530 @@ -45,6 +45,9 @@ /** Callback that returns a list of actions the plugin can perform */ PurplePluginActionsCb actions_cb; + /** Callback that returns extra information about a plugin */ + PurplePluginExtraCb extra_cb; + /** Callback that returns a preferences frame for a plugin */ PurplePluginPrefFrameCb pref_frame_cb; @@ -61,6 +64,7 @@ PROP_0, PROP_UI_REQUIREMENT, PROP_ACTIONS_CB, + PROP_EXTRA_CB, PROP_PREF_FRAME_CB, PROP_PREF_REQUEST_CB, PROP_FLAGS, @@ -378,6 +382,9 @@ case PROP_ACTIONS_CB: priv->actions_cb = g_value_get_pointer(value); break; + case PROP_EXTRA_CB: + priv->extra_cb = g_value_get_pointer(value); + break; case PROP_PREF_FRAME_CB: priv->pref_frame_cb = g_value_get_pointer(value); break; @@ -405,6 +412,10 @@ g_value_set_pointer(value, purple_plugin_info_get_actions_cb(info)); break; + case PROP_EXTRA_CB: + g_value_set_pointer(value, + purple_plugin_info_get_extra_cb(info)); + break; case PROP_PREF_FRAME_CB: g_value_set_pointer(value, purple_plugin_info_get_pref_frame_cb(info)); @@ -502,6 +513,13 @@ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property(obj_class, PROP_EXTRA_CB, + g_param_spec_pointer("extra-cb", + "Extra info callback", + "Callback that returns extra info about the plugin", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS)); + g_object_class_install_property(obj_class, PROP_PREF_FRAME_CB, g_param_spec_pointer("pref-frame-cb", "Preferences frame callback", @@ -763,6 +781,16 @@ return priv->actions_cb; } +PurplePluginExtraCb +purple_plugin_info_get_extra_cb(const PurplePluginInfo *info) +{ + PurplePluginInfoPrivate *priv = PURPLE_PLUGIN_INFO_GET_PRIVATE(info); + + g_return_val_if_fail(priv != NULL, NULL); + + return priv->extra_cb; +} + PurplePluginPrefFrameCb purple_plugin_info_get_pref_frame_cb(const PurplePluginInfo *info) {