From 2b1fe7abb65178b09d29fd503667a25112293256 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 26 Jun 2023 18:09:33 +0200 Subject: [PATCH] colorspace as enumerator form actual config --- .../publish/collect_explicit_colorspace.py | 44 ++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/openpype/hosts/traypublisher/plugins/publish/collect_explicit_colorspace.py b/openpype/hosts/traypublisher/plugins/publish/collect_explicit_colorspace.py index fda789e9d5..a36c3edbaa 100644 --- a/openpype/hosts/traypublisher/plugins/publish/collect_explicit_colorspace.py +++ b/openpype/hosts/traypublisher/plugins/publish/collect_explicit_colorspace.py @@ -1,7 +1,8 @@ import pyblish.api - +from openpype.pipeline import registered_host from openpype.pipeline import publish -from openpype.lib import TextDef +from openpype.lib import EnumDef +from openpype.pipeline import colorspace class CollectColorspace(pyblish.api.InstancePlugin, @@ -13,9 +14,14 @@ class CollectColorspace(pyblish.api.InstancePlugin, order = pyblish.api.CollectorOrder + 0.49 hosts = ["traypublisher"] + colorspace_items = [ + (None, "Don't override") + ] + def process(self, instance): values = self.get_attr_values_from_data(instance.data) colorspace = values.get("colorspace", None) + self.log.debug("colorspace: {}".format(colorspace)) if not colorspace: return @@ -27,10 +33,38 @@ class CollectColorspace(pyblish.api.InstancePlugin, colorspace=colorspace ) + @classmethod + def apply_settings(cls, project_settings): + host = registered_host() + host_name = host.name + project_name = host.get_current_project_name() + config_data = colorspace.get_imageio_config( + project_name, host_name, + project_settings=project_settings + ) + + if config_data: + filepath = config_data["path"] + config_items = colorspace.get_ocio_config_colorspaces(filepath) + cls.colorspace_items.extend(( + (name, name) + for name, family in config_items.items() + )) + else: + cls.colorspace_items.extend([ + ("sRGB", "sRGB"), + ("rec709", "rec709"), + ("ACES", "ACES"), + ("ACEScg", "ACEScg") + ]) + @classmethod def get_attribute_defs(cls): return [ - TextDef("colorspace", - label="Override Colorspace", - placeholder="") + EnumDef( + "colorspace", + cls.colorspace_items, + default="Don't override", + label="Override Colorspace" + ) ]