Files
DTFluxAPI/Source/DTFluxRaceResult/Private/DTFluxRaceResultModule.cpp

162 lines
4.9 KiB
C++

#include "DTFluxRaceResultModule.h"
#include "LevelEditor.h"
#include "Widget/SDTFluxRaceResultWidget.h"
#include "Widget/Style/DTFluxRaceResultStyle.h"
#define LOCTEXT_NAMESPACE "FDTFluxRaceResultModule"
DEFINE_LOG_CATEGORY(logDTFluxRaceResult)
FName DTFLUXRACERESULT_API FDTFluxRaceResult::RaceResultTabId = "DTFluxRaceResult";
FText DTFLUXRACERESULT_API FDTFluxRaceResult::RaceResultTabDisplayName = FText::FromString(TEXT("DTFlux RaceResult"));
void DTFLUXRACERESULT_API FDTFluxRaceResult::StartupModule()
{
UE_LOG(logDTFluxRaceResult, Warning, TEXT("DTFluxRaceResult Module Started"))
FDTFluxRaceResultStyle::RegisterStyle();
InitMenuExtension();
RegisterRaceResultTab();
}
#pragma region MenuExtension
void DTFLUXRACERESULT_API FDTFluxRaceResult::InitMenuExtension()
{
UToolMenus::RegisterStartupCallback(
FSimpleMulticastDelegate::FDelegate::CreateRaw(this,
&FDTFluxRaceResult::RegisterMenuExtensions));
}
void DTFLUXRACERESULT_API FDTFluxRaceResult::RegisterMenuExtensions()
{
// Étendre le menu enregistré
if (UToolMenu* DTFluxMenu = UToolMenus::Get()->ExtendMenu("DTFlux.MainMenu"))
{
FToolMenuSection& ToolsSection = DTFluxMenu->FindOrAddSection("Tools");
ToolsSection.AddMenuEntry(
"DTFluxRaceResult",
FText::FromString("RaceResult"),
FText::FromString("Launch DTFlux RaceResult Control Panel"),
FSlateIcon(FDTFluxRaceResultStyle::GetStyleSetName(), "LevelEditor.Tab.IconRaceResult"),
FUIAction(FExecuteAction::CreateRaw(this, &FDTFluxRaceResult::OnButtonClicked))
);
}
}
void FDTFluxRaceResult::CreateSubmenu(UToolMenu* Menu)
{
// Section 2 : Tools
FToolMenuSection& ToolsSection = Menu->FindOrAddSection("Tools");
ToolsSection.Label = FText::FromString("Tools");
ToolsSection.AddMenuEntry(
"DTFluxRaceResult",
FText::FromString("RaceResult"),
FText::FromString("Launch Race Result WebAdmin Console"),
FSlateIcon(FDTFluxRaceResultStyle::GetStyleSetName(), "LevelEditor.Tab.IconRaceResult"),
// Adaptez selon votre icône
FUIAction(FExecuteAction::CreateRaw(this, &FDTFluxRaceResult::OnButtonClicked))
);
}
void DTFLUXRACERESULT_API FDTFluxRaceResult::OnButtonClicked()
{
FGlobalTabmanager::Get()->TryInvokeTab(RaceResultTabId);
UE_LOG(LogTemp, Log, TEXT("Race Result Launched"))
}
#pragma endregion EditorTab
#pragma region
void DTFLUXRACERESULT_API FDTFluxRaceResult::RegisterRaceResultTab()
{
FTabSpawnerEntry& SpawnerEntry =
FGlobalTabmanager::Get()->RegisterNomadTabSpawner(
RaceResultTabId,
FOnSpawnTab::CreateRaw(this, &FDTFluxRaceResult::OnSpawnTab)
)
.SetDisplayName(RaceResultTabDisplayName)
.SetTooltipText(FText::FromString(TEXT("Race Result Control Panel")));
}
TSharedRef<SDockTab> DTFLUXRACERESULT_API FDTFluxRaceResult::OnSpawnTab(const FSpawnTabArgs& SpawnTabArgs)
{
return
SNew(
SDockTab
)
.TabRole(ETabRole::NomadTab)
// .ShouldAutosize(true)
[
SNew(SDTFluxRaceResultWidget)
];
}
#pragma endregion
void DTFLUXRACERESULT_API FDTFluxRaceResult::ShutdownModule()
{
FGlobalTabmanager::Get()->UnregisterNomadTabSpawner(RaceResultTabId);
FDTFluxRaceResultStyle::UnregisterStyle();
}
//
// // Dans votre code de debug
// void DTFLUXRACERESULT_API FDTFluxRaceResult::DebugMenus()
// {
// UToolMenus* ToolMenus = UToolMenus::Get();
// if (ToolMenus)
// {
// TArray<FName> MenuNames;
// ToolMenus->GetAllMenuNames(MenuNames);
//
// UE_LOG(logDTFluxRaceResult, Warning, TEXT("=== ALL AVAILABLE MENUS ==="));
// for (const FName& MenuName : MenuNames)
// {
// UE_LOG(logDTFluxRaceResult, Warning, TEXT("Menu: %s"), *MenuName.ToString());
//
// // Obtenir les sections de chaque menu
// UToolMenu* Menu = ToolMenus->FindMenu(MenuName);
// if (Menu)
// {
// for (const FToolMenuSection& Section : Menu->Sections)
// {
// UE_LOG(logDTFluxRaceResult, Warning, TEXT(" Section: %s"), *Section.Name.ToString());
// }
// }
// }
// UE_LOG(logDTFluxRaceResult, Warning, TEXT("=== END MENU LIST ==="));
// }
// }
// void DTFLUXRACERESULT_API FDTFluxRaceResult::AddMenu(FMenuBarBuilder& MenuBarBuilder)
// {
// MenuBarBuilder.AddPullDownMenu(
// FText::FromString("DTFlux"),
// FText::FromString("DTFlux API Tools"),
// FNewMenuDelegate::CreateRaw(this, &FDTFluxRaceResult::FillMenu)
// );
// }
// void DTFLUXRACERESULT_API FDTFluxRaceResult::FillMenu(FMenuBuilder& MenuBuilder)
// {
// MenuBuilder.AddMenuEntry(
// FText::FromString("RaceResult ControlPanel"),
// FText::FromString("Launch RaceResult Control Panel"),
// FSlateIcon(FDTFluxRaceResultStyle::GetStyleSetName(), "LevelEditor.Tab.IconRaceResult"),
// FExecuteAction::CreateRaw(this, &FDTFluxRaceResult::OnButtonClicked)
// );
// MenuBuilder.EndSection();
// }
#undef LOCTEXT_NAMESPACE
IMPLEMENT_MODULE(FDTFluxRaceResult, DTFluxRaceResult)