Files
UnrealEngine/Engine/Source/Editor/UMGEditor/Public/UMGEditorModule.h
2025-05-18 13:04:45 +08:00

87 lines
3.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Modules/ModuleInterface.h"
#include "Toolkits/AssetEditorToolkit.h"
#include "IHasClipboardExtensibility.h"
#include "IHasDesignerExtensibility.h"
#include "IHasPropertyBindingExtensibility.h"
#include "IHasWidgetDragDropExtensibility.h"
#include "IHasWidgetContextMenuExtensibility.h"
#include "UObject/TopLevelAssetPath.h"
extern const FName UMGEditorAppIdentifier;
class FWidgetBlueprintApplicationMode;
class FWidgetBlueprintEditor;
class FWorkflowAllowedTabSet;
class IBlueprintWidgetCustomizationExtender;
class IPropertyTypeCustomization;
/** The public interface of the UMG editor module. */
class IUMGEditorModule :
public IModuleInterface,
public IHasMenuExtensibility,
public IHasToolBarExtensibility,
public IHasDesignerExtensibility,
public IHasPropertyBindingExtensibility,
public IHasClipboardExtensibility,
public IHasWidgetDragDropExtensibility,
public IHasWidgetContextMenuExtensibility
{
public:
virtual class FWidgetBlueprintCompiler* GetRegisteredCompiler() = 0;
DECLARE_EVENT_TwoParams(IUMGEditorModule, FOnRegisterTabs, const FWidgetBlueprintApplicationMode&, FWorkflowAllowedTabSet&);
virtual FOnRegisterTabs& OnRegisterTabsForEditor() = 0;
DECLARE_DELEGATE_RetVal_TwoParams(TSharedRef<FExtender>, FWidgetEditorToolbarExtender, const TSharedRef<FUICommandList>, TSharedRef<FWidgetBlueprintEditor>);
/** Add Toolbar extender for widget editor, used by widget tool palette. */
virtual void AddWidgetEditorToolbarExtender(FWidgetEditorToolbarExtender&& InToolbarExtender) = 0;
/** Get current toolbar extenders for widget editor */
virtual TArrayView<FWidgetEditorToolbarExtender> GetAllWidgetEditorToolbarExtenders() = 0;
/** Add customization for widget */
virtual void AddWidgetCustomizationExtender(const TSharedRef<IBlueprintWidgetCustomizationExtender>& WidgetCustomizationExtender) = 0;
/** Remove customization for widget */
virtual void RemoveWidgetCustomizationExtender(const TSharedRef<IBlueprintWidgetCustomizationExtender>& WidgetCustomizationExtender) = 0;
/** Get current customization extenders for widget */
virtual TArrayView<TSharedRef<IBlueprintWidgetCustomizationExtender>> GetAllWidgetCustomizationExtenders() = 0;
/** Support for general layout extenders */
DECLARE_EVENT_OneParam(IUMGEditorModule, FOnRegisterLayoutExtensions, FLayoutExtender&);
virtual FOnRegisterLayoutExtensions& OnRegisterLayoutExtensions() = 0;
DECLARE_DELEGATE_RetVal_OneParam(TSharedRef<IPropertyTypeCustomization>, FOnGetInstancePropertyTypeCustomizationInstance, TWeakPtr<FWidgetBlueprintEditor> Editor);
/** Add an instance customization to the widget property view. */
virtual void RegisterInstancedCustomPropertyTypeLayout(FTopLevelAssetPath Type, FOnGetInstancePropertyTypeCustomizationInstance) = 0;
/** Remove an instance customization to the widget property view. */
virtual void UnregisterInstancedCustomPropertyTypeLayout(FTopLevelAssetPath Type) = 0;
struct FCustomPropertyTypeLayout
{
FTopLevelAssetPath Type;
FOnGetInstancePropertyTypeCustomizationInstance Delegate;
};
/** Remove an instance customization to the widget property view. */
virtual TArrayView<const FCustomPropertyTypeLayout> GetAllInstancedCustomPropertyTypeLayout() const = 0;
/** Arguments for the OnBlueprintCreated callback. */
struct FWidgetBlueprintCreatedArgs
{
UClass* ParentClass = nullptr;
UWidgetBlueprint* Blueprint = nullptr;
};
DECLARE_EVENT_OneParam(IUMGEditorModule, FOnWidgetBlueprintCreated, FWidgetBlueprintCreatedArgs);
/** Callback when a WidgetBlueprint is created by the factory. */
virtual FOnWidgetBlueprintCreated& OnWidgetBlueprintCreated() = 0;
};