--- a/gplugin-gtk4/gplugin-gtk-plugin-page.c Thu Nov 24 00:21:09 2022 -0600
+++ b/gplugin-gtk4/gplugin-gtk-plugin-page.c Tue Dec 13 00:44:10 2022 -0600
@@ -22,6 +22,9 @@
#include <gplugin-gtk-plugin-closures.h>
#include <gplugin-gtk-plugin-page.h>
+#define G_SETTINGS_ENABLE_BACKEND +#include <gio/gsettingsbackend.h> @@ -38,6 +41,7 @@
+ GSettingsBackend *backend; /******************************************************************************
@@ -46,6 +50,7 @@
static GParamSpec *properties[N_PROPERTIES] = {
@@ -159,6 +164,11 @@
gplugin_gtk_plugin_page_set_plugin(page, g_value_get_object(value));
+ case PROP_SETTINGS_BACKEND: + gplugin_gtk_plugin_page_set_settings_backend( + g_value_get_object(value)); G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec);
@@ -178,6 +188,11 @@
g_value_set_object(value, gplugin_gtk_plugin_page_get_plugin(page));
+ case PROP_SETTINGS_BACKEND: + gplugin_gtk_plugin_page_get_settings_backend(page)); G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec);
@@ -226,6 +241,20 @@
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS);
+ * GPluginGtkPluginPage:settings-backend: + * The [class@Gio.SettingsBackend] to use when viewing plugin settings. + properties[PROP_SETTINGS_BACKEND] = g_param_spec_object( + "The settings backend to use when viewing plugin settings", + G_TYPE_SETTINGS_BACKEND, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
@@ -346,3 +375,55 @@
+ * gplugin_gtk_plugin_page_set_settings_backend: + * @page: The plugin page instance. + * @backend: (transfer none) (nullable): The settings backend to use. If %NULL, + * the default GSettings backend will be used. + * Sets the settings backend to use when displaying plugin settings. + * Note, because we do not want to leak `G_SETTINGS_ENABLE_BACKEND` into + * GPlugin users, this function takes a `gpointer` instead of a + * `GSettingsBackend *` but the type will be checked internally. +gplugin_gtk_plugin_page_set_settings_backend( + GPluginGtkPluginPage *page, + g_return_if_fail(GPLUGIN_GTK_IS_PLUGIN_PAGE(page)); + g_return_if_fail(G_IS_SETTINGS_BACKEND(backend) || backend == NULL); + if(g_set_object(&page->backend, backend)) { + g_object_notify_by_pspec( + properties[PROP_SETTINGS_BACKEND]); + * gplugin_gtk_plugin_page_get_settings_backend: + * @page: The plugin page instance. + * Gets the settings backend used when displaying plugin settings. + * Note, because we do not want to leak `G_SETTINGS_ENABLE_BACKEND` into + * GPlugin users, this function returns a `gpointer`, and you should cast to + * `GSettingsBackend *` after setting `G_SETTINGS_ENABLE_BACKEND` for the files + * Returns: (transfer none): The settings backend in use. +gplugin_gtk_plugin_page_get_settings_backend(GPluginGtkPluginPage *page) + g_return_val_if_fail(GPLUGIN_GTK_IS_PLUGIN_PAGE(page), NULL); --- a/gplugin-gtk4/gplugin-gtk-plugin-page.h Thu Nov 24 00:21:09 2022 -0600
+++ b/gplugin-gtk4/gplugin-gtk-plugin-page.h Tue Dec 13 00:44:10 2022 -0600
@@ -47,6 +47,12 @@
GPluginPlugin *gplugin_gtk_plugin_page_get_plugin(GPluginGtkPluginPage *page);
+void gplugin_gtk_plugin_page_set_settings_backend( + GPluginGtkPluginPage *page, +gpointer gplugin_gtk_plugin_page_get_settings_backend( + GPluginGtkPluginPage *page); #endif /* GPLUGIN_GTK_PLUGIN_PAGE_H */
--- a/gplugin-gtk4/gplugin-gtk-view.c Thu Nov 24 00:21:09 2022 -0600
+++ b/gplugin-gtk4/gplugin-gtk-view.c Tue Dec 13 00:44:10 2022 -0600
@@ -21,6 +21,9 @@
#include <gplugin-gtk-plugin-row.h>
#include <gplugin-gtk-view.h>
+#define G_SETTINGS_ENABLE_BACKEND +#include <gio/gsettingsbackend.h> @@ -35,6 +38,7 @@
+ GSettingsBackend *backend; @@ -54,6 +58,7 @@
static GParamSpec *properties[N_PROPERTIES] = {
@@ -214,6 +219,11 @@
g_value_get_boolean(value));
+ case PROP_SETTINGS_BACKEND: + gplugin_gtk_view_set_settings_backend( + g_value_get_object(value)); G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec);
@@ -238,6 +248,11 @@
gplugin_gtk_view_get_show_internal(view));
+ case PROP_SETTINGS_BACKEND: + gplugin_gtk_view_get_settings_backend(view)); G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec);
@@ -327,6 +342,18 @@
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ * GPluginGtkView:settings-backend: + * The [class@Gio.SettingsBackend] to use when viewing plugin settings. + properties[PROP_SETTINGS_BACKEND] = g_param_spec_object( + "The settings backend to use when viewing plugin settings", + G_TYPE_SETTINGS_BACKEND, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
@@ -451,6 +478,59 @@
+ * gplugin_gtk_view_set_settings_backend: + * @view: The GTK view instance. + * @backend: (transfer none) (nullable): The settings backend to use. If %NULL, + * the default GSettings backend will be used. + * Sets the settings backend to use when displaying plugin settings. + * Note, because we do not want to leak `G_SETTINGS_ENABLE_BACKEND` into + * GPlugin users, this function takes a `gpointer` instead of a + * `GSettingsBackend *` but the type will be checked internally. +gplugin_gtk_view_set_settings_backend(GPluginGtkView *view, gpointer backend) + g_return_if_fail(GPLUGIN_GTK_IS_VIEW(view)); + g_return_if_fail(G_IS_SETTINGS_BACKEND(backend) || backend == NULL); + if(g_set_object(&view->backend, backend)) { + gplugin_gtk_plugin_page_set_settings_backend( + GPLUGIN_GTK_PLUGIN_PAGE(view->plugin_page), + g_object_notify_by_pspec( + properties[PROP_SETTINGS_BACKEND]); + * gplugin_gtk_view_get_settings_backend: + * @view: The GTK view instance. + * Gets the settings backend used when displaying plugin settings. + * Note, because we do not want to leak `G_SETTINGS_ENABLE_BACKEND` into + * GPlugin users, this function returns a `gpointer`, and you should cast to + * `GSettingsBackend *` after setting `G_SETTINGS_ENABLE_BACKEND` for the files + * Returns: (transfer none): The settings backend. +gplugin_gtk_view_get_settings_backend(GPluginGtkView *view) + g_return_val_if_fail(GPLUGIN_GTK_IS_VIEW(view), NULL); * gplugin_gtk_view_show_overview:
* @view: The GTK view instance.
--- a/gplugin-gtk4/gplugin-gtk-view.h Thu Nov 24 00:21:09 2022 -0600
+++ b/gplugin-gtk4/gplugin-gtk-view.h Tue Dec 13 00:44:10 2022 -0600
@@ -52,6 +52,11 @@
gboolean gplugin_gtk_view_get_show_internal(GPluginGtkView *view);
+void gplugin_gtk_view_set_settings_backend( +gpointer gplugin_gtk_view_get_settings_backend(GPluginGtkView *view); void gplugin_gtk_view_show_overview(GPluginGtkView *view);
void gplugin_gtk_view_show_plugin(GPluginGtkView *view, GPluginPlugin *plugin);