private void InitGGPK() { if (content != null) return; string ggpkPath = textBoxContentGGPK.Text; if (!File.Exists(ggpkPath)) { OutputLine(string.Format("GGPK {0} not exists.", ggpkPath)); return; } OutputLine(string.Format("Parsing {0}", ggpkPath)); content = new GGPK(); content.Read(ggpkPath, Output); RecordsByPath = new Dictionary<string, FileRecord>(content.RecordOffsets.Count); DirectoryTreeNode.TraverseTreePostorder(content.DirectoryRoot, null, n => RecordsByPath.Add(n.GetDirectoryPath() + n.Name, n as FileRecord)); textBoxContentGGPK.Enabled = false; buttonSelectPOE.Enabled = false; CreateExampleRegistryFile(ggpkPath); }
public void ReloadAllData(string ggpkPath) { this.ggpkPath = ggpkPath; content = new GGPK(); content.Read(ggpkPath, outputFunc); CollectTranslatableStrings(); MergeUserTranslations(); }
/// <summary> /// Reloads the entire content.ggpk, rebuilds the tree /// </summary> private void ReloadGGPK() { treeView1.Items.Clear(); ResetViewer(); textBoxOutput.Visibility = System.Windows.Visibility.Visible; textBoxOutput.Text = string.Empty; content = null; workerThread = new Thread(new ThreadStart(() => { content = new GGPK(); try { content.Read(ggpkPath, Output); } catch (Exception ex) { Output(string.Format(Settings.Strings["ReloadGGPK_Failed"], ex.Message)); return; } if (content.IsReadOnly) { Output(Settings.Strings["ReloadGGPK_ReadOnly"] + Environment.NewLine); UpdateTitle(Settings.Strings["MainWindow_Title_Readonly"]); } OutputLine(Settings.Strings["ReloadGGPK_Traversing_Tree"]); // Collect all FileRecordPath -> FileRecord pairs for easier replacing RecordsByPath = new Dictionary<string, FileRecord>(content.RecordOffsets.Count); DirectoryTreeNode.TraverseTreePostorder(content.DirectoryRoot, null, n => RecordsByPath.Add(n.GetDirectoryPath() + n.Name, n as FileRecord)); treeView1.Dispatcher.BeginInvoke(new Action(() => { try { AddDirectoryTreeToControl(content.DirectoryRoot, null); } catch (Exception ex) { Output(string.Format(Settings.Strings["Error_Read_Directory_Tree"], ex.Message)); return; } workerThread = null; }), null); OutputLine(Settings.Strings["ReloadGGPK_Successful"]); })); workerThread.Start(); }