Thu, 01 Aug 2013 18:26:13 +0530
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.