[core] Add validValue and errorMessage support for ChoiceParams

ChoiceParams can now also have their `validValue` and `errorMessage`
parameters.

The `validValueChanged` is also emitted whenever a parameter's value
changes. This ensures that the `validValue` parameter is always re-
evaluated when the attribute is updated, even if `validValue` itself does
not change.
This commit is contained in:
Candice Bentéjac 2023-08-22 11:04:37 +02:00
parent e873dbf280
commit e6bf7e6e2d
2 changed files with 5 additions and 2 deletions

View file

@ -196,6 +196,7 @@ class Attribute(BaseObject):
self.requestNodeUpdate() self.requestNodeUpdate()
self.valueChanged.emit() self.valueChanged.emit()
self.validValueChanged.emit()
def upgradeValue(self, exportedValue): def upgradeValue(self, exportedValue):
self._set_value(exportedValue) self._set_value(exportedValue)

View file

@ -303,13 +303,15 @@ class FloatParam(Param):
class ChoiceParam(Param): class ChoiceParam(Param):
""" """
""" """
def __init__(self, name, label, description, value, values, exclusive, uid, group='allParams', joinChar=' ', advanced=False, semantic='', enabled=True): def __init__(self, name, label, description, value, values, exclusive, uid, group='allParams', joinChar=' ', advanced=False, semantic='',
enabled=True, validValue=True, errorMessage=""):
assert values assert values
self._values = values self._values = values
self._exclusive = exclusive self._exclusive = exclusive
self._joinChar = joinChar self._joinChar = joinChar
self._valueType = type(self._values[0]) # cast to value type self._valueType = type(self._values[0]) # cast to value type
super(ChoiceParam, self).__init__(name=name, label=label, description=description, value=value, uid=uid, group=group, advanced=advanced, semantic=semantic, enabled=enabled) super(ChoiceParam, self).__init__(name=name, label=label, description=description, value=value, uid=uid, group=group, advanced=advanced,
semantic=semantic, enabled=enabled, validValue=validValue, errorMessage=errorMessage)
def conformValue(self, val): def conformValue(self, val):
""" Conform 'val' to the correct type and check for its validity """ """ Conform 'val' to the correct type and check for its validity """