glib/gio/gsettingsschema-internal.h
Allison Lortie 6ca449672d gsettingsschema: Allow per-desktop overrides
Recognise a new 'd' option in schema keys which gives a dictionary of
per-desktop default values. This dictionary is searched for the items
found in XDG_CURRENT_DESKTOP, in the order. If nothing matches (or if
the option is missing) then the default value is used as before.

This feature was requested by Alberts Muktupāvels and this patch is
based on an approach devised by them.

https://bugzilla.gnome.org/show_bug.cgi?id=746592
2018-06-19 19:18:58 +03:00

74 lines
3.6 KiB
C

/*
* Copyright © 2010 Codethink Limited
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __G_SETTINGS_SCHEMA_INTERNAL_H__
#define __G_SETTINGS_SCHEMA_INTERNAL_H__
#include "gsettingsschema.h"
struct _GSettingsSchemaKey
{
GSettingsSchema *schema;
const gchar *name;
guint is_flags : 1;
guint is_enum : 1;
const guint32 *strinfo;
gsize strinfo_length;
const gchar *unparsed;
gchar lc_char;
const GVariantType *type;
GVariant *minimum, *maximum;
GVariant *default_value;
GVariant *desktop_overrides;
gint ref_count;
};
const gchar * g_settings_schema_get_gettext_domain (GSettingsSchema *schema);
GVariantIter * g_settings_schema_get_value (GSettingsSchema *schema,
const gchar *key);
const GQuark * g_settings_schema_list (GSettingsSchema *schema,
gint *n_items);
const gchar * g_settings_schema_get_string (GSettingsSchema *schema,
const gchar *key);
void g_settings_schema_key_init (GSettingsSchemaKey *key,
GSettingsSchema *schema,
const gchar *name);
void g_settings_schema_key_clear (GSettingsSchemaKey *key);
gboolean g_settings_schema_key_type_check (GSettingsSchemaKey *key,
GVariant *value);
GVariant * g_settings_schema_key_range_fixup (GSettingsSchemaKey *key,
GVariant *value);
GVariant * g_settings_schema_key_get_translated_default (GSettingsSchemaKey *key);
GVariant * g_settings_schema_key_get_per_desktop_default (GSettingsSchemaKey *key);
gint g_settings_schema_key_to_enum (GSettingsSchemaKey *key,
GVariant *value);
GVariant * g_settings_schema_key_from_enum (GSettingsSchemaKey *key,
gint value);
guint g_settings_schema_key_to_flags (GSettingsSchemaKey *key,
GVariant *value);
GVariant * g_settings_schema_key_from_flags (GSettingsSchemaKey *key,
guint value);
#endif /* __G_SETTINGS_SCHEMA_INTERNAL_H__ */