g_settings_backend_unsubscribe (delayed->priv->backend, name);
}
+static GPermission *
+g_delayed_settings_backend_get_permission (GSettingsBackend *backend,
+ const gchar *path)
+{
+ GDelayedSettingsBackend *delayed = G_DELAYED_SETTINGS_BACKEND (backend);
+
+ return g_settings_backend_get_permission (delayed->priv->backend, path);
+}
+
+
/* method calls */
gboolean
g_delayed_settings_backend_get_has_unapplied (GDelayedSettingsBackend *delayed)
backend_class->get_writable = g_delayed_settings_backend_get_writable;
backend_class->subscribe = g_delayed_settings_backend_subscribe;
backend_class->unsubscribe = g_delayed_settings_backend_unsubscribe;
+ backend_class->get_permission = g_delayed_settings_backend_get_permission;
object_class->finalize = g_delayed_settings_backend_finalize;
}
#include "gfile.h"
#include "gfileinfo.h"
#include "gfilemonitor.h"
+#include "gsimplepermission.h"
#include "gioalias.h"
return kf_backend->priv->writable;
}
+static GPermission *
+g_keyfile_settings_backend_get_permission (GSettingsBackend *backend,
+ const gchar *path)
+{
+ return g_simple_permission_new (TRUE);
+}
+
static void
g_keyfile_settings_backend_keyfile_reload (GKeyfileSettingsBackend *kf_backend)
{
backend_class->reset = g_keyfile_settings_backend_reset;
backend_class->reset_path = g_keyfile_settings_backend_reset_path;
backend_class->get_writable = g_keyfile_settings_backend_get_writable;
+ backend_class->get_permission = g_keyfile_settings_backend_get_permission;
/* No need to implement subscribed/unsubscribe: the only point would be to
* stop monitoring the file when there's no GSettings anymore, which is no
* big win. */
#include "config.h"
#include "gmemorysettingsbackend.h"
+#include "gsimplepermission.h"
#include "gsettingsbackend.h"
#include "giomodule.h"
return TRUE;
}
+static GPermission *
+g_memory_settings_backend_get_permission (GSettingsBackend *backend,
+ const gchar *path)
+{
+ return g_simple_permission_new (TRUE);
+}
+
static void
g_memory_settings_backend_finalize (GObject *object)
{
backend_class->write = g_memory_settings_backend_write;
backend_class->write_keys = g_memory_settings_backend_write_keys;
backend_class->get_writable = g_memory_settings_backend_get_writable;
+ backend_class->get_permission = g_memory_settings_backend_get_permission;
object_class->finalize = g_memory_settings_backend_finalize;
}
#include "config.h"
#include "gnullsettingsbackend.h"
+#include "gsimplepermission.h"
#include "gioalias.h"
static gboolean
g_null_settings_backend_get_writable (GSettingsBackend *backend,
- const gchar *name)
+ const gchar *name)
{
return FALSE;
}
+static GPermission *
+g_null_settings_backend_get_permission (GSettingsBackend *backend,
+ const gchar *path)
+{
+ return g_simple_permission_new (FALSE);
+}
+
static void
g_null_settings_backend_init (GNullSettingsBackend *memory)
{
backend_class->reset = g_null_settings_backend_reset;
backend_class->reset_path = g_null_settings_backend_reset_path;
backend_class->get_writable = g_null_settings_backend_get_writable;
+ backend_class->get_permission = g_null_settings_backend_get_permission;
}
GSettingsBackend *
#include "gsettingsbackendinternal.h"
#include "gnullsettingsbackend.h"
+#include "gsimplepermission.h"
#include "giomodule-priv.h"
#include "gio-marshal.h"
return FALSE;
}
+/*< private >
+ * g_settings_backend_get_permission:
+ * @backend: a #GSettingsBackend
+ * @path: a path
+ * @returns: a non-%NULL #GPermission
+ *
+ * Gets the permission object associated with writing to keys below
+ * @path on @backend.
+ *
+ * If this is not implemented in the backend, then a %TRUE
+ * #GSimplePermission is returned.
+ */
+GPermission *
+g_settings_backend_get_permission (GSettingsBackend *backend,
+ const gchar *path)
+{
+ GSettingsBackendClass *class = G_SETTINGS_BACKEND_GET_CLASS (backend);
+
+ if (class->get_permission)
+ return class->get_permission (backend, path);
+
+ return g_simple_permission_new (TRUE);
+}
+
/**
* g_settings_backend_setup:
* @context: a context string (not %NULL or "")
{
GObjectClass parent_class;
- gboolean (*supports_context) (const gchar *context);
-
- GVariant * (*read) (GSettingsBackend *backend,
- const gchar *key,
- const GVariantType *expected_type,
- gboolean default_value);
- gchar ** (*list) (GSettingsBackend *backend,
- const gchar *path,
- gchar **resets,
- gsize n_resets,
- gsize *length);
- gboolean (*write) (GSettingsBackend *backend,
- const gchar *key,
- GVariant *value,
- gpointer origin_tag);
- gboolean (*write_keys) (GSettingsBackend *backend,
- GTree *tree,
- gpointer origin_tag);
- void (*reset) (GSettingsBackend *backend,
- const gchar *key,
- gpointer origin_tag);
- void (*reset_path) (GSettingsBackend *backend,
- const gchar *path,
- gpointer origin_tag);
- gboolean (*get_writable) (GSettingsBackend *backend,
- const gchar *key);
- void (*subscribe) (GSettingsBackend *backend,
- const gchar *name);
- void (*unsubscribe) (GSettingsBackend *backend,
- const gchar *name);
- void (*sync) (GSettingsBackend *backend);
-
- gpointer padding[8];
+ gboolean (*supports_context) (const gchar *context);
+
+ GVariant * (*read) (GSettingsBackend *backend,
+ const gchar *key,
+ const GVariantType *expected_type,
+ gboolean default_value);
+ gchar ** (*list) (GSettingsBackend *backend,
+ const gchar *path,
+ gchar **resets,
+ gsize n_resets,
+ gsize *length);
+ gboolean (*write) (GSettingsBackend *backend,
+ const gchar *key,
+ GVariant *value,
+ gpointer origin_tag);
+ gboolean (*write_keys) (GSettingsBackend *backend,
+ GTree *tree,
+ gpointer origin_tag);
+ void (*reset) (GSettingsBackend *backend,
+ const gchar *key,
+ gpointer origin_tag);
+ void (*reset_path) (GSettingsBackend *backend,
+ const gchar *path,
+ gpointer origin_tag);
+ gboolean (*get_writable) (GSettingsBackend *backend,
+ const gchar *key);
+ void (*subscribe) (GSettingsBackend *backend,
+ const gchar *name);
+ void (*unsubscribe) (GSettingsBackend *backend,
+ const gchar *name);
+ void (*sync) (GSettingsBackend *backend);
+
+ GPermission * (*get_permission) (GSettingsBackend *backend,
+ const gchar *path);
+
+ gpointer padding[7];
};
struct _GSettingsBackend
void g_settings_backend_subscribe (GSettingsBackend *backend,
const char *name);
G_GNUC_INTERNAL
+GPermission * g_settings_backend_get_permission (GSettingsBackend *backend,
+ const gchar *path);
+G_GNUC_INTERNAL
GMainContext * g_settings_backend_get_active_context (void);
#endif /* __G_SETTINGS_BACKEND_INTERNAL_H__ */