Files
UnrealEngine/Engine/Plugins/Runtime/HairStrands/Source/HairStrandsEditor/Private/GroomCreateFollicleMaskOptionsWindow.cpp
2025-05-18 13:04:45 +08:00

146 lines
4.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "GroomCreateFollicleMaskOptionsWindow.h"
#include "Styling/AppStyle.h"
#include "Framework/Application/SlateApplication.h"
#include "GroomCreateFollicleMaskOptions.h"
#include "GroomTextureBuilder.h"
#include "IDetailsView.h"
#include "Interfaces/IMainFrameModule.h"
#include "Modules/ModuleManager.h"
#include "PropertyEditorModule.h"
#include "AssetToolsModule.h"
#include "AssetRegistry/AssetRegistryModule.h"
#include "ContentBrowserModule.h"
#include "Subsystems/AssetEditorSubsystem.h"
#include "IContentBrowserSingleton.h"
#include "Misc/MessageDialog.h"
#include "Widgets/Input/SButton.h"
#include "Widgets/Layout/SBorder.h"
#include "Widgets/Layout/SUniformGridPanel.h"
#include "Widgets/SBoxPanel.h"
#include "Widgets/Text/STextBlock.h"
#include "Editor.h"
#define LOCTEXT_NAMESPACE "GroomCreateFollicleMaskOptionsWindow"
void SGroomCreateFollicleMaskOptionsWindow::Construct(const FArguments& InArgs)
{
FollicleMaskOptions = InArgs._FollicleMaskOptions;
WidgetWindow = InArgs._WidgetWindow;
FPropertyEditorModule& PropertyEditorModule = FModuleManager::GetModuleChecked<FPropertyEditorModule>("PropertyEditor");
FDetailsViewArgs DetailsViewArgs;
DetailsViewArgs.bAllowSearch = false;
DetailsViewArgs.NameAreaSettings = FDetailsViewArgs::HideNameArea;
DetailsView = PropertyEditorModule.CreateDetailView(DetailsViewArgs);
DetailsView->SetObject(FollicleMaskOptions);
this->ChildSlot
[
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.AutoHeight()
.Padding(2)
[
SNew(SBorder)
.Padding(FMargin(3))
.BorderImage(FAppStyle::GetBrush("ToolPanel.GroupBorder"))
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.AutoWidth()
[
SNew(STextBlock)
.Font(FAppStyle::GetFontStyle("CurveEd.LabelFont"))
.Text(LOCTEXT("CurrentFile", "Current File: "))
]
+ SHorizontalBox::Slot()
.Padding(5, 0, 0, 0)
.AutoWidth()
.VAlign(VAlign_Center)
[
SNew(STextBlock)
.Font(FAppStyle::GetFontStyle("CurveEd.InfoFont"))
.Text(InArgs._FullPath)
]
]
]
+ SVerticalBox::Slot()
.Padding(2)
.MaxHeight(500.0f)
[
DetailsView->AsShared()
]
+ SVerticalBox::Slot()
.AutoHeight()
.HAlign(HAlign_Right)
.Padding(2)
[
SNew(SUniformGridPanel)
.SlotPadding(2)
+ SUniformGridPanel::Slot(0, 0)
[
SAssignNew(ImportButton, SButton)
.HAlign(HAlign_Center)
.Text(InArgs._ButtonLabel)
.IsEnabled(this, &SGroomCreateFollicleMaskOptionsWindow::CanCreateFollicleMask)
.OnClicked(this, &SGroomCreateFollicleMaskOptionsWindow::OnCreateFollicleMask)
]
+ SUniformGridPanel::Slot(1, 0)
[
SNew(SButton)
.HAlign(HAlign_Center)
.Text(LOCTEXT("Cancel", "Cancel"))
.OnClicked(this, &SGroomCreateFollicleMaskOptionsWindow::OnCancel)
]
]
];
}
bool SGroomCreateFollicleMaskOptionsWindow::CanCreateFollicleMask() const
{
return true;
}
TSharedPtr<SGroomCreateFollicleMaskOptionsWindow> DisplayOptions(UGroomCreateFollicleMaskOptions* FollicleMaskOptions, FText WindowTitle, FText InButtonLabel)
{
TSharedRef<SWindow> Window = SNew(SWindow)
.Title(WindowTitle)
.SizingRule(ESizingRule::Autosized);
TSharedPtr<SGroomCreateFollicleMaskOptionsWindow> OptionsWindow;
Window->SetContent
(
SAssignNew(OptionsWindow, SGroomCreateFollicleMaskOptionsWindow)
.FollicleMaskOptions(FollicleMaskOptions)
.WidgetWindow(Window)
// .FullPath(FText::FromString(FileName))
.ButtonLabel(InButtonLabel)
);
TSharedPtr<SWindow> ParentWindow;
if (FModuleManager::Get().IsModuleLoaded("MainFrame"))
{
IMainFrameModule& MainFrame = FModuleManager::LoadModuleChecked<IMainFrameModule>("MainFrame");
ParentWindow = MainFrame.GetParentWindow();
}
FSlateApplication::Get().AddModalWindow(Window, ParentWindow, false);
return OptionsWindow;
}
TSharedPtr<SGroomCreateFollicleMaskOptionsWindow> SGroomCreateFollicleMaskOptionsWindow::DisplayCreateFollicleMaskOptions(UGroomCreateFollicleMaskOptions* FollicleMaskOptions)
{
return DisplayOptions(FollicleMaskOptions, LOCTEXT("GroomFollicleMaskWindowTitle", "Groom Follicle Mask Options"), LOCTEXT("Build", "Create"));
}
#undef LOCTEXT_NAMESPACE