You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#rnx #rb none #ROBOMERGE-SOURCE: CL 10869241 via CL 10869527 via CL 10869904 #ROBOMERGE-BOT: (v613-10869866) [CL 10870586 by ryan durand in Main branch]
89 lines
3.4 KiB
C++
89 lines
3.4 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "DynamicEntryBoxDetails.h"
|
|
|
|
#include "Editor/PropertyEditor/Public/DetailLayoutBuilder.h"
|
|
#include "Editor/PropertyEditor/Public/DetailCategoryBuilder.h"
|
|
#include "Components/DynamicEntryBox.h"
|
|
#include "PropertyCustomizationHelpers.h"
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// FDynamicEntryBoxBaseDetails
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
TSharedRef<IDetailCustomization> FDynamicEntryBoxBaseDetails::MakeInstance()
|
|
{
|
|
return MakeShareable(new FDynamicEntryBoxBaseDetails());
|
|
}
|
|
|
|
void FDynamicEntryBoxBaseDetails::CustomizeDetails(IDetailLayoutBuilder& DetailLayout)
|
|
{
|
|
TArray<TWeakObjectPtr<UObject>> Objects;
|
|
DetailLayout.GetObjectsBeingCustomized(Objects);
|
|
if (Objects.Num() != 1)
|
|
{
|
|
return;
|
|
}
|
|
EntryBox = Cast<UDynamicEntryBox>(Objects[0].Get());
|
|
if (!EntryBox.IsValid())
|
|
{
|
|
return;
|
|
}
|
|
|
|
IDetailCategoryBuilder& EntryLayoutCategory = DetailLayout.EditCategory(TEXT("EntryLayout"));
|
|
|
|
const TAttribute<bool> CanEditAignmentAttribute(this, &FDynamicEntryBoxDetails::CanEditAlignment);
|
|
EntryLayoutCategory.AddProperty(DetailLayout.GetProperty(GET_MEMBER_NAME_CHECKED(UDynamicEntryBoxBase, EntryHorizontalAlignment)))
|
|
.IsEnabled(CanEditAignmentAttribute);
|
|
EntryLayoutCategory.AddProperty(DetailLayout.GetProperty(GET_MEMBER_NAME_CHECKED(UDynamicEntryBoxBase, EntryVerticalAlignment)))
|
|
.IsEnabled(CanEditAignmentAttribute);
|
|
|
|
EntryLayoutCategory.AddProperty(DetailLayout.GetProperty(GET_MEMBER_NAME_CHECKED(UDynamicEntryBoxBase, MaxElementSize)))
|
|
.IsEnabled(TAttribute<bool>(this, &FDynamicEntryBoxDetails::CanEditMaxElementSize));
|
|
EntryLayoutCategory.AddProperty(DetailLayout.GetProperty(GET_MEMBER_NAME_CHECKED(UDynamicEntryBoxBase, EntrySpacing)))
|
|
.IsEnabled(TAttribute<bool>(this, &FDynamicEntryBoxDetails::CanEditEntrySpacing));
|
|
EntryLayoutCategory.AddProperty(DetailLayout.GetProperty(GET_MEMBER_NAME_CHECKED(UDynamicEntryBoxBase, SpacingPattern)))
|
|
.IsEnabled(TAttribute<bool>(this, &FDynamicEntryBoxDetails::CanEditSpacingPattern));
|
|
}
|
|
|
|
bool FDynamicEntryBoxBaseDetails::CanEditSpacingPattern() const
|
|
{
|
|
return EntryBox->GetBoxType() == EDynamicBoxType::Overlay;
|
|
}
|
|
|
|
bool FDynamicEntryBoxBaseDetails::CanEditEntrySpacing() const
|
|
{
|
|
return EntryBox->SpacingPattern.Num() == 0;
|
|
}
|
|
|
|
bool FDynamicEntryBoxBaseDetails::CanEditAlignment() const
|
|
{
|
|
return EntryBox->GetBoxType() != EDynamicBoxType::Overlay || CanEditEntrySpacing();
|
|
}
|
|
|
|
bool FDynamicEntryBoxBaseDetails::CanEditMaxElementSize() const
|
|
{
|
|
const EDynamicBoxType BoxType = EntryBox->GetBoxType();
|
|
return BoxType == EDynamicBoxType::Horizontal || BoxType == EDynamicBoxType::Vertical;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// FDynamicEntryBoxDetails
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
TSharedRef<IDetailCustomization> FDynamicEntryBoxDetails::MakeInstance()
|
|
{
|
|
return MakeShareable(new FDynamicEntryBoxDetails());
|
|
}
|
|
|
|
void FDynamicEntryBoxDetails::CustomizeDetails(IDetailLayoutBuilder& DetailLayout)
|
|
{
|
|
FDynamicEntryBoxBaseDetails::CustomizeDetails(DetailLayout);
|
|
|
|
if (EntryBox.IsValid())
|
|
{
|
|
IDetailCategoryBuilder& EntryLayoutCategory = DetailLayout.EditCategory(TEXT("EntryLayout"));
|
|
AddEntryClassPicker(*EntryBox, EntryLayoutCategory, DetailLayout.GetProperty(GET_MEMBER_NAME_CHECKED(UDynamicEntryBox, EntryWidgetClass)));
|
|
}
|
|
}
|