Some adjustments and fixes

This commit is contained in:
KillzXGaming 2019-05-27 18:00:03 -04:00
parent cf793044ae
commit d743d39efc
28 changed files with 436 additions and 209 deletions

Binary file not shown.

View file

@ -221,6 +221,24 @@ namespace BrawlboxHelper
} }
} }
public class FTXPConverter
{
public static void Pat02Ftxp(MaterialAnim matAnim, string FileName)
{
PAT0Node pat0 = new PAT0Node();
matAnim.FrameCount = pat0.FrameCount;
matAnim.Name = pat0.Name;
matAnim.Path = pat0.OriginalPath;
matAnim.Loop = pat0.Loop;
foreach (var entry in pat0.Children)
{
var Material = (PAT0EntryNode)entry;
}
}
}
public class FSKAConverter public class FSKAConverter
{ {
static float Deg2Rad = (float)(Math.PI / 180f); static float Deg2Rad = (float)(Math.PI / 180f);

View file

@ -795,10 +795,10 @@ namespace FirstPlugin
Text = resFileU.Name; Text = resFileU.Name;
var modelFolder = new BFRESGroupNode(BRESGroupType.Models); var modelFolder = new BFRESGroupNode(BRESGroupType.Models, true);
var texturesFolder = new BFRESGroupNode(BRESGroupType.Textures); var texturesFolder = new BFRESGroupNode(BRESGroupType.Textures, true);
var animFolder = new BFRESAnimFolder(); var animFolder = new BFRESAnimFolder();
var externalFilesFolder = new BFRESGroupNode(BRESGroupType.Embedded); var externalFilesFolder = new BFRESGroupNode(BRESGroupType.Embedded, true);
//Reload context menus to load specific context menus //Reload context menus to load specific context menus
modelFolder.LoadContextMenus(); modelFolder.LoadContextMenus();
@ -834,7 +834,7 @@ namespace FirstPlugin
} }
if (resFileU.SkeletalAnims.Count > 0) if (resFileU.SkeletalAnims.Count > 0)
{ {
var group = new BFRESGroupNode(BRESGroupType.SkeletalAnim); var group = new BFRESGroupNode(BRESGroupType.SkeletalAnim, true);
animFolder.Nodes.Add(group); animFolder.Nodes.Add(group);
for (int i = 0; i < resFileU.SkeletalAnims.Count; i++) for (int i = 0; i < resFileU.SkeletalAnims.Count; i++)
@ -842,7 +842,7 @@ namespace FirstPlugin
} }
if (resFileU.ShaderParamAnims.Count > 0) if (resFileU.ShaderParamAnims.Count > 0)
{ {
var group = new BFRESGroupNode(BRESGroupType.ShaderParamAnim); var group = new BFRESGroupNode(BRESGroupType.ShaderParamAnim, true);
animFolder.Nodes.Add(group); animFolder.Nodes.Add(group);
for (int i = 0; i < resFileU.ShaderParamAnims.Count; i++) for (int i = 0; i < resFileU.ShaderParamAnims.Count; i++)
@ -850,7 +850,7 @@ namespace FirstPlugin
} }
if (resFileU.ColorAnims.Count > 0) if (resFileU.ColorAnims.Count > 0)
{ {
var group = new BFRESGroupNode(BRESGroupType.ColorAnim); var group = new BFRESGroupNode(BRESGroupType.ColorAnim, true);
animFolder.Nodes.Add(group); animFolder.Nodes.Add(group);
for (int i = 0; i < resFileU.ColorAnims.Count; i++) for (int i = 0; i < resFileU.ColorAnims.Count; i++)
@ -858,7 +858,7 @@ namespace FirstPlugin
} }
if (resFileU.TexSrtAnims.Count > 0) if (resFileU.TexSrtAnims.Count > 0)
{ {
var group = new BFRESGroupNode(BRESGroupType.TexSrtAnim); var group = new BFRESGroupNode(BRESGroupType.TexSrtAnim, true);
animFolder.Nodes.Add(group); animFolder.Nodes.Add(group);
for (int i = 0; i < resFileU.TexSrtAnims.Count; i++) for (int i = 0; i < resFileU.TexSrtAnims.Count; i++)
@ -866,7 +866,7 @@ namespace FirstPlugin
} }
if (resFileU.TexPatternAnims.Count > 0) if (resFileU.TexPatternAnims.Count > 0)
{ {
var group = new BFRESGroupNode(BRESGroupType.TexPatAnim); var group = new BFRESGroupNode(BRESGroupType.TexPatAnim, true);
animFolder.Nodes.Add(group); animFolder.Nodes.Add(group);
for (int i = 0; i < resFileU.TexPatternAnims.Count; i++) for (int i = 0; i < resFileU.TexPatternAnims.Count; i++)
@ -874,7 +874,7 @@ namespace FirstPlugin
} }
if (resFileU.ShapeAnims.Count > 0) if (resFileU.ShapeAnims.Count > 0)
{ {
var group = new BFRESGroupNode(BRESGroupType.ShapeAnim); var group = new BFRESGroupNode(BRESGroupType.ShapeAnim, true);
animFolder.Nodes.Add(group); animFolder.Nodes.Add(group);
for (int i = 0; i < resFileU.ShapeAnims.Count; i++) for (int i = 0; i < resFileU.ShapeAnims.Count; i++)
@ -882,7 +882,7 @@ namespace FirstPlugin
} }
if (resFileU.BoneVisibilityAnims.Count > 0) if (resFileU.BoneVisibilityAnims.Count > 0)
{ {
var group = new BFRESGroupNode(BRESGroupType.BoneVisAnim); var group = new BFRESGroupNode(BRESGroupType.BoneVisAnim, true);
animFolder.Nodes.Add(group); animFolder.Nodes.Add(group);
for (int i = 0; i < resFileU.BoneVisibilityAnims.Count; i++) for (int i = 0; i < resFileU.BoneVisibilityAnims.Count; i++)
@ -890,7 +890,7 @@ namespace FirstPlugin
} }
if (resFileU.MatVisibilityAnims.Count > 0) if (resFileU.MatVisibilityAnims.Count > 0)
{ {
var group = new BFRESGroupNode(BRESGroupType.MatVisAnim); var group = new BFRESGroupNode(BRESGroupType.MatVisAnim, true);
animFolder.Nodes.Add(group); animFolder.Nodes.Add(group);
for (int i = 0; i < resFileU.MatVisibilityAnims.Count; i++) for (int i = 0; i < resFileU.MatVisibilityAnims.Count; i++)
@ -898,7 +898,7 @@ namespace FirstPlugin
} }
if (resFileU.SceneAnims.Count > 0) if (resFileU.SceneAnims.Count > 0)
{ {
var group = new BFRESGroupNode(BRESGroupType.SceneAnim); var group = new BFRESGroupNode(BRESGroupType.SceneAnim, true);
animFolder.Nodes.Add(group); animFolder.Nodes.Add(group);
for (int i = 0; i < resFileU.SceneAnims.Count; i++) for (int i = 0; i < resFileU.SceneAnims.Count; i++)

View file

@ -125,8 +125,8 @@ namespace Bfres.Structs
} }
} }
public BFRESGroupNode(string name) : base() { Text = name; } public BFRESGroupNode(string name, bool isWiiU = false) : base() { Text = name; IsWiiU = isWiiU; }
public BFRESGroupNode(BRESGroupType type) : base() { Type = type; SetNameByType(); } public BFRESGroupNode(BRESGroupType type, bool isWiiU = false) : base() { Type = type; SetNameByType(); IsWiiU = isWiiU; }
public BRESGroupType Type { get; set; } public BRESGroupType Type { get; set; }

