162 lines
4.9 KiB
C++
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)
|