Patch Update - Shortcut Fix - V0.2.3

This commit is contained in:
2025-05-15 20:46:44 +02:00
parent 2a2bf4ef3a
commit ad36ec80dd
89 changed files with 20606 additions and 19461 deletions

View File

@@ -5,12 +5,14 @@
#include "ReloadEditorCommands.h"
#include "ReloadEditorSettings.h"
#include "FileHelpers.h"
#include "LevelEditor.h"
#include "Misc/MessageDialog.h"
#include "Misc/ConfigCacheIni.h"
#include "ToolMenus.h"
#include "Widgets/SBoxPanel.h"
#include "Widgets/Input/SButton.h"
#include "Widgets/Input/SCheckBox.h"
#include "Widgets/Input/SInputKeySelector.h"
#include "Widgets/Text/STextBlock.h"
#include "Widgets/Input/SMenuAnchor.h"
#include "Widgets/Images/SImage.h"
@@ -34,6 +36,14 @@ void FReloadEditorModule::StartupModule()
FCanExecuteAction()
);
FGlobalTabmanager::Get()->RegisterNomadTabSpawner(ReloadEditorTabName,
FOnSpawnTab())
.SetDisplayName(LOCTEXT("ReloadEditorTitle", "Reload Editor"))
.SetMenuType(ETabSpawnerMenuType::Hidden);
FLevelEditorModule& LevelEditorModule = FModuleManager::LoadModuleChecked<FLevelEditorModule>("LevelEditor");
LevelEditorModule.GetGlobalLevelEditorActions()->Append(PluginCommands.ToSharedRef());
// Initialiser l'objet de configuration
Settings = GetMutableDefault<UReloadEditorSettings>();
@@ -46,15 +56,11 @@ void FReloadEditorModule::StartupModule()
if (!bMapReloaded)
{
bMapReloaded = true;
UE_LOG(LogTemp, Warning, TEXT("ReloadEditor: Forçage d'ouverture de la map: %s"), *ReloadMap);
UEditorLoadingAndSavingUtils::LoadMap(ReloadMap);
}
});
}
UE_LOG(LogTemp, Warning, TEXT("bAutoSaveBeforeReload = %s"), Settings->bAutoSaveBeforeReload ? TEXT("true") : TEXT("false"));
UE_LOG(LogTemp, Warning, TEXT("bAutoReloadLastMap = %s"), Settings->bAutoReloadLastMap ? TEXT("true") : TEXT("false"));
UToolMenus::RegisterStartupCallback(FSimpleMulticastDelegate::FDelegate::CreateRaw(this, &FReloadEditorModule::RegisterMenus));
}
@@ -79,6 +85,7 @@ TSharedRef<SWidget> FReloadEditorModule::CreateReloadButton()
.ButtonStyle(FAppStyle::Get(), "NoBorder")
.HasDownArrow(false)
.MenuPlacement(MenuPlacement_BelowRightAnchor)
.ToolTipText(LOCTEXT("ReloadButtonTooltip", "Restart the Unreal Engine Editor"))
.ButtonContent()
[
SNew(SOverlay)
@@ -115,6 +122,7 @@ TSharedRef<SWidget> FReloadEditorModule::CreateReloadButton()
.ButtonStyle(FAppStyle::Get(), "NoBorder")
.HasDownArrow(false)
.MenuPlacement(MenuPlacement_BelowRightAnchor)
.ToolTipText(LOCTEXT("ReloadButtonTooltip", "Restart settings"))
.ButtonContent()
[
SNew(SOverlay)
@@ -136,16 +144,15 @@ TSharedRef<SWidget> FReloadEditorModule::CreateReloadButton()
]
.OnGetMenuContent_Lambda([this]() {
FMenuBuilder MenuBuilder(true, nullptr);
// Option d'auto-sauvegarde
MenuBuilder.AddMenuEntry(
LOCTEXT("AutoSaveOption", "Sauvegarder automatiquement avant reload"),
LOCTEXT("AutoSaveOption", "Auto save before reload"),
TAttribute<FText>(),
FSlateIcon(),
FUIAction(
FExecuteAction::CreateLambda([this]() {
Settings->bAutoSaveBeforeReload = !Settings->bAutoSaveBeforeReload;
Settings->SaveConfig();
UE_LOG(LogTemp, Warning, TEXT("Option changée: bAutoSaveBeforeReload = %s"),
Settings->bAutoSaveBeforeReload ? TEXT("true") : TEXT("false"));
}),
FCanExecuteAction(),
FIsActionChecked::CreateLambda([this]() { return Settings->bAutoSaveBeforeReload; })
@@ -153,17 +160,16 @@ TSharedRef<SWidget> FReloadEditorModule::CreateReloadButton()
NAME_None,
EUserInterfaceActionType::ToggleButton
);
// Ajoute la nouvelle option ici
// Option de rechargement automatique de la dernière carte
MenuBuilder.AddMenuEntry(
LOCTEXT("AutoReloadLastMapOption", "Reload automatique dans la dernière map ouverte"),
LOCTEXT("AutoReloadLastMapOption", "Auto reload last map opened"),
TAttribute<FText>(),
FSlateIcon(),
FUIAction(
FExecuteAction::CreateLambda([this]() {
Settings->bAutoReloadLastMap = !Settings->bAutoReloadLastMap;
Settings->SaveConfig();
UE_LOG(LogTemp, Warning, TEXT("Option changée: bAutoReloadLastMap = %s"),
Settings->bAutoReloadLastMap ? TEXT("true") : TEXT("false"));
}),
FCanExecuteAction(),
FIsActionChecked::CreateLambda([this]() { return Settings->bAutoReloadLastMap; })
@@ -171,6 +177,80 @@ TSharedRef<SWidget> FReloadEditorModule::CreateReloadButton()
NAME_None,
EUserInterfaceActionType::ToggleButton
);
// Séparateur avant l'option de raccourci
MenuBuilder.AddSeparator();
// Option pour changer le raccourci clavier
MenuBuilder.AddMenuEntry(
LOCTEXT("ChangeShortcutOption", "Change shortcut"),
TAttribute<FText>(),
FSlateIcon(),
FUIAction(
FExecuteAction::CreateLambda([this]() {
TSharedRef<SWindow> KeyBindingWindow = SNew(SWindow)
.Title(LOCTEXT("ChangeShortcutTitle", "Shortcut Key Binding"))
.SizingRule(ESizingRule::Autosized)
.SupportsMaximize(false)
.SupportsMinimize(false);
// Création d'un pointeur partagé qui sera utilisé après pour la capture
TSharedPtr<SInputKeySelector> KeySelectorPtr;
KeyBindingWindow->SetContent(
SNew(SBox)
.WidthOverride(300)
.Padding(10)
[
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.AutoHeight()
.Padding(0, 0, 0, 10)
[
SNew(STextBlock)
.Text(LOCTEXT("ShortcutInstructions", "Click on the button below and press the new shortcut key"))
]
+ SVerticalBox::Slot()
.AutoHeight()
[
SAssignNew(KeySelectorPtr, SInputKeySelector)
.SelectedKey(Settings->CustomShortcut)
.AllowModifierKeys(true)
.AllowGamepadKeys(false)
.EscapeKeys({ EKeys::Escape })
.IsFocusable(true)
.OnKeySelected_Lambda([this, WeakWindow = TWeakPtr<SWindow>(KeyBindingWindow)](FInputChord NewChord)
{
if (NewChord.IsValidChord())
{
Settings->CustomShortcut = NewChord;
Settings->SaveConfig();
FReloadEditorCommands::Unregister();
FReloadEditorCommands::Register();
PluginCommands->UnmapAction(FReloadEditorCommands::Get().PluginAction);
PluginCommands->MapAction(
FReloadEditorCommands::Get().PluginAction,
FExecuteAction::CreateRaw(this, &FReloadEditorModule::PluginButtonClicked),
FCanExecuteAction()
);
}
if (TSharedPtr<SWindow> Win = WeakWindow.Pin())
{
Win->RequestDestroyWindow();
}
})
]
]
);
FSlateApplication::Get().AddWindow(KeyBindingWindow);
}),
FCanExecuteAction()
)
);
return MenuBuilder.MakeWidget();
})
];
@@ -188,7 +268,7 @@ void FReloadEditorModule::PluginButtonClicked()
if (!Settings->bAutoSaveBeforeReload && DirtyPackages.Num() > 0)
{
if (FMessageDialog::Open(EAppMsgType::YesNo, FText::FromString(TEXT("Des fichiers non sauvegardés existent. Voulez-vous vraiment redémarrer ?"))) != EAppReturnType::Yes)
if (FMessageDialog::Open(EAppMsgType::YesNo, FText::FromString(TEXT("Some files are not saved. Would you like to restart"))) != EAppReturnType::Yes)
{
return;
}
@@ -224,7 +304,7 @@ void FReloadEditorModule::RegisterMenus()
Section.AddEntry(FToolMenuEntry::InitWidget(
"ReloadEditorWidget",
CreateReloadButton(),
FText::FromString(TEXT("Redémarrer l'éditeur"))
FText::FromString(TEXT("Restart Editor"))
));
}
@@ -234,7 +314,7 @@ void FReloadEditorModule::RegisterMenus()
Section.AddEntry(FToolMenuEntry::InitWidget(
"ReloadEditorWidgetToolbar",
CreateReloadButton(),
FText::FromString(TEXT("Redémarrer l'éditeur"))
FText::FromString(TEXT("Restart Editor"))
));
}
}

