Files
robert manuszewski f8a812a32f Converting hardcoded short class/enum names to pathnames ahead of ANY_PACKAGE removal
#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]
2022-05-22 10:30:02 -04:00

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;
};