Files
UnrealEngineUWP/Engine/Source/Editor/CommonMenuExtensions/Public/ShowFlagMenuCommands.h
sebastian arleryd 35cef7d5d7 Extract functions for building the Common Show Flags and All Show Flags sections of the viewport toolbar "Show" menu
We need this for sharing code with the new level editor viewport toolbar

#jira UE-212284
#rb brooke.hubert

[CL 34498671 by sebastian arleryd in ue5-main branch]
2024-06-19 10:15:09 -04:00

77 lines
2.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Containers/Array.h"
#include "EditorViewportClient.h"
#include "Framework/Commands/Commands.h"
#include "Framework/Commands/UICommandInfo.h"
#include "HAL/Platform.h"
#include "Internationalization/Text.h"
#include "ShowFlagFilter.h"
#include "ShowFlags.h"
#include "Templates/Function.h"
#include "Templates/SharedPointer.h"
#include "Textures/SlateIcon.h"
#include "UObject/NameTypes.h"
class FEditorViewportClient;
class FShowFlagData;
class FUICommandInfo;
class FUICommandList;
class UToolMenu;
struct FToolMenuSection;
class COMMONMENUEXTENSIONS_API FShowFlagMenuCommands : public TCommands<FShowFlagMenuCommands>
{
public:
struct FShowFlagCommand
{
FEngineShowFlags::EShowFlag FlagIndex;
TSharedPtr<FUICommandInfo> ShowMenuItem;
FText LabelOverride;
FShowFlagCommand(FEngineShowFlags::EShowFlag InFlagIndex, const TSharedPtr<FUICommandInfo>& InShowMenuItem, const FText& InLabelOverride)
: FlagIndex(InFlagIndex),
ShowMenuItem(InShowMenuItem),
LabelOverride(InLabelOverride)
{
}
FShowFlagCommand(FEngineShowFlags::EShowFlag InFlagIndex, const TSharedPtr<FUICommandInfo>& InShowMenuItem)
: FlagIndex(InFlagIndex),
ShowMenuItem(InShowMenuItem),
LabelOverride()
{
}
};
FShowFlagMenuCommands();
virtual void RegisterCommands() override;
void BindCommands(FUICommandList& CommandList, const TSharedPtr<FEditorViewportClient>& Client) const;
void BuildShowFlagsMenu(UToolMenu* Menu, const FShowFlagFilter& Filter = FShowFlagFilter(FShowFlagFilter::IncludeAllFlagsByDefault)) const;
void PopulateCommonShowFlagsSection(
FToolMenuSection& Section, const FShowFlagFilter& Filter = FShowFlagFilter(FShowFlagFilter::IncludeAllFlagsByDefault)
) const;
void PopulateAllShowFlagsSection(
FToolMenuSection& Section, const FShowFlagFilter& Filter = FShowFlagFilter(FShowFlagFilter::IncludeAllFlagsByDefault)
) const;
private:
static void StaticCreateShowFlagsSubMenu(UToolMenu* Menu, TArray<uint32> FlagIndices, int32 EntryOffset);
static void ToggleShowFlag(TWeakPtr<FEditorViewportClient> WeakClient, FEngineShowFlags::EShowFlag EngineShowFlagIndex);
static bool IsShowFlagEnabled(TWeakPtr<FEditorViewportClient> WeakClient, FEngineShowFlags::EShowFlag EngineShowFlagIndex);
FSlateIcon GetShowFlagIcon(const FShowFlagData& Flag) const;
void CreateShowFlagCommands();
void UpdateCustomShowFlags() const;
void CreateSubMenuIfRequired(FToolMenuSection& Section, const FShowFlagFilter& Filter, EShowFlagGroup Group, const FName SubMenuName, const FText& MenuLabel, const FText& ToolTip, const FName IconName) const;
void CreateShowFlagsSubMenu(UToolMenu* Menu, TArray<uint32> MenuCommands, int32 EntryOffset) const;
TArray<FShowFlagCommand> ShowFlagCommands;
bool bCommandsInitialised;
};