// Copyright Epic Games, Inc. All Rights Reserved. #include "VirtualizationEditorModule.h" #include "Editor/WorkspaceMenuStructure/Public/WorkspaceMenuStructure.h" #include "Editor/WorkspaceMenuStructure/Public/WorkspaceMenuStructureModule.h" #include "Framework/Application/SlateApplication.h" #include "Framework/Docking/TabManager.h" #include "SVirtualAssetsStatistics.h" #include "Textures/SlateIcon.h" #include "Widgets/Docking/SDockTab.h" #define LOCTEXT_NAMESPACE "VirtualizationEditor" IMPLEMENT_MODULE(FVirtualizationEditorModule, VirtualizationEditor); static const FName VirtualAssetsStatisticsTabName = FName(TEXT("VirtualAssetsStatistics")); void FVirtualizationEditorModule::StartupModule() { const FSlateIcon VirtaulAssetsStatisticsIcon(FAppStyle::GetAppStyleSetName(), "DerivedData.Cache.Statistics"); FGlobalTabmanager::Get()->RegisterNomadTabSpawner(VirtualAssetsStatisticsTabName, FOnSpawnTab::CreateRaw(this, &FVirtualizationEditorModule::CreateVirtualAssetsStatisticsTab)) .SetDisplayName(LOCTEXT("VirtualAssetsStatisticsTabTitle", "Virtual Assets")) .SetTooltipText(LOCTEXT("VirtualAssetsStatisticsTabToolTipText", "Virtual Assets Statistics")) .SetGroup(WorkspaceMenu::GetMenuStructure().GetDeveloperToolsAuditCategory()) .SetIcon(VirtaulAssetsStatisticsIcon); #if WITH_RELOAD // This code attempts to relaunch the tabs when you reload this module if (IsReloadActive() && FSlateApplication::IsInitialized()) { ShowVirtualAssetsStatisticsTab(); } #endif // WITH_RELOAD } void FVirtualizationEditorModule::ShutdownModule() { if (FSlateApplication::IsInitialized()) { if (VirtualAssetsStatisticsTab.IsValid()) { VirtualAssetsStatisticsTab.Pin()->RequestCloseTab(); } FGlobalTabmanager::Get()->UnregisterNomadTabSpawner(VirtualAssetsStatisticsTabName); } } void FVirtualizationEditorModule::ShowVirtualAssetsStatisticsTab() { FGlobalTabmanager::Get()->TryInvokeTab(FTabId(VirtualAssetsStatisticsTabName)); } TSharedPtr FVirtualizationEditorModule::CreateVirtualAssetsStatisticsDialog() { return SNew(SVirtualAssetsStatisticsDialog); } TSharedRef FVirtualizationEditorModule::CreateVirtualAssetsStatisticsTab(const FSpawnTabArgs& Args) { return SAssignNew(VirtualAssetsStatisticsTab, SDockTab) .TabRole(ETabRole::NomadTab) [ CreateVirtualAssetsStatisticsDialog().ToSharedRef() ]; }