Live Config
Loading...
Searching...
No Matches
SLiveConfigNewPropertyDialog.h
1// Copyright (c) 2026 Nicholas Arthur
2// Licensed under the MIT License
3
4#pragma once
5
6#include "CoreMinimal.h"
7#include "Widgets/SCompoundWidget.h"
8#include "LiveConfigTypes.h"
9#include "LiveConfigPropertyName.h"
10
11DECLARE_DELEGATE_OneParam(FOnPropertyCreated, const FLiveConfigPropertyDefinition&);
12
13class SLiveConfigNewPropertyDialog : public SCompoundWidget
14{
15public:
16 SLATE_BEGIN_ARGS(SLiveConfigNewPropertyDialog)
17 : _InitialName()
18 , _InitialType(ELiveConfigPropertyType::String)
19 , _InitialTags()
20 {}
21 SLATE_ARGUMENT(FString, InitialName);
22 SLATE_ARGUMENT(ELiveConfigPropertyType, InitialType);
23 SLATE_ARGUMENT(TArray<FName>, InitialTags);
24 SLATE_EVENT(FOnPropertyCreated, OnPropertyCreated);
25 SLATE_END_ARGS();
26
27 void Construct(const FArguments& InArgs);
28 virtual bool SupportsKeyboardFocus() const override;
29 virtual FReply OnKeyDown(const FGeometry& MyGeometry, const FKeyEvent& InKeyEvent) override;
30
31 static void OpenDialog(const FString& InInitialName, ELiveConfigPropertyType InInitialType, const TArray<FName>& InInitialTags, FOnPropertyCreated InOnPropertyCreated);
32
33private:
34 FReply HandleCreate();
35 FReply OnCancelClicked();
36
37 void OnTypeSelected(TSharedPtr<ELiveConfigPropertyType> NewType, ESelectInfo::Type SelectInfo);
38 TSharedRef<SWidget> OnGenerateTypeWidget(TSharedPtr<ELiveConfigPropertyType> InType);
39 FText GetSelectedTypeText() const;
40
41 void OnTagSelected(FName TagName);
42 void RefreshTags();
43
44 TSharedPtr<class SWrapBox> TagWrapBox;
45 TSharedPtr<class SEditableTextBox> NameTextBox;
46 TSharedPtr<class SEditableTextBox> DescriptionTextBox;
47 TSharedPtr<class SComboBox<TSharedPtr<ELiveConfigPropertyType>>> TypeComboBox;
48 TArray<TSharedPtr<ELiveConfigPropertyType>> TypeOptions;
49
50 ELiveConfigPropertyType SelectedType = ELiveConfigPropertyType::String;
51 TSharedPtr<FLiveConfigPropertyDefinition> TempDefinition;
52
53 FOnPropertyCreated OnPropertyCreated;
54 TWeakPtr<SWindow> WindowPtr;
55};
Definition SLiveConfigNewPropertyDialog.h:14
Definition LiveConfigTypes.h:34