ArticyXImporter
ArticyXImporter for Unreal Engine
Loading...
Searching...
No Matches
ArticyFilterHelpers.h
1//
2// Copyright (c) 2023 articy Software GmbH & Co. KG. All rights reserved.
3//
4
5#pragma once
6
7#include "ArticyGlobalVariables.h"
8#include "FrontendFilterBase.h"
9#include "Misc/TextFilterExpressionEvaluator.h"
10#include "ArticyObject.h"
11
12#define LOCTEXT_NAMESPACE "ArticyFilterHelpers"
13
14// Define the filter types used for Articy objects and variables.
15typedef const FAssetData& FArticyObjectFilterType;
16typedef TFilterCollection<FArticyObjectFilterType> FArticyObjectFilterCollectionType;
17
18typedef const UArticyVariable*& FArticyVariableFilterType;
19typedef TFilterCollection<const UArticyVariable*&> FArticyVariableFilterCollectionType;
20
24class FFrontendFilter_ArticyObject : public IFilter<FArticyObjectFilterType>
25{
26public:
31
32 // FFrontendFilter implementation
37 virtual FString GetName() const { return TEXT("ArticyObjectFilter"); }
42 virtual FText GetDisplayName() const { return LOCTEXT("FrontendFilter_ArticyObjectFilter", "Articy Object Filter"); }
47 virtual FText GetToolTipText() const { return LOCTEXT("FrontendFilter_ArticyObjectTooltip", "Show only articy objects that match the criteria"); }
48
49 // IFilter implementation
55 virtual bool PassesFilter(FArticyObjectFilterType InItem) const override;
56
57 DECLARE_DERIVED_EVENT(FFrontendFilter_ArticyObject, IFilter<FArticyObjectFilterType>::FChangedEvent, FChangedEvent);
58 virtual FChangedEvent& OnChanged() override { return ChangedEvent; }
59
60 FChangedEvent ChangedEvent;
61protected:
63 void BroadcastChangedEvent() const { ChangedEvent.Broadcast(); }
64public:
69 FText GetRawFilterText() const;
70
75 void SetRawFilterText(const FText& InFilterText);
76
81 FText GetFilterErrorText() const;
82
87 void SetIncludeClassName(const bool InIncludeClassName);
88
89private:
90
92 TSharedRef<class FFrontendFilter_ArticyObjectFilterExpressionContext> TextFilterExpressionContext;
93
95 FTextFilterExpressionEvaluator TextFilterExpressionEvaluator;
96};
97
101class FArticyClassRestrictionFilter : public IFilter<FArticyObjectFilterType>
102{
103public:
109 FArticyClassRestrictionFilter(TSubclassOf<UArticyObject> AllowedClass, bool bExactClass);
110
115 void UpdateFilteredClass(TSubclassOf<UArticyObject> NewAllowedClass) { AllowedClass = NewAllowedClass; OnChanged().Broadcast(); }
120 void UpdateExactClass(bool bNewExactClass) { bExactClass = bNewExactClass; OnChanged().Broadcast(); }
121 // IFilter implementation
127 virtual bool PassesFilter(FArticyObjectFilterType InItem) const override;
128
129 // IFilter implementation
130 DECLARE_DERIVED_EVENT(FArticyClassRestrictionFilter, IFilter<FArticyObjectFilterType>::FChangedEvent, FChangedEvent);
131 virtual FChangedEvent& OnChanged() override { return ChangedEvent; }
132
133 FChangedEvent ChangedEvent;
134private:
136 TSubclassOf<UArticyObject> AllowedClass = UArticyObject::StaticClass();
138 bool bExactClass = false;
139};
140
144class FFrontendFilter_ArticyVariable : public IFilter<FArticyVariableFilterType>
145{
146public:
151
152 // FFrontendFilter implementation
157 virtual FString GetName() const { return TEXT("ArticyVariableFilter"); }
162 virtual FText GetDisplayName() const { return LOCTEXT("FrontendFilter_ArticyVariable", "Articy Variable Filter"); }
167 virtual FText GetToolTipText() const { return LOCTEXT("FrontendFilter_ArticyVariableTooltip", "Show only articy variables that match the criteria"); }
168
169 // IFilter implementation
175 virtual bool PassesFilter(FArticyVariableFilterType InItem) const override;
176
177public:
182 FText GetRawFilterText() const;
183
188 void SetRawFilterText(const FText& InFilterText);
189
194 FText GetFilterErrorText() const;
195
196private:
198 TSharedRef<class FFrontendFilter_ArticyGVFilterExpressionContext> TextFilterExpressionContext;
200 FTextFilterExpressionEvaluator TextFilterExpressionEvaluator;
201
202 DECLARE_DERIVED_EVENT(FFrontendFilter, IFilter<FArticyVariableFilterType>::FChangedEvent, FChangedEvent);
203 virtual FChangedEvent& OnChanged() override { return ChangedEvent; }
204
205private:
206 FChangedEvent ChangedEvent;
207
208};
209
210#undef LOCTEXT_NAMESPACE
Definition ArticyFilterHelpers.h:102
void UpdateFilteredClass(TSubclassOf< UArticyObject > NewAllowedClass)
Definition ArticyFilterHelpers.h:115
FArticyClassRestrictionFilter(TSubclassOf< UArticyObject > AllowedClass, bool bExactClass)
Definition ArticyFilterHelpers.cpp:435
void UpdateExactClass(bool bNewExactClass)
Definition ArticyFilterHelpers.h:120
virtual bool PassesFilter(FArticyObjectFilterType InItem) const override
Definition ArticyFilterHelpers.cpp:445
Definition ArticyFilterHelpers.h:25
void SetIncludeClassName(const bool InIncludeClassName)
Definition ArticyFilterHelpers.cpp:418
~FFrontendFilter_ArticyObject()
Definition ArticyFilterHelpers.cpp:359
void BroadcastChangedEvent() const
Definition ArticyFilterHelpers.h:63
FText GetRawFilterText() const
Definition ArticyFilterHelpers.cpp:384
void SetRawFilterText(const FText &InFilterText)
Definition ArticyFilterHelpers.cpp:394
FFrontendFilter_ArticyObject()
Definition ArticyFilterHelpers.cpp:352
virtual FText GetDisplayName() const
Definition ArticyFilterHelpers.h:42
virtual FString GetName() const
Definition ArticyFilterHelpers.h:37
virtual bool PassesFilter(FArticyObjectFilterType InItem) const override
Definition ArticyFilterHelpers.cpp:370
virtual FText GetToolTipText() const
Definition ArticyFilterHelpers.h:47
FText GetFilterErrorText() const
Definition ArticyFilterHelpers.cpp:408
FText GetFilterErrorText() const
Definition ArticyFilterHelpers.cpp:608
FText GetRawFilterText() const
Definition ArticyFilterHelpers.cpp:584
virtual FText GetToolTipText() const
Definition ArticyFilterHelpers.h:167
virtual bool PassesFilter(FArticyVariableFilterType InItem) const override
Definition ArticyFilterHelpers.cpp:570
virtual FString GetName() const
Definition ArticyFilterHelpers.h:157
virtual FText GetDisplayName() const
Definition ArticyFilterHelpers.h:162
void SetRawFilterText(const FText &InFilterText)
Definition ArticyFilterHelpers.cpp:594
FFrontendFilter_ArticyVariable()
Definition ArticyFilterHelpers.cpp:553
~FFrontendFilter_ArticyVariable()
Definition ArticyFilterHelpers.cpp:560
Definition ArticyGlobalVariables.h:89