You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#rb trivial #jira UE-99463 #preflight 6288fd998828ea88c8aef3d0 #ROBOMERGE-OWNER: robert.manuszewski #ROBOMERGE-AUTHOR: robert.manuszewski #ROBOMERGE-SOURCE: CL 20314896 via CL 20314897 via CL 20314903 via CL 20314904 #ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v948-20297126) [CL 20315214 by robert manuszewski in ue5-main branch]
188 lines
6.0 KiB
C++
188 lines
6.0 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
|
|
#include "UObject/ObjectMacros.h"
|
|
#include "UObject/UObjectGlobals.h"
|
|
#include "UObject/TextProperty.h"
|
|
#include "Textures/SlateIcon.h"
|
|
#include "Framework/MultiBox/MultiBoxDefs.h"
|
|
#include "Styling/SlateTypes.h"
|
|
#include "UObject/UObjectThreadContext.h"
|
|
|
|
#include "ToolMenuMisc.h"
|
|
#include "ToolMenuContext.h"
|
|
#include "ToolMenuSection.h"
|
|
|
|
#include "ToolMenuEntryScript.generated.h"
|
|
|
|
struct FToolMenuEntry;
|
|
struct FToolMenuSection;
|
|
|
|
USTRUCT(BlueprintType, meta=(HasNativeBreak="/Script/ToolMenus.ToolMenuEntryExtensions.BreakScriptSlateIcon", HasNativeMake="/Script/ToolMenus.ToolMenuEntryExtensions.MakeScriptSlateIcon"))
|
|
struct TOOLMENUS_API FScriptSlateIcon
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
FScriptSlateIcon();
|
|
FScriptSlateIcon(const FName InStyleSetName, const FName InStyleName);
|
|
FScriptSlateIcon(const FName InStyleSetName, const FName InStyleName, const FName InSmallStyleName);
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Tool Menus")
|
|
FName StyleSetName;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Tool Menus")
|
|
FName StyleName;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Tool Menus")
|
|
FName SmallStyleName;
|
|
|
|
operator FSlateIcon() const { return GetSlateIcon(); }
|
|
|
|
FSlateIcon GetSlateIcon() const;
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct TOOLMENUS_API FToolMenuEntryScriptDataAdvanced
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
|
|
FToolMenuEntryScriptDataAdvanced();
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Advanced")
|
|
FName TutorialHighlight;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Advanced")
|
|
EMultiBlockType EntryType;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Advanced")
|
|
EUserInterfaceActionType UserInterfaceActionType;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Advanced")
|
|
FName StyleNameOverride;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "SubMenu")
|
|
bool bIsSubMenu;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "SubMenu")
|
|
bool bOpenSubMenuOnClick;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Advanced")
|
|
bool bShouldCloseWindowAfterMenuSelection;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "ToolBar")
|
|
bool bSimpleComboBox;
|
|
};
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct TOOLMENUS_API FToolMenuEntryScriptData
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Identity")
|
|
FName Menu;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Identity")
|
|
FName Section;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Identity")
|
|
FName Name;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Appearance")
|
|
FText Label;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Appearance")
|
|
FText ToolTip;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Appearance")
|
|
FScriptSlateIcon Icon;
|
|
|
|
// Optional identifier used for unregistering a group of menu items
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Advanced")
|
|
FName OwnerName;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Identity")
|
|
FToolMenuInsert InsertPosition;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Advanced")
|
|
FToolMenuEntryScriptDataAdvanced Advanced;
|
|
};
|
|
|
|
UCLASS(Blueprintable, abstract)
|
|
class TOOLMENUS_API UToolMenuEntryScript : public UObject
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
|
|
UFUNCTION(BlueprintImplementableEvent, Category = "Action")
|
|
void Execute(const FToolMenuContext& Context);
|
|
|
|
UFUNCTION(BlueprintNativeEvent, Category = "Advanced")
|
|
bool CanExecute(const FToolMenuContext& Context) const;
|
|
virtual bool CanExecute_Implementation(const FToolMenuContext& Context) const { return true; }
|
|
|
|
UFUNCTION(BlueprintNativeEvent, Category = "Advanced")
|
|
ECheckBoxState GetCheckState(const FToolMenuContext& Context) const;
|
|
virtual ECheckBoxState GetCheckState_Implementation(const FToolMenuContext& Context) const { return ECheckBoxState::Undetermined; }
|
|
|
|
UFUNCTION(BlueprintNativeEvent, Category = "Advanced")
|
|
bool IsVisible(const FToolMenuContext& Context) const;
|
|
virtual bool IsVisible_Implementation(const FToolMenuContext& Context) const { return true; }
|
|
|
|
UFUNCTION(BlueprintNativeEvent, Category = "Advanced")
|
|
FText GetLabel(const FToolMenuContext& Context) const;
|
|
virtual FText GetLabel_Implementation(const FToolMenuContext& Context) const { return Data.Label; }
|
|
|
|
UFUNCTION(BlueprintNativeEvent, Category = "Advanced")
|
|
FText GetToolTip(const FToolMenuContext& Context) const;
|
|
virtual FText GetToolTip_Implementation(const FToolMenuContext& Context) const { return Data.ToolTip; }
|
|
|
|
UFUNCTION(BlueprintNativeEvent, Category = "Advanced")
|
|
FScriptSlateIcon GetIcon(const FToolMenuContext& Context) const;
|
|
virtual FScriptSlateIcon GetIcon_Implementation(const FToolMenuContext& Context) const { return Data.Icon; }
|
|
|
|
UFUNCTION(BlueprintImplementableEvent, Category = "Advanced")
|
|
void ConstructMenuEntry(UToolMenu* Menu, const FName SectionName, const FToolMenuContext& Context);
|
|
|
|
UFUNCTION(BlueprintCallable, Category = "Advanced")
|
|
void RegisterMenuEntry();
|
|
|
|
UFUNCTION(BlueprintCallable, Category = "Advanced")
|
|
void InitEntry(const FName OwnerName, const FName Menu, const FName Section, const FName Name, const FText& Label = FText(), const FText& ToolTip = FText());
|
|
|
|
FORCEINLINE bool CanSafelyRouteCall() { return !(GIntraFrameDebuggingGameThread || IsUnreachable() || FUObjectThreadContext::Get().IsRoutingPostLoad); }
|
|
|
|
static UToolMenuEntryScript* GetIfCanSafelyRouteCall(const TWeakObjectPtr<UToolMenuEntryScript>& InWeak);
|
|
|
|
private:
|
|
|
|
friend struct FToolMenuSection;
|
|
friend class UToolMenus;
|
|
friend class FPopulateMenuBuilderWithToolMenuEntry;
|
|
|
|
TAttribute<FText> CreateLabelAttribute(FToolMenuContext& Context);
|
|
|
|
TAttribute<FText> CreateToolTipAttribute(FToolMenuContext& Context);
|
|
|
|
TAttribute<FSlateIcon> CreateIconAttribute(FToolMenuContext& Context);
|
|
|
|
void ToMenuEntry(FToolMenuEntry& Output);
|
|
|
|
bool IsDynamicConstruct() const;
|
|
|
|
FSlateIcon GetSlateIcon(const FToolMenuContext& Context) const;
|
|
|
|
public:
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Data")
|
|
FToolMenuEntryScriptData Data;
|
|
};
|