Space Plunder
Loading...
Searching...
No Matches
CDD_MenuExtender Class Reference

#include <CDD_MenuExtender.h>

Public Member Functions

void Init ()
 
void SpawnCddTab ()
 
void RegisterContextualMenu ()
 
FLevelEditorModule & GetLevelEditorModule ()
 
void Init ()
 
void SpawnCddTab ()
 
void RegisterContextualMenu ()
 
FLevelEditorModule & GetLevelEditorModule ()
 

Static Public Member Functions

static CDD_MenuExtenderGet ()
 
static CDD_MenuExtenderGet ()
 

Private Attributes

FName registrationName
 
UEditorUtilitySubsystem * editorUtilitySubsystem = nullptr
 
UEditorUtilityWidgetBlueprint * editorWidget = nullptr
 
FLevelEditorModule * levelEditorModule = nullptr
 

Member Function Documentation

◆ Get() [1/2]

CDD_MenuExtender & CDD_MenuExtender::Get ( )
static
11{
12 static CDD_MenuExtender instance;
13 return instance;
14}
Definition CDD_MenuExtender.h:14

◆ Get() [2/2]

static CDD_MenuExtender & CDD_MenuExtender::Get ( )
static

◆ GetLevelEditorModule() [1/2]

FLevelEditorModule & CDD_MenuExtender::GetLevelEditorModule ( )
41{
42 return *this->levelEditorModule;
43}
FLevelEditorModule * levelEditorModule
Definition CDD_MenuExtender.h:29

◆ GetLevelEditorModule() [2/2]

FLevelEditorModule & CDD_MenuExtender::GetLevelEditorModule ( )

◆ Init() [1/2]

void CDD_MenuExtender::Init ( )
17{
18 const FSoftObjectPath ewbpPath("/CircularDependenciesDetector/CircularDep/CircularDependencies_EWBP.CircularDependencies_EWBP");
19 UObject* Blueprint = ewbpPath.TryLoad();
20
21 this->editorWidget = IsValid(Blueprint) ? Cast<UEditorUtilityWidgetBlueprint>(Blueprint) : nullptr;
22 this->registrationName = FName(*(Blueprint->GetPathName() + TEXT("_ActiveTab")));
23
24 this->editorUtilitySubsystem = IsValid(GEditor) ? GEditor->GetEditorSubsystem<UEditorUtilitySubsystem>() : nullptr;
25 FLevelEditorModule& LevelEditorModule = FModuleManager::GetModuleChecked<FLevelEditorModule>(TEXT("LevelEditor"));
26 this->levelEditorModule = &LevelEditorModule;
27}
UEditorUtilitySubsystem * editorUtilitySubsystem
Definition CDD_MenuExtender.h:27
UEditorUtilityWidgetBlueprint * editorWidget
Definition CDD_MenuExtender.h:28
FName registrationName
Definition CDD_MenuExtender.h:26

◆ Init() [2/2]

void CDD_MenuExtender::Init ( )

◆ RegisterContextualMenu() [1/2]

void CDD_MenuExtender::RegisterContextualMenu ( )
46{
47 FContentBrowserModule& ContentBrowserModule = FModuleManager::LoadModuleChecked<FContentBrowserModule>(TEXT("ContentBrowser"));
48 auto& menuExtenders2 = ContentBrowserModule.GetAllPathViewContextMenuExtenders();
49 menuExtenders2.Add(FContentBrowserMenuExtender_SelectedPaths::CreateLambda([this](const TArray<FString>& SelectedPath)
50 {
51 TSharedPtr<FExtender> MenuExtender = MakeShareable(new FExtender());
52
53 MenuExtender->AddMenuExtension("PathContextBulkOperations", EExtensionHook::After, TSharedPtr<FUICommandList>(),
54 FMenuExtensionDelegate::CreateLambda([this, SelectedPath](FMenuBuilder& menuBuilder) // copy of SelectedAssets required
55 {
56 menuBuilder.BeginSection("Circular Dependencies Detector", FText::FromString("Circular Dependencies Detector"));
57 {
58 menuBuilder.AddMenuEntry(
59 FText::FromString("Detect For Selected"),
60 FText::FromString("Start detection from selected assets"),
61 FSlateIcon(),
62 FUIAction(FExecuteAction::CreateLambda([&SelectedPath, this]()
63 {
64 this->SpawnCddTab();
65 UCircularDependenciesLib::parseDelegate.ExecuteIfBound(TArray<FAssetData>(), SelectedPath);
66 })));
67 }
68 menuBuilder.EndSection();
69 menuBuilder.AddMenuSeparator();
70 }));
71
72 return MenuExtender.ToSharedRef();
73 }));
74
75 auto& menuExtenders = ContentBrowserModule.GetAllAssetViewContextMenuExtenders();
76 menuExtenders.Add(FContentBrowserMenuExtender_SelectedAssets::CreateLambda([this](const TArray<FAssetData>& SelectedAssets)
77 {
78 TSharedPtr<FExtender> MenuExtender = MakeShareable(new FExtender());
79
80 MenuExtender->AddMenuExtension("AssetContextReferences", EExtensionHook::After, TSharedPtr<FUICommandList>(),
81 FMenuExtensionDelegate::CreateLambda([this, SelectedAssets](FMenuBuilder& menuBuilder) // copy of SelectedAssets required
82 {
83 menuBuilder.BeginSection("Circular Dependencies Detector", FText::FromString("Circular Dependencies Detector"));
84 {
85 menuBuilder.AddMenuEntry(
86 FText::FromString("Detect For Selected"),
87 FText::FromString("Start detection from selected assets"),
88 FSlateIcon(),
89 FUIAction(FExecuteAction::CreateLambda([&SelectedAssets, this]()
90 {
91 this->SpawnCddTab();
92 UCircularDependenciesLib::parseDelegate.ExecuteIfBound(SelectedAssets, TArray<FString>());
93 })));
94 }
95 menuBuilder.EndSection();
96 menuBuilder.AddMenuSeparator();
97 }));
98 return MenuExtender.ToSharedRef();
99 }));
100}
void SpawnCddTab()
Definition CDD_MenuExtender.cpp:29
static FParseDelegate parseDelegate
Definition CircularDependenciesLib.h:89

◆ RegisterContextualMenu() [2/2]

void CDD_MenuExtender::RegisterContextualMenu ( )

◆ SpawnCddTab() [1/2]

void CDD_MenuExtender::SpawnCddTab ( )
30{
31 if (!this->editorUtilitySubsystem || !this->editorWidget) return;
32
33 UEditorUtilityWidget* UtilityWidget = this->editorUtilitySubsystem->FindUtilityWidgetFromBlueprint(this->editorWidget);
34 if (UtilityWidget)
35 FModuleManager::GetModuleChecked<FLevelEditorModule>(TEXT("LevelEditor")).GetLevelEditorTabManager()->TryInvokeTab(this->registrationName);
36 else
37 this->editorUtilitySubsystem->SpawnAndRegisterTab(this->editorWidget);
38}

◆ SpawnCddTab() [2/2]

void CDD_MenuExtender::SpawnCddTab ( )

Member Data Documentation

◆ editorUtilitySubsystem

UEditorUtilitySubsystem * CDD_MenuExtender::editorUtilitySubsystem = nullptr
private

◆ editorWidget

UEditorUtilityWidgetBlueprint * CDD_MenuExtender::editorWidget = nullptr
private

◆ levelEditorModule

FLevelEditorModule * CDD_MenuExtender::levelEditorModule = nullptr
private

◆ registrationName

FName CDD_MenuExtender::registrationName
private

The documentation for this class was generated from the following files: