Add DTFluxRaceResult Module. A Tab to manage RaceResult with a WebConsole interface
This commit is contained in:
161
Source/DTFluxRaceResult/Private/DTFluxRaceResultModule.cpp
Normal file
161
Source/DTFluxRaceResult/Private/DTFluxRaceResultModule.cpp
Normal file
@ -0,0 +1,161 @@
|
||||
#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)
|
||||
Reference in New Issue
Block a user