diff --git a/osu.Game/Localisation/SkinEditorStrings.cs b/osu.Game/Localisation/SkinEditorStrings.cs
index 5cf2e5b5c5..029d50df32 100644
--- a/osu.Game/Localisation/SkinEditorStrings.cs
+++ b/osu.Game/Localisation/SkinEditorStrings.cs
@@ -42,7 +42,17 @@ namespace osu.Game.Localisation
///
/// "Currently editing"
///
- public static LocalisableString CurrentlyEditing => new TranslatableString(getKey(@"currently_editing"), "Currently editing");
+ public static LocalisableString CurrentlyEditing => new TranslatableString(getKey(@"currently_editing"), @"Currently editing");
+
+ ///
+ /// "Revert?"
+ ///
+ public static LocalisableString Revert => new TranslatableString(getKey(@"revert"), @"Revert?");
+
+ ///
+ /// "The skin will return to the state it was in upon import"
+ ///
+ public static LocalisableString ResetDialogue => new TranslatableString(getKey(@"the_skin_will_return_to"), @"The skin will return to the state it was in upon import");
private static string getKey(string key) => $@"{prefix}:{key}";
}
diff --git a/osu.Game/Overlays/SkinEditor/SkinEditor.cs b/osu.Game/Overlays/SkinEditor/SkinEditor.cs
index 9d470f58f1..936dc7fa84 100644
--- a/osu.Game/Overlays/SkinEditor/SkinEditor.cs
+++ b/osu.Game/Overlays/SkinEditor/SkinEditor.cs
@@ -12,11 +12,13 @@ using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
+using osu.Framework.Graphics.Sprites;
using osu.Framework.Graphics.UserInterface;
using osu.Framework.Input;
using osu.Framework.Input.Bindings;
using osu.Framework.Input.Events;
using osu.Framework.Localisation;
+using web = osu.Game.Resources.Localisation.Web;
using osu.Framework.Testing;
using osu.Game.Database;
using osu.Game.Graphics;
@@ -24,6 +26,7 @@ using osu.Game.Graphics.Containers;
using osu.Game.Graphics.Cursor;
using osu.Game.Graphics.UserInterface;
using osu.Game.Localisation;
+using osu.Game.Overlays.Dialog;
using osu.Game.Overlays.OSD;
using osu.Game.Overlays.Settings;
using osu.Game.Screens.Edit;
@@ -97,6 +100,9 @@ namespace osu.Game.Overlays.SkinEditor
[Resolved]
private OnScreenDisplay? onScreenDisplay { get; set; }
+ [Resolved]
+ private IDialogOverlay? dialogOverlay { get; set; }
+
public SkinEditor()
{
}
@@ -148,7 +154,7 @@ namespace osu.Game.Overlays.SkinEditor
Items = new[]
{
new EditorMenuItem(Resources.Localisation.Web.CommonStrings.ButtonsSave, MenuItemType.Standard, () => Save()),
- new EditorMenuItem(CommonStrings.RevertToDefault, MenuItemType.Destructive, revert),
+ new EditorMenuItem(CommonStrings.RevertToDefault, MenuItemType.Destructive, () => dialogOverlay?.Push(new ResetConfirmDialog(revert))),
new EditorMenuItemSpacer(),
new EditorMenuItem(CommonStrings.Exit, MenuItemType.Standard, () => skinEditorOverlay?.Hide()),
},
@@ -625,6 +631,30 @@ namespace osu.Game.Overlays.SkinEditor
}
}
+ public partial class ResetConfirmDialog : PopupDialog
+ {
+ public ResetConfirmDialog(Action reset)
+ {
+ HeaderText = SkinEditorStrings.Revert;
+ BodyText = SkinEditorStrings.ResetDialogue;
+
+ Icon = FontAwesome.Solid.ExclamationTriangle;
+
+ Buttons = new PopupDialogButton[]
+ {
+ new PopupDialogDangerousButton
+ {
+ Text = BeatmapOverlayStrings.UserContentConfirmButtonText,
+ Action = reset
+ },
+ new PopupDialogCancelButton
+ {
+ Text = web.CommonStrings.ButtonsCancel,
+ },
+ };
+ }
+ }
+
#region Delegation of IEditorChangeHandler
public event Action? OnStateChange