diff --git a/Changes.md b/Changes.md index bb6fba1021..cd3eb97dad 100644 --- a/Changes.md +++ b/Changes.md @@ -5,6 +5,7 @@ Fixes ----- - MenuBar : Made the main window menu extension button more visible. This button is shown when the window is not wide enough to show all menu items. +- LightUI : Fixed `nodule:type` metadata lookups. Previously these ignored metadata registered to `light:{name}:{parameterName}`. 1.7.0.0a10 (relative to 1.7.0.0a9) ========== diff --git a/python/GafferOSLUI/OSLLightUI.py b/python/GafferOSLUI/OSLLightUI.py index 2d384c6c27..7dbbe79801 100644 --- a/python/GafferOSLUI/OSLLightUI.py +++ b/python/GafferOSLUI/OSLLightUI.py @@ -133,26 +133,3 @@ } ) - -# Defer parameter metadata lookups to the internal shader -# node. - -def __parameterMetadata( plug, key ) : - - node = plug.node() - return Gaffer.Metadata.value( node["__shader"]["parameters"].descendant( plug.relativeName( node["parameters"] ) ), key ) - -for key in [ - "description", - "label", - "noduleLayout:label", - "layout:divider", - "layout:section", - "presetNames", - "presetValues", - "plugValueWidget:type", - "nodule:type", - "noduleLayout:visible", - "noduleLayout:label", -] : - Gaffer.Metadata.registerValue( GafferOSL.OSLLight, "parameters.*", key, functools.partial( __parameterMetadata, key = key ) ) diff --git a/python/GafferSceneUI/LightFilterUI.py b/python/GafferSceneUI/LightFilterUI.py index baef773f26..29548a30c9 100644 --- a/python/GafferSceneUI/LightFilterUI.py +++ b/python/GafferSceneUI/LightFilterUI.py @@ -137,7 +137,6 @@ def __parameterUserDefault( plug ) : # for the case where they get promoted to a box # individually. "noduleLayout:section" : "left", - "nodule:type" : "", }, diff --git a/python/GafferSceneUI/LightUI.py b/python/GafferSceneUI/LightUI.py index 3f7f842c4f..621e3ff3f3 100644 --- a/python/GafferSceneUI/LightUI.py +++ b/python/GafferSceneUI/LightUI.py @@ -65,16 +65,16 @@ def __parameterMetadata( plug, key ) : node = plug.node() shader = node.getChild( "__shader" ) - if shader is None : - ## \todo Refactor Light base class to require the usage - # of an internal Shader node. - return None return Gaffer.Metadata.value( shader["type"].getValue() + ":" + shader["name"].getValue() + ":" + plug.relativeName( node["parameters"] ), key ) +# Sensible default value for `nodule:type`, since the majority of light +# parameters do not support shader connections. +Gaffer.Metadata.registerValue( "light:*:*", "nodule:type", "" ) + Gaffer.Metadata.registerNode( GafferScene.Light, @@ -148,6 +148,7 @@ def __parameterMetadata( plug, key ) : "presetNames" : functools.partial( __parameterMetadata, key = "presetNames" ), "presetValues" : functools.partial( __parameterMetadata, key = "presetValues" ), "nodule:type" : functools.partial( __parameterMetadata, key = "nodule:type" ), + "noduleLayout:label" : functools.partial( __parameterMetadata, key = "noduleLayout:label" ), "noduleLayout:visible" : functools.partial( __parameterMetadata, key = "noduleLayout:visible" ), "labelPlugValueWidget:icon" : functools.partial( __parameterMetadata, key = "labelPlugValueWidget:icon" ), "labelPlugValueWidget:iconToolTip" : functools.partial( __parameterMetadata, key = "labelPlugValueWidget:iconToolTip" ), @@ -158,7 +159,6 @@ def __parameterMetadata( plug, key ) : # for the case where they get promoted to a box # individually. "noduleLayout:section" : "left", - "nodule:type" : "", },