private void PckEditor_FormClosed(object sender, FormClosedEventArgs e) { // unreference memory-intensive objects (WEM) TreeView_Wems.Nodes.Clear(); WemGrid.SelectedObject = null; TreeView_Wems.SelectedNode = null; pck = null; // trigger LOH compactification GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce; GC.Collect(); }
private void BuildData() { pck = new PCK(PckFile.FullName); for (int i = 0; i != pck.WemList.Count; i++) { TreeNode node = new TreeNode(pck.WemList[i].Name); node.Name = pck.WemList[i].ID.ToString(); node.Tag = pck.WemList[i]; TreeView_Wems.Nodes.Add(node); } }
private void button1_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); if (ofd.ShowDialog() == DialogResult.OK) { using (BinaryStream s = new BinaryStream(new FileStream(ofd.FileName, FileMode.Open), Syroot.BinaryData.ByteConverter.Big)) { PCK p = PCK.Read(s); MessageBox.Show($"pos is {s.BaseStream.Position}"); p.FileTable.Entries.ForEach(f => { TreeNode t = new TreeNode(); t.Text = f.Name; t.Tag = f; switch (Path.GetExtension(f.Name)) { case ".pck": t.Text = $"[Pack] {t.Text}"; break; case ".loc": t.Text = $"[Localization] {t.Text}"; break; case ".binka": t.Text = $"[Binka] {t.Text}"; break; case ".png": t.Text = $"[PNG] {t.Text}"; break; default: t.Text = $"[?] {t.Text}"; break; } if (f.Name == "0") { t.Text = $"Dummy File"; } treeView1.Nodes.Add(t); }); label1.Text = $"Files: {treeView1.Nodes.Count}"; label2.Text = $"Pack Version: {p.Header.Version}"; } } }
private void PckEditor_Closing(object sender, FormClosingEventArgs e) { if (bIsFileEdited) { System.Windows.MessageBoxResult SaveChanges = System.Windows.MessageBox.Show(Language.GetString("$SAVE_PROMPT"), "Toolkit", System.Windows.MessageBoxButton.YesNoCancel); if (SaveChanges == System.Windows.MessageBoxResult.Yes) { Save(); } else if (SaveChanges == System.Windows.MessageBoxResult.Cancel) { e.Cancel = true; } } pck = null; }
public void LoadPack(string fileName) { FileName = fileName; int entries = 0; dataGridView.Enabled = false; // prevent the user-induced damages Thread t = new Thread(() => { folders = PCK.Read(FileName); if (folders == null || folders.Length == 0) { return; } List <DataGridViewRow> rows = new List <DataGridViewRow>(); foreach (PCK.Folder folder in folders) { foreach (PCK.Entry entry in folder.Entries) { DataGridViewRow row = new DataGridViewRow { Tag = entry }; DataGridViewTextBoxCell name = new DataGridViewTextBoxCell { Value = entry.NameHash.ToString("X8") }; row.Cells.Add(name); DataGridViewTextBoxCell size = new DataGridViewTextBoxCell { Value = entry.Size }; row.Cells.Add(size); DataGridViewTextBoxCell offset = new DataGridViewTextBoxCell { Value = entry.Offset }; row.Cells.Add(offset); DataGridViewTextBoxCell isBank = new DataGridViewTextBoxCell { Value = entry.IsSoundbank ? "True" : "False" }; row.Cells.Add(isBank); DataGridViewTextBoxCell id = new DataGridViewTextBoxCell { Value = entry.FolderID }; row.Cells.Add(id); DataGridViewTextBoxCell path = new DataGridViewTextBoxCell { Value = entry.Path }; row.Cells.Add(path); rows.Add(row); entries++; } } Invoke(new Action(() => { dataGridView.Rows.AddRange(rows.ToArray()); entriesToolStripLabel.Text = $"Entries: {entries}"; foldersToolStripLabel.Text = $"Folders: {folders.Length}"; dataGridView.Enabled = true; })); }); t.Start(); }