diff --git a/tiramisu/basetype.py b/tiramisu/basetype.py index 3f8e0c7..a607028 100644 --- a/tiramisu/basetype.py +++ b/tiramisu/basetype.py @@ -22,21 +22,23 @@ # ____________________________________________________________ class HiddenBaseType(object): - hidden = False def hide(self): - self.hidden = True + if not 'hidden' in self.properties: + self.properties.append('hidden') def show(self): - self.hidden = False + if 'hidden' in self.properties: + self.properties.remove('hidden') def _is_hidden(self): - # dangerous method: how an Option can determine its status by itself ? - return self.hidden + # dangerous method: how an Option() can determine its status by itself ? + return 'hidden' in self.properties class DisabledBaseType(object): - disabled = False def disable(self): - self.disabled = True + if not 'disabled' in self.properties: + self.properties.append('disabled') def enable(self): - self.disabled = False + if 'disabled' in self.properties: + self.properties.remove('disabled') def _is_disabled(self): - return self.disabled + return 'disabled' in self.properties diff --git a/tiramisu/config.py b/tiramisu/config.py index d9db3b2..dadd74a 100644 --- a/tiramisu/config.py +++ b/tiramisu/config.py @@ -22,11 +22,10 @@ # ____________________________________________________________ from copy import copy from tiramisu.error import (HiddenOptionError, ConfigError, NotFoundError, - AmbigousOptionError, ConflictConfigError, NoMatchingOptionFound, - SpecialOwnersError, MandatoryError, MethodCallError, - DisabledOptionError) -from tiramisu.option import (OptionDescription, Option, SymLinkOption, group_types, - Multi, apply_requires) + AmbigousOptionError, ConflictConfigError, NoMatchingOptionFound, + SpecialOwnersError, MandatoryError, MethodCallError, DisabledOptionError) +from tiramisu.option import (OptionDescription, Option, SymLinkOption, + group_types, Multi, apply_requires) from tiramisu.autolib import special_owners, special_owner_factory # ______________________________________________________________________ # generic owner. 'default' is the general config owner after init time diff --git a/tiramisu/option.py b/tiramisu/option.py index ea2b59b..8a84b5f 100644 --- a/tiramisu/option.py +++ b/tiramisu/option.py @@ -23,7 +23,7 @@ from tiramisu.autolib import special_owners from tiramisu.basetype import HiddenBaseType, DisabledBaseType from tiramisu.error import (ConfigError, ConflictConfigError, NotFoundError, - SpecialOwnersError, RequiresError, RequirementRecursionError) + SpecialOwnersError, RequiresError, RequirementRecursionError) available_actions = ['hide', 'show', 'enable', 'disable'] reverse_actions = {'hide': 'show', 'show': 'hide', 'disable':'enable', 'enable': 'disable'} @@ -119,6 +119,7 @@ class Option(HiddenBaseType, DisabledBaseType): raise ConfigError("invalid default value {0} " "for option {1}".format(str(default), name)) self.default = default + self.properties = [] # 'hidden', 'disabled'... def validate(self, value): if self.multi == False: @@ -371,7 +372,6 @@ class ArbitraryOption(Option): return self.default class OptionDescription(HiddenBaseType, DisabledBaseType): - group_type = 'default' def __init__(self, name, doc, children, requires=None): self._name = name @@ -379,7 +379,9 @@ class OptionDescription(HiddenBaseType, DisabledBaseType): self._children = children self._requires = requires self._build() - + self.properties = [] # 'hidden', 'disabled'... + self.group_type = 'default' + def getdoc(self): return self.doc