private void mnuContextNodeExtractOriginal_Click(object sender, EventArgs e) { TreeNode n = tvwFilelistNormal.SelectedNode; if (n != null) { DirectoryNode d_node = (DirectoryNode)n.Tag; if (d_node.Leaf != null) { PiggLeaf leaf = d_node.Leaf; PiggLeafInfo leaf_info = leaf.PiggReferences[leaf.PiggReferences.Count - 1]; PiggTexture tex = new PiggTexture(leaf_info); string ext = Path.GetExtension(tex.Filename).ToLower(); string filter = Utility.ExtToDescriptive(ext) + " files (*" + ext + ")|*" + ext + "|"; filter += "All files (*.*)|*.*"; dlgSave.Filter = filter; dlgSave.FilterIndex = 1; dlgSave.FileName = Path.GetFileName(tex.Filename); dlgSave.OverwritePrompt = true; if (dlgSave.ShowDialog() == DialogResult.OK) { FileStream fs = new FileStream(dlgSave.FileName, FileMode.Create, FileAccess.Write, FileShare.Write); tex.Extract(fs, TextureExtractType.Original); fs.Close(); } } } }
private void mnuContextNodeExtractPng_Click(object sender, EventArgs e) { TreeNode n = tvwFilelistNormal.SelectedNode; if (n != null) { DirectoryNode d_node = (DirectoryNode)n.Tag; if (d_node.Leaf != null) { string filter = "PNG files (*.png)|*.png|"; filter += "All files (*.*)|*.*"; dlgSave.Filter = filter; dlgSave.FilterIndex = 1; dlgSave.FileName = Path.GetFileNameWithoutExtension(d_node.Leaf.Name) + ".png"; dlgSave.OverwritePrompt = true; if (dlgSave.ShowDialog() == DialogResult.OK) { FileStream fs = new FileStream(dlgSave.FileName, FileMode.Create, FileAccess.Write, FileShare.Write); int last = d_node.Leaf.PiggReferences.Count - 1; PiggTexture tex = new PiggTexture(d_node.Leaf.PiggReferences[last]); tex.Extract(fs, TextureExtractType.Png); fs.Close(); } } } }
private void tvwFilelistNormal_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { // Check for right-click if (e.Button == MouseButtons.Right) { tvwFilelistNormal.SelectedNode = e.Node; DirectoryNode d_node = (DirectoryNode)e.Node.Tag; if (d_node.Leaf != null) { FileInfo fi = new FileInfo(d_node.Leaf.Name); string ext = fi.Extension; mnuContextNodeSeparator.Visible = false; mnuContextNodeExtractOriginal.Visible = false; mnuContextNodeExtractBmp.Visible = false; mnuContextNodeExtractJpg.Visible = false; mnuContextNodeExtractPng.Visible = false; mnuContextNodeExtractWav.Visible = false; switch (ext.ToLower()) { case ".texture": int last = d_node.Leaf.PiggReferences.Count - 1; PiggLeafInfo info = d_node.Leaf.PiggReferences[last]; PiggTexture tex = new PiggTexture(info); ext = Path.GetExtension(tex.Filename).ToLower(); if (ext[0] == '.') { ext = ext.Substring(1); } mnuContextNodeExtract.Image = imlImages.Images[5]; mnuContextNodeExtractOriginal.Image = imlImages.Images[4]; mnuContextNodeExtractOriginal.Text = string.Format("Extract as original format ({0})...", ext); mnuContextNodeSeparator.Visible = true; mnuContextNodeExtractOriginal.Visible = true; mnuContextNodeExtractBmp.Visible = true; mnuContextNodeExtractJpg.Visible = true; mnuContextNodeExtractPng.Visible = true; break; case ".bmp": case ".jpg": case ".png": mnuContextNodeExtract.Image = imlImages.Images[4]; break; case ".bin": mnuContextNodeExtract.Image = imlImages.Images[5]; break; case ".geo": mnuContextNodeExtract.Image = imlImages.Images[6]; break; case ".txt": mnuContextNodeExtract.Image = imlImages.Images[7]; break; case ".cfg": mnuContextNodeExtract.Image = imlImages.Images[8]; break; case ".ogg": case ".mp3": case ".wav": mnuContextNodeExtract.Image = imlImages.Images[9]; //mnuContextNodeExtractOriginal.Image = imlImages.Images[9]; //mnuContextNodeSeparator.Visible = true; //mnuContextNodeExtractOriginal.Visible = true; //mnuContextNodeExtractWav.Visible = true; break; default: mnuContextNodeExtract.Image = imlImages.Images[3]; break; } } mnuContext.Show(tvwFilelistNormal, e.Location); } }
private void tvwFilelistNormal_AfterSelect(object sender, TreeViewEventArgs e) { DirectoryNode d_node = (DirectoryNode)e.Node.Tag; if (d_node.Leaf != null) { PiggLeafInfo leaf_info = d_node.Leaf.PiggReferences[d_node.Leaf.PiggReferences.Count - 1]; int index = d_node.Leaf.Name.LastIndexOf('.'); string extension = ""; if (index >= 0) { extension = d_node.Leaf.Name.Substring(index); } switch (extension) { case ".texture": PiggTexture tex = new PiggTexture(leaf_info); imgViewer.Picture = tex.Image; picImage.Image = tex.Image; picImage.Height = tex.Image.Height; picImage.Width = tex.Image.Width; break; } // Fill in properties txtProperties.Clear(); string properties = ""; properties += string.Format("Source: {0}\r\n", leaf_info.File.FullPath); properties += string.Format("File size: {0}\r\n", Utility.FriendlyBytes(leaf_info.UncompressedSize)); properties += string.Format("Timestamp: {0}\r\n", leaf_info.Timestamp); properties += string.Format("Filename: {0}\r\n", leaf_info.File.FullPath); properties += string.Format("File start: 0x{0:x8}\r\n", leaf_info.Offset); properties += string.Format("Compressend length: 0x{0:x8}\r\n", leaf_info.CompressedSize); properties += string.Format("Uncompressed length: 0x{0:x8}\r\n", leaf_info.UncompressedSize); txtProperties.Text = properties; } else { txtProperties.Clear(); string properties = ""; properties += string.Format("Full Path: {0}\r\n", d_node.Node.FullPath); properties += string.Format("Size of child leafs: {0:x16} ({1})\r\n", d_node.Node.Capacity, Utility.FriendlyBytes(d_node.Node.Capacity)); properties += string.Format("Total Size: {0:x16} ({1})\r\n", d_node.Node.TotalCapacity, Utility.FriendlyBytes(d_node.Node.TotalCapacity)); foreach (PiggFile reference in d_node.Node.PiggFileRefs) { properties += string.Format("Reference: {0}", reference.FullPath); } txtProperties.Text = properties; } }