/* Internal read/write utilities, enum/flags conversion, validation {{{1 */
typedef struct
{
- const gchar *schema_name;
- const gchar *gettext_domain;
+ GSettingsSchema *schema;
const gchar *name;
guint is_flags : 1;
iter = g_settings_schema_get_value (schema, name);
- key->gettext_domain = g_settings_schema_get_gettext_domain (schema);
- key->schema_name = g_settings_schema_get_name (schema);
+ key->schema = g_settings_schema_ref (schema);
key->default_value = g_variant_iter_next_value (iter);
endian_fixup (&key->default_value);
key->type = g_variant_get_type (key->default_value);
g_variant_unref (key->maximum);
g_variant_unref (key->default_value);
+
+ g_settings_schema_unref (key->schema);
}
static gboolean
{
const gchar *translated;
GError *error = NULL;
+ const gchar *domain;
GVariant *value;
+ domain = g_settings_schema_get_gettext_domain (key->schema);
+
if (key->lc_char == '\0')
/* translation not requested for this key */
return NULL;
if (key->lc_char == 't')
- translated = g_dcgettext (key->gettext_domain, key->unparsed, LC_TIME);
+ translated = g_dcgettext (domain, key->unparsed, LC_TIME);
else
- translated = g_dgettext (key->gettext_domain, key->unparsed);
+ translated = g_dgettext (domain, key->unparsed);
if (translated == key->unparsed)
/* the default value was not translated */
{
g_warning ("Failed to parse translated string `%s' for "
"key `%s' in schema `%s': %s", key->unparsed, key->name,
- key->schema_name, error->message);
+ g_settings_schema_get_name (key->schema), error->message);
g_warning ("Using untranslated default instead.");
g_error_free (error);
}
{
g_warning ("Translated default `%s' for key `%s' in schema `%s' "
"is outside of valid range", key->unparsed, key->name,
- key->schema_name);
+ g_settings_schema_get_name (key->schema));
g_variant_unref (value);
value = NULL;
}
{
g_critical ("g_settings_set_enum(): invalid enum value %d for key `%s' "
"in schema `%s'. Doing nothing.", value, skey.name,
- skey.schema_name);
+ g_settings_schema_get_name (skey.schema));
g_settings_schema_key_clear (&skey);
return FALSE;
}
{
g_critical ("g_settings_set_flags(): invalid flags value 0x%08x "
"for key `%s' in schema `%s'. Doing nothing.",
- value, skey.name, skey.schema_name);
+ value, skey.name, g_settings_schema_get_name (skey.schema));
g_settings_schema_key_clear (&skey);
return FALSE;
}
g_warning ("Translated default `%s' for key `%s' in schema `%s' "
"was rejected by the binding mapping function",
binding->key.unparsed, binding->key.name,
- binding->key.schema_name);
+ g_settings_schema_get_name (binding->key.schema));
g_variant_unref (variant);
variant = NULL;
}
if (!binding->get_mapping (&value, variant, binding->user_data))
g_error ("The schema default value for key `%s' in schema `%s' "
"was rejected by the binding mapping function.",
- binding->key.name, binding->key.schema_name);
+ binding->key.name, g_settings_schema_get_name (binding->key.schema));
}
g_object_set_property (binding->object, binding->property->name, &value);
{
g_critical ("GObject property `%s' on a `%s' object is out of "
"schema-specified range for key `%s' of `%s': %s",
- binding->property->name,
- g_type_name (binding->property->owner_type),
- binding->key.name, binding->key.schema_name,
+ binding->property->name, g_type_name (binding->property->owner_type),
+ binding->key.name, g_settings_schema_get_name (binding->key.schema),
g_variant_print (variant, TRUE));
return;
}