/// <summary> /// Updates the Node's icon to reflect the collapsed state. /// </summary> protected void BetterTreeView_AfterCollapse(object sender, TreeViewEventArgs e) { if (e.Node is BetterTreeNode) { BetterTreeNode n = (BetterTreeNode)e.Node; n.ImageIndex = n.CollapsedImageIndex; n.SelectedImageIndex = n.CollapsedImageIndex; } }
public BetterTreeNode AddDir(string name, BetterTreeNode parent = null) { BetterTreeNode betterTreeNode = new BetterTreeNode(name); betterTreeNode.Offset = -1L; betterTreeNode.Size = -1L; parent.Nodes.Add(betterTreeNode); return(betterTreeNode); }
public BetterTreeNode AddFile(string name, BetterTreeNode parent, long offset, long size) { BetterTreeNode betterTreeNode = new BetterTreeNode(name); betterTreeNode.Offset = offset; betterTreeNode.Size = size; parent.Nodes.Add(betterTreeNode); return(betterTreeNode); }
public BetterTreeNode AddFile(string name, BetterTreeNode parent, long offset, long size, long HashedRegionSize, string ExpectedHash, string ActualHash) { BetterTreeNode betterTreeNode = new BetterTreeNode(name); betterTreeNode.Offset = offset; betterTreeNode.Size = size; betterTreeNode.ExpectedHash = ExpectedHash; betterTreeNode.ActualHash = ActualHash; betterTreeNode.HashedRegionSize = HashedRegionSize; parent.Nodes.Add(betterTreeNode); return(betterTreeNode); }
private void AddZFileNodeFor( IZFile?zFile, BetterTreeNode <ZFileNode> treeNode) { var parentZFileNode = treeNode.Parent?.AssociatedData; var zFileNode = new ZFileNode { Parent = parentZFileNode, ZFile = zFile, }; treeNode.AssociatedData = zFileNode; this.zFileNodes_.AddLast(zFileNode); parentZFileNode?.AllChildZFileNodes?.Add(zFileNode); // Gathers keywords. var keywords = zFileNode.Keywords; if (zFile != null) { var fileName = zFile.FileName; keywords.Add(fileName !); var betterFileName = zFile.BetterFileName; if (!string.IsNullOrEmpty(betterFileName)) { keywords.Add(betterFileName !); } foreach (var keyword in keywords) { this.filterImpl_.Add(keyword, zFileNode); } } }
private void TV_Partitions_AfterSelect(object sender, TreeViewEventArgs e) { BetterTreeNode betterTreeNode = (BetterTreeNode)TV_Partitions.SelectedNode; if (betterTreeNode.Offset != -1) { selectedOffset = betterTreeNode.Offset; selectedSize = betterTreeNode.Size; LB_DataOffset.Text = "Offset: 0x" + selectedOffset.ToString("X"); LB_SelectedData.Text = e.Node.Text; B_Extract.Enabled = true; string[] array = new string[5] { "B", "KB", "MB", "GB", "TB" }; double num = (double)selectedSize; int num2 = 0; while (num >= 1024.0 && num2 < array.Length - 1) { num2++; num /= 1024.0; } LB_DataSize.Text = "Size: 0x" + selectedSize.ToString("X") + " (" + num.ToString() + array[num2] + ")"; } else { LB_SelectedData.Text = ""; LB_DataOffset.Text = ""; LB_DataSize.Text = ""; B_Extract.Enabled = false; } }
public BetterTreeNode AddFile(string name, BetterTreeNode parent, long offset, long size) { return(AddFile(name, parent, offset, size, 0, "", "")); }
public int Compare( BetterTreeNode <ZFileNode> lhs, BetterTreeNode <ZFileNode> rhs) => - Asserts.Assert(lhs.AssociatedData).MatchPercentage.CompareTo( Asserts.Assert(rhs.AssociatedData).MatchPercentage);
private void LoadPartitons() { bool msgFlag = false; TV_Partitions.Nodes.Clear(); TV_Parti = new TreeViewFileSystem(TV_Partitions); rootNode = new BetterTreeNode("root"); rootNode.Offset = -1L; rootNode.Size = -1L; TV_Partitions.Nodes.Add(rootNode); FileStream fileStream = new FileStream(TB_File.Text, FileMode.Open, FileAccess.Read); HFS0.HSF0_Entry[] array = new HFS0.HSF0_Entry[HFS0.HFS0_Headers[0].FileCount]; fileStream.Position = XCI.XCI_Headers[0].HFS0OffsetPartition + 16 + 64 * HFS0.HFS0_Headers[0].FileCount; long num = XCI.XCI_Headers[0].HFS0OffsetPartition + XCI.XCI_Headers[0].HFS0SizeParition; byte[] array2 = new byte[64]; byte[] array3 = new byte[16]; byte[] array4 = new byte[24]; for (int i = 0; i < HFS0.HFS0_Headers[0].FileCount; i++) { fileStream.Position = XCI.XCI_Headers[0].HFS0OffsetPartition + 16 + 64 * i; fileStream.Read(array2, 0, 64); array[i] = new HFS0.HSF0_Entry(array2); fileStream.Position = XCI.XCI_Headers[0].HFS0OffsetPartition + 16 + 64 * HFS0.HFS0_Headers[0].FileCount + array[i].Name_ptr; int num2; while ((num2 = fileStream.ReadByte()) != 0 && num2 != 0) { chars.Add((char)num2); } array[i].Name = new string(chars.ToArray()); chars.Clear(); TV_Parti.AddFile(array[i].Name + ".hfs0", rootNode, num + array[i].Offset, array[i].Size); BetterTreeNode betterTreeNode = TV_Parti.AddDir(array[i].Name, rootNode); HFS0.HFS0_Header[] array5 = new HFS0.HFS0_Header[1]; fileStream.Position = array[i].Offset + num; fileStream.Read(array3, 0, 16); array5[0] = new HFS0.HFS0_Header(array3); if (array[i].Name == "secure") { SecureSize = new long[array5[0].FileCount]; SecureOffset = new long[array5[0].FileCount]; } if (array[i].Name == "normal") { NormalSize = new long[array5[0].FileCount]; NormalOffset = new long[array5[0].FileCount]; } HFS0.HSF0_Entry[] array6 = new HFS0.HSF0_Entry[array5[0].FileCount]; for (int j = 0; j < array5[0].FileCount; j++) { fileStream.Position = array[i].Offset + num + 16 + 64 * j; fileStream.Read(array2, 0, 64); array6[j] = new HFS0.HSF0_Entry(array2); fileStream.Position = array[i].Offset + num + 16 + 64 * array5[0].FileCount + array6[j].Name_ptr; if (array[i].Name == "secure") { SecureSize[j] = array6[j].Size; SecureOffset[j] = array[i].Offset + array6[j].Offset + num + 16 + array5[0].StringTableSize + array5[0].FileCount * 64; } if (array[i].Name == "normal") { NormalSize[j] = array6[j].Size; NormalOffset[j] = array[i].Offset + array6[j].Offset + num + 16 + array5[0].StringTableSize + array5[0].FileCount * 64; } while ((num2 = fileStream.ReadByte()) != 0 && num2 != 0) { chars.Add((char)num2); } array6[j].Name = new string(chars.ToArray()); chars.Clear(); TV_Parti.AddFile(array6[j].Name, betterTreeNode, array[i].Offset + array6[j].Offset + num + 16 + array5[0].StringTableSize + array5[0].FileCount * 64, array6[j].Size); TreeNode[] array7 = TV_Partitions.Nodes.Find(betterTreeNode.Text, true); if (array7.Length != 0) { TV_Parti.AddFile(array6[j].Name, (BetterTreeNode)array7[0], 0L, 0L); } } } long num3 = -9223372036854775808L; for (int k = 0; k < SecureSize.Length; k++) { if (SecureSize[k] > num3) { gameNcaSize = SecureSize[k]; gameNcaOffset = SecureOffset[k]; num3 = SecureOffset[k]; } } PFS0Offset = gameNcaOffset + 32768; fileStream.Position = PFS0Offset; fileStream.Read(array3, 0, 16); PFS0.PFS0_Headers[0] = new PFS0.PFS0_Header(array3); PFS0.PFS0_Entry[] array8; try { array8 = new PFS0.PFS0_Entry[PFS0.PFS0_Headers[0].FileCount]; } catch { // another temporary fix until someone can understand the real problem // I am just taking shots in the dark using any method to get it not to crash // Problem: Overflow issue array8 = new PFS0.PFS0_Entry[0]; msgFlag = true; } for (int m = 0; m < PFS0.PFS0_Headers[0].FileCount; m++) { fileStream.Position = PFS0Offset + 16 + 24 * m; fileStream.Read(array4, 0, 24); array8[m] = new PFS0.PFS0_Entry(array4); PFS0Size += array8[m].Size; } TV_Parti.AddFile("boot.psf0", rootNode, PFS0Offset, 16 + 24 * PFS0.PFS0_Headers[0].FileCount + 64 + PFS0Size); BetterTreeNode betterTreeNode2 = TV_Parti.AddDir("boot", rootNode); for (int n = 0; n < PFS0.PFS0_Headers[0].FileCount; n++) { fileStream.Position = PFS0Offset + 16 + 24 * PFS0.PFS0_Headers[0].FileCount + array8[n].Name_ptr; int num4; while ((num4 = fileStream.ReadByte()) != 0 && num4 != 0) { chars.Add((char)num4); } array8[n].Name = new string(chars.ToArray()); chars.Clear(); TV_Parti.AddFile(array8[n].Name, betterTreeNode2, PFS0Offset + array8[n].Offset + 16 + PFS0.PFS0_Headers[0].StringTableSize + PFS0.PFS0_Headers[0].FileCount * 24, array8[n].Size); TreeNode[] array9 = TV_Partitions.Nodes.Find(betterTreeNode2.Text, true); if (array9.Length != 0) { TV_Parti.AddFile(array8[n].Name, (BetterTreeNode)array9[0], 0L, 0L); } } fileStream.Close(); if (msgFlag) { MessageBox.Show("Trim/extract functions may not be supported for this release [PARTITION]"); } }