diff options
Diffstat (limited to 'pidgin/pidginpluginsdialog.c')
-rw-r--r-- | pidgin/pidginpluginsdialog.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/pidgin/pidginpluginsdialog.c b/pidgin/pidginpluginsdialog.c index 01c0809ba0..c1fbc4da50 100644 --- a/pidgin/pidginpluginsdialog.c +++ b/pidgin/pidginpluginsdialog.c @@ -25,10 +25,16 @@ #include <glib/gi18n.h> +#include <gplugin.h> +#include <gplugin-gtk.h> + struct _PidginPluginsDialog { GtkDialog parent; GtkWidget *close_button; + GtkWidget *plugin_info; + + GtkListStore *plugin_store; }; /****************************************************************************** @@ -43,6 +49,25 @@ pidgin_plugins_dialog_close(GtkWidget *b, gpointer data) { gtk_widget_destroy(GTK_WIDGET(data)); } +static void +pidgin_plugins_dialog_selection_cb(GtkTreeSelection *sel, gpointer data) { + PidginPluginsDialog *dialog = PIDGIN_PLUGINS_DIALOG(data); + GPluginPlugin *plugin = NULL; + GtkTreeModel *model = NULL; + GtkTreeIter iter; + + if(gtk_tree_selection_get_selected(sel, &model, &iter)) { + gtk_tree_model_get(model, &iter, + GPLUGIN_GTK_STORE_PLUGIN_COLUMN, &plugin, + -1); + } + + gplugin_gtk_plugin_info_set_plugin( + GPLUGIN_GTK_PLUGIN_INFO(dialog->plugin_info), + plugin + ); +} + /****************************************************************************** * GObject Implementation *****************************************************************************/ @@ -58,6 +83,10 @@ pidgin_plugins_dialog_class_init(PidginPluginsDialogClass *klass) { ); gtk_widget_class_bind_template_child(widget_class, PidginPluginsDialog, close_button); + gtk_widget_class_bind_template_child(widget_class, PidginPluginsDialog, plugin_info); + gtk_widget_class_bind_template_child(widget_class, PidginPluginsDialog, plugin_store); + + gtk_widget_class_bind_template_callback(widget_class, pidgin_plugins_dialog_selection_cb); } static void @@ -71,6 +100,13 @@ pidgin_plugins_dialog_init(PidginPluginsDialog *dialog) { G_CALLBACK(pidgin_plugins_dialog_close), dialog ); + + /* set the sort column for the plugin_store */ + gtk_tree_sortable_set_sort_column_id( + GTK_TREE_SORTABLE(dialog->plugin_store), + GPLUGIN_GTK_STORE_MARKUP_COLUMN, + GTK_SORT_ASCENDING + ); } GtkWidget * |