UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ToolMenuBase.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7
8#include "ToolMenuBase.generated.h"
9
10class FMultiBox;
11
12UENUM()
19
20USTRUCT()
33
34USTRUCT()
47
48USTRUCT()
56
57/*
58 * A menu profile is a way for systems to modify instances of a menu by showing/hiding specific items. You can have multiple profiles active on
59 * a single menu at the same time.
60 */
61USTRUCT()
63{
65
66 UPROPERTY()
68
69 UPROPERTY()
71
72 UPROPERTY()
74
75 UPROPERTY()
76 TArray<FName> SuppressExtenders;
77
78 FNamePermissionList MenuPermissions;
79
81 SLATE_API const FCustomizedToolMenuEntry* FindEntry(const FName InEntryName) const;
83 SLATE_API ECustomizedToolMenuVisibility GetEntryVisiblity(const FName InSectionName) const;
84 SLATE_API bool IsEntryHidden(const FName InEntryName) const;
85
87 SLATE_API const FCustomizedToolMenuSection* FindSection(const FName InSectionName) const;
89 SLATE_API ECustomizedToolMenuVisibility GetSectionVisiblity(const FName InSectionName) const;
90 SLATE_API bool IsSectionHidden(const FName InSectionName) const;
91
92 SLATE_API void SetSuppressExtenders(const FName InOwnerName, const bool bInSuppress);
93 SLATE_API bool IsSuppressExtenders() const;
94
95};
96
97/*
98 * A menu customization is a specialization of menu profiles - that allows for advanced behavior such as modifying the order of sections/entries
99 * A menu can only have one customization active at a time
100 */
101USTRUCT()
103{
105
106 SLATE_API FName GetEntrySectionName(const FName InEntryName) const;
107
108 UPROPERTY()
110
111 UPROPERTY()
112 TArray<FName> SectionOrder;
113};
114
115/*
116 * Structure to describe a menu profile for the whole hierarchy of a menu
117 */
125
126/*
127 * Structure to describe the menu customization for the whole hierarchy of a menu
128 */
140
141UCLASS(Abstract, MinimalAPI)
143{
145
146public:
147
148 virtual bool IsEditing() const { return false; }
149 virtual FName GetSectionName(const FName InEntryName) const { return NAME_None; }
150
151 virtual bool ContainsSection(const FName InName) const { return false; }
152 virtual bool ContainsEntry(const FName InName) const { return false; }
153
154 virtual FCustomizedToolMenu* FindMenuCustomization() const { return nullptr; }
155 virtual FCustomizedToolMenu* AddMenuCustomization() const { return nullptr; }
157
158 virtual FToolMenuProfile* FindMenuProfile(const FName& ProfileName) const { return nullptr; }
159 virtual FToolMenuProfile* AddMenuProfile(const FName& ProfileName) const { return nullptr; }
161
163 virtual void OnMenuDestroyed() {}
164};
165
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
ECustomizedToolMenuVisibility
Definition ToolMenuBase.h:14
Definition MultiBox.h:332
Definition NamePermissionList.h:22
Definition NameTypes.h:617
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SharedPointer.h:153
Definition Object.h:95
Definition ToolMenuBase.h:143
virtual void UpdateMenuCustomizationFromMultibox(const TSharedRef< const FMultiBox > &InMultiBox)
Definition ToolMenuBase.h:162
virtual FToolMenuProfile * FindMenuProfile(const FName &ProfileName) const
Definition ToolMenuBase.h:158
virtual FCustomizedToolMenuHierarchy GetMenuCustomizationHierarchy() const
Definition ToolMenuBase.h:156
virtual FToolMenuProfile * AddMenuProfile(const FName &ProfileName) const
Definition ToolMenuBase.h:159
virtual void OnMenuDestroyed()
Definition ToolMenuBase.h:163
virtual bool ContainsEntry(const FName InName) const
Definition ToolMenuBase.h:152
virtual FCustomizedToolMenu * AddMenuCustomization() const
Definition ToolMenuBase.h:155
virtual FName GetSectionName(const FName InEntryName) const
Definition ToolMenuBase.h:149
virtual FCustomizedToolMenu * FindMenuCustomization() const
Definition ToolMenuBase.h:154
virtual bool IsEditing() const
Definition ToolMenuBase.h:148
virtual FToolMenuProfileHierarchy GetMenuProfileHierarchy(const FName &ProfileName) const
Definition ToolMenuBase.h:160
virtual bool ContainsSection(const FName InName) const
Definition ToolMenuBase.h:151
Definition ToolMenuBase.h:22
Definition ToolMenuBase.h:130
SLATE_API FName GetEntrySectionName(const FName InEntryName) const
Definition ToolMenuCustomization.cpp:181
SLATE_API bool IsSuppressExtenders() const
Definition ToolMenuCustomization.cpp:244
SLATE_API FCustomizedToolMenu GenerateFlattened() const
Definition ToolMenuCustomization.cpp:260
SLATE_API bool IsEntryHidden(const FName InEntryName) const
Definition ToolMenuCustomization.cpp:198
TArray< const FCustomizedToolMenu * > RuntimeHierarchy
Definition ToolMenuBase.h:138
SLATE_API bool IsSectionHidden(const FName InSectionName) const
Definition ToolMenuCustomization.cpp:221
TArray< const FCustomizedToolMenu * > Hierarchy
Definition ToolMenuBase.h:137
Definition ToolMenuBase.h:50
Definition ToolMenuBase.h:36
Definition ToolMenuBase.h:103
Definition ToolMenuBase.h:119
TArray< const FToolMenuProfile * > ProfileHierarchy
Definition ToolMenuBase.h:122
TArray< const FToolMenuProfile * > RuntimeProfileHierarchy
Definition ToolMenuBase.h:123
Definition ToolMenuBase.h:63