Added properties "finch_preferences_frame" to FinchPluginInfo, "pidgin_config_frame" to PidginPluginInfo soc.2013.gobjectification.plugins

Mon, 05 Aug 2013 00:47:07 +0530

author
Ankit Vani <a@nevitus.org>
date
Mon, 05 Aug 2013 00:47:07 +0530
branch
soc.2013.gobjectification.plugins
changeset 36447
2d36e433e617
parent 36446
e75794a5a7f0
child 36448
d6e82875b098

Added properties "finch_preferences_frame" to FinchPluginInfo, "pidgin_config_frame" to PidginPluginInfo

finch/gntplugin.c file | annotate | diff | comparison | revisions
libpurple/plugins.c file | annotate | diff | comparison | revisions
libpurple/plugins.h file | annotate | diff | comparison | revisions
pidgin/gtkplugin.c file | annotate | diff | comparison | revisions
--- a/finch/gntplugin.c	Mon Aug 05 00:27:43 2013 +0530
+++ b/finch/gntplugin.c	Mon Aug 05 00:47:07 2013 +0530
@@ -50,6 +50,13 @@
 	FinchPluginFrame get_pref_frame;
 } FinchPluginInfoPrivate;
 
+enum
+{
+	PROP_0,
+	PROP_FINCH_PREFERENCES_FRAME,
+	PROP_LAST
+};
+
 static struct
 {
 	GntWidget *tree;
@@ -62,10 +69,56 @@
 
 static GntWidget *process_pref_frame(PurplePluginPrefFrame *frame);
 
+/* Set method for GObject properties */
+static void
+finch_plugin_info_set_property(GObject *obj, guint param_id, const GValue *value,
+		GParamSpec *pspec)
+{
+	FinchPluginInfoPrivate *priv = FINCH_PLUGIN_INFO_GET_PRIVATE(obj);
+
+	switch (param_id) {
+		case PROP_FINCH_PREFERENCES_FRAME:
+			priv->get_pref_frame = g_value_get_pointer(value);
+			break;
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
+			break;
+	}
+}
+
+/* Get method for GObject properties */
+static void
+finch_plugin_info_get_property(GObject *obj, guint param_id, GValue *value,
+		GParamSpec *pspec)
+{
+	FinchPluginInfoPrivate *priv = FINCH_PLUGIN_INFO_GET_PRIVATE(obj);
+
+	switch (param_id) {
+		case PROP_FINCH_PREFERENCES_FRAME:
+			g_value_set_pointer(value, priv->get_pref_frame);
+			break;
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
+			break;
+	}
+}
+
 /* Class initializer function */
 static void finch_plugin_info_class_init(FinchPluginInfoClass *klass)
 {
+	GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+
 	g_type_class_add_private(klass, sizeof(FinchPluginInfoPrivate));
+
+	/* Setup properties */
+	obj_class->get_property = finch_plugin_info_get_property;
+	obj_class->set_property = finch_plugin_info_set_property;
+
+	g_object_class_install_property(obj_class, PROP_FINCH_PREFERENCES_FRAME,
+		g_param_spec_pointer("finch_preferences_frame",
+		                     "Finch preferences frame callback",
+		                     "Callback that returns a GNT preferences frame",
+		                     G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
 }
 
 GType
--- a/libpurple/plugins.c	Mon Aug 05 00:27:43 2013 +0530
+++ b/libpurple/plugins.c	Mon Aug 05 00:47:07 2013 +0530
@@ -306,8 +306,7 @@
 			priv->ui_requirement = g_strdup(g_value_get_string(value));
 			break;
 		case PROP_PREFERENCES_FRAME:
-			purple_plugin_info_set_pref_frame_callback(info,
-					g_value_get_pointer(value));
+			priv->get_pref_frame = g_value_get_pointer(value);
 			break;
 		default:
 			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
@@ -432,7 +431,7 @@
 		g_param_spec_pointer(PROP_PREFERENCES_FRAME_S,
 		                     "Preferences frame callback",
 		                     "The callback that returns the preferences frame",
-		                     G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+		                     G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
 }
 
 /**************************************************************************
@@ -633,17 +632,6 @@
 #endif
 }
 
-void
-purple_plugin_info_set_pref_frame_callback(PurplePluginInfo *info,
-		PurplePluginPrefFrameCallback callback)
-{
-	PurplePluginInfoPrivate *priv = PURPLE_PLUGIN_INFO_GET_PRIVATE(info);
-
-	g_return_if_fail(priv != NULL);
-
-	priv->get_pref_frame = callback;
-}
-
 PurplePluginPrefFrameCallback
 purple_plugin_info_get_pref_frame_callback(const PurplePluginInfo *info)
 {
--- a/libpurple/plugins.h	Mon Aug 05 00:27:43 2013 +0530
+++ b/libpurple/plugins.h	Mon Aug 05 00:47:07 2013 +0530
@@ -420,15 +420,6 @@
 GSList *purple_plugin_info_get_dependencies(const PurplePluginInfo *info);
 
 /**
- * Sets a callback to be invoked to retrieve the preferences frame for a plugin.
- *
- * @param info The plugin info to set the callback for.
- * @param callback    The callback that returns the preferences frame.
- */
-void purple_plugin_info_set_pref_frame_callback(PurplePluginInfo *info,
-		PurplePluginPrefFrameCallback callback);
-
-/**
  * Returns the callback that retrieves the preferences frame for a plugin.
  *
  * @param info The plugin info to get the callback from.
--- a/pidgin/gtkplugin.c	Mon Aug 05 00:27:43 2013 +0530
+++ b/pidgin/gtkplugin.c	Mon Aug 05 00:47:07 2013 +0530
@@ -47,6 +47,13 @@
 	PidginPluginConfigFrame get_config_frame;
 } PidginPluginInfoPrivate;
 
+enum
+{
+	PROP_0,
+	PROP_PIDGIN_CONFIG_FRAME,
+	PROP_LAST
+};
+
 static void plugin_toggled_stage_two(PurplePlugin *plug, GtkTreeModel *model,
                                   GtkTreeIter *iter, gboolean unload);
 
@@ -64,10 +71,56 @@
 static GtkWidget *pref_button = NULL;
 static GHashTable *plugin_pref_dialogs = NULL;
 
+/* Set method for GObject properties */
+static void
+pidgin_plugin_info_set_property(GObject *obj, guint param_id, const GValue *value,
+		GParamSpec *pspec)
+{
+	PidginPluginInfoPrivate *priv = PIDGIN_PLUGIN_INFO_GET_PRIVATE(obj);
+
+	switch (param_id) {
+		case PROP_PIDGIN_CONFIG_FRAME:
+			priv->get_config_frame = g_value_get_pointer(value);
+			break;
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
+			break;
+	}
+}
+
+/* Get method for GObject properties */
+static void
+pidgin_plugin_info_get_property(GObject *obj, guint param_id, GValue *value,
+		GParamSpec *pspec)
+{
+	PidginPluginInfoPrivate *priv = PIDGIN_PLUGIN_INFO_GET_PRIVATE(obj);
+
+	switch (param_id) {
+		case PROP_PIDGIN_CONFIG_FRAME:
+			g_value_set_pointer(value, priv->get_config_frame);
+			break;
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
+			break;
+	}
+}
+
 /* Class initializer function */
 static void pidgin_plugin_info_class_init(PidginPluginInfoClass *klass)
 {
+	GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+
 	g_type_class_add_private(klass, sizeof(PidginPluginInfoPrivate));
+
+	/* Setup properties */
+	obj_class->get_property = pidgin_plugin_info_get_property;
+	obj_class->set_property = pidgin_plugin_info_set_property;
+
+	g_object_class_install_property(obj_class, PROP_PIDGIN_CONFIG_FRAME,
+		g_param_spec_pointer("pidgin_config_frame",
+		                     "Pidgin configuration frame callback",
+		                     "Callback that returns a GTK configuration frame",
+		                     G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
 }
 
 GType

mercurial