View file

@ -253,8 +253,15 @@ namespace Bfres.Structs
} }
else if (ext == ".seanim") else if (ext == ".seanim")
{ {
var ska = FromGeneric(SEANIM.Read(FileName)); STSkeleton skeleton = GetActiveSkeleton();
UpdateAnimation(ska);
if (skeleton != null)
{
var ska = FromGeneric(SEANIM.Read(FileName, skeleton));
UpdateAnimation(ska);
}
else
STErrorDialog.Show("No matching skeleton bones found to assign!", "Skeleton Importer", "");
} }
else if (ext == ".smd") else if (ext == ".smd")
{ {
@ -556,8 +563,8 @@ namespace Bfres.Structs
} }
//Difference of last and first key value //Difference of last and first key value
// if (curve.Keys.Length > 0) if (curve.Keys.Length > 0)
// curve.Delta = curve.Keys[curve.Keys.Length - 1, 0] - curve.Keys[0, 0]; curve.Delta = curve.Keys[keyGroup.Keys.Count - 1, 0] - curve.Keys[0, 0];
curve.EndFrame = curve.Frames.Max(); curve.EndFrame = curve.Frames.Max();

View file

@ -427,6 +427,8 @@ namespace FirstPlugin
} }
public static void ReadMaterial(this FMAT m, Material mat) public static void ReadMaterial(this FMAT m, Material mat)
{ {
m.MaterialU = mat;
if (mat.Flags == MaterialFlags.Visible) if (mat.Flags == MaterialFlags.Visible)
m.Enabled = true; m.Enabled = true;
else else
@ -436,7 +438,6 @@ namespace FirstPlugin
m.ReadShaderAssign(mat); m.ReadShaderAssign(mat);
m.SetActiveGame(); m.SetActiveGame();
m.ReadShaderParams(mat); m.ReadShaderParams(mat);
m.MaterialU = mat;
m.ReadTextureRefs(mat); m.ReadTextureRefs(mat);
m.ReadRenderState(mat.RenderState); m.ReadRenderState(mat.RenderState);
} }

View file

