Live Config
Loading...
Searching...
No Matches
SLiveConfigPropertyPicker.h
1// Copyright (c) 2026 Nicholas Arthur
2// Licensed under the MIT License
3
4#pragma once
5
6#include "CoreMinimal.h"
7#include "SLiveConfigPropertyCombo.h"
8#include "Widgets/DeclarativeSyntaxSupport.h"
9#include "Widgets/SCompoundWidget.h"
10#include "LiveConfigSystem.h"
11
12class SLiveConfigPropertyPicker : public SCompoundWidget
13{
14 SLATE_DECLARE_WIDGET(SLiveConfigPropertyPicker, SCompoundWidget);
15public:
18
19 SLATE_BEGIN_ARGS(SLiveConfigPropertyPicker)
20 : _Filter()
21 , _FilterType()
22 , _StructFilter(nullptr)
23 , _bReadOnly(false)
24 , _bMultiSelect(false)
25 {}
26 SLATE_ARGUMENT(FName, Filter);
27 SLATE_ARGUMENT(TOptional<ELiveConfigPropertyType>, FilterType);
28 SLATE_ARGUMENT(UScriptStruct*, StructFilter);
29 SLATE_ARGUMENT(bool, bReadOnly);
30 SLATE_ARGUMENT(bool, bMultiSelect);
31 SLATE_EVENT(FOnPropertySelected, OnPropertySelected);
32 SLATE_END_ARGS();
33
34 // SWidget
35 void Construct(const FArguments& InArgs);
36 // ~SWidget
37
38 TSharedPtr<SWidget> GetWidgetToFocusOnOpen();
39
41 FLiveConfigProperty GetSelectedProperty() const { return SelectedProperty; }
42
45
46private:
48 void RefreshPropertyList();
49
51 void OnFilterTextChanged(const FText& InFilterText);
52
54 void OnSelectionChanged(TSharedPtr<FLiveConfigProperty> InItem, ESelectInfo::Type SelectInfo);
55
57 FReply OnAddNewPropertyClicked();
58
60 FText GetPropertyDisplayText(FLiveConfigProperty Property) const;
61
63 FText GetPropertyTooltipText(FLiveConfigProperty Property) const;
64
66 TSharedRef<ITableRow> GenerateRow(TSharedPtr<FLiveConfigProperty> InItem, const TSharedRef<STableViewBase>& OwnerTable);
67
68 FLiveConfigProperty SelectedProperty;
69 FName Filter;
70 TOptional<ELiveConfigPropertyType> FilterType;
71 TWeakObjectPtr<UScriptStruct> StructFilter;
72 bool bReadOnly = false;
73 bool bMultiSelect = false;
74
75 TArray<TSharedPtr<FLiveConfigProperty>> AvailablePropertyNames;
76 TArray<TSharedPtr<FLiveConfigProperty>> FilteredProperties;
77 TSharedPtr<class SSearchBox> SearchBox;
78 TSharedPtr<class SListView<TSharedPtr<FLiveConfigProperty>>> PropertyListView;
79
80 FOnPropertySelected OnPropertyChanged;
81};
82
Definition SLiveConfigPropertyPicker.h:13
FLiveConfigProperty GetSelectedProperty() const
Definition SLiveConfigPropertyPicker.h:41
void SetSelectedProperty(FLiveConfigProperty InProperty)
Definition LiveConfigPropertyPicker.cpp:422
DECLARE_DELEGATE_OneParam(FOnPropertySelected, FLiveConfigProperty)
Definition LiveConfigPropertyName.h:14