From a3a81543a0e02e1121d5aa03d3b222b41b84fccf Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Fri, 11 Apr 2014 19:34:34 +0200 Subject: [PATCH] Don't write temp layer to config --- qutebrowser/config/config.py | 3 ++- qutebrowser/config/value.py | 35 ++++++++++++++++++++++++++++++----- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/qutebrowser/config/config.py b/qutebrowser/config/config.py index 87b4236a7..8947fecef 100644 --- a/qutebrowser/config/config.py +++ b/qutebrowser/config/config.py @@ -180,7 +180,8 @@ class Config(QObject): """Get the option items as string for section.""" lines = [] for optname, option in section.items(): - keyval = '{} = {}'.format(optname, option) + keyval = '{} = {}'.format(optname, option.get_first_value( + startlayer='conf')) lines.append(keyval) return lines diff --git a/qutebrowser/config/value.py b/qutebrowser/config/value.py index d0c0bcd65..df3023d50 100644 --- a/qutebrowser/config/value.py +++ b/qutebrowser/config/value.py @@ -51,17 +51,42 @@ class SettingValue: @property def value(self): """Get the currently valid value.""" - for val in self._values.values(): - if val is not None: - return val - else: - raise ValueError("No valid config value found!") + return self.get_first_value() @property def values(self): """Readonly property for _values.""" return self._values + def getlayers(self, startlayer): + """Get a dict of values starting with startlayer. + + Args: + startlayer: The first layer to include. + """ + # FIXME this could be done more efficiently with a view. + idx = list(self._values.keys()).index(startlayer) + d = self._values.copy() + for _ in range(idx): + d.popitem(last=False) + return d + + def get_first_value(self, startlayer=None): + """Get the first valid value starting from startlayer. + + Args: + startlayer: The first layer to include. + """ + if startlayer is None: + d = self._values + else: + d = self.getlayers(startlayer) + for val in d.values(): + if val is not None: + return val + else: + raise ValueError("No valid config value found!") + def transformed(self): """Get the transformed value.""" v = self.value