Add preview to single textures (ie NUTEXB)

This commit is contained in:
KillzXGaming 2019-08-01 19:28:37 -04:00
parent e2edd2e923
commit b445590961
6 changed files with 49 additions and 2 deletions

View file

@ -14,8 +14,10 @@ using Syroot.NintenTools.NSW.Bntx.GFX;
namespace FirstPlugin
{
public class NUTEXB : STGenericTexture, IFileFormat, IContextMenuNode
public class NUTEXB : STGenericTexture, IFileFormat, IContextMenuNode, ISingleTextureIconLoader
{
public STGenericTexture IconTexture { get { return this; } }
public FileType FileType { get; set; } = FileType.Image;
public override TEX_FORMAT[] SupportedFormats

View file

@ -86,6 +86,7 @@ namespace Toolbox.Library
private readonly Dictionary<int, TreeNode> _treeNodes = new Dictionary<int, TreeNode>();
public List<ITextureIconLoader> TextureIcons = new List<ITextureIconLoader>();
public List<ISingleTextureIconLoader> SingleTextureIcons = new List<ISingleTextureIconLoader>();
public TreeViewCustom()
{
@ -121,6 +122,32 @@ namespace Toolbox.Library
}
}
}
foreach (var texIcon in SingleTextureIcons)
{
var image = texIcon.IconTexture.GetBitmap();
AddImageOnThread(image, texIcon.IconTexture);
}
}));
Thread.Start();
}
public void ReloadTextureIcons(ISingleTextureIconLoader textureIcon)
{
if (Thread != null && Thread.IsAlive)
Thread.Abort();
Thread = new Thread((ThreadStart)(() =>
{
try
{
var image = textureIcon.IconTexture.GetBitmap();
AddImageOnThread(image, textureIcon.IconTexture);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}));
Thread.Start();
}
@ -149,7 +176,6 @@ namespace Toolbox.Library
}
}));
Thread.Start();
}
public void AddImageOnThread(Image image, TreeNode node)

View file

@ -101,6 +101,10 @@ namespace Toolbox.Library.Forms
ClearNodes();
treeViewCustom1.Nodes.Add(node); // Add the new nodes
treeViewCustom1.EndUpdate(); // Allow the treeview to update visually
if (node is ISingleTextureIconLoader) {
LoadGenericTextureIcons((ISingleTextureIconLoader)node);
}
}
public void ClearNodes()
@ -660,6 +664,11 @@ namespace Toolbox.Library.Forms
treeViewCustom1.ReloadTextureIcons(iconList);
}
public void LoadGenericTextureIcons(ISingleTextureIconLoader iconTex) {
treeViewCustom1.SingleTextureIcons.Add(iconTex);
treeViewCustom1.ReloadTextureIcons(iconTex);
}
private void nodeSizeCB_SelectedIndexChanged(object sender, EventArgs e)
{
var nodeSize = nodeSizeCB.SelectedItem;
@ -690,6 +699,9 @@ namespace Toolbox.Library.Forms
if (e.Node != null && e.Node is ITextureIconLoader) {
LoadGenericTextureIcons((ITextureIconLoader)e.Node);
}
if (e.Node != null && e.Node is ISingleTextureIconLoader) {
LoadGenericTextureIcons((ISingleTextureIconLoader)e.Node);
}
}
}
}

View file

@ -12,4 +12,11 @@ namespace Toolbox.Library
{
List<STGenericTexture> IconTextureList { get; set; }
}
//Reprenets a single texture that loads an icon.
//These will check both on expand, and on root
public interface ISingleTextureIconLoader
{
STGenericTexture IconTexture { get;}
}
}