@ -44,8 +44,11 @@ namespace FirstPlugin.Forms
frameCountLbl.Text = $" / {fska.FrameCount}"; frameCountLbl.Text = $" / {fska.FrameCount}";
currentFrameUD.Maximum = fska.FrameCount; currentFrameUD.Maximum = fska.FrameCount;
fska.SetFrame(0);
for (int frame = 0; frame < fska.FrameCount; frame++) for (int frame = 0; frame < fska.FrameCount; frame++)
{ {
fska.NextFrame(null, false, true);
bool IsKeyed = boneAnim.HasKeyedFrames(frame); bool IsKeyed = boneAnim.HasKeyedFrames(frame);
if (IsKeyed) if (IsKeyed)
{ {

View file

@ -43,6 +43,8 @@ namespace FirstPlugin.Forms
frameCountLbl.Text = $" / {fska.FrameCount}"; frameCountLbl.Text = $" / {fska.FrameCount}";
currentFrameUD.Maximum = fska.FrameCount; currentFrameUD.Maximum = fska.FrameCount;
return;
for (int frame = 0; frame <= fska.FrameCount; frame++) for (int frame = 0; frame <= fska.FrameCount; frame++)
{ {
bool IsKeyed = boneAnim.HasKeyedFrames(frame); bool IsKeyed = boneAnim.HasKeyedFrames(frame);

View file

@ -22,8 +22,8 @@ namespace FirstPlugin.NodeWrappers
public bool IsWiiU { get; set; } public bool IsWiiU { get; set; }
public void LoadMenus(bool isWiiUBfres) public void LoadMenus(bool isWiiUBfres) {
{ IsWiiU = isWiiUBfres;
} }
public override void Delete() public override void Delete()

View file

@ -5,108 +5,152 @@ namespace Switch_Toolbox.Library.Animations
{ {
public class SEANIM public class SEANIM
{ {
public static Animation Read(string FileName) public static Animation Read(string FileName, STSkeleton skeleton)
{ {
Animation anim = new Animation(); Animation anim = new Animation();
var seanim = SEAnim.Read(FileName); var seanim = SEAnim.Read(FileName);
anim.FrameCount = seanim.FrameCount; anim.FrameCount = seanim.FrameCount;
anim.CanLoop = seanim.Looping; anim.CanLoop = seanim.Looping;
foreach (var bone in seanim.Bones) foreach (var bone in seanim.Bones)
{ {
var boneAnim = new Animation.KeyNode(bone); STBone genericBone = skeleton.GetBone(bone);
boneAnim.RotType = Animation.RotationType.EULER; if (genericBone != null)
boneAnim.UseSegmentScaleCompensate = false; {
anim.Bones.Add(boneAnim); var boneAnim = new Animation.KeyNode(bone);
boneAnim.RotType = Animation.RotationType.EULER;
boneAnim.UseSegmentScaleCompensate = false;
anim.Bones.Add(boneAnim);
if (seanim.AnimationPositionKeys.ContainsKey(bone)) float PositionX = 0;
{ float PositionY = 0;
var translationKeys = seanim.AnimationPositionKeys[bone]; float PositionZ = 0;
foreach (SEAnimFrame animFrame in translationKeys)
{
boneAnim.XPOS.Keys.Add(new Animation.KeyFrame()
{
Value = (float)((SELib.Utilities.Vector3)animFrame.Data).X,
Frame = animFrame.Frame,
});
boneAnim.YPOS.Keys.Add(new Animation.KeyFrame()
{
Value = (float)((SELib.Utilities.Vector3)animFrame.Data).Y,
Frame = animFrame.Frame,
});
boneAnim.ZPOS.Keys.Add(new Animation.KeyFrame()
{
Value = (float)((SELib.Utilities.Vector3)animFrame.Data).Z,
Frame = animFrame.Frame,
});
}
}
if (seanim.AnimationRotationKeys.ContainsKey(bone))
{
var rotationnKeys = seanim.AnimationRotationKeys[bone];
foreach (SEAnimFrame animFrame in rotationnKeys)
{
var quat = ((SELib.Utilities.Quaternion)animFrame.Data);
var euler = STMath.ToEulerAngles(quat.X, quat.Y, quat.Z, quat.W);
boneAnim.XROT.Keys.Add(new Animation.KeyFrame() float RotationX = 0;
{ float RotationY = 0;
Value = euler.X, float RotationZ = 0;
Frame = animFrame.Frame,
}); float ScaleX = 0;
boneAnim.YROT.Keys.Add(new Animation.KeyFrame() float ScaleY = 0;
{ float ScaleZ = 0;
Value = euler.Y,
Frame = animFrame.Frame, if (seanim.AnimType == AnimationType.Relative)
}); {
boneAnim.ZROT.Keys.Add(new Animation.KeyFrame() PositionX = genericBone.position[0];
{ PositionY = genericBone.position[1];
Value = euler.Z, PositionZ = genericBone.position[2];
Frame = animFrame.Frame,
}); RotationX = genericBone.rotation[0];
RotationY = genericBone.rotation[1];
RotationZ = genericBone.rotation[2];
ScaleX = genericBone.scale[0];
ScaleY = genericBone.scale[1];
ScaleZ = genericBone.scale[2];
} }
}
if (seanim.AnimationScaleKeys.ContainsKey(bone)) System.Console.WriteLine(bone);
{
var scaleKeys = seanim.AnimationScaleKeys[bone]; if (seanim.AnimationPositionKeys.ContainsKey(bone))
foreach (SEAnimFrame animFrame in scaleKeys) {
var translationKeys = seanim.AnimationPositionKeys[bone];
foreach (SEAnimFrame animFrame in translationKeys)
{
System.Console.WriteLine(animFrame.Frame + " T " + ((SELib.Utilities.Vector3)animFrame.Data).X);
System.Console.WriteLine(animFrame.Frame + " T " + ((SELib.Utilities.Vector3)animFrame.Data).Y);
System.Console.WriteLine(animFrame.Frame + " T " + ((SELib.Utilities.Vector3)animFrame.Data).Z);
boneAnim.XPOS.Keys.Add(new Animation.KeyFrame()
{
Value = (float)((SELib.Utilities.Vector3)animFrame.Data).X + PositionX,
Frame = animFrame.Frame,
});
boneAnim.YPOS.Keys.Add(new Animation.KeyFrame()
{
Value = (float)((SELib.Utilities.Vector3)animFrame.Data).Y + PositionY,
Frame = animFrame.Frame,
});
boneAnim.ZPOS.Keys.Add(new Animation.KeyFrame()
{
Value = (float)((SELib.Utilities.Vector3)animFrame.Data).Z + PositionZ,
Frame = animFrame.Frame,
});
}
}
if (seanim.AnimationRotationKeys.ContainsKey(bone))
{
var rotationnKeys = seanim.AnimationRotationKeys[bone];
foreach (SEAnimFrame animFrame in rotationnKeys)
{
var quat = ((SELib.Utilities.Quaternion)animFrame.Data);
var euler = STMath.ToEulerAngles(quat.X, quat.Y, quat.Z, quat.W);
System.Console.WriteLine(animFrame.Frame + " R " + euler.X);
System.Console.WriteLine(animFrame.Frame + " R " + euler.Y);
System.Console.WriteLine(animFrame.Frame + " R " + euler.Z);
boneAnim.XROT.Keys.Add(new Animation.KeyFrame()
{
Value = euler.X + RotationX,
Frame = animFrame.Frame,
});
boneAnim.YROT.Keys.Add(new Animation.KeyFrame()
{
Value = euler.Y + RotationY,
Frame = animFrame.Frame,
});
boneAnim.ZROT.Keys.Add(new Animation.KeyFrame()
{
Value = euler.Z + RotationZ,
Frame = animFrame.Frame,
});
}
}
if (seanim.AnimationScaleKeys.ContainsKey(bone))
{
var scaleKeys = seanim.AnimationScaleKeys[bone];
foreach (SEAnimFrame animFrame in scaleKeys)
{
System.Console.WriteLine(animFrame.Frame + " S " + ((SELib.Utilities.Vector3)animFrame.Data).X);
System.Console.WriteLine(animFrame.Frame + " S " + ((SELib.Utilities.Vector3)animFrame.Data).Y);
System.Console.WriteLine(animFrame.Frame + " S " + ((SELib.Utilities.Vector3)animFrame.Data).Z);
boneAnim.XSCA.Keys.Add(new Animation.KeyFrame()
{
Value = (float)((SELib.Utilities.Vector3)animFrame.Data).X + ScaleX,
Frame = animFrame.Frame,
});
boneAnim.YSCA.Keys.Add(new Animation.KeyFrame()
{
Value = (float)((SELib.Utilities.Vector3)animFrame.Data).Y + ScaleY,
Frame = animFrame.Frame,
});
boneAnim.ZSCA.Keys.Add(new Animation.KeyFrame()
{
Value = (float)((SELib.Utilities.Vector3)animFrame.Data).Z + ScaleZ,
Frame = animFrame.Frame,
});
}
}
else
{ {
boneAnim.XSCA.Keys.Add(new Animation.KeyFrame() boneAnim.XSCA.Keys.Add(new Animation.KeyFrame()
{ {
Value = (float)((SELib.Utilities.Vector3)animFrame.Data).X, Value = 1,
Frame = animFrame.Frame, Frame = 0,
}); });
boneAnim.YSCA.Keys.Add(new Animation.KeyFrame() boneAnim.YSCA.Keys.Add(new Animation.KeyFrame()
{ {
Value = (float)((SELib.Utilities.Vector3)animFrame.Data).Y, Value = 1,
Frame = animFrame.Frame, Frame = 0,
}); });
boneAnim.ZSCA.Keys.Add(new Animation.KeyFrame() boneAnim.ZSCA.Keys.Add(new Animation.KeyFrame()
{ {
Value = (float)((SELib.Utilities.Vector3)animFrame.Data).Z, Value = 1,
Frame = animFrame.Frame, Frame = 0,
}); });
} }
} }
else
{
boneAnim.XSCA.Keys.Add(new Animation.KeyFrame()
{
Value = 1,
Frame = 0,
});
boneAnim.YSCA.Keys.Add(new Animation.KeyFrame()
{
Value = 1,
Frame = 0,
});
boneAnim.ZSCA.Keys.Add(new Animation.KeyFrame()
{
Value = 1,
Frame = 0,
});
}
} }

View file

@ -73,7 +73,7 @@ namespace Switch_Toolbox.Library.Forms
{ {
InitializeComponent(); InitializeComponent();
ObjectTree = new ObjectEditorTree(); ObjectTree = new ObjectEditorTree(this);
ObjectTree.Dock = DockStyle.Fill; ObjectTree.Dock = DockStyle.Fill;
stPanel1.Controls.Add(ObjectTree); stPanel1.Controls.Add(ObjectTree);
} }
@ -89,7 +89,7 @@ namespace Switch_Toolbox.Library.Forms
stPanel1.Controls.Add(ObjectList); stPanel1.Controls.Add(ObjectList);
ObjectList.FillList((IArchiveFile)FileFormat);*/ ObjectList.FillList((IArchiveFile)FileFormat);*/
ObjectTree = new ObjectEditorTree(); ObjectTree = new ObjectEditorTree(this);
ObjectTree.Dock = DockStyle.Fill; ObjectTree.Dock = DockStyle.Fill;
stPanel1.Controls.Add(ObjectTree); stPanel1.Controls.Add(ObjectTree);
@ -99,7 +99,7 @@ namespace Switch_Toolbox.Library.Forms
} }
else else
{ {
ObjectTree = new ObjectEditorTree(); ObjectTree = new ObjectEditorTree(this);
ObjectTree.Dock = DockStyle.Fill; ObjectTree.Dock = DockStyle.Fill;
stPanel1.Controls.Add(ObjectTree); stPanel1.Controls.Add(ObjectTree);
AddNode((TreeNode)FileFormat); AddNode((TreeNode)FileFormat);

View file

@ -30,6 +30,7 @@
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
this.stPanel1 = new Switch_Toolbox.Library.Forms.STPanel(); this.stPanel1 = new Switch_Toolbox.Library.Forms.STPanel();
this.activeEditorChkBox = new Switch_Toolbox.Library.Forms.STCheckBox();
this.treeViewCustom1 = new Switch_Toolbox.Library.TreeViewCustom(); this.treeViewCustom1 = new Switch_Toolbox.Library.TreeViewCustom();
this.stPanel3 = new Switch_Toolbox.Library.Forms.STPanel(); this.stPanel3 = new Switch_Toolbox.Library.Forms.STPanel();
this.searchLbl = new Switch_Toolbox.Library.Forms.STLabel(); this.searchLbl = new Switch_Toolbox.Library.Forms.STLabel();
@ -47,7 +48,6 @@
this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.splitter1 = new System.Windows.Forms.Splitter(); this.splitter1 = new System.Windows.Forms.Splitter();
this.activeEditorChkBox = new Switch_Toolbox.Library.Forms.STCheckBox();
this.stPanel1.SuspendLayout(); this.stPanel1.SuspendLayout();
this.stPanel3.SuspendLayout(); this.stPanel3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.searchImgPB)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.searchImgPB)).BeginInit();
@ -68,6 +68,16 @@
this.stPanel1.TabIndex = 11; this.stPanel1.TabIndex = 11;
this.stPanel1.Resize += new System.EventHandler(this.stPanel1_Resize); this.stPanel1.Resize += new System.EventHandler(this.stPanel1_Resize);
// //
// activeEditorChkBox
//
this.activeEditorChkBox.AutoSize = true;
this.activeEditorChkBox.Location = new System.Drawing.Point(140, 4);
this.activeEditorChkBox.Name = "activeEditorChkBox";
this.activeEditorChkBox.Size = new System.Drawing.Size(144, 17);
this.activeEditorChkBox.TabIndex = 4;
this.activeEditorChkBox.Text = "Add Files to Active Editor";
this.activeEditorChkBox.UseVisualStyleBackColor = true;
//
// treeViewCustom1 // treeViewCustom1
// //
this.treeViewCustom1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.treeViewCustom1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@ -84,7 +94,8 @@
this.treeViewCustom1.Size = new System.Drawing.Size(319, 488); this.treeViewCustom1.Size = new System.Drawing.Size(319, 488);
this.treeViewCustom1.TabIndex = 0; this.treeViewCustom1.TabIndex = 0;
this.treeViewCustom1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeViewCustom1_AfterSelect); this.treeViewCustom1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeViewCustom1_AfterSelect);
this.treeViewCustom1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.treeViewCustom1_DoubleClick); this.treeViewCustom1.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeViewCustom1_DragDrop);
this.treeViewCustom1.DragOver += new System.Windows.Forms.DragEventHandler(this.treeViewCustom1_DragOver);
// //
// stPanel3 // stPanel3
// //
@ -229,16 +240,6 @@
this.splitter1.LocationChanged += new System.EventHandler(this.splitter1_LocationChanged); this.splitter1.LocationChanged += new System.EventHandler(this.splitter1_LocationChanged);
this.splitter1.Resize += new System.EventHandler(this.splitter1_Resize); this.splitter1.Resize += new System.EventHandler(this.splitter1_Resize);
// //
// activeEditorChkBox
//
this.activeEditorChkBox.AutoSize = true;
this.activeEditorChkBox.Location = new System.Drawing.Point(140, 4);
this.activeEditorChkBox.Name = "activeEditorChkBox";
this.activeEditorChkBox.Size = new System.Drawing.Size(144, 17);
this.activeEditorChkBox.TabIndex = 4;
this.activeEditorChkBox.Text = "Add Files to Active Editor";
this.activeEditorChkBox.UseVisualStyleBackColor = true;
//
// ObjectEditorList // ObjectEditorList
// //
this.Controls.Add(this.splitter1); this.Controls.Add(this.splitter1);

View file

@ -339,7 +339,12 @@ namespace Switch_Toolbox.Library.Forms
Runtime.ObjectEditor.ListPanelWidth = stPanel1.Width; Runtime.ObjectEditor.ListPanelWidth = stPanel1.Width;
} }
private void treeViewCustom1_DoubleClick(object sender, MouseEventArgs e) private void treeViewCustom1_DragDrop(object sender, DragEventArgs e)
{
}
private void treeViewCustom1_DragOver(object sender, DragEventArgs e)
{ {
} }

View file

@ -29,26 +29,44 @@
private void InitializeComponent() private void InitializeComponent()
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
this.splitter1 = new System.Windows.Forms.Splitter();
this.stPanel2 = new Switch_Toolbox.Library.Forms.STPanel();
this.stPanel1 = new Switch_Toolbox.Library.Forms.STPanel(); this.stPanel1 = new Switch_Toolbox.Library.Forms.STPanel();
this.activeEditorChkBox = new Switch_Toolbox.Library.Forms.STCheckBox();
this.treeViewCustom1 = new Switch_Toolbox.Library.TreeViewCustom();
this.stPanel3 = new Switch_Toolbox.Library.Forms.STPanel();
this.searchLbl = new Switch_Toolbox.Library.Forms.STLabel(); this.searchLbl = new Switch_Toolbox.Library.Forms.STLabel();
this.searchImgPB = new System.Windows.Forms.PictureBox(); this.treeViewCustom1 = new Switch_Toolbox.Library.TreeViewCustom();
this.stTextBox1 = new Switch_Toolbox.Library.Forms.STTextBox(); this.stTextBox1 = new Switch_Toolbox.Library.Forms.STTextBox();
this.stPanel3 = new Switch_Toolbox.Library.Forms.STPanel();
this.searchImgPB = new System.Windows.Forms.PictureBox();
this.activeEditorChkBox = new Switch_Toolbox.Library.Forms.STCheckBox();
this.stContextMenuStrip1 = new Switch_Toolbox.Library.Forms.STMenuStrip(); this.stContextMenuStrip1 = new Switch_Toolbox.Library.Forms.STMenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.sortToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.sortToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.stPanel2 = new Switch_Toolbox.Library.Forms.STPanel();
this.splitter1 = new System.Windows.Forms.Splitter();
this.stPanel1.SuspendLayout(); this.stPanel1.SuspendLayout();
this.stPanel3.SuspendLayout(); this.stPanel3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.searchImgPB)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.searchImgPB)).BeginInit();
this.stContextMenuStrip1.SuspendLayout(); this.stContextMenuStrip1.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// splitter1
//
this.splitter1.Location = new System.Drawing.Point(314, 0);
this.splitter1.Name = "splitter1";
this.splitter1.Size = new System.Drawing.Size(3, 542);
this.splitter1.TabIndex = 13;
this.splitter1.TabStop = false;
this.splitter1.LocationChanged += new System.EventHandler(this.splitter1_LocationChanged);
this.splitter1.Resize += new System.EventHandler(this.splitter1_Resize);
//
// stPanel2
//
this.stPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.stPanel2.Location = new System.Drawing.Point(314, 0);
this.stPanel2.Name = "stPanel2";
this.stPanel2.Size = new System.Drawing.Size(593, 542);
this.stPanel2.TabIndex = 12;
//
// stPanel1 // stPanel1
// //
this.stPanel1.Controls.Add(this.searchLbl); this.stPanel1.Controls.Add(this.searchLbl);
@ -62,19 +80,19 @@
this.stPanel1.TabIndex = 11; this.stPanel1.TabIndex = 11;
this.stPanel1.Resize += new System.EventHandler(this.stPanel1_Resize); this.stPanel1.Resize += new System.EventHandler(this.stPanel1_Resize);
// //
// activeEditorChkBox // searchLbl
// //
this.activeEditorChkBox.AutoSize = true; this.searchLbl.AutoSize = true;
this.activeEditorChkBox.Location = new System.Drawing.Point(137, 6); this.searchLbl.ForeColor = System.Drawing.Color.Silver;
this.activeEditorChkBox.Name = "activeEditorChkBox"; this.searchLbl.Location = new System.Drawing.Point(3, 31);
this.activeEditorChkBox.Size = new System.Drawing.Size(144, 17); this.searchLbl.Name = "searchLbl";
this.activeEditorChkBox.TabIndex = 3; this.searchLbl.Size = new System.Drawing.Size(41, 13);
this.activeEditorChkBox.Text = "Add Files to Active Editor"; this.searchLbl.TabIndex = 2;
this.activeEditorChkBox.UseVisualStyleBackColor = true; this.searchLbl.Text = "Search";
this.activeEditorChkBox.CheckedChanged += new System.EventHandler(this.activeEditorChkBox_CheckedChanged);
// //
// treeViewCustom1 // treeViewCustom1
// //
this.treeViewCustom1.AllowDrop = true;
this.treeViewCustom1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.treeViewCustom1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
@ -91,41 +109,10 @@
this.treeViewCustom1.DrawNode += new System.Windows.Forms.DrawTreeNodeEventHandler(this.treeViewCustom1_DrawNode); this.treeViewCustom1.DrawNode += new System.Windows.Forms.DrawTreeNodeEventHandler(this.treeViewCustom1_DrawNode);
this.treeViewCustom1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeViewCustom1_AfterSelect); this.treeViewCustom1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeViewCustom1_AfterSelect);
this.treeViewCustom1.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.selectItem); this.treeViewCustom1.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.selectItem);
this.treeViewCustom1.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeViewCustom1_DragDrop);
this.treeViewCustom1.DragOver += new System.Windows.Forms.DragEventHandler(this.treeViewCustom1_DragOver);
this.treeViewCustom1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.treeViewCustom1_DoubleClick); this.treeViewCustom1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.treeViewCustom1_DoubleClick);
// //
// stPanel3
//
this.stPanel3.Controls.Add(this.searchImgPB);
this.stPanel3.Controls.Add(this.activeEditorChkBox);
this.stPanel3.Controls.Add(this.stContextMenuStrip1);
this.stPanel3.Dock = System.Windows.Forms.DockStyle.Top;
this.stPanel3.Location = new System.Drawing.Point(0, 0);
this.stPanel3.Name = "stPanel3";
this.stPanel3.Size = new System.Drawing.Size(314, 26);
this.stPanel3.TabIndex = 2;
//
// searchLbl
//
this.searchLbl.AutoSize = true;
this.searchLbl.ForeColor = System.Drawing.Color.Silver;
this.searchLbl.Location = new System.Drawing.Point(3, 31);
this.searchLbl.Name = "searchLbl";
this.searchLbl.Size = new System.Drawing.Size(41, 13);
this.searchLbl.TabIndex = 2;
this.searchLbl.Text = "Search";
//
// searchImgPB
//
this.searchImgPB.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.searchImgPB.BackColor = System.Drawing.Color.Transparent;
this.searchImgPB.Image = global::Switch_Toolbox.Library.Properties.Resources.Antu_edit_find_mail_svg;
this.searchImgPB.Location = new System.Drawing.Point(-654, 5);
this.searchImgPB.Name = "searchImgPB";
this.searchImgPB.Size = new System.Drawing.Size(22, 17);
this.searchImgPB.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.searchImgPB.TabIndex = 1;
this.searchImgPB.TabStop = false;
//
// stTextBox1 // stTextBox1
// //
this.stTextBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.stTextBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
@ -139,6 +126,40 @@
this.stTextBox1.TextChanged += new System.EventHandler(this.stTextBox1_TextChanged); this.stTextBox1.TextChanged += new System.EventHandler(this.stTextBox1_TextChanged);
this.stTextBox1.Leave += new System.EventHandler(this.stTextBox1_Leave); this.stTextBox1.Leave += new System.EventHandler(this.stTextBox1_Leave);
// //
// stPanel3
//
this.stPanel3.Controls.Add(this.searchImgPB);
this.stPanel3.Controls.Add(this.activeEditorChkBox);
this.stPanel3.Controls.Add(this.stContextMenuStrip1);
this.stPanel3.Dock = System.Windows.Forms.DockStyle.Top;
this.stPanel3.Location = new System.Drawing.Point(0, 0);
this.stPanel3.Name = "stPanel3";
this.stPanel3.Size = new System.Drawing.Size(314, 26);
this.stPanel3.TabIndex = 2;
//
// searchImgPB
//
this.searchImgPB.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.searchImgPB.BackColor = System.Drawing.Color.Transparent;
this.searchImgPB.Image = global::Switch_Toolbox.Library.Properties.Resources.Antu_edit_find_mail_svg;
this.searchImgPB.Location = new System.Drawing.Point(-654, 5);
this.searchImgPB.Name = "searchImgPB";
this.searchImgPB.Size = new System.Drawing.Size(22, 17);
this.searchImgPB.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.searchImgPB.TabIndex = 1;
this.searchImgPB.TabStop = false;
//
// activeEditorChkBox
//
this.activeEditorChkBox.AutoSize = true;
this.activeEditorChkBox.Location = new System.Drawing.Point(137, 6);
this.activeEditorChkBox.Name = "activeEditorChkBox";
this.activeEditorChkBox.Size = new System.Drawing.Size(144, 17);
this.activeEditorChkBox.TabIndex = 3;
this.activeEditorChkBox.Text = "Add Files to Active Editor";
this.activeEditorChkBox.UseVisualStyleBackColor = true;
this.activeEditorChkBox.CheckedChanged += new System.EventHandler(this.activeEditorChkBox_CheckedChanged);
//
// stContextMenuStrip1 // stContextMenuStrip1
// //
this.stContextMenuStrip1.Dock = System.Windows.Forms.DockStyle.Fill; this.stContextMenuStrip1.Dock = System.Windows.Forms.DockStyle.Fill;
@ -162,7 +183,7 @@
// openToolStripMenuItem // openToolStripMenuItem
// //
this.openToolStripMenuItem.Name = "openToolStripMenuItem"; this.openToolStripMenuItem.Name = "openToolStripMenuItem";
this.openToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.openToolStripMenuItem.Size = new System.Drawing.Size(117, 22);
this.openToolStripMenuItem.Text = "Add File"; this.openToolStripMenuItem.Text = "Add File";
this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click); this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
// //
@ -177,28 +198,10 @@
// sortToolStripMenuItem // sortToolStripMenuItem
// //
this.sortToolStripMenuItem.Name = "sortToolStripMenuItem"; this.sortToolStripMenuItem.Name = "sortToolStripMenuItem";
this.sortToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.sortToolStripMenuItem.Size = new System.Drawing.Size(95, 22);
this.sortToolStripMenuItem.Text = "Sort"; this.sortToolStripMenuItem.Text = "Sort";
this.sortToolStripMenuItem.Click += new System.EventHandler(this.sortToolStripMenuItem_Click); this.sortToolStripMenuItem.Click += new System.EventHandler(this.sortToolStripMenuItem_Click);
// //
// stPanel2
//
this.stPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.stPanel2.Location = new System.Drawing.Point(314, 0);
this.stPanel2.Name = "stPanel2";
this.stPanel2.Size = new System.Drawing.Size(593, 542);
this.stPanel2.TabIndex = 12;
//
// splitter1
//
this.splitter1.Location = new System.Drawing.Point(314, 0);
this.splitter1.Name = "splitter1";
this.splitter1.Size = new System.Drawing.Size(3, 542);
this.splitter1.TabIndex = 13;
this.splitter1.TabStop = false;
this.splitter1.LocationChanged += new System.EventHandler(this.splitter1_LocationChanged);
this.splitter1.Resize += new System.EventHandler(this.splitter1_Resize);
//
// ObjectEditorTree // ObjectEditorTree
// //
this.Controls.Add(this.splitter1); this.Controls.Add(this.splitter1);

