#include "DTFluxAPIStatusModule.h" #include "LevelEditor.h" #include "widgets/DTFluxStatusWidget.h" #include "widgets/styles/DTFluxStatusStyle.h" #define LOCTEXT_NAMESPACE "FDTFluxAPIStatusModule" DEFINE_LOG_CATEGORY(logDTFluxStatus); FName DTFLUXAPISTATUS_API FDTFluxAPIStatusModule::StatusTabId = "DTFluxStatusTab"; FText DTFLUXAPISTATUS_API FDTFluxAPIStatusModule::StatusTabDisplayName = FText::FromString(TEXT("DTFlux Status")); void DTFLUXAPISTATUS_API FDTFluxAPIStatusModule::StartupModule() { InitMenuExtension(); RegisterStatusTab(); FDTFluxStatusStyle::RegisterStyle(); } #pragma region MenuExtension void DTFLUXAPISTATUS_API FDTFluxAPIStatusModule::InitMenuExtension() { FLevelEditorModule& LevelEditorModule = FModuleManager::LoadModuleChecked(TEXT("LevelEditor")); // FDTFluxAPIModule& DTFluxApi = // FModuleManager::LoadModuleChecked(TEXT("DTFluxAPI")); const TSharedPtr MenuExtender = MakeShareable(new FExtender()); MenuExtender->AddMenuBarExtension( "Help", EExtensionHook::Before, nullptr, FMenuBarExtensionDelegate::CreateRaw(this, &FDTFluxAPIStatusModule::AddMenu) ); LevelEditorModule.GetMenuExtensibilityManager()->AddExtender(MenuExtender); } void DTFLUXAPISTATUS_API FDTFluxAPIStatusModule::AddMenu(FMenuBarBuilder& MenuBarBuilder) { MenuBarBuilder.AddPullDownMenu( FText::FromString("DTFlux"), FText::FromString("DTFlux API Tools"), FNewMenuDelegate::CreateRaw(this, &FDTFluxAPIStatusModule::FillMenu) ); } void DTFLUXAPISTATUS_API FDTFluxAPIStatusModule::FillMenu(FMenuBuilder& MenuBuilder) { MenuBuilder.BeginSection(NAME_None, FText::FromString("DTFlux API")); MenuBuilder.AddMenuEntry( FText::FromString("Status"), FText::FromString("Launch DTFlux Status"), FSlateIcon(FDTFluxStatusStyle::GetStyleSetName(), "LevelEditor.Tab.Icon"), FExecuteAction::CreateRaw(this, &FDTFluxAPIStatusModule::OnButtonClicked) ); MenuBuilder.EndSection(); } void DTFLUXAPISTATUS_API FDTFluxAPIStatusModule::OnButtonClicked() { FGlobalTabmanager::Get()->TryInvokeTab(StatusTabId); UE_LOG(LogTemp, Log, TEXT("Status Tab Launched")) } #pragma endregion EditorTab #pragma region void DTFLUXAPISTATUS_API FDTFluxAPIStatusModule::RegisterStatusTab() { FTabSpawnerEntry& SpawnerEntry = FGlobalTabmanager::Get()->RegisterNomadTabSpawner( StatusTabId, FOnSpawnTab::CreateRaw(this, &FDTFluxAPIStatusModule::OnSpawnTab) ) .SetDisplayName(StatusTabDisplayName) .SetTooltipText(FText::FromString(TEXT("Status of DTFlux API external connections"))); } TSharedRef DTFLUXAPISTATUS_API FDTFluxAPIStatusModule::OnSpawnTab(const FSpawnTabArgs& SpawnTabArgs) { return SNew( SDockTab ) .TabRole(ETabRole::NomadTab) // .ShouldAutosize(true) [ SNew(SDTFluxStatusWidget) ]; } #pragma endregion void DTFLUXAPISTATUS_API FDTFluxAPIStatusModule::ShutdownModule() { FGlobalTabmanager::Get()->UnregisterNomadTabSpawner(StatusTabId); FDTFluxStatusStyle::UnregisterStyle(); } #undef LOCTEXT_NAMESPACE IMPLEMENT_MODULE(FDTFluxAPIStatusModule, DTFluxAPIStatus)