Add the Plugins list to the PidginDisplayWindow

Thu, 22 Feb 2024 06:05:56 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Thu, 22 Feb 2024 06:05:56 -0600
changeset 42597
cc322d213d2e
parent 42596
b64b96f3b781
child 42598
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/

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">

mercurial