64 lines
1.8 KiB
C
64 lines
1.8 KiB
C
|
|
#pragma once
|
|||
|
|
|
|||
|
|
struct FCSProjectDestination
|
|||
|
|
{
|
|||
|
|
FCSProjectDestination(const FName InKey, FText InDisplayName, FString InName, FString InPath, const int32 Index, TSharedPtr<IPlugin> Plugin = nullptr) :
|
|||
|
|
Key(InKey), DisplayName(MoveTemp(InDisplayName)), Name(MoveTemp(InName)), Path(MoveTemp(InPath)), Index(Index), Plugin(MoveTemp(Plugin)) {}
|
|||
|
|
|
|||
|
|
FName GetKey() const { return Key; }
|
|||
|
|
const FText& GetDisplayName() const { return DisplayName; }
|
|||
|
|
const FString& GetName() const { return Name; }
|
|||
|
|
const FString& GetPath() const { return Path; }
|
|||
|
|
int32 GetIndex() const { return Index; }
|
|||
|
|
const TSharedPtr<IPlugin>& GetPlugin() const { return Plugin; }
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
FName Key;
|
|||
|
|
FText DisplayName;
|
|||
|
|
FString Name;
|
|||
|
|
FString Path;
|
|||
|
|
int32 Index;
|
|||
|
|
TSharedPtr<IPlugin> Plugin;
|
|||
|
|
|
|||
|
|
friend uint32 GetTypeHash(const FCSProjectDestination& ProjectDestination)
|
|||
|
|
{
|
|||
|
|
return GetTypeHash(ProjectDestination.Key);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
class SCSNewProjectDialog : public SCompoundWidget
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
|
|||
|
|
SLATE_BEGIN_ARGS(SCSNewProjectDialog) {}
|
|||
|
|
SLATE_END_ARGS()
|
|||
|
|
|
|||
|
|
void Construct(const FArguments& InArgs);
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
|
|||
|
|
void OnProjectDestinationChanged(TSharedPtr<FCSProjectDestination> NewProjectDestination, ESelectInfo::Type SelectInfo);
|
|||
|
|
static TSharedRef<SWidget> OnGenerateProjectDestinationWidget(TSharedRef<FCSProjectDestination> Destination);
|
|||
|
|
void OnPathSelected(const FString& NewPath);
|
|||
|
|
FReply OnExplorerButtonClicked();
|
|||
|
|
|
|||
|
|
void OnCancel();
|
|||
|
|
void OnFinish();
|
|||
|
|
|
|||
|
|
bool CanFinish() const;
|
|||
|
|
|
|||
|
|
void CloseWindow();
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
|
|||
|
|
TSharedPtr<SEditableTextBox> PathTextBox;
|
|||
|
|
TSharedPtr<SComboBox<TSharedRef<FCSProjectDestination>>> ProjectDestinationComboBox;
|
|||
|
|
TSharedPtr<SEditableTextBox> NameTextBox;
|
|||
|
|
|
|||
|
|
FString SuggestedProjectName;
|
|||
|
|
TArray<TSharedRef<FCSProjectDestination>> ProjectDestinations;
|
|||
|
|
int32 SelectedProjectDestinationIndex = INDEX_NONE;
|
|||
|
|
|
|||
|
|
};
|