// 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("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 DisplayOptions(UGroomCreateFollicleMaskOptions* FollicleMaskOptions, FText WindowTitle, FText InButtonLabel) { TSharedRef Window = SNew(SWindow) .Title(WindowTitle) .SizingRule(ESizingRule::Autosized); TSharedPtr OptionsWindow; Window->SetContent ( SAssignNew(OptionsWindow, SGroomCreateFollicleMaskOptionsWindow) .FollicleMaskOptions(FollicleMaskOptions) .WidgetWindow(Window) // .FullPath(FText::FromString(FileName)) .ButtonLabel(InButtonLabel) ); TSharedPtr ParentWindow; if (FModuleManager::Get().IsModuleLoaded("MainFrame")) { IMainFrameModule& MainFrame = FModuleManager::LoadModuleChecked("MainFrame"); ParentWindow = MainFrame.GetParentWindow(); } FSlateApplication::Get().AddModalWindow(Window, ParentWindow, false); return OptionsWindow; } TSharedPtr SGroomCreateFollicleMaskOptionsWindow::DisplayCreateFollicleMaskOptions(UGroomCreateFollicleMaskOptions* FollicleMaskOptions) { return DisplayOptions(FollicleMaskOptions, LOCTEXT("GroomFollicleMaskWindowTitle", "Groom Follicle Mask Options"), LOCTEXT("Build", "Create")); } #undef LOCTEXT_NAMESPACE