// Copyright Epic Games, Inc. All Rights Reserved #pragma once #include "CoreMinimal.h" #include "Insights/IUnrealInsightsModule.h" #include "Framework/Docking/TabManager.h" namespace Trace { class FStoreService; class IAnalysisService; class IModuleService; } // namespace Trace class SDockTab; class FSpawnTabArgs; class SWindow; /** * Implements the Trace Insights module. */ class FTraceInsightsModule: public IUnrealInsightsModule { public: virtual void StartupModule() override; virtual void ShutdownModule() override; virtual bool SupportsDynamicReloading() override { return false; } virtual void CreateDefaultStore() override; virtual Trace::FStoreClient* GetStoreClient() override; virtual bool ConnectToStore(const TCHAR* InStoreHost, uint32 InStorePort) override; virtual void CreateSessionBrowser(bool bAllowDebugTools, bool bSingleProcess) override; virtual void CreateSessionViewer(bool bAllowDebugTools) override; virtual TSharedPtr GetAnalysisSession() const override; virtual void StartAnalysisForTrace(uint32 InTraceId, bool InAutoQuit = false) override; virtual void StartAnalysisForLastLiveSession() override; virtual void StartAnalysisForTraceFile(const TCHAR* InTraceFile, bool InAutoQuit = false) override; virtual void ShutdownUserInterface() override; virtual void RegisterComponent(TSharedPtr Component) override; virtual void UnregisterComponent(TSharedPtr Component) override; virtual void RegisterMajorTabConfig(const FName& InMajorTabId, const FInsightsMajorTabConfig& InConfig) override; virtual void UnregisterMajorTabConfig(const FName& InMajorTabId) override; virtual FOnInsightsMajorTabCreated& OnMajorTabCreated() override { return OnInsightsMajorTabCreatedDelegate; } virtual FOnRegisterMajorTabExtensions& OnRegisterMajorTabExtension(const FName& InMajorTabId) override; virtual const FInsightsMajorTabConfig& FindMajorTabConfig(const FName& InMajorTabId) const override; const FOnRegisterMajorTabExtensions* FindMajorTabLayoutExtension(const FName& InMajorTabId) const; /** Retrieve ini path for saving persistent layout data. */ static const FString& GetUnrealInsightsLayoutIni(); /** Set the ini path for saving persistent layout data. */ virtual void SetUnrealInsightsLayoutIni(const FString& InIniPath) override; virtual void ScheduleCommand(const FString& InCmd) override; virtual void InitializeTesting(bool InInitAutomationModules, bool InAutoQuit) override; protected: void InitTraceStore(); void RegisterTabSpawners(); void UnregisterTabSpawners(); void AddAreaForSessionViewer(TSharedRef Layout); void AddAreaForWidgetReflector(TSharedRef Layout, bool bAllowDebugTools); /** Callback called when a major tab is closed. */ void OnTabBeingClosed(TSharedRef TabBeingClosed); /** Start Page */ TSharedRef SpawnStartPageTab(const FSpawnTabArgs& Args); /** Session Info */ TSharedRef SpawnSessionInfoTab(const FSpawnTabArgs& Args); void OnWindowClosedEvent(const TSharedRef&); protected: TUniquePtr StoreService; TSharedPtr TraceAnalysisService; TSharedPtr TraceModuleService; TMap TabConfigs; TMap MajorTabExtensionDelegates; FOnInsightsMajorTabCreated OnInsightsMajorTabCreatedDelegate; TSharedPtr PersistentLayout; static FString UnrealInsightsLayoutIni; TArray> Components; };