From b9aa5d0e4e284029e2ffbc2b77554eccf3eadf13 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 13 Jun 2017 15:09:38 +0200 Subject: [PATCH] Fix valid_values initing from configdata --- qutebrowser/config/configdata.py | 3 +++ qutebrowser/config/configtypes.py | 20 +++++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/qutebrowser/config/configdata.py b/qutebrowser/config/configdata.py index eea7ec01d..0ef0d1e25 100644 --- a/qutebrowser/config/configdata.py +++ b/qutebrowser/config/configdata.py @@ -553,6 +553,9 @@ def _parse_yaml_type(name, node): # -> create the type object and pass arguments type_name = node.pop('name') kwargs = node + valid_values = kwargs.get('valid_values', None) + if valid_values is not None: + kwargs['valid_values'] = configtypes.ValidValues(*valid_values) else: _raise_invalid_node(name, 'type', node) diff --git a/qutebrowser/config/configtypes.py b/qutebrowser/config/configtypes.py index 79ba4a18f..88e474a4a 100644 --- a/qutebrowser/config/configtypes.py +++ b/qutebrowser/config/configtypes.py @@ -54,19 +54,25 @@ class ValidValues: descriptions: A dict with value/desc mappings. """ - def __init__(self, *vals): - if not vals: + def __init__(self, *values): + if not values: raise ValueError("ValidValues with no values makes no sense!") self.descriptions = {} self.values = [] - for v in vals: - if isinstance(v, str): + for value in values: + if isinstance(value, str): # Value without description - self.values.append(v) + self.values.append(value) + elif isinstance(value, dict): + # List of dicts from configdata.yml + assert len(value) == 1, value + value, desc = list(value.items())[0] + self.values.append(value) + self.descriptions[value] = desc else: # (value, description) tuple - self.values.append(v[0]) - self.descriptions[v[0]] = v[1] + self.values.append(value[0]) + self.descriptions[value[0]] = value[1] def __contains__(self, val): return val in self.values