summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2011-03-15 17:45:13 +1100
committerRobert Ancell <robert.ancell@canonical.com>2011-03-15 17:45:13 +1100
commit07f2cd62e3d9918149776136705d5e076ddce5ae (patch)
treee2926ede19a3a9ffdd413fe58b78adfcec04c370
parent0c5d134e737ba1f871d520852da7fdf8304fb992 (diff)
downloaddconf-07f2cd62e3d9918149776136705d5e076ddce5ae.tar.gz
editor: Allow complex values to be edited. Note that tuples are broken in glib < 2.27.4, see bug #644786
-rw-r--r--editor/dconf-view.vala22
1 files changed, 20 insertions, 2 deletions
diff --git a/editor/dconf-view.vala b/editor/dconf-view.vala
index 2c57385..a46293e 100644
--- a/editor/dconf-view.vala
+++ b/editor/dconf-view.vala
@@ -71,7 +71,7 @@ private class KeyValueRenderer: Gtk.CellRenderer
break;
default:
text_renderer.text = key.value.print(false);
- mode = Gtk.CellRendererMode.INERT;
+ mode = Gtk.CellRendererMode.EDITABLE;
break;
}
}
@@ -248,7 +248,25 @@ private class KeyValueRenderer: Gtk.CellRenderer
private void text_edited_cb(Gtk.CellRendererText renderer, string path, string text)
{
var key = get_key_from_path(path);
- key.value = new Variant.string(text);
+ if (key.type_string == "s" || key.type_string == "<enum>")
+ {
+ key.value = new Variant.string(text);
+ }
+ else
+ {
+ debug("%s %s", key.type_string, text);
+ try
+ {
+ var value = Variant.parse(new VariantType(key.type_string), text);
+ key.value = value;
+ }
+ catch (VariantParseError e)
+ {
+ var dialog = new Gtk.MessageDialog(null, Gtk.DialogFlags.MODAL, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK, "Error setting value: %s", e.message);
+ dialog.run();
+ dialog.destroy();
+ }
+ }
}
private void spin_edited_cb(Gtk.CellRendererText renderer, string path, string text)