Patch Update - Shortcut Fix - V0.2.3
This commit is contained in:
@@ -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"))
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
@@ -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;
|
||||
};
|
@@ -43,6 +43,7 @@ public class ReloadEditor : ModuleRules
|
||||
"Engine",
|
||||
"Slate",
|
||||
"SlateCore",
|
||||
"PropertyEditor",
|
||||
// ... add private dependencies that you statically link with here ...
|
||||
}
|
||||
);
|
||||
|
Reference in New Issue
Block a user