mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-27 14:22:37 +01:00
implemented multiselection EnumDef
This commit is contained in:
parent
74d612208e
commit
9e19f2f8ca
1 changed files with 24 additions and 6 deletions
|
|
@ -434,7 +434,9 @@ class EnumDef(AbstractAttrDef):
|
|||
|
||||
type = "enum"
|
||||
|
||||
def __init__(self, key, items, default=None, **kwargs):
|
||||
def __init__(
|
||||
self, key, items, default=None, multiselection=False, **kwargs
|
||||
):
|
||||
if not items:
|
||||
raise ValueError((
|
||||
"Empty 'items' value. {} must have"
|
||||
|
|
@ -443,7 +445,10 @@ class EnumDef(AbstractAttrDef):
|
|||
|
||||
items = self.prepare_enum_items(items)
|
||||
item_values = [item["value"] for item in items]
|
||||
if default not in item_values:
|
||||
if multiselection and default is None:
|
||||
default = []
|
||||
|
||||
if not multiselection and default not in item_values:
|
||||
for value in item_values:
|
||||
default = value
|
||||
break
|
||||
|
|
@ -452,21 +457,34 @@ class EnumDef(AbstractAttrDef):
|
|||
|
||||
self.items = items
|
||||
self._item_values = set(item_values)
|
||||
self.multiselection = multiselection
|
||||
|
||||
def __eq__(self, other):
|
||||
if not super(EnumDef, self).__eq__(other):
|
||||
return False
|
||||
|
||||
return self.items == other.items
|
||||
return (
|
||||
self.items == other.items
|
||||
and self.multiselection == other.multiselection
|
||||
)
|
||||
|
||||
def convert_value(self, value):
|
||||
if value in self._item_values:
|
||||
return value
|
||||
return self.default
|
||||
if not self.multiselection:
|
||||
if value in self._item_values:
|
||||
return value
|
||||
return self.default
|
||||
|
||||
if value is None:
|
||||
return copy.deepcopy(self.default)
|
||||
new_value = set(value)
|
||||
rem = new_value - self._item_values
|
||||
return list(new_value - rem)
|
||||
|
||||
|
||||
def serialize(self):
|
||||
data = super(EnumDef, self).serialize()
|
||||
data["items"] = copy.deepcopy(self.items)
|
||||
data["multiselection"] = self.multiselection
|
||||
return data
|
||||
|
||||
@staticmethod
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue