pidgin/pidgin

cc322d213d2e
Parents b64b96f3b781
Children 5e42cba3e8ad
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/
--- 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">