Added PidginPluginInfo, inheriting PurplePluginInfo to hold UI information soc.2013.gobjectification.plugins

Thu, 01 Aug 2013 18:26:13 +0530

author
Ankit Vani <a@nevitus.org>
date
Thu, 01 Aug 2013 18:26:13 +0530
branch
soc.2013.gobjectification.plugins
changeset 36406
8fba0d44840d
parent 36405
bfae18433ee8
child 36407
311031b7f535

Added PidginPluginInfo, inheriting PurplePluginInfo to hold UI information

pidgin/gtkplugin.c file | annotate | diff | comparison | revisions
pidgin/gtkplugin.h file | annotate | diff | comparison | revisions
--- a/pidgin/gtkplugin.c	Thu Aug 01 18:13:26 2013 +0530
+++ b/pidgin/gtkplugin.c	Thu Aug 01 18:26:13 2013 +0530
@@ -37,8 +37,15 @@
 
 #include "gtk3compat.h"
 
+#define PIDGIN_PLUGIN_INFO_GET_PRIVATE(obj) \
+	(G_TYPE_INSTANCE_GET_PRIVATE((obj), PIDGIN_TYPE_PLUGIN_INFO, PidginPluginInfoPrivate))
+
 #define PIDGIN_RESPONSE_CONFIGURE 98121
 
+typedef struct
+{
+} PidginPluginInfoPrivate;
+
 static void plugin_toggled_stage_two(PurplePlugin *plug, GtkTreeModel *model,
                                   GtkTreeIter *iter, gboolean unload);
 
@@ -56,6 +63,31 @@
 static GtkWidget *pref_button = NULL;
 static GHashTable *plugin_pref_dialogs = NULL;
 
+/* Class initializer function */
+static void pidgin_plugin_info_class_init(PidginPluginInfoClass *klass)
+{
+	g_type_class_add_private(klass, sizeof(PidginPluginInfoPrivate));
+}
+
+GType
+pidgin_plugin_info_get_type(void)
+{
+	static GType type = 0;
+
+	if (G_UNLIKELY(type == 0)) {
+		static const GTypeInfo info = {
+			.class_size = sizeof(PidginPluginInfoClass),
+			.class_init = (GClassInitFunc)pidgin_plugin_info_class_init,
+			.instance_size = sizeof(PidginPluginInfo),
+		};
+
+		type = g_type_register_static(PURPLE_TYPE_PLUGIN_INFO,
+		                              "PidginPluginInfo", &info, 0);
+	}
+
+	return type;
+}
+
 GtkWidget *
 pidgin_plugin_get_config_frame(PurplePlugin *plugin)
 {
--- a/pidgin/gtkplugin.h	Thu Aug 01 18:13:26 2013 +0530
+++ b/pidgin/gtkplugin.h	Thu Aug 01 18:26:13 2013 +0530
@@ -29,34 +29,49 @@
 #include "pidgin.h"
 #include "plugins.h"
 
-typedef struct _PidginPluginUiInfo PidginPluginUiInfo;
+#define PIDGIN_TYPE_PLUGIN_INFO             (pidgin_plugin_info_get_type())
+#define PIDGIN_PLUGIN_INFO(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj), PIDGIN_TYPE_PLUGIN_INFO, PidginPluginInfo))
+#define PIDGIN_PLUGIN_INFO_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass), PIDGIN_TYPE_PLUGIN_INFO, PidginPluginInfoClass))
+#define PIDGIN_IS_PLUGIN_INFO(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj), PIDGIN_TYPE_PLUGIN_INFO))
+#define PIDGIN_IS_PLUGIN_INFO_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass), PIDGIN_TYPE_PLUGIN_INFO))
+#define PIDGIN_PLUGIN_INFO_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS((obj), PIDGIN_TYPE_PLUGIN_INFO, PidginPluginInfoClass))
+
+/** @copydoc _PidginPluginInfo */
+typedef struct _PidginPluginInfo PidginPluginInfo;
+/** @copydoc _PidginPluginInfoClass */
+typedef struct _PidginPluginInfoClass PidginPluginInfoClass;
+
+typedef GtkWidget *(*PidginPluginConfigFrame)(GPluginPlugin *);
 
 /**
- * A GTK+ UI structure for plugins.
+ * Extends #PurplePluginInfo to hold UI information for pidgin.
  */
-struct _PidginPluginUiInfo
-{
-	GtkWidget *(*get_config_frame)(PurplePlugin *plugin);
+struct _PidginPluginInfo {
+	/*< private >*/
+	PurplePluginInfo parent;
+};
 
-	int page_num;                                         /**< Reserved */
+/**
+ * PidginPluginInfoClass:
+ *
+ * The base class for all #PidginPluginInfo's.
+ */
+struct _PidginPluginInfoClass {
+	/*< private >*/
+	PurplePluginInfoClass parent_class;
 
-	/* padding */
 	void (*_pidgin_reserved1)(void);
 	void (*_pidgin_reserved2)(void);
 	void (*_pidgin_reserved3)(void);
 	void (*_pidgin_reserved4)(void);
 };
 
-#define PIDGIN_PLUGIN_TYPE PIDGIN_UI
+G_BEGIN_DECLS
 
-#define PIDGIN_IS_PIDGIN_PLUGIN(plugin) \
-	((plugin)->info != NULL && (plugin)->info->ui_info != NULL && \
-	 !strcmp((plugin)->info->ui_requirement, PIDGIN_PLUGIN_TYPE))
-
-#define PIDGIN_PLUGIN_UI_INFO(plugin) \
-	((PidginPluginUiInfo *)(plugin)->info->ui_info)
-
-G_BEGIN_DECLS
+/**
+ * Returns the GType for the PidginPluginInfo object.
+ */
+GType pidgin_plugin_info_get_type(void);
 
 /**
  * Returns the configuration frame widget for a GTK+ plugin, if one
@@ -67,7 +82,7 @@
  * @return The frame, if the plugin is a GTK+ plugin and provides a
  *         configuration frame.
  */
-GtkWidget *pidgin_plugin_get_config_frame(PurplePlugin *plugin);
+GtkWidget *pidgin_plugin_get_config_frame(GPluginPlugin *plugin);
 
 /**
  * Saves all loaded plugins.

mercurial