View file

@ -17,6 +17,8 @@ namespace Switch_Toolbox.Library.Forms
{ {
public partial class ObjectEditorTree : UserControl public partial class ObjectEditorTree : UserControl
{ {
public ObjectEditor ObjectEditor;
private TreeView _fieldsTreeCache; private TreeView _fieldsTreeCache;
public void BeginUpdate() { treeViewCustom1.BeginUpdate(); } public void BeginUpdate() { treeViewCustom1.BeginUpdate(); }
@ -86,10 +88,12 @@ namespace Switch_Toolbox.Library.Forms
} }
} }
public ObjectEditorTree() public ObjectEditorTree(ObjectEditor objectEditor)
{ {
InitializeComponent(); InitializeComponent();
ObjectEditor = objectEditor;
_fieldsTreeCache = new TreeView(); _fieldsTreeCache = new TreeView();
if (Runtime.ObjectEditor.ListPanelWidth > 0) if (Runtime.ObjectEditor.ListPanelWidth > 0)
@ -487,5 +491,48 @@ namespace Switch_Toolbox.Library.Forms
{ {
AddFilesToActiveEditor = activeEditorChkBox.Checked; AddFilesToActiveEditor = activeEditorChkBox.Checked;
} }
private void AddFiles(TreeNode parentNode, string[] Files)
{
if (Files == null || Files.Length <= 0) return;
for (int i = 0; i < Files.Length; i++)
{
var File = ArchiveNodeWrapper.FromPath(Files[i]);
File.ArchiveFileInfo = new ArchiveFileInfo();
File.ArchiveFileInfo.FileData = System.IO.File.ReadAllBytes(Files[i]);
File.ArchiveFileInfo.FileName = Files[i];
parentNode.Nodes.Add(File);
}
}
private void treeViewCustom1_DragDrop(object sender, DragEventArgs e)
{
Point pt = treeViewCustom1.PointToClient(new Point(e.X, e.Y));
treeViewCustom1.SelectedNode = treeViewCustom1.GetNodeAt(pt.X, pt.Y);
bool IsFile = treeViewCustom1.SelectedNode is ArchiveNodeWrapper && treeViewCustom1.SelectedNode.Parent != null;
//Use the parent folder for files if it has any
if (IsFile)
AddFiles(treeViewCustom1.SelectedNode.Parent, e.Data.GetData(DataFormats.FileDrop) as string[]);
else
AddFiles(treeViewCustom1.SelectedNode, e.Data.GetData(DataFormats.FileDrop) as string[]);
}
private void treeViewCustom1_DragOver(object sender, DragEventArgs e)
{
Point pt = treeViewCustom1.PointToClient(new Point(e.X, e.Y));
TreeNode node = treeViewCustom1.GetNodeAt(pt.X, pt.Y);
treeViewCustom1.SelectedNode = node;
bool IsRoot = node is ArchiveRootNodeWrapper;
bool IsFolder = node is ArchiveFolderNodeWrapper;
bool IsFile = node is ArchiveNodeWrapper && node.Parent != null;
if (IsFolder || IsRoot || IsFile)
e.Effect = DragDropEffects.Link;
else
e.Effect = DragDropEffects.None;
}
} }
} }

