// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Engine/Blueprint.h" #include "IPropertyTypeCustomization.h" #include "Internationalization/Text.h" #include "Misc/Attribute.h" #include "Templates/Casts.h" #include "Templates/SharedPointer.h" #include "Types/SlateEnums.h" #include "WidgetBlueprint.h" class IDetailChildrenBuilder; class IDetailPropertyRow; class IPropertyHandle; class FCanvasSlotCustomization : public IPropertyTypeCustomization { public: /** Makes a new instance of this detail layout class for a specific detail view requesting it */ static TSharedRef MakeInstance(UBlueprint* Blueprint) { return MakeShareable(new FCanvasSlotCustomization(Blueprint)); } FCanvasSlotCustomization(UBlueprint* InBlueprint) : Blueprint(Cast(InBlueprint)) { } virtual void CustomizeHeader(TSharedRef PropertyHandle, class FDetailWidgetRow& HeaderRow, IPropertyTypeCustomizationUtils& CustomizationUtils) override; virtual void CustomizeChildren(TSharedRef PropertyHandle, class IDetailChildrenBuilder& ChildBuilder, IPropertyTypeCustomizationUtils& CustomizationUtils) override; private: void CustomizeLayoutData(TSharedRef PropertyHandle, IDetailChildrenBuilder& ChildBuilder, IPropertyTypeCustomizationUtils& CustomizationUtils); void CustomizeAnchors(TSharedPtr PropertyHandle, class IDetailChildrenBuilder& ChildBuilder, IPropertyTypeCustomizationUtils& CustomizationUtils); void CustomizeOffsets(TSharedPtr PropertyHandle, class IDetailChildrenBuilder& ChildBuilder, IPropertyTypeCustomizationUtils& CustomizationUtils); void FillOutChildren(TSharedRef PropertyHandle, class IDetailChildrenBuilder& ChildBuilder, IPropertyTypeCustomizationUtils& CustomizationUtils); void CreateEditorWithDynamicLabel(IDetailPropertyRow& PropertyRow, TAttribute TextAttribute); static FText GetOffsetLabel(TSharedPtr AnchorStructureHandle, EOrientation Orientation, FText NonStretchingLabel, FText StretchingLabel); private: UWidgetBlueprint* Blueprint; };