From 7a59d443d421bae2f02e2bbc7b0fa135fa29dfb7 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Mon, 19 Jul 2021 14:02:17 +0200 Subject: [PATCH] added base concept of instance members --- openpype/pipeline/create/creator_plugins.py | 25 ++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/openpype/pipeline/create/creator_plugins.py b/openpype/pipeline/create/creator_plugins.py index 3604d9cd12..ee12ca295c 100644 --- a/openpype/pipeline/create/creator_plugins.py +++ b/openpype/pipeline/create/creator_plugins.py @@ -15,6 +15,22 @@ import avalon.api from openpype.lib import get_subset_name +class InstanceMember: + def __init__(self, instance, name): + self.instance = instance + + instance.add_members(self) + + self.name = name + self._actions = [] + + def add_action(self, label, callback): + self._actions.append({ + "label": label, + "callback": callback + }) + + class AttributeValues: def __init__(self, attr_defs, values, origin_data=None): if origin_data is None: @@ -233,6 +249,8 @@ class CreatedInstance: self.family = family # Subset name self.subset_name = subset_name + # Instance members may have actions on them + self._members = [] # Create a copy of passed data to avoid changing them on the fly data = copy.deepcopy(data or {}) @@ -254,7 +272,7 @@ class CreatedInstance: self._data["subset"] = subset_name self._data["active"] = data.get("active", True) - # Schema or version? + # QUESTION handle version of instance here or in creator? if new: self._data["version"] = 1 else: @@ -370,6 +388,11 @@ class CreatedInstance: def set_publish_plugins(self, attr_plugins): self._data["publish_attributes"].set_publish_plugins(attr_plugins) + def add_members(self, members): + for member in members: + if member not in self._members: + self._members.append(member) + @six.add_metaclass(ABCMeta) class BaseCreator: