bugfix: Order ValueList values in config properly

This commit is contained in:
Florian Bruhin 2014-04-25 14:13:31 +02:00
parent c9a25d6309
commit 33f9aad6d8
2 changed files with 24 additions and 1 deletions

1
TODO
View File

@ -6,7 +6,6 @@ Weird font rendering
https://bugreports.qt-project.org/browse/QTBUG-20973
https://bugreports.qt-project.org/browse/QTBUG-21036
Changing completion models is awfully slow
values written to config are unordered
values starting with ; need to be escaped
Style

View File

@ -165,6 +165,18 @@ class ValueList(Section):
self.values = ChainMap(self.layers['temp'], self.layers['conf'],
self.layers['default'])
@property
def ordered_values(self):
"""Get ordered values in layers.
This is more expensive than the ChainMap, but we need this for
iterating/items/etc. when order matters.
"""
d = OrderedDict()
for layer in self.layers.values():
d.update(layer)
return d
def setv(self, layer, key, value, interpolated):
self.keytype.validate(key)
if key in self.layers[layer]:
@ -184,3 +196,15 @@ class ValueList(Section):
except KeyError:
changed.append((k, v.value))
return changed
def __iter__(self):
"""Iterate over all set values."""
return self.ordered_values.__iter__()
def items(self):
"""Get dict items."""
return self.ordered_values.items()
def keys(self):
"""Get value keys."""
return self.ordered_values.keys()