View File

@@ -2,11 +2,21 @@
#include "ReloadEditorCommands.h"
#include "ReloadEditorSettings.h"
#define LOCTEXT_NAMESPACE "FReloadEditorModule"
void FReloadEditorCommands::RegisterCommands()
{
UI_COMMAND(PluginAction, "ReloadEditor", "Execute ReloadEditor action", EUserInterfaceActionType::Button, FInputChord());
UReloadEditorSettings* Settings = GetMutableDefault<UReloadEditorSettings>();
UI_COMMAND(PluginAction,
"ReloadEditor",
"Execute ReloadEditor action",
EUserInterfaceActionType::Button,
Settings->CustomShortcut
);
}
#undef LOCTEXT_NAMESPACE

View File

@@ -1,8 +1,8 @@
// ReloadEditorSettings.cpp
#include "ReloadEditorSettings.h"
#include "ReloadEditorSettings.h"
UReloadEditorSettings::UReloadEditorSettings()
{
bAutoSaveBeforeReload = false;
bAutoReloadLastMap = false;
CustomShortcut = FInputChord(EModifierKey::Control | EModifierKey::Shift, EKeys::R);
}

View File

@@ -1,5 +1,4 @@
// ReloadEditorSettings.h
#pragma once
#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
@@ -18,4 +17,7 @@ public:
UPROPERTY(config, EditAnywhere, Category = "Options")
bool bAutoReloadLastMap;
UPROPERTY(config, EditAnywhere, Category = "Options")
FInputChord CustomShortcut;
};

View File

@@ -43,6 +43,7 @@ public class ReloadEditor : ModuleRules
"Engine",
"Slate",
"SlateCore",
"PropertyEditor",
// ... add private dependencies that you statically link with here ...
}
);