diff --git a/Source/Editor/Utilities/Utils.cs b/Source/Editor/Utilities/Utils.cs index 8d73abf4d..43d81ee1e 100644 --- a/Source/Editor/Utilities/Utils.cs +++ b/Source/Editor/Utilities/Utils.cs @@ -383,6 +383,28 @@ namespace FlaxEditor.Utilities File.Delete(file); } + /// + /// Creates an Import path ui that show the asset import path and adds a button to show the folder in the file system. + /// + /// The parent layout container. + /// The asset item to get the import path of. + public static void CreateImportPathUI(CustomEditors.LayoutElementsContainer parentLayout, Content.BinaryAssetItem assetItem) + { + assetItem.GetImportPath(out var path); + if (!string.IsNullOrEmpty(path)) + { + parentLayout.Space(5); + parentLayout.Label("Import Path:"); + var textBox = parentLayout.TextBox().TextBox; + textBox.TooltipText = "Path is not editable here."; + textBox.IsReadOnly = true; + textBox.Text = path; + parentLayout.Space(2); + var button = parentLayout.Button(Constants.ShowInExplorer).Button; + button.Clicked += () => FileSystem.ShowFileExplorer(Path.GetDirectoryName(path)); + } + } + /// /// Copies the directory. Supports subdirectories copy with files override option. /// diff --git a/Source/Editor/Windows/Assets/AnimationWindow.cs b/Source/Editor/Windows/Assets/AnimationWindow.cs index d0e6a3fe9..09127a818 100644 --- a/Source/Editor/Windows/Assets/AnimationWindow.cs +++ b/Source/Editor/Windows/Assets/AnimationWindow.cs @@ -2,6 +2,7 @@ using System; using System.Globalization; +using System.IO; using System.Reflection; using System.Xml; using FlaxEditor.Content; @@ -210,8 +211,11 @@ namespace FlaxEditor.Windows.Assets var importSettingsValues = new ValueContainer(new ScriptMemberInfo(importSettingsField)) { proxy.ImportSettings }; group.Object(importSettingsValues); + // Creates the import path UI + Utilities.Utils.CreateImportPathUI(layout, proxy.Window.Item as BinaryAssetItem); + layout.Space(5); - var reimportButton = group.Button("Reimport"); + var reimportButton = layout.Button("Reimport"); reimportButton.Button.Clicked += () => ((PropertiesProxy)Values[0]).Reimport(); } } diff --git a/Source/Editor/Windows/Assets/AudioClipWindow.cs b/Source/Editor/Windows/Assets/AudioClipWindow.cs index 998073858..87638f8e0 100644 --- a/Source/Editor/Windows/Assets/AudioClipWindow.cs +++ b/Source/Editor/Windows/Assets/AudioClipWindow.cs @@ -1,5 +1,6 @@ // Copyright (c) 2012-2024 Wojciech Figat. All rights reserved. +using System.IO; using System.Xml; using FlaxEditor.Content; using FlaxEditor.Content.Import; @@ -100,6 +101,9 @@ namespace FlaxEditor.Windows.Assets base.Initialize(layout); + // Creates the import path UI + Utilities.Utils.CreateImportPathUI(layout, window.Item as BinaryAssetItem); + layout.Space(10); var reimportButton = layout.Button("Reimport"); reimportButton.Button.Clicked += () => ((PropertiesProxy)Values[0]).Reimport(); diff --git a/Source/Editor/Windows/Assets/CubeTextureWindow.cs b/Source/Editor/Windows/Assets/CubeTextureWindow.cs index 56585bba8..63c697ef2 100644 --- a/Source/Editor/Windows/Assets/CubeTextureWindow.cs +++ b/Source/Editor/Windows/Assets/CubeTextureWindow.cs @@ -1,5 +1,6 @@ // Copyright (c) 2012-2024 Wojciech Figat. All rights reserved. +using System.IO; using System.Xml; using FlaxEditor.Content; using FlaxEditor.Content.Import; @@ -53,6 +54,9 @@ namespace FlaxEditor.Windows.Assets base.Initialize(layout); + // Creates the import path UI + Utilities.Utils.CreateImportPathUI(layout, window.Item as BinaryAssetItem); + layout.Space(10); var reimportButton = layout.Button("Reimport"); reimportButton.Button.Clicked += () => ((PropertiesProxy)Values[0]).Reimport(); diff --git a/Source/Editor/Windows/Assets/ModelWindow.cs b/Source/Editor/Windows/Assets/ModelWindow.cs index c3e285973..3410db0b1 100644 --- a/Source/Editor/Windows/Assets/ModelWindow.cs +++ b/Source/Editor/Windows/Assets/ModelWindow.cs @@ -1,6 +1,7 @@ // Copyright (c) 2012-2024 Wojciech Figat. All rights reserved. using System.Collections.Generic; +using System.IO; using System.Linq; using System.Reflection; using System.Threading.Tasks; @@ -758,8 +759,11 @@ namespace FlaxEditor.Windows.Assets var importSettingsValues = new ValueContainer(new ScriptMemberInfo(importSettingsField)) { proxy.ImportSettings }; group.Object(importSettingsValues); + // Creates the import path UI + Utilities.Utils.CreateImportPathUI(layout, proxy.Window.Item as BinaryAssetItem); + layout.Space(5); - var reimportButton = group.Button("Reimport"); + var reimportButton = layout.Button("Reimport"); reimportButton.Button.Clicked += () => ((ImportPropertiesProxy)Values[0]).Reimport(); } } diff --git a/Source/Editor/Windows/Assets/SkinnedModelWindow.cs b/Source/Editor/Windows/Assets/SkinnedModelWindow.cs index 671512584..a53e7a44f 100644 --- a/Source/Editor/Windows/Assets/SkinnedModelWindow.cs +++ b/Source/Editor/Windows/Assets/SkinnedModelWindow.cs @@ -1023,8 +1023,11 @@ namespace FlaxEditor.Windows.Assets var importSettingsValues = new ValueContainer(new ScriptMemberInfo(importSettingsField)) { proxy.ImportSettings }; group.Object(importSettingsValues); + // Creates the import path UI + Utilities.Utils.CreateImportPathUI(layout, proxy.Window.Item as BinaryAssetItem); + layout.Space(5); - var reimportButton = group.Button("Reimport"); + var reimportButton = layout.Button("Reimport"); reimportButton.Button.Clicked += () => ((ImportPropertiesProxy)Values[0]).Reimport(); } } diff --git a/Source/Editor/Windows/Assets/SpriteAtlasWindow.cs b/Source/Editor/Windows/Assets/SpriteAtlasWindow.cs index 9601555d2..cbcecf1df 100644 --- a/Source/Editor/Windows/Assets/SpriteAtlasWindow.cs +++ b/Source/Editor/Windows/Assets/SpriteAtlasWindow.cs @@ -1,5 +1,6 @@ // Copyright (c) 2012-2024 Wojciech Figat. All rights reserved. +using System.IO; using System.Linq; using System.Xml; using FlaxEditor.Content; @@ -110,7 +111,17 @@ namespace FlaxEditor.Windows.Assets { public override void Initialize(LayoutElementsContainer layout) { + var proxy = (PropertiesProxy)Values[0]; + if (proxy._window == null) + { + layout.Label("Loading...", TextAlignment.Center); + return; + } + base.Initialize(layout); + + // Creates the import path UI + Utilities.Utils.CreateImportPathUI(layout, proxy._window.Item as BinaryAssetItem); layout.Space(10); var reimportButton = layout.Button("Reimport"); diff --git a/Source/Editor/Windows/Assets/TextureWindow.cs b/Source/Editor/Windows/Assets/TextureWindow.cs index 68f138978..43c499f6e 100644 --- a/Source/Editor/Windows/Assets/TextureWindow.cs +++ b/Source/Editor/Windows/Assets/TextureWindow.cs @@ -1,5 +1,6 @@ // Copyright (c) 2012-2024 Wojciech Figat. All rights reserved. +using System.IO; using System.Xml; using FlaxEditor.Content; using FlaxEditor.Content.Import; @@ -134,9 +135,19 @@ namespace FlaxEditor.Windows.Assets { public override void Initialize(LayoutElementsContainer layout) { + var proxy = (ImportPropertiesProxy)Values[0]; + if (proxy._window == null) + { + layout.Label("Loading...", TextAlignment.Center); + return; + } + // Import settings base.Initialize(layout); + // Creates the import path UI + Utilities.Utils.CreateImportPathUI(layout, proxy._window.Item as BinaryAssetItem); + // Reimport layout.Space(10); var reimportButton = layout.Button("Reimport");