// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "ToolElementRegistry.h" #include "ToolMenu.h" #include "Widgets/SWidget.h" #include "Overrides/OverrideStatusSubject.h" #include "Overrides/SOverrideStatusWidget.h" #include "Overrides/OverrideStatusDetailsWidgetBuilder.h" class FPropertyPath; class FOverrideStatusDetailsDisplayManager; /** * Builder for the override status menu that goes on the top right side of each property * Component in the details panel */ class ANIMATIONEDITORWIDGETS_API FOverrideStatusWidgetMenuBuilder : public FToolElementRegistrationArgs { DECLARE_DELEGATE(FResetToDefault); public: /** * constructor * */ FOverrideStatusWidgetMenuBuilder(const FOverrideStatusSubject& InSubject, const TWeakPtr& InDisplayManager = TWeakPtr()); virtual ~FOverrideStatusWidgetMenuBuilder() override; // returns the status of the override EOverrideWidgetStatus::Type GetStatus() const; // returns the attribute backing up the status of the override TAttribute& GetStatusAttribute() { return StatusAttribute; } /** * Override the active overrideable object at the given property path */ void AddOverride(); bool CanAddOverride() const; FOverrideStatus_AddOverride& OnAddOverride(); /** * Clears any active overrides on the property / object */ void ClearOverride(); bool CanClearOverride() const; FOverrideStatus_ClearOverride& OnClearOverride(); /** * Override the active overrideable object at the given property path */ void ResetToDefault(); bool CanResetToDefault() const; FOverrideStatus_ResetToDefault& OnResetToDefault(); FOverrideStatus_ValueDiffersFromDefault& OnValueDiffersFromDefault(); /** * Set up the menu */ void InitializeMenu(); /** * Fill this method in with your Slate to create it */ virtual TSharedPtr GenerateWidget() override; private: /** * The UToolMenu providing the context menu */ TWeakObjectPtr ToolMenu; /** * The object that will be queried for its override state */ FOverrideStatusSubject Subject; /** * The status wrapped as a property */ TAttribute StatusAttribute; FOverrideStatus_AddOverride AddOverrideDelegate; FOverrideStatus_ClearOverride ClearOverrideDelegate; FOverrideStatus_ResetToDefault ResetToDefaultDelegate; FOverrideStatus_ValueDiffersFromDefault ValueDiffersFromDefaultDelegate; };