Files
UnrealEngineUWP/Engine/Source/Editor/ClassViewer/Private/ClassViewerModule.cpp
Lauren Barnes 6248f8d412 Replacing legacy EditorStyle calls with AppStyle
#preflight 6272a74d2f6d177be3c6fdda
#rb Matt.Kuhlenschmidt

#ROBOMERGE-OWNER: Lauren.Barnes
#ROBOMERGE-AUTHOR: lauren.barnes
#ROBOMERGE-SOURCE: CL 20057269 via CL 20070159 via CL 20072035 via CL 20072203
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)
#ROBOMERGE-CONFLICT from-shelf

[CL 20105363 by Lauren Barnes in ue5-main branch]
2022-05-09 13:12:28 -04:00

121 lines
3.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "ClassViewerModule.h"
#include "Widgets/SWidget.h"
#include "Modules/ModuleManager.h"
#include "Widgets/DeclarativeSyntaxSupport.h"
#include "Framework/Application/SlateApplication.h"
#include "Textures/SlateIcon.h"
#include "Framework/Docking/TabManager.h"
#include "Styling/AppStyle.h"
#include "SClassViewer.h"
#include "Editor/WorkspaceMenuStructure/Public/WorkspaceMenuStructure.h"
#include "Editor/WorkspaceMenuStructure/Public/WorkspaceMenuStructureModule.h"
#include "Widgets/Docking/SDockTab.h"
#include "Modules/ModuleManager.h"
#include "Widgets/Docking/SDockTab.h"
#include "ClassViewerProjectSettings.h"
#include "ISettingsModule.h"
#include "ClassViewerFilter.h"
#define LOCTEXT_NAMESPACE "ClassViewer"
IMPLEMENT_MODULE( FClassViewerModule, ClassViewer );
namespace ClassViewerModule
{
static const FName ClassViewerApp = FName("ClassViewerApp");
}
TSharedRef<SDockTab> CreateClassPickerTab( const FSpawnTabArgs& Args )
{
FClassViewerInitializationOptions InitOptions;
InitOptions.Mode = EClassViewerMode::ClassBrowsing;
InitOptions.DisplayMode = EClassViewerDisplayMode::TreeView;
return SNew(SDockTab)
.TabRole( ETabRole::NomadTab )
[
SNew( SClassViewer, InitOptions )
.OnClassPickedDelegate(FOnClassPicked())
];
}
void FClassViewerModule::StartupModule()
{
FGlobalTabmanager::Get()->RegisterNomadTabSpawner( ClassViewerModule::ClassViewerApp, FOnSpawnTab::CreateStatic( &CreateClassPickerTab ) )
.SetDisplayName( NSLOCTEXT("ClassViewerApp", "TabTitle", "Class Viewer") )
.SetTooltipText( NSLOCTEXT("ClassViewerApp", "TooltipText", "Displays all classes that exist within this project.") )
.SetGroup( WorkspaceMenu::GetMenuStructure().GetToolsCategory() )
.SetIcon( FSlateIcon(FAppStyle::GetAppStyleSetName(), "ClassViewer.TabIcon") );
ISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings");
if (SettingsModule != nullptr)
{
// ClassViewer Editor Settings
SettingsModule->RegisterSettings("Project", "Editor", "ClassViewer",
LOCTEXT("ClassViewerSettingsName", "Class Viewer"),
LOCTEXT("ClassViewerSettingsDescription", "Configure options for the Class Viewer."),
GetMutableDefault<UClassViewerProjectSettings>()
);
}
}
void FClassViewerModule::ShutdownModule()
{
if (FSlateApplication::IsInitialized())
{
FGlobalTabmanager::Get()->UnregisterNomadTabSpawner( ClassViewerModule::ClassViewerApp );
}
// Unregister the setting
ISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings");
if (SettingsModule != nullptr)
{
SettingsModule->UnregisterSettings("Project", "Editor", "ClassViewer");
}
SClassViewer::DestroyClassHierarchy();
}
/**
* Creates a class viewer widget
*
* @param InitOptions Programmer-driven configuration for this widget instance
* @param OnClassPickedDelegate Optional callback when a class is selected in 'class picking' mode
*
* @return New class viewer widget
*/
TSharedRef<SWidget> FClassViewerModule::CreateClassViewer(const FClassViewerInitializationOptions& InitOptions, const FOnClassPicked& OnClassPickedDelegate )
{
return SNew( SClassViewer, InitOptions )
.OnClassPickedDelegate(OnClassPickedDelegate);
}
TSharedRef<IClassViewerFilter> FClassViewerModule::CreateClassFilter(const FClassViewerInitializationOptions& InitOptions)
{
return TSharedRef<IClassViewerFilter>(new FClassViewerFilter(InitOptions));
}
TSharedRef<FClassViewerFilterFuncs> FClassViewerModule::CreateFilterFuncs()
{
return TSharedRef<FClassViewerFilterFuncs>(new FClassViewerFilterFuncs());
}
void FClassViewerModule::RegisterGlobalClassViewerFilter(const TSharedRef<IClassViewerFilter>& Filter)
{
GlobalClassViewerFilter = Filter;
OnGlobalClassViewerFilterModified.Broadcast();
}
const TSharedPtr<IClassViewerFilter>& FClassViewerModule::GetGlobalClassViewerFilter()
{
return GlobalClassViewerFilter;
}
#undef LOCTEXT_NAMESPACE