Skip to content

Commit aa29dc9

Browse files
committed
UI Extender
1 parent 5592efa commit aa29dc9

File tree

4 files changed

+85
-10
lines changed

4 files changed

+85
-10
lines changed

Source/JavascriptEditor/JavascriptEditorLibrary.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
#include "HotReloadInterface.h"
88
#include "JavascriptWindow.h"
99
#include "Editor/PropertyEditor/Public/PropertyEditorModule.h"
10+
#include "Toolkits/AssetEditorToolkit.h"
11+
#include "LevelEditor.h"
1012

1113
#if WITH_EDITOR
1214
ULandscapeInfo* UJavascriptEditorLibrary::GetLandscapeInfo(ALandscape* Landscape, bool bSpawnNewActor)
@@ -577,4 +579,43 @@ void UJavascriptEditorLibrary::CreatePropertyEditorToolkit(TArray<UObject*> Obje
577579
FPropertyEditorModule& PropertyEditorModule = FModuleManager::LoadModuleChecked<FPropertyEditorModule>("PropertyEditor");
578580
PropertyEditorModule.CreatePropertyEditorToolkit(EToolkitMode::Standalone, TSharedPtr<IToolkitHost>(), ObjectsForPropertiesMenu);
579581
}
582+
583+
static FName NAME_LevelEditor("LevelEditor");
584+
static FName NAME_MaterialEditor("MaterialEditor");
585+
586+
FJavascriptExtensibilityManager UJavascriptEditorLibrary::GetMenuExtensibilityManager(FName What)
587+
{
588+
if (What == NAME_LevelEditor)
589+
{
590+
FLevelEditorModule& LevelEditor = FModuleManager::GetModuleChecked<FLevelEditorModule>(NAME_LevelEditor);
591+
return {LevelEditor.GetMenuExtensibilityManager()};
592+
}
593+
return FJavascriptExtensibilityManager();
594+
}
595+
596+
FJavascriptExtensibilityManager UJavascriptEditorLibrary::GetToolBarExtensibilityManager(FName What)
597+
{
598+
if (What == NAME_LevelEditor)
599+
{
600+
FLevelEditorModule& LevelEditor = FModuleManager::GetModuleChecked<FLevelEditorModule>(NAME_LevelEditor);
601+
return{ LevelEditor.GetToolBarExtensibilityManager() };
602+
}
603+
return FJavascriptExtensibilityManager();
604+
}
605+
606+
void UJavascriptEditorLibrary::AddExtender(FJavascriptExtensibilityManager Manager, FJavascriptExtender Extender)
607+
{
608+
if (Manager.Handle.IsValid() && Extender.Handle.IsValid())
609+
{
610+
Manager->AddExtender(Extender.Handle);
611+
}
612+
}
613+
614+
void UJavascriptEditorLibrary::RemoveExtender(FJavascriptExtensibilityManager Manager, FJavascriptExtender Extender)
615+
{
616+
if (Manager.Handle.IsValid() && Extender.Handle.IsValid())
617+
{
618+
Manager->RemoveExtender(Extender.Handle);
619+
}
620+
}
580621
#endif

Source/JavascriptEditor/JavascriptEditorLibrary.h

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,25 @@ struct FJavascriptPDI
8383
FPrimitiveDrawInterface* PDI;
8484
};
8585

86+
// forward decl
87+
class FExtensibilityManager;
88+
89+
USTRUCT()
90+
struct FJavascriptExtensibilityManager
91+
{
92+
GENERATED_BODY()
93+
94+
public:
95+
#if WITH_EDITOR
96+
FExtensibilityManager* operator -> () const
97+
{
98+
return Handle.Get();
99+
}
100+
101+
TSharedPtr<FExtensibilityManager> Handle;
102+
#endif
103+
};
104+
86105
/**
87106
*
88107
*/
@@ -329,5 +348,17 @@ class JAVASCRIPTEDITOR_API UJavascriptEditorLibrary : public UBlueprintFunctionL
329348