View file

@ -120,4 +120,7 @@
<metadata name="stContextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="stContextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>
<metadata name="stContextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root> </root>

View file

@ -2,7 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.ComponentModel;
using System.Windows.Forms; using System.Windows.Forms;
using Switch_Toolbox.Library.Forms; using Switch_Toolbox.Library.Forms;
using Switch_Toolbox.Library.IO; using Switch_Toolbox.Library.IO;
@ -70,6 +70,8 @@ namespace Switch_Toolbox.Library
//Wrapper for the archive file itself //Wrapper for the archive file itself
public class ArchiveRootNodeWrapper : TreeNodeCustom public class ArchiveRootNodeWrapper : TreeNodeCustom
{ {
public virtual object PropertyDisplay { get; set; }
IArchiveFile ArchiveFile; IArchiveFile ArchiveFile;
public ArchiveRootNodeWrapper(string text, IArchiveFile archiveFile) public ArchiveRootNodeWrapper(string text, IArchiveFile archiveFile)
@ -81,6 +83,8 @@ namespace Switch_Toolbox.Library
ContextMenuStrip.Items.Add(new STToolStripItem("Save", SaveAction)); ContextMenuStrip.Items.Add(new STToolStripItem("Save", SaveAction));
if (!((IFileFormat)archiveFile).CanSave) if (!((IFileFormat)archiveFile).CanSave)
ContextMenuStrip.Items[0].Enabled = false; ContextMenuStrip.Items[0].Enabled = false;
PropertyDisplay = new GenericArchiveProperties(archiveFile, text);
} }
private void SaveAction(object sender, EventArgs args) private void SaveAction(object sender, EventArgs args)
@ -102,11 +106,51 @@ namespace Switch_Toolbox.Library
} }
GC.Collect(); GC.Collect();
} }
public override void OnClick(TreeView treeView)
{
STPropertyGrid editor = (STPropertyGrid)LibraryGUI.Instance.GetActiveContent(typeof(STPropertyGrid));
if (editor == null)
{
editor = new STPropertyGrid();
LibraryGUI.Instance.LoadEditor(editor);
}
editor.Text = Text;
editor.Dock = DockStyle.Fill;
editor.LoadProperty(PropertyDisplay, OnPropertyChanged);
}
public virtual void OnPropertyChanged() {
Text = Name;
}
public class GenericArchiveProperties
{
private IArchiveFile ArchiveFile;
[Category("Archive Properties")]
public string Name { get; set; }
[Category("Archive Properties")]
[DisplayName("File Count")]
public int FileCount
{
get { return ArchiveFile.Files.ToList().Count; }
}
public GenericArchiveProperties(IArchiveFile archiveFile, string text) {
ArchiveFile = archiveFile;
Name = text;
}
}
} }
//Wrapper for folders //Wrapper for folders
public class ArchiveFolderNodeWrapper : TreeNodeCustom public class ArchiveFolderNodeWrapper : TreeNodeCustom
{ {
public virtual object PropertyDisplay { get; set; }
public bool CanReplace public bool CanReplace
{ {
set set
@ -132,13 +176,43 @@ namespace Switch_Toolbox.Library
public ArchiveFolderNodeWrapper(string text) public ArchiveFolderNodeWrapper(string text)
{ {
Text = text; Text = text;
PropertyDisplay = new GenericFolderProperties();
((GenericFolderProperties)PropertyDisplay).Name = Text;
ReloadMenus();
}
private void ReloadMenus()
{
ContextMenuStrip = new STContextMenuStrip(); ContextMenuStrip = new STContextMenuStrip();
ContextMenuStrip.Items.Add(new STToolStripItem("Extract Folder", ExtractAction)); ContextMenuStrip.Items.Add(new STToolStripItem("Extract Folder", ExtractAction));
ContextMenuStrip.Items.Add(new STToolStripItem("Replace Folder", ReplaceAction)); ContextMenuStrip.Items.Add(new STToolStripItem("Replace Folder", ReplaceAction));
ContextMenuStrip.Items.Add(new STToolStripItem("Delete Folder", DeleteAction)); ContextMenuStrip.Items.Add(new STToolStripItem("Delete Folder", DeleteAction));
} }
public override void OnClick(TreeView treeView)
{
STPropertyGrid editor = (STPropertyGrid)LibraryGUI.Instance.GetActiveContent(typeof(STPropertyGrid));
if (editor == null)
{
editor = new STPropertyGrid();
LibraryGUI.Instance.LoadEditor(editor);
}
editor.Text = Text;
editor.Dock = DockStyle.Fill;
editor.LoadProperty(PropertyDisplay, OnPropertyChanged);
}
public class GenericFolderProperties
{
[Category("Folder Properties")]
public string Name { get; set; }
}
public virtual void OnPropertyChanged() {
Text = Name;
}
private void ExtractAction(object sender, EventArgs args) private void ExtractAction(object sender, EventArgs args)
{ {
TreeNode node = this; TreeNode node = this;
@ -165,20 +239,23 @@ namespace Switch_Toolbox.Library
int Curfile = 0; int Curfile = 0;
foreach (TreeNode file in Collection) foreach (TreeNode file in Collection)
{ {
string FilePath = ((ArchiveNodeWrapper)file).ArchiveFileInfo.FileName;
FilePath = FilePath.Replace(ParentPath, string.Empty);
Console.WriteLine($"FilePath " + FilePath);
var path = Path.Combine(folderDialog.SelectedPath, FilePath);
progressBar.Value = (Curfile++ * 100) / Collection.Count();
progressBar.Refresh();
CreateDirectoryIfExists($"{path}");
if (file is ArchiveNodeWrapper) if (file is ArchiveNodeWrapper)
{ {
File.WriteAllBytes($"{path}", string FilePath = ((ArchiveNodeWrapper)file).ArchiveFileInfo.FileName;
((ArchiveNodeWrapper)file).ArchiveFileInfo.FileData); FilePath = FilePath.Replace(ParentPath, string.Empty);
Console.WriteLine($"FilePath " + FilePath);
var path = Path.Combine(folderDialog.SelectedPath, FilePath);
progressBar.Value = (Curfile++ * 100) / Collection.Count();
progressBar.Refresh();
CreateDirectoryIfExists($"{path}");
if (file is ArchiveNodeWrapper)
{
File.WriteAllBytes($"{path}",
((ArchiveNodeWrapper)file).ArchiveFileInfo.FileData);
}
} }
} }
@ -242,7 +319,20 @@ namespace Switch_Toolbox.Library
public ArchiveNodeWrapper(string text) public ArchiveNodeWrapper(string text)
{ {
Text = text; Text = text;
ReloadMenus();
}
public static ArchiveNodeWrapper FromPath(string FilePath)
{
var wrapper = new ArchiveNodeWrapper(Path.GetFileName(FilePath));
wrapper.ArchiveFileInfo = new ArchiveFileInfo();
wrapper.ArchiveFileInfo.FileName = FilePath;
wrapper.ArchiveFileInfo.FileData = File.ReadAllBytes(FilePath);
return wrapper;
}
private void ReloadMenus()
{
ContextMenuStrip = new STContextMenuStrip(); ContextMenuStrip = new STContextMenuStrip();
ContextMenuStrip.Items.Add(new STToolStripItem("Extract", ExtractAction)); ContextMenuStrip.Items.Add(new STToolStripItem("Extract", ExtractAction));
ContextMenuStrip.Items.Add(new STToolStripItem("Replace", ReplaceAction)); ContextMenuStrip.Items.Add(new STToolStripItem("Replace", ReplaceAction));

View file

@ -277,7 +277,7 @@
<Compile Include="Audio\NaudioExampleData\LineSpectrum.cs" /> <Compile Include="Audio\NaudioExampleData\LineSpectrum.cs" />
<Compile Include="Audio\NaudioExampleData\ScalingStrategy.cs" /> <Compile Include="Audio\NaudioExampleData\ScalingStrategy.cs" />
<Compile Include="Audio\NaudioExampleData\SpectrumBase.cs" /> <Compile Include="Audio\NaudioExampleData\SpectrumBase.cs" />
<Compile Include="FileFormats\ANIM.cs" /> <Compile Include="FileFormats\Animation\ANIM.cs" />
<Compile Include="FileFormats\Assimp\Assimp.cs" /> <Compile Include="FileFormats\Assimp\Assimp.cs" />
<Compile Include="FileFormats\Assimp\AssimpHelper.cs" /> <Compile Include="FileFormats\Assimp\AssimpHelper.cs" />
<Compile Include="FileFormats\ASTC.cs" /> <Compile Include="FileFormats\ASTC.cs" />

View file

@ -117,33 +117,33 @@
// newToolStripMenuItem // newToolStripMenuItem
// //
this.newToolStripMenuItem.Name = "newToolStripMenuItem"; this.newToolStripMenuItem.Name = "newToolStripMenuItem";
this.newToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.newToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
this.newToolStripMenuItem.Text = "New"; this.newToolStripMenuItem.Text = "New";
// //
// newFromFileToolStripMenuItem // newFromFileToolStripMenuItem
// //
this.newFromFileToolStripMenuItem.Name = "newFromFileToolStripMenuItem"; this.newFromFileToolStripMenuItem.Name = "newFromFileToolStripMenuItem";
this.newFromFileToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.newFromFileToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
this.newFromFileToolStripMenuItem.Text = "New From File"; this.newFromFileToolStripMenuItem.Text = "New From File";
// //
// openToolStripMenuItem // openToolStripMenuItem
// //
this.openToolStripMenuItem.Name = "openToolStripMenuItem"; this.openToolStripMenuItem.Name = "openToolStripMenuItem";
this.openToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.openToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
this.openToolStripMenuItem.Text = "Open"; this.openToolStripMenuItem.Text = "Open";
this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click); this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
// //
// recentToolStripMenuItem // recentToolStripMenuItem
// //
this.recentToolStripMenuItem.Name = "recentToolStripMenuItem"; this.recentToolStripMenuItem.Name = "recentToolStripMenuItem";
this.recentToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.recentToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
this.recentToolStripMenuItem.Text = "Recent"; this.recentToolStripMenuItem.Text = "Recent";
// //
// saveToolStripMenuItem // saveToolStripMenuItem
// //
this.saveToolStripMenuItem.Enabled = false; this.saveToolStripMenuItem.Enabled = false;
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem"; this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
this.saveToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.saveToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
this.saveToolStripMenuItem.Text = "Save"; this.saveToolStripMenuItem.Text = "Save";
this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click); this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
// //
@ -151,14 +151,14 @@
// //
this.saveAsToolStripMenuItem.Enabled = false; this.saveAsToolStripMenuItem.Enabled = false;
this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem"; this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
this.saveAsToolStripMenuItem.Text = "Save As"; this.saveAsToolStripMenuItem.Text = "Save As";
this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.saveAsToolStripMenuItem_Click); this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.saveAsToolStripMenuItem_Click);
// //
// exitToolStripMenuItem // exitToolStripMenuItem
// //
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.exitToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
this.exitToolStripMenuItem.Text = "Exit"; this.exitToolStripMenuItem.Text = "Exit";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
// //
@ -179,7 +179,7 @@
// compressionToolStripMenuItem // compressionToolStripMenuItem
// //
this.compressionToolStripMenuItem.Name = "compressionToolStripMenuItem"; this.compressionToolStripMenuItem.Name = "compressionToolStripMenuItem";
this.compressionToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.compressionToolStripMenuItem.Size = new System.Drawing.Size(144, 22);
this.compressionToolStripMenuItem.Text = "Compression"; this.compressionToolStripMenuItem.Text = "Compression";
// //
// experimentalToolStripMenuItem // experimentalToolStripMenuItem
@ -248,7 +248,7 @@
// mainSettingsToolStripMenuItem // mainSettingsToolStripMenuItem
// //
this.mainSettingsToolStripMenuItem.Name = "mainSettingsToolStripMenuItem"; this.mainSettingsToolStripMenuItem.Name = "mainSettingsToolStripMenuItem";
this.mainSettingsToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.mainSettingsToolStripMenuItem.Size = new System.Drawing.Size(161, 22);
this.mainSettingsToolStripMenuItem.Text = "Main Settings"; this.mainSettingsToolStripMenuItem.Text = "Main Settings";
this.mainSettingsToolStripMenuItem.Click += new System.EventHandler(this.mainSettingsToolStripMenuItem_Click); this.mainSettingsToolStripMenuItem.Click += new System.EventHandler(this.mainSettingsToolStripMenuItem_Click);
// //
@ -256,7 +256,7 @@
// //
this.fileAssociationsToolStripMenuItem.Enabled = false; this.fileAssociationsToolStripMenuItem.Enabled = false;
this.fileAssociationsToolStripMenuItem.Name = "fileAssociationsToolStripMenuItem"; this.fileAssociationsToolStripMenuItem.Name = "fileAssociationsToolStripMenuItem";
this.fileAssociationsToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.fileAssociationsToolStripMenuItem.Size = new System.Drawing.Size(161, 22);
this.fileAssociationsToolStripMenuItem.Text = "File Associations"; this.fileAssociationsToolStripMenuItem.Text = "File Associations";
this.fileAssociationsToolStripMenuItem.Click += new System.EventHandler(this.fileAssociationsToolStripMenuItem_Click); this.fileAssociationsToolStripMenuItem.Click += new System.EventHandler(this.fileAssociationsToolStripMenuItem_Click);
// //

View file

@ -123,6 +123,9 @@
<metadata name="tabControlContextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="tabControlContextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>249, 17</value> <value>249, 17</value>
</metadata> </metadata>
<metadata name="stToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>132, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="BtnMdiMinimize.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="BtnMdiMinimize.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>