From 808dabf600958f3d56d9158d6d17b86134b63198 Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Sun, 16 Jul 2023 14:12:33 +0200 Subject: [PATCH] Add DragDropManager. --- Penumbra/Services/DalamudServices.cs | 3 ++ Penumbra/UI/ModsTab/ModFileSystemSelector.cs | 36 +++++++++++++++++--- Penumbra/UI/Tabs/ModsTab.cs | 3 -- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/Penumbra/Services/DalamudServices.cs b/Penumbra/Services/DalamudServices.cs index a75f3e4a..c2cf0c75 100644 --- a/Penumbra/Services/DalamudServices.cs +++ b/Penumbra/Services/DalamudServices.cs @@ -12,6 +12,7 @@ using Dalamud.IoC; using Dalamud.Plugin; using System.Linq; using System.Reflection; +using Dalamud.Interface.DragDrop; using Microsoft.Extensions.DependencyInjection; // ReSharper disable AutoPropertyCanBeMadeGetOnly.Local @@ -76,6 +77,7 @@ public class DalamudServices services.AddSingleton(SigScanner); services.AddSingleton(this); services.AddSingleton(UiBuilder); + services.AddSingleton(DragDropManager); } // TODO remove static @@ -93,6 +95,7 @@ public class DalamudServices [PluginService][RequiredVersion("1.0")] public GameGui GameGui { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public KeyState KeyState { get; private set; } = null!; [PluginService][RequiredVersion("1.0")] public SigScanner SigScanner { get; private set; } = null!; + [PluginService][RequiredVersion("1.0")] public IDragDropManager DragDropManager { get; private set; } = null!; // @formatter:on public UiBuilder UiBuilder diff --git a/Penumbra/UI/ModsTab/ModFileSystemSelector.cs b/Penumbra/UI/ModsTab/ModFileSystemSelector.cs index 842616bf..2b943f82 100644 --- a/Penumbra/UI/ModsTab/ModFileSystemSelector.cs +++ b/Penumbra/UI/ModsTab/ModFileSystemSelector.cs @@ -1,9 +1,11 @@ using System; +using System.IO; using System.Linq; using System.Numerics; using System.Runtime.InteropServices; using Dalamud.Game.ClientState.Keys; using Dalamud.Interface; +using Dalamud.Interface.DragDrop; using Dalamud.Interface.Internal.Notifications; using ImGuiNET; using OtterGui; @@ -33,12 +35,13 @@ public sealed class ModFileSystemSelector : FileSystemSelector m.Extensions.Any(e => ValidModExtensions.Contains(e.ToLowerInvariant())), m => + { + ImGui.TextUnformatted($"Dragging mods for import:\n\t{string.Join("\n\t", m.Files.Select(Path.GetFileName))}"); + return true; + }); + base.Draw(width); + if (_dragDrop.CreateImGuiTarget("ModDragDrop", out var files, out _)) + _modImportManager.AddUnpack(files.Where(f => ValidModExtensions.Contains(Path.GetExtension(f.ToLowerInvariant())))); + } + public override void Dispose() { base.Dispose(); @@ -655,7 +681,7 @@ public sealed class ModFileSystemSelector : FileSystemSelector