Files
UnrealEngine/Engine/Source/Developer/ToolMenus/Private/ToolMenusBlueprintLibrary.cpp
2025-05-18 13:04:45 +08:00

134 lines
4.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "ToolMenusBlueprintLibrary.h"
#include UE_INLINE_GENERATED_CPP_BY_NAME(ToolMenusBlueprintLibrary)
FScriptSlateIcon UToolMenuEntryExtensions::MakeScriptSlateIcon(const FName StyleSetName, const FName StyleName, const FName SmallStyleName)
{
if (SmallStyleName == NAME_None)
{
return FScriptSlateIcon(StyleSetName, StyleName);
}
else
{
return FScriptSlateIcon(StyleSetName, StyleName, SmallStyleName);
}
}
void UToolMenuEntryExtensions::BreakScriptSlateIcon(const FScriptSlateIcon& InValue, FName& StyleSetName, FName& StyleName, FName& SmallStyleName)
{
StyleSetName = InValue.StyleSetName;
StyleName = InValue.StyleName;
SmallStyleName = InValue.SmallStyleName;
}
FToolMenuStringCommand UToolMenuEntryExtensions::MakeStringCommand(EToolMenuStringCommandType Type, FName CustomType, const FString& String)
{
return FToolMenuStringCommand(Type, CustomType, String);
}
void UToolMenuEntryExtensions::BreakStringCommand(const FToolMenuStringCommand& InValue, EToolMenuStringCommandType& Type, FName& CustomType, FString& String)
{
Type = InValue.Type;
CustomType = InValue.CustomType;
String = InValue.String;
}
FToolMenuOwner UToolMenuEntryExtensions::MakeToolMenuOwner(FName Name)
{
return FToolMenuOwner(Name);
}
void UToolMenuEntryExtensions::BreakToolMenuOwner(const FToolMenuOwner& InValue, FName& Name)
{
Name = InValue.TryGetName();
}
UObject* UToolMenuContextExtensions::FindByClass(const FToolMenuContext& Context, TSubclassOf<UObject> InClass)
{
return Context.FindByClass(*InClass);
}
void UToolMenuContextExtensions::DebugLogContextObjectClasses(const FToolMenuContext& Context)
{
const FString ContextObjectClasses = FString::JoinBy(Context.ContextObjects, TEXT(", "), [](const UObject* ContextObject) {
return ContextObject ? ContextObject->GetClass()->GetPathName() : TEXT("Null");
});
UE_LOG(LogSlate, Warning, TEXT("DebugLogContextObjectClasses: %s"), *ContextObjectClasses);
}
void UToolMenuEntryExtensions::SetLabel(UPARAM(ref) FToolMenuEntry& Target, const FText& Label)
{
Target.Label = Label;
}
FText UToolMenuEntryExtensions::GetLabel(const FToolMenuEntry& Target)
{
return Target.Label.Get();
}
void UToolMenuEntryExtensions::SetToolTip(UPARAM(ref) FToolMenuEntry& Target, const FText& ToolTip)
{
Target.ToolTip = ToolTip;
}
FText UToolMenuEntryExtensions::GetToolTip(const FToolMenuEntry& Target)
{
return Target.ToolTip.Get();
}
void UToolMenuEntryExtensions::SetIcon(UPARAM(ref) FToolMenuEntry& Target, const FName StyleSetName, const FName StyleName, const FName SmallStyleName)
{
if (SmallStyleName == NAME_None)
{
if (StyleSetName == NAME_None && StyleName == NAME_None)
{
Target.Icon = FSlateIcon();
}
Target.Icon = FSlateIcon(StyleSetName, StyleName);
}
Target.Icon = FSlateIcon(StyleSetName, StyleName, SmallStyleName);
}
void UToolMenuEntryExtensions::SetStringCommand(UPARAM(ref) FToolMenuEntry& Target, const EToolMenuStringCommandType Type, const FName CustomType, const FString& String)
{
Target.ResetActions();
Target.StringExecuteAction.Type = Type;
Target.StringExecuteAction.CustomType = CustomType;
Target.StringExecuteAction.String = String;
}
FToolMenuEntry UToolMenuEntryExtensions::InitMenuEntry(const FName InOwner, const FName InName, const FText& InLabel, const FText& InToolTip, const EToolMenuStringCommandType CommandType, const FName CustomCommandType, const FString& CommandString)
{
FToolMenuEntry Entry(InOwner, InName, EMultiBlockType::MenuEntry);
Entry.Label = InLabel;
Entry.ToolTip = InToolTip;
Entry.StringExecuteAction = FToolMenuStringCommand(CommandType, CustomCommandType, CommandString);
return Entry;
}
void UToolMenuSectionExtensions::SetLabel(UPARAM(ref) FToolMenuSection& Section, const FText& Label)
{
Section.Label = Label;
}
FText UToolMenuSectionExtensions::GetLabel(const FToolMenuSection& Section)
{
return Section.Label.Get();
}
void UToolMenuSectionExtensions::AddEntry(UPARAM(ref) FToolMenuSection& Section, const FToolMenuEntry& Args)
{
Section.AddEntry(Args);
}
void UToolMenuSectionExtensions::AddEntryObject(UPARAM(ref) FToolMenuSection& Section, UToolMenuEntryScript* InObject)
{
Section.AddEntryObject(InObject);
}