You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#jira none #rb sebastian.nordgren #preflight 6295f14f926be5fb68b3e29a [CL 20435453 by George Rolfe in ue5-main branch]
119 lines
3.0 KiB
C++
119 lines
3.0 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "TemplateStringStructCustomization.h"
|
|
|
|
#include "DetailWidgetRow.h"
|
|
#include "PropertyHandle.h"
|
|
#include "STemplateStringEditableTextBox.h"
|
|
#include "UObject/TemplateString.h"
|
|
#include "Widgets/DeclarativeSyntaxSupport.h"
|
|
|
|
#define LOCTEXT_NAMESPACE "TemplateStringStructCustomization"
|
|
|
|
void FTemplateStringStructCustomization::CustomizeChildren(TSharedRef<IPropertyHandle> StructPropertyHandle, class IDetailChildrenBuilder& StructBuilder, IPropertyTypeCustomizationUtils& StructCustomizationUtils)
|
|
{
|
|
}
|
|
|
|
void FTemplateStringStructCustomization::CustomizeHeader(TSharedRef<IPropertyHandle> StructPropertyHandle, class FDetailWidgetRow& HeaderRow, IPropertyTypeCustomizationUtils& StructCustomizationUtils)
|
|
{
|
|
TemplateStringProperty = StructPropertyHandle->GetChildHandle(GET_MEMBER_NAME_CHECKED(FTemplateString, Template));
|
|
check(TemplateStringProperty);
|
|
|
|
HeaderRow
|
|
.NameContent()
|
|
[
|
|
StructPropertyHandle->CreatePropertyNameWidget()
|
|
]
|
|
.ValueContent()
|
|
.MaxDesiredWidth(0.0f)
|
|
.MinDesiredWidth(125.0f)
|
|
[
|
|
SNew(STemplateStringEditableTextBox)
|
|
.ToolTipText_Lambda([ToolTipText = GetToolTip()]()
|
|
{
|
|
return ToolTipText;
|
|
})
|
|
.Text_Raw(this, &FTemplateStringStructCustomization::GetText)
|
|
.OnTextChanged(this, &FTemplateStringStructCustomization::SetText)
|
|
];
|
|
}
|
|
|
|
FText FTemplateStringStructCustomization::GetText() const
|
|
{
|
|
if(TemplateStringProperty.IsValid())
|
|
{
|
|
FString TemplateString;
|
|
TemplateStringProperty->GetValue(TemplateString);
|
|
|
|
return FText::FromString(TemplateString);
|
|
}
|
|
|
|
return FText::GetEmpty();
|
|
}
|
|
|
|
void FTemplateStringStructCustomization::SetText(const FText& InNewText) const
|
|
{
|
|
if(TemplateStringProperty.IsValid())
|
|
{
|
|
TemplateStringProperty->SetValue(InNewText.ToString());
|
|
}
|
|
}
|
|
|
|
FText FTemplateStringStructCustomization::GetToolTip() const
|
|
{
|
|
static const FText EmptyText = FText::GetEmpty();
|
|
|
|
if(TemplateStringProperty.IsValid())
|
|
{
|
|
if(CachedTooltip.IsEmpty())
|
|
{
|
|
FTextBuilder TextBuilder;
|
|
if(TemplateStringProperty->GetParentHandle().IsValid())
|
|
{
|
|
TextBuilder.AppendLine(TemplateStringProperty->GetParentHandle()->GetToolTipText());
|
|
}
|
|
|
|
const TArray<FString>& ValidArgs = GetValidArguments();
|
|
if(!ValidArgs.IsEmpty())
|
|
{
|
|
TextBuilder.AppendLine(LOCTEXT("ValidArgs_ToolTipHeading", "Valid Arguments:"));
|
|
TextBuilder.Indent();
|
|
|
|
for(const FString& Arg : ValidArgs)
|
|
{
|
|
TextBuilder.AppendLine(Arg);
|
|
}
|
|
}
|
|
|
|
CachedTooltip = TextBuilder.ToText();
|
|
}
|
|
|
|
return CachedTooltip;
|
|
}
|
|
|
|
return EmptyText;
|
|
}
|
|
|
|
const TArray<FString>& FTemplateStringStructCustomization::GetValidArguments() const
|
|
{
|
|
static TArray<FString> EmptyArray;
|
|
|
|
if(TemplateStringProperty.IsValid())
|
|
{
|
|
if(ValidArguments.IsEmpty())
|
|
{
|
|
if(TemplateStringProperty->GetParentHandle()->HasMetaData(TEXT("ValidArgs")))
|
|
{
|
|
const FString ValidArgStr = TemplateStringProperty->GetParentHandle()->GetMetaData(TEXT("ValidArgs"));
|
|
ValidArgStr.ParseIntoArrayWS(ValidArguments, TEXT(","), true);
|
|
}
|
|
}
|
|
|
|
return ValidArguments;
|
|
}
|
|
|
|
return EmptyArray;
|
|
}
|
|
|
|
#undef LOCTEXT_NAMESPACE
|