[pygobject] Gio overrides: Handle setting GSettings enum keys
- From: Martin Pitt <martinpitt src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pygobject] Gio overrides: Handle setting GSettings enum keys
- Date: Thu, 11 Oct 2012 15:50:28 +0000 (UTC)
commit c0bc69906df2db64560f7c054277ad1956aab57f
Author: Martin Pitt <martinpitt gnome org>
Date: Thu Oct 11 17:49:30 2012 +0200
Gio overrides: Handle setting GSettings enum keys
https://bugzilla.gnome.org/show_bug.cgi?id=685947
gi/overrides/Gio.py | 9 ++++++++-
tests/test_overrides_gio.py | 3 +++
2 files changed, 11 insertions(+), 1 deletions(-)
---
diff --git a/gi/overrides/Gio.py b/gi/overrides/Gio.py
index 7f6e5c7..9f96440 100644
--- a/gi/overrides/Gio.py
+++ b/gi/overrides/Gio.py
@@ -101,8 +101,15 @@ class Settings(Gio.Settings):
type_str = v.get_child_value(0).get_type_string()
assert type_str.startswith('a')
type_str = type_str[1:]
+ elif type_ == 'enum':
+ # v is an array with the allowed values
+ assert v.get_child_value(0).get_type_string().startswith('a')
+ type_str = v.get_child_value(0).get_child_value(0).get_type_string()
+ allowed = v.unpack()
+ if value not in allowed:
+ raise ValueError('value %s is not an allowed enum (%s)' % (value, allowed))
else:
- raise NotImplementedError('Cannot handle allowed type range class' + str(type_))
+ raise NotImplementedError('Cannot handle allowed type range class ' + str(type_))
self.set_value(key, GLib.Variant(type_str, value))
diff --git a/tests/test_overrides_gio.py b/tests/test_overrides_gio.py
index 4711068..10d634e 100644
--- a/tests/test_overrides_gio.py
+++ b/tests/test_overrides_gio.py
@@ -107,8 +107,11 @@ class TestGSettings(unittest.TestCase):
self.assertEqual(self.settings['test-string'], 'Goodbye')
self.settings['test-array'] = [3, 4, 5]
self.assertEqual(self.settings['test-array'], [3, 4, 5])
+ self.settings['test-enum'] = 'pear'
+ self.assertEqual(self.settings['test-enum'], 'pear')
self.assertRaises(TypeError, self.settings.__setitem__, 'test-string', 1)
+ self.assertRaises(ValueError, self.settings.__setitem__, 'test-enum', 'plum')
self.assertRaises(KeyError, self.settings.__setitem__, 'unknown', 'moo')
def test_empty(self):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]