Thu, 22 Feb 2024 06:05:56 -0600
Add the Plugins list to the PidginDisplayWindow
The old dialog is still there for now, but this will be replacing it eventually.
Testing Done:
Consulted with the turtles and browsed around a bit.
Reviewed at https://reviews.imfreedom.org/r/2966/
| pidgin/pidgindisplaywindow.c | file | annotate | diff | comparison | revisions | |
| pidgin/resources/Display/window.ui | file | annotate | diff | comparison | revisions |
--- a/pidgin/pidgindisplaywindow.c Thu Feb 22 06:03:16 2024 -0600 +++ b/pidgin/pidgindisplaywindow.c Thu Feb 22 06:05:56 2024 -0600 @@ -24,6 +24,9 @@ #include <adwaita.h> +#include <gplugin.h> +#include <gplugin-gtk.h> + #include "pidgindisplaywindow.h" #include "gtkdialogs.h" @@ -44,6 +47,8 @@ GtkWidget *view; GtkWidget *bin; + GtkWidget *plugin_list; + GListModel *base_model; GListModel *selection_model; @@ -327,6 +332,8 @@ pidgin_display_window_init(PidginDisplayWindow *window) { GtkEventController *key = NULL; GtkTreeListModel *tree_model = NULL; + GPluginManager *plugin_manager = NULL; + gpointer settings_backend = NULL; gtk_widget_init_template(GTK_WIDGET(window)); @@ -360,6 +367,15 @@ G_CALLBACK(pidgin_display_window_key_pressed_cb), window); gtk_widget_add_controller(GTK_WIDGET(window), key); + + /* Set up the plugin list. */ + plugin_manager = gplugin_manager_get_default(); + gplugin_gtk_view_set_manager(GPLUGIN_GTK_VIEW(window->plugin_list), + plugin_manager); + + settings_backend = purple_core_get_settings_backend(); + gplugin_gtk_view_set_settings_backend(GPLUGIN_GTK_VIEW(window->plugin_list), + settings_backend); } static void @@ -399,6 +415,8 @@ gtk_widget_class_bind_template_child(widget_class, PidginDisplayWindow, bin); gtk_widget_class_bind_template_child(widget_class, PidginDisplayWindow, + plugin_list); + gtk_widget_class_bind_template_child(widget_class, PidginDisplayWindow, base_model); gtk_widget_class_bind_template_child(widget_class, PidginDisplayWindow, selection_model);
--- a/pidgin/resources/Display/window.ui Thu Feb 22 06:03:16 2024 -0600 +++ b/pidgin/resources/Display/window.ui Thu Feb 22 06:05:56 2024 -0600 @@ -56,6 +56,47 @@ </child> <child> <object class="PidginDisplayItem"> + <property name="id">__plugins__</property> + <property name="title" translatable="1">Plugins</property> + <property name="widget"> + <object class="GtkBox"> + <property name="orientation">vertical</property> + <child> + <object class="PidginInfoPane"> + <property name="title" translatable="yes">Plugins</property> + <child> + <object class="GtkBox"> + <property name="margin-end">6</property> + <property name="orientation">horizontal</property> + <property name="spacing">6</property> + <property name="valign">center</property> + <child> + <object class="GtkButton"> + <property name="tooltip-text" translatable="yes">Refresh</property> + <!-- we can't actually refresh the gplugin pluging list right now, so we just show an insensitive button to remind us to fix it later. --> + <property name="sensitive">false</property> + <child> + <object class="GtkImage"> + <property name="icon-name">view-refresh-symbolic</property> + </object> + </child> + </object> + </child> + </object> + </child> + </object> + </child> + <child> + <object class="GPluginGtkView" id="plugin_list"> + <property name="orientation">vertical</property> + </object> + </child> + </object> + </property> + </object> + </child> + <child> + <object class="PidginDisplayItem"> <property name="id">__conversations__</property> <property name="title" translatable="1">Conversations</property> <property name="widget">