From 718d3d6f35d02025aaa18c0cab5dda29c1e47424 Mon Sep 17 00:00:00 2001 From: spherallic Date: Tue, 11 Jun 2024 21:27:35 +0200 Subject: [PATCH] Texture browser: show textures from subfolders of the selected folder --- Source/Core/Windows/TextureBrowserForm.cs | 37 +++++++++++++++-------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/Source/Core/Windows/TextureBrowserForm.cs b/Source/Core/Windows/TextureBrowserForm.cs index a4aa2441..056a7a3d 100755 --- a/Source/Core/Windows/TextureBrowserForm.cs +++ b/Source/Core/Windows/TextureBrowserForm.cs @@ -46,16 +46,20 @@ namespace CodeImp.DoomBuilder.Windows private TreeNode selectedset; //mxd private long selecttextureonfill; //mxd. Was string, which wasn't reliable whem dealing with long texture names private readonly bool browseflats; //mxd + private readonly bool showsubfolder; //sphere // Properties public string SelectedName { get { return selectedname; } } - + // Constructor public TextureBrowserForm(string selecttexture, bool browseflats) { Cursor.Current = Cursors.WaitCursor; General.Interface.DisableProcessing(); //mxd + //sphere + showsubfolder = true; + TreeNode item; //mxd long longname = Lump.MakeLongName(selecttexture ?? ""); // [ZZ] check if this name is even ok. @@ -538,19 +542,15 @@ namespace CodeImp.DoomBuilder.Windows { TreeNodeData data = (TreeNodeData)child.Tag; browser.AddFolder(ImageBrowserItemType.FOLDER, data.FolderName); + + //sphere: Add textures from subfolders + if (showsubfolder) + FillSubfolderImagesList(child, data); } - // Add textures - if(browseflats) - { - // Add all available flats - foreach(ImageData img in set.Flats) browser.AddItem(img); - } - else - { - // Add all available textures - foreach (ImageData img in set.Textures) browser.AddItem(img); - } + // Add textures (or flats) + foreach (ImageData img in (browseflats ? set.Flats : set.Textures)) + browser.AddItem(img); browser.MakeTexturesUnique(); // biwa @@ -558,6 +558,19 @@ namespace CodeImp.DoomBuilder.Windows browser.EndAdding(); } + //sphere + private void FillSubfolderImagesList(TreeNode node, TreeNodeData data) + { + IFilledTextureSet subset = data.Set; + foreach (ImageData img in (browseflats ? subset.Flats : subset.Textures)) + browser.AddItem(img); + + foreach (TreeNode child in node.Nodes) + { + FillSubfolderImagesList(child, (TreeNodeData)child.Tag); + } + } + private void FillCategoriesList() { // Start adding