[dconf] Read range values from schema
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [dconf] Read range values from schema
- Date: Sat, 15 Jan 2011 06:20:04 +0000 (UTC)
commit 563d6cc1d792d18380150c9eeaf98821895c7cf3
Author: Robert Ancell <robert ancell canonical com>
Date: Fri Jan 14 20:30:23 2011 -0600
Read range values from schema
editor/dconf-schema.vala | 3 +
editor/dconf-view.vala | 137 +++++++++++++++++++++++----------------------
2 files changed, 73 insertions(+), 67 deletions(-)
---
diff --git a/editor/dconf-schema.vala b/editor/dconf-schema.vala
index 561df63..7bb538f 100644
--- a/editor/dconf-schema.vala
+++ b/editor/dconf-schema.vala
@@ -111,6 +111,9 @@ public class SchemaValueRange
else
warning ("Unknown property in <range>, %s", prop->name);
}
+
+ //if (min == null || max == null)
+ // ?
}
}
diff --git a/editor/dconf-view.vala b/editor/dconf-view.vala
index 063dd63..8d6e4d8 100644
--- a/editor/dconf-view.vala
+++ b/editor/dconf-view.vala
@@ -13,90 +13,93 @@ private class KeyValueRenderer: Gtk.CellRenderer
set
{
_key = value;
- if (key.type_string == "s")
+ switch (key.type_string)
{
- text_renderer.text = key.value.get_string();
- }
- else if (key.type_string == "<enum>")
- {
+ case "<enum>":
combo_renderer.text = key.value.get_string();
combo_renderer.model = new EnumModel(key.schema.schema.list.enums.lookup(key.schema.enum_name));
mode = Gtk.CellRendererMode.EDITABLE;
- }
- else if (key.type_string == "b")
- {
+ break;
+ case "b":
toggle_renderer.active = key.value.get_boolean();
mode = Gtk.CellRendererMode.ACTIVATABLE;
- }
- else if (key.type_string == "s")
- {
+ break;
+ case "s":
text_renderer.text = key.value.get_string();
mode = Gtk.CellRendererMode.EDITABLE;
- }
- else if (key.type_string == "y")
- {
- spin_renderer.text = key.value.print(false);
- spin_renderer.adjustment = new Gtk.Adjustment(key.value.get_byte(), 0, 255, 1, 0, 0);
- spin_renderer.digits = 0;
- mode = Gtk.CellRendererMode.EDITABLE;
- }
- else if (key.type_string == "n")
- {
- spin_renderer.text = key.value.print(false);
- spin_renderer.adjustment = new Gtk.Adjustment(key.value.get_int16(), int16.MIN, int16.MAX, 1, 0, 0);
- spin_renderer.digits = 0;
- mode = Gtk.CellRendererMode.EDITABLE;
- }
- else if (key.type_string == "q")
- {
- spin_renderer.text = key.value.print(false);
- spin_renderer.adjustment = new Gtk.Adjustment(key.value.get_uint16(), uint16.MIN, uint16.MAX, 1, 0, 0);
- spin_renderer.digits = 0;
- mode = Gtk.CellRendererMode.EDITABLE;
- }
- else if (key.type_string == "i")
- {
- spin_renderer.text = key.value.print(false);
- spin_renderer.adjustment = new Gtk.Adjustment(key.value.get_int32(), int32.MIN, int32.MAX, 1, 0, 0);
- spin_renderer.digits = 0;
- mode = Gtk.CellRendererMode.EDITABLE;
- }
- else if (key.type_string == "u")
- {
- spin_renderer.text = key.value.print(false);
- spin_renderer.adjustment = new Gtk.Adjustment(key.value.get_uint32(), int32.MIN, uint32.MAX, 1, 0, 0);
- spin_renderer.digits = 0;
- mode = Gtk.CellRendererMode.EDITABLE;
- }
- else if (key.type_string == "x")
- {
- spin_renderer.text = key.value.print(false);
- spin_renderer.adjustment = new Gtk.Adjustment(key.value.get_int64(), int64.MIN, int64.MAX, 1, 0, 0);
- spin_renderer.digits = 0;
- mode = Gtk.CellRendererMode.EDITABLE;
- }
- else if (key.type_string == "t")
- {
+ break;
+ case "y":
+ case "n":
+ case "q":
+ case "i":
+ case "u":
+ case "x":
+ case "t":
+ case "d":
spin_renderer.text = key.value.print(false);
- spin_renderer.adjustment = new Gtk.Adjustment(key.value.get_uint64(), uint64.MIN, uint64.MAX, 1, 0, 0);
+ double min, max;
+ var v = get_variant_as_double(key.value, out min, out max);
+ if (key.schema.range != null)
+ {
+ double t;
+ min = get_variant_as_double(key.schema.range.min, out t, out t);
+ max = get_variant_as_double(key.schema.range.max, out t, out t);
+ }
+ spin_renderer.adjustment = new Gtk.Adjustment(v, min, max, 1, 0, 0);
spin_renderer.digits = 0;
mode = Gtk.CellRendererMode.EDITABLE;
- }
- else if (key.type_string == "d")
- {
- spin_renderer.text = key.value.print(false);
- spin_renderer.adjustment = new Gtk.Adjustment(key.value.get_double(), double.MIN, double.MAX, 1, 0, 0);
- spin_renderer.digits = 6;
- mode = Gtk.CellRendererMode.EDITABLE;
- }
- else
- {
+ break;
+ default:
text_renderer.text = key.value.print(false);
mode = Gtk.CellRendererMode.INERT;
+ break;
}
}
}
+ private static double get_variant_as_double(Variant value, out double min, out double max)
+ {
+ switch (value.classify ())
+ {
+ case Variant.Class.BYTE:
+ min = 0.0;
+ max = 255.0;
+ return (double)value.get_byte();
+ case Variant.Class.INT16:
+ min = int16.MIN;
+ max = int16.MAX;
+ return (double)value.get_int16();
+ case Variant.Class.UINT16:
+ min = uint16.MIN;
+ max = uint16.MAX;
+ return (double)value.get_uint16();
+ case Variant.Class.INT32:
+ min = int32.MIN;
+ max = int32.MAX;
+ return (double)value.get_int32();
+ case Variant.Class.UINT32:
+ min = uint32.MAX;
+ max = uint32.MIN;
+ return (double)value.get_uint32();
+ case Variant.Class.INT64:
+ min = int64.MIN;
+ max = int64.MAX;
+ return (double)value.get_int64();
+ case Variant.Class.UINT64:
+ min = uint64.MIN;
+ max = uint64.MAX;
+ return (double)value.get_uint64();
+ case Variant.Class.DOUBLE:
+ min = double.MIN;
+ max = double.MAX;
+ return value.get_double();
+ default:
+ min = 0.0;
+ max = 0.0;
+ return 0.0;
+ }
+ }
+
public KeyValueRenderer(DConfKeyView view)
{
this.view = view;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]