ArticyXImporter
ArticyXImporter for Unreal Engine
Loading...
Searching...
No Matches
ArticyIdCustomization.h
1//
2// Copyright (c) 2023 articy Software GmbH & Co. KG. All rights reserved.
3//
4
5#pragma once
6
7#include "CoreMinimal.h"
8#include <IPropertyTypeCustomization.h>
9#include "Slate/SArticyIdProperty.h"
10#include "ClassViewerFilter.h"
11#include "ClassViewerModule.h"
12#include "ArticyObject.h"
13
20class FArticyRefClassFilter final : public IClassViewerFilter
21{
22public:
29 explicit FArticyRefClassFilter(UClass* GivenClass = UArticyObject::StaticClass(), bool bInRequiresExactClass = false);
30
31 virtual bool IsClassAllowed(const FClassViewerInitializationOptions& InInitOptions, const UClass* InClass, TSharedRef< FClassViewerFilterFuncs > InFilterFuncs) override
32 {
34 {
35 return InClass == GivenClass;
36 }
37
38 return InClass->IsChildOf(GivenClass);
39 }
40
41 virtual bool IsUnloadedClassAllowed(const FClassViewerInitializationOptions& InInitOptions, const TSharedRef< const IUnloadedBlueprintData > InUnloadedClassData, TSharedRef< FClassViewerFilterFuncs > InFilterFuncs) override
42 {
43 return false;
44 }
45
46 UClass* GivenClass = nullptr;
47 bool bRequiresExactClass = false;
48};
49
56class FArticyIdCustomization final : public IPropertyTypeCustomization
57{
58public:
64 static TSharedRef<IPropertyTypeCustomization> MakeInstance();
65
67 virtual void CustomizeHeader(TSharedRef<IPropertyHandle> PropertyHandle, FDetailWidgetRow& HeaderRow, IPropertyTypeCustomizationUtils& CustomizationUtils) override;
68
69 virtual void CustomizeChildren(TSharedRef<IPropertyHandle> PropertyHandle, IDetailChildrenBuilder& ChildBuilder, IPropertyTypeCustomizationUtils& CustomizationUtils) override;
70
77 static FArticyId* RetrieveArticyId(IPropertyHandle* ArticyIdHandle);
78
87 static FArticyId GetIdFromValueString(FString SourceString);
88
89private:
90 TSharedPtr<IPropertyHandle> ArticyIdPropertyHandle;
91 TSharedPtr<SArticyIdProperty> ArticyIdPropertyWidget;
92 bool bShouldCustomize = true;
93
94 UClass* GetClassRestriction() const;
95 bool IsExactClass() const;
96 bool IsReadOnly() const;
97 bool HasClassRestrictionMetaData() const;
98 bool HasExactClassMetaData() const;
99
100 FArticyId GetArticyId() const;
101 void OnArticyIdChanged(const FArticyId& NewArticyId) const;
102};
Customizes the display and behavior of Articy ID properties in the details panel.
Definition ArticyIdCustomization.h:57
virtual void CustomizeChildren(TSharedRef< IPropertyHandle > PropertyHandle, IDetailChildrenBuilder &ChildBuilder, IPropertyTypeCustomizationUtils &CustomizationUtils) override
Customizes the children of the Articy ID property in the details panel.
Definition ArticyIdCustomization.cpp:93
static FArticyId GetIdFromValueString(FString SourceString)
Parses the given string to extract the Articy ID.
Definition ArticyIdCustomization.cpp:230
static FArticyId * RetrieveArticyId(IPropertyHandle *ArticyIdHandle)
Retrieves the Articy ID from the specified property handle.
Definition ArticyIdCustomization.cpp:106
static TSharedRef< IPropertyTypeCustomization > MakeInstance()
Creates a shared instance of the FArticyIdCustomization.
Definition ArticyIdCustomization.cpp:29
virtual void CustomizeHeader(TSharedRef< IPropertyHandle > PropertyHandle, FDetailWidgetRow &HeaderRow, IPropertyTypeCustomizationUtils &CustomizationUtils) override
Customizes the header of the Articy ID property in the details panel.
Definition ArticyIdCustomization.cpp:43
bool bRequiresExactClass
Whether an exact class match is required.
Definition ArticyIdCustomization.h:47
UClass * GivenClass
The class to filter by.
Definition ArticyIdCustomization.h:46
FArticyRefClassFilter(UClass *GivenClass=UArticyObject::StaticClass(), bool bInRequiresExactClass=false)
Constructs an instance of FArticyRefClassFilter with specified class and exact class requirement.
Definition ArticyIdCustomization.cpp:20
Definition ArticyBaseTypes.h:18