Files
UnrealEngine/Engine/Source/Editor/UnrealEd/Private/ApplicationMode.cpp
2025-05-18 13:04:45 +08:00

66 lines
1.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "WorkflowOrientedApp/ApplicationMode.h"
#include "Framework/MultiBox/MultiBoxExtender.h"
#include "Framework/Docking/LayoutService.h"
#include "UnrealEdMisc.h"
DEFINE_LOG_CATEGORY_STATIC(LogApplicationMode, Log, All);
#define LOCTEXT_NAMESPACE "ApplicationMode"
/////////////////////////////////////////////////////
// FApplicationMode
FApplicationMode::FApplicationMode(FName InModeName)
: ModeName(InModeName)
{
ToolbarExtender = MakeShareable(new FExtender);
WorkspaceMenuCategory = FWorkspaceItem::NewGroup(LOCTEXT("WorkspaceMenu_AssetEditor", "Asset Editor"));
}
FApplicationMode::FApplicationMode(FName InModeName, FText(*GetLocalizedMode)(const FName))
: ModeName(InModeName)
{
ToolbarExtender = MakeShareable(new FExtender);
WorkspaceMenuCategory = FWorkspaceItem::NewGroup(FText::Format(LOCTEXT("WorkspaceMenu_ApplicationMode", "{0} Editor"), GetLocalizedMode(InModeName)));
}
void FApplicationMode::DeactivateMode(TSharedPtr<FTabManager> InTabManager)
{
// Save the layout to INI
check(InTabManager.IsValid());
FLayoutSaveRestore::SaveToConfig(LayoutIni, InTabManager->PersistLayout());
// Unregister the tabs
/*
for (int32 Index = 0; Index < AllowableTabs.Num(); ++Index)
{
const FName TabName = AllowableTabs[Index];
PinnedTabManager->UnregisterTabSpawner(TabName);
}
*/
}
TSharedRef<FTabManager::FLayout> FApplicationMode::ActivateMode(TSharedPtr<FTabManager> InTabManager)
{
check(InTabManager.IsValid());
RegisterTabFactories(InTabManager);
/*
for (int32 Index = 0; Index < AllowableTabs.Num(); ++Index)
{
const FName TabName = AllowableTabs[Index];
PinnedTabManager->RegisterTabSpawner(TabName, FOnSpawnTab::CreateSP(this, &FApplicationMode::SpawnTab, TabName));
}
*/
// Try loading the layout from INI
check(TabLayout.IsValid());
return FLayoutSaveRestore::LoadFromConfig(LayoutIni, TabLayout.ToSharedRef());
}
#undef LOCTEXT_NAMESPACE