330349
UFUNCTION(BlueprintCallable, Category = "Javascript | Editor")
331350
static void CreatePropertyEditorToolkit(TArray<UObject*> ObjectsForPropertiesMenu);
351+
352+
UFUNCTION(BlueprintCallable, Category = "Javascript | Editor")
353+
static FJavascriptExtensibilityManager GetMenuExtensibilityManager(FName What);
354+
355+
UFUNCTION(BlueprintCallable, Category = "Javascript | Editor")
356+
static FJavascriptExtensibilityManager GetToolBarExtensibilityManager(FName What);
357+
358+
UFUNCTION(BlueprintCallable, Category = "Javascript | Editor")
359+
static void AddExtender(FJavascriptExtensibilityManager Manager, FJavascriptExtender Extender);
360+
361+
UFUNCTION(BlueprintCallable, Category = "Javascript | Editor")
362+
static void RemoveExtender(FJavascriptExtensibilityManager Manager, FJavascriptExtender Extender);
332363
#endif
333364
};

Source/JavascriptUMG/JavascriptMenuLibrary.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -165,11 +165,6 @@ FJavascriptUICommandInfo UJavascriptMenuLibrary::UI_COMMAND_Function(FJavascript
165165
return Out;
166166
}
167167

168-
FJavascriptExtender UJavascriptMenuLibrary::CreateExtender()
169-
{
170-
return{ MakeShareable<FExtender>(new FExtender) };
171-
}
172-
173168
FJavascriptExtensionBase UJavascriptMenuLibrary::AddToolBarExtension(FJavascriptExtender Extender, FName ExtensionHook, EJavascriptExtensionHook::Type HookPosition, FJavascriptUICommandList CommandList, FJavascriptFunction Function)
174169
{
175170
auto Copy = new FJavascriptFunction;
@@ -233,4 +228,12 @@ FJavascriptExtender UJavascriptMenuLibrary::Combine(const TArray<FJavascriptExte
233228
_Extenders.Add(Extender.Handle);
234229
}
235230
return{ FExtender::Combine(_Extenders) };
236-
}
231+
}
232+
233+
FJavascriptExtender::FJavascriptExtender()
234+
: Handle(new FExtender)
235+
{}
236+
237+
FJavascriptExtender::FJavascriptExtender(TSharedPtr<FExtender> Extender)
238+
: Handle(Extender)
239+
{}

Source/JavascriptUMG/JavascriptMenuLibrary.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,14 @@ struct FJavascriptUICommandInfo
9191
};
9292

9393
USTRUCT()
94-
struct FJavascriptExtender
94+
struct JAVASCRIPTUMG_API FJavascriptExtender
9595
{
9696
GENERATED_BODY()
9797

9898
public:
99+
FJavascriptExtender();
100+
FJavascriptExtender(TSharedPtr<FExtender> Extender);
101+
99102
FExtender* operator -> () const
100103
{
101104
return Handle.Get();
@@ -144,9 +147,6 @@ class JAVASCRIPTUMG_API UJavascriptMenuLibrary : public UBlueprintFunctionLibrar
144147
UFUNCTION(BlueprintCallable, Category = "Scripting | Javascript")
145148
static void CreateMenuBarBuilder(FJavascriptUICommandList CommandList, FJavascriptFunction Function);
146149

147-
UFUNCTION(BlueprintCallable, Category = "Scripting | Javascript")
148-
static FJavascriptExtender CreateExtender();
149-
150150
UFUNCTION(BlueprintCallable, Category = "Scripting | Javascript")
151151
static FJavascriptExtensionBase AddToolBarExtension(FJavascriptExtender Extender, FName ExtensionHook, EJavascriptExtensionHook::Type HookPosition, FJavascriptUICommandList CommandList, FJavascriptFunction Function);
152152

0 commit comments

Comments
 (0)