[core] fix enabled parameter inside group and list

This commit is contained in:
Julien-Haudegond 2020-07-29 11:32:52 +02:00
parent 2d953d7319
commit 524a4ab629
2 changed files with 24 additions and 13 deletions

View file

@ -97,7 +97,9 @@ class Attribute(BaseObject):
return self._label return self._label
def getEnabled(self): def getEnabled(self):
return self._enabled if isinstance(self.desc.enabled, types.FunctionType):
return self.desc.enabled(self.node)
return self.attributeDesc.enabled
def setEnabled(self, v): def setEnabled(self, v):
if self._enabled == v: if self._enabled == v:
@ -235,10 +237,9 @@ class Attribute(BaseObject):
return self._value return self._value
def updateInternals(self): def updateInternals(self):
if isinstance(self.desc.enabled, types.FunctionType): # Emit if the enable status has changed
self.setEnabled(self.desc.enabled(self.node)) self.setEnabled(self.getEnabled())
else:
self.setEnabled(self.attributeDesc.enabled)
name = Property(str, getName, constant=True) name = Property(str, getName, constant=True)
fullName = Property(str, getFullName, constant=True) fullName = Property(str, getFullName, constant=True)
@ -371,6 +372,11 @@ class ListAttribute(Attribute):
return self.attributeDesc.joinChar.join([v.getValueStr() for v in self.value]) return self.attributeDesc.joinChar.join([v.getValueStr() for v in self.value])
return super(ListAttribute, self).getValueStr() return super(ListAttribute, self).getValueStr()
def updateInternals(self):
super(ListAttribute, self).updateInternals()
for attr in self._value:
attr.updateInternals()
# Override value property setter # Override value property setter
value = Property(Variant, Attribute._get_value, _set_value, notify=Attribute.valueChanged) value = Property(Variant, Attribute._get_value, _set_value, notify=Attribute.valueChanged)
isDefault = Property(bool, _isDefault, notify=Attribute.valueChanged) isDefault = Property(bool, _isDefault, notify=Attribute.valueChanged)
@ -452,6 +458,11 @@ class GroupAttribute(Attribute):
sortedSubValues = [self._value.get(attr.name).getValueStr() for attr in self.attributeDesc.groupDesc] sortedSubValues = [self._value.get(attr.name).getValueStr() for attr in self.attributeDesc.groupDesc]
return self.attributeDesc.joinChar.join(sortedSubValues) return self.attributeDesc.joinChar.join(sortedSubValues)
def updateInternals(self):
super(GroupAttribute, self).updateInternals()
for attr in self._value:
attr.updateInternals()
# Override value property # Override value property
value = Property(Variant, Attribute._get_value, _set_value, notify=Attribute.valueChanged) value = Property(Variant, Attribute._get_value, _set_value, notify=Attribute.valueChanged)
isDefault = Property(bool, _isDefault, notify=Attribute.valueChanged) isDefault = Property(bool, _isDefault, notify=Attribute.valueChanged)

View file

@ -547,8 +547,8 @@ class BaseNode(BaseObject):
def _buildCmdVars(self): def _buildCmdVars(self):
def _buildAttributeCmdVars(cmdVars, name, attr): def _buildAttributeCmdVars(cmdVars, name, attr):
if attr.attributeDesc.group is not None: if attr.enabled:
if attr.enabled: if attr.attributeDesc.group is not None:
# if there is a valid command line "group" # if there is a valid command line "group"
v = attr.getValueStr() v = attr.getValueStr()
cmdVars[name] = '--{name} {value}'.format(name=name, value=v) cmdVars[name] = '--{name} {value}'.format(name=name, value=v)
@ -557,12 +557,12 @@ class BaseNode(BaseObject):
if v: if v:
cmdVars[attr.attributeDesc.group] = cmdVars.get(attr.attributeDesc.group, '') + \ cmdVars[attr.attributeDesc.group] = cmdVars.get(attr.attributeDesc.group, '') + \
' ' + cmdVars[name] ' ' + cmdVars[name]
elif isinstance(attr, GroupAttribute): elif isinstance(attr, GroupAttribute):
assert isinstance(attr.value, DictModel) assert isinstance(attr.value, DictModel)
# if the GroupAttribute is not set in a single command line argument, # if the GroupAttribute is not set in a single command line argument,
# the sub-attributes may need to be exposed individually # the sub-attributes may need to be exposed individually
for v in attr._value: for v in attr._value:
_buildAttributeCmdVars(cmdVars, v.name, v) _buildAttributeCmdVars(cmdVars, v.name, v)
""" Generate command variables using input attributes and resolved output attributes names and values. """ """ Generate command variables using input attributes and resolved output attributes names and values. """
for uidIndex, value in self._uids.items(): for uidIndex, value in self._uids.items():