Change the type of gsettings key "keyboard" from s to as.

Also rename it to "keyboards".
This commit is contained in:
Daiki Ueno
2011-09-12 15:33:20 +09:00
parent 362b210a31
commit ef3ea618d2
5 changed files with 76 additions and 50 deletions

View File

@ -62,6 +62,35 @@ set_rate (const GValue *value,
return g_variant_new_uint32 (msecs);
}
static gboolean
get_strv (GValue *value,
GVariant *variant,
gpointer user_data)
{
gchar *strv = g_variant_get_strv (variant, NULL);
gchar *text = g_strjoinv (", ", strv);
g_free (strv);
g_value_set_string (value, text);
return TRUE;
}
static GVariant *
set_strv (const GValue *value,
const GVariantType *expected_type,
gpointer user_data)
{
gchar *text = g_value_get_string (value);
gchar **strv = g_strsplit (text, ",", -1), **p;
GVariant *variant;
for (p = strv; *p != NULL; p++)
g_strstrip (*p);
variant = g_variant_new_strv (strv, -1);
g_strfreev (strv);
return variant;
}
PreferencesDialog *
preferences_dialog_new (void)
{
@ -138,9 +167,10 @@ preferences_dialog_new (void)
gtk_builder_get_object (builder, "keyboard_entry");
dialog->keyboard_entry = GTK_WIDGET(object);
g_settings_bind (dialog->settings, "keyboard",
GTK_ENTRY(dialog->keyboard_entry), "text",
G_SETTINGS_BIND_DEFAULT);
g_settings_bind_with_mapping (dialog->settings, "keyboards",
GTK_ENTRY(dialog->keyboard_entry), "text",
G_SETTINGS_BIND_DEFAULT,
get_strv, set_strv, NULL, NULL);
return dialog;
}