Files
UnrealEngineUWP/Engine/Source/Editor/MainFrame/Private/Frame/MainFrameActions.h
robb surridge 1eeade615d Reorganizes Help menus and cleans up external links in BaseEditor.ini.
Disables the tutorial system in order to remove its entry points from menus.
#jira UE-136343
#rb lauren.barnes

#ROBOMERGE-AUTHOR: robb.surridge
#ROBOMERGE-SOURCE: CL 18418989 in //UE5/Release-5.0/... via CL 18419008
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v897-18405271)

[CL 18419027 by robb surridge in ue5-release-engine-test branch]
2021-12-09 10:02:28 -05:00

268 lines
8.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "SlateFwd.h"
#include "HAL/IConsoleManager.h"
#include "Input/Reply.h"
#include "Framework/Commands/Commands.h"
class FUICommandList;
struct FRecentProjectFile;
/**
* Unreal editor main frame actions
*/
class FMainFrameCommands : public TCommands<FMainFrameCommands>
{
public:
/** FMainFrameCommands constructor */
FMainFrameCommands();
/** List of all of the main frame commands */
static TSharedRef< FUICommandList > ActionList;
TSharedPtr< FUICommandInfo > SaveAll;
TSharedPtr< FUICommandInfo > Exit;
TSharedPtr< FUICommandInfo > ChooseFilesToSave;
TSharedPtr< FUICommandInfo > ViewChangelists;
TSharedPtr< FUICommandInfo > SubmitContent;
TSharedPtr< FUICommandInfo > ConnectToSourceControl;
TSharedPtr< FUICommandInfo > ChangeSourceControlSettings;
TSharedPtr< FUICommandInfo > NewProject;
TSharedPtr< FUICommandInfo > OpenProject;
TSharedPtr< FUICommandInfo > AddCodeToProject;
TSharedPtr< FUICommandInfo > OpenIDE;
TSharedPtr< FUICommandInfo > RefreshCodeProject;
TSharedPtr< FUICommandInfo > ZipUpProject;
TSharedPtr< FUICommandInfo > LocalizeProject;
TArray< TSharedPtr< FUICommandInfo > > SwitchProjectCommands;
TSharedPtr< FUICommandInfo > OpenContentBrowser;
TSharedPtr< FUICommandInfo > OpenLevelEditor;
TSharedPtr< FUICommandInfo > OpenOutputLog;
TSharedPtr< FUICommandInfo > OpenMessageLog;
TSharedPtr< FUICommandInfo > OpenKeybindings;
TSharedPtr< FUICommandInfo > OpenSessionManagerApp;
TSharedPtr< FUICommandInfo > OpenDeviceManagerApp;
TSharedPtr< FUICommandInfo > OpenToolbox;
TSharedPtr< FUICommandInfo > OpenDebugView;
TSharedPtr< FUICommandInfo > OpenClassViewer;
TSharedPtr< FUICommandInfo > OpenWidgetReflector;
TSharedPtr< FUICommandInfo > OpenMarketplace;
TSharedPtr< FUICommandInfo > DocumentationHome;
TSharedPtr< FUICommandInfo > VisitOnlineLearning;
TSharedPtr< FUICommandInfo > BrowseAPIReference;
TSharedPtr< FUICommandInfo > BrowseCVars;
TSharedPtr< FUICommandInfo > VisitForums;
TSharedPtr< FUICommandInfo > VisitSearchForAnswersPage;
TSharedPtr< FUICommandInfo > ReportABug;
TSharedPtr< FUICommandInfo > OpenIssueTracker;
TSharedPtr< FUICommandInfo > VisitSupportWebSite;
TSharedPtr< FUICommandInfo > VisitEpicGamesDotCom;
TSharedPtr< FUICommandInfo > AboutUnrealEd;
TSharedPtr< FUICommandInfo > CreditsUnrealEd;
// Layout
TSharedPtr< FUICommandInfo > ImportLayout;
TSharedPtr< FUICommandInfo > SaveLayoutAs;
TSharedPtr< FUICommandInfo > ExportLayout;
TSharedPtr< FUICommandInfo > RemoveUserLayouts;
TSharedPtr< FUICommandInfo > ToggleFullscreen;
virtual void RegisterCommands() override;
private:
/** Console command for toggling full screen. We need this to expose the full screen toggle action to
the game UI system for play-in-editor view ports */
FAutoConsoleCommand ToggleFullscreenConsoleCommand;
void RegisterLayoutCommands();
};
/**
* Implementation of various main frame action callback functions
*/
class FMainFrameActionCallbacks
{
public:
/** Global handler for unhandled key-down events in the editor. */
static FReply OnUnhandledKeyDownEvent(const FKeyEvent& InKeyEvent);
/**
* The default can execute action for all commands unless they override it
* By default commands cannot be executed if the application is in K2 debug mode.
*/
static bool DefaultCanExecuteAction();
/** Determine whether we are allowed to save the world at this moment */
static bool CanSaveWorld();
/** Saves all levels and asset packages */
static void SaveAll();
/** Opens a dialog to choose packages to save */
static void ChoosePackagesToSave();
/** Opens a dialog to view the pending changelists */
static void ViewChangelists();
/** Determines whether we can show the changelist view */
static bool CanViewChangelists();
/** Enable source control features */
static void ConnectToSourceControl();
/** Quits the application */
static void Exit();
/** Edit menu commands */
static bool Undo_CanExecute();
static bool Redo_CanExecute();
/**
* Called when many of the menu items in the main frame context menu are clicked
*
* @param Command The command to execute
*/
static void ExecuteExecCommand( FString Command );
/** Opens up the specified slate window by name after loading the module */
static void OpenSlateApp_ViaModule( FName AppName, FName ModuleName );
/** Opens up the specified slate window by name */
static void OpenSlateApp( FName AppName );
/** Checks if a slate window is already open */
static bool OpenSlateApp_IsChecked( FName AppName );
/** Visits the report a bug page */
static void ReportABug();
/** Opens the issue tracker page */
static void OpenIssueTracker();
/** Visits the "search for answers" page on UDN */
static void VisitSearchForAnswersPage();
/** Visits the UDN support web site */
static void VisitSupportWebSite();
/** Visits EpicGames.com */
static void VisitEpicGamesDotCom();
/** Opens the documentation home page*/
static void DocumentationHome();
/** Visits The Unreal Online Learning page*/
static void VisitOnlineLearning();
/** Opens the API documentation site */
static void BrowseAPIReference();
/** Creates an HTML file to browse the console variables and commands */
static void BrowseCVars();
static void VisitForums();
static void AboutUnrealEd_Execute();
static void CreditsUnrealEd_Execute();
static void OpenWidgetReflector_Execute();
/** Opens the new project dialog */
static void NewProject( bool bAllowProjectOpening, bool bAllowProjectCreate );
/** Adds code to the current project if it does not already have any */
static void AddCodeToProject();
/** Checks whether a menu action for packaging the project can execute. */
static bool PackageProjectCanExecute( const FName PlatformInfoName );
/** Refresh the project in the current IDE */
static void RefreshCodeProject();
/** Determines whether the project is a code project */
static bool IsCodeProject();
/** Opens an IDE to edit c++ code */
static void OpenIDE();
/** Determines whether we can open the IDE to edit c++ code */
static bool CanOpenIDE();
/** Zips up the project */
static void ZipUpProject();
/** Opens the Project Localization Dashboard */
static void LocalizeProject();
/** Restarts the editor and switches projects */
static void SwitchProjectByIndex( int32 ProjectIndex );
/** Opens the specified project file or game. Restarts the editor */
static void SwitchProject(const FString& GameOrProjectFileName);
/** Opens the directory where the backup for preferences is stored. */
static void OpenBackupDirectory( FString BackupFile );
/** Toggle the level editor's fullscreen mode */
static void ToggleFullscreen_Execute();
/** Is the level editor fullscreen? */
static bool FullScreen_IsChecked();
/**
* Checks if the selected project can be switched to
*
* @param InProjectIndex Index from the available projects
*
* @return true if the selected project can be switched to (i.e. it's not the current project)
*/
static bool CanSwitchToProject( int32 InProjectIndex );
/**
* Checks which Switch Project sub menu entry should be checked
*
* @param InProjectIndex Index from the available projects
*
* @return true if the menu entry should be checked
*/
static bool IsSwitchProjectChecked( int32 InProjectIndex );
/** Gathers all available projects the user can switch to from main menu */
static void CacheProjectNames();
/** Opens the marketplace */
static void OpenMarketplace();
public:
// List of projects that the user can switch to.
static TArray<FRecentProjectFile> RecentProjects;
protected:
/**
* Adds a message to the message log.
*
* @param Text The main message text.
* @param Detail The detailed description.
* @param TutorialLink A link to an associated tutorial.
* @param DocumentationLink A link to documentation.
*/
static void AddMessageLog( const FText& Text, const FText& Detail, const FString& TutorialLink, const FString& DocumentationLink );
private:
/** The notification in place while we choose packages to check in */
static TWeakPtr<SNotificationItem> ChoosePackagesToCheckInNotification;
};