libpurple/plugins.c

branch
soc.2013.gobjectification.plugins
changeset 36976
46c2822b7c58
parent 36954
26c2cf81a97a
child 36986
2326ab164e3a
--- 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)
 {

mercurial