Move SettingValue to own file

This commit is contained in:
Florian Bruhin 2014-04-11 06:28:07 +02:00
parent 04807489b7
commit 575a934892
4 changed files with 68 additions and 50 deletions

View File

@ -19,7 +19,7 @@
from collections import OrderedDict
from qutebrowser.config.conftypes import SettingValue
from qutebrowser.config.value import SettingValue
import qutebrowser.config.conftypes as types
import qutebrowser.config.sections as sect

View File

@ -56,51 +56,6 @@ class ValidValues:
return self.values.__iter__()
class SettingValue:
"""Base class for setting values.
Intended to be subclassed by config value "types".
Attributes:
typ: A BaseType subclass.
default: Default value if the user has not overridden it, as a string.
value: (property) The currently valid, most important value.
rawvalue: The current value as a raw string.
"""
def __init__(self, typ, default=None):
"""Constructor.
Args:
typ: The BaseType to use.
default: Raw value to set.
"""
self.typ = typ()
self.rawvalue = None
self.default = default
def __str__(self):
"""Get raw string value."""
return self.value
def transformed(self):
"""Get the transformed value."""
v = self.value
return self.typ.transform(v)
@property
def value(self):
"""Get the currently valid value."""
return self.rawvalue if self.rawvalue is not None else self.default
@value.setter
def value(self, val):
"""Set the currently valid value."""
self.typ.validate(val)
self.rawvalue = val
class BaseType:
"""A type used for a setting value.

View File

@ -20,7 +20,7 @@
import logging
from collections import OrderedDict
import qutebrowser.config.conftypes as conftypes
from qutebrowser.config.value import SettingValue
class KeyValue:
@ -123,7 +123,7 @@ class ValueList:
self.valtype = valtype
self.values = OrderedDict()
self.default = OrderedDict(
[(key, conftypes.SettingValue(valtype, value))
[(key, SettingValue(valtype, value))
for key, value in defaults])
self.valdict = OrderedDict()
@ -155,7 +155,7 @@ class ValueList:
key: The key to set the value for, as a string.
value: The value to set, as a string
"""
self.values[key] = conftypes.SettingValue(self.valtype)
self.values[key] = SettingValue(self.valtype)
self.values[key].value = value
def __iter__(self):
@ -186,4 +186,4 @@ class ValueList:
for k, v in sect.items():
keytype.validate(k)
valtype.validate(v)
self.values[k] = conftypes.SettingValue(self.valtype, v)
self.values[k] = SettingValue(self.valtype, v)

View File

@ -0,0 +1,63 @@
# Copyright 2014 Florian Bruhin (The Compiler) <mail@qutebrowser.org>
#
# This file is part of qutebrowser.
#
# qutebrowser is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# qutebrowser is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with qutebrowser. If not, see <http://www.gnu.org/licenses/>.
"""A single value (with multiple layers possibly) in the config."""
class SettingValue:
"""Base class for setting values.
Intended to be subclassed by config value "types".
Attributes:
typ: A BaseType subclass.
default: Default value if the user has not overridden it, as a string.
value: (property) The currently valid, most important value.
rawvalue: The current value as a raw string.
"""
def __init__(self, typ, default=None):
"""Constructor.
Args:
typ: The BaseType to use.
default: Raw value to set.
"""
self.typ = typ()
self.rawvalue = None
self.default = default
def __str__(self):
"""Get raw string value."""
return self.value
def transformed(self):
"""Get the transformed value."""
v = self.value
return self.typ.transform(v)
@property
def value(self):
"""Get the currently valid value."""
return self.rawvalue if self.rawvalue is not None else self.default
@value.setter
def value(self, val):
"""Set the currently valid value."""
self.typ.validate(val)
self.rawvalue = val