From ad4cd61db0b4f4811a9db31e606caf2762d3f1e2 Mon Sep 17 00:00:00 2001 From: Gary Kramlich Date: Fri, 1 Nov 2019 00:38:08 -0500 Subject: Get the new plugin dialog working. Needs a bit of cleanup yet --- pidgin/pidginpluginsdialog.c | 36 ++++++++++++++++++++++++++++++++++++ pidgin/resources/Plugins/dialog.ui | 16 ++++++++++------ 2 files changed, 46 insertions(+), 6 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 +#include +#include + 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 * diff --git a/pidgin/resources/Plugins/dialog.ui b/pidgin/resources/Plugins/dialog.ui index 9be86f6ab8..5e0c9ae401 100644 --- a/pidgin/resources/Plugins/dialog.ui +++ b/pidgin/resources/Plugins/dialog.ui @@ -3,8 +3,11 @@ - -