public static STBLXMLFile ImportFromPackageFile(string importFilePath, System.Collections.IEnumerable importingLanguages) { STBLXMLFile importedFile = new STBLXMLFile(); using (BinaryReader importFileReader = new BinaryReader(new FileStream(importFilePath, FileMode.Open))) { string fileIdentifier = Encoding.UTF8.GetString(importFileReader.ReadBytes(4)); if (fileIdentifier != "STBL") { throw new NotPackageSTBLFileException("Invalid STBL file identifier, expected 'STBL'."); } short version = importFileReader.ReadInt16(); if (version != 5) { throw new NotPackageSTBLFileException("Invalid STBL file version, expected '5'."); } importFileReader.BaseStream.Seek(1, SeekOrigin.Current); // Skip the 'compressed' byte, its not used. ulong entryCount = importFileReader.ReadUInt64(); importFileReader.BaseStream.Seek(6, SeekOrigin.Current); // Skip the two 'reserved' bytes and the 'string length' bytes. for (ulong entryIndex = 0; entryIndex < entryCount; entryIndex++) { uint entryKey = importFileReader.ReadUInt32(); importFileReader.BaseStream.Seek(1, SeekOrigin.Current); // Skip the flags byte. ushort entryLength = importFileReader.ReadUInt16(); string entryText = Encoding.UTF8.GetString(importFileReader.ReadBytes(entryLength)); STBLXMLEntry entry = new STBLXMLEntry() { Key = entryKey }; foreach (STBL.Languages importingLanguage in importingLanguages) { entry.SetText(importingLanguage, entryText); } importedFile.Entries.Add(entry); } } return(importedFile); }
private void FormOkButton_Click(object sender, EventArgs e) { if (STBLEntry == null) { Close(); return; } uint nextKeyValue = uint.Parse(KeyDecimalTextBox.Text); if (Loading.EntryKeyCollides(nextKeyValue, STBLEntry)) { if (!ShowConfimCollidingEntryKey()) { return; } } if (nextKeyValue != STBLEntry.Key) { STBLEntry.Key = nextKeyValue; } string nextIdentifierValue = IdentifierTextBox.Text; if (nextIdentifierValue != STBLEntry.Identifier) { STBLEntry.Identifier = nextIdentifierValue; } foreach (KeyValuePair <STBL.Languages, string> nextLanguageStringPair in CurrentLanguageStrings) { string currentLanguageString = Tools.NormalizeLineEndings(STBLEntry.GetText(nextLanguageStringPair.Key)); if (currentLanguageString != nextLanguageStringPair.Value) { STBLEntry.SetText(nextLanguageStringPair.Key, nextLanguageStringPair.Value); } } Close(); }
private void FormOkButton_Click(object sender, EventArgs e) { if (FilePathTextBox.Text == null || string.IsNullOrWhiteSpace(FilePathTextBox.Text)) { ShowNoOrInvalidFileDialog(); DialogResult = DialogResult.None; return; } if (SelectedLanguages.Count <= 0) { ShowNoLanguagesSelectedDialog(); DialogResult = DialogResult.None; return; } STBLXMLFile splitSTBLFile = new STBLXMLFile(); foreach (STBLXMLEntry splittingEntry in SplittingEntries) { STBLXMLEntry splitEntry = new STBLXMLEntry() { Key = splittingEntry.Key, Identifier = splittingEntry.Identifier }; foreach (STBL.Languages language in SelectedLanguages) { splitEntry.SetText(language, splittingEntry.GetText(language)); } splitSTBLFile.Entries.Add(splitEntry); } try { Tools.WriteXML(FilePathTextBox.Text, splitSTBLFile); } catch (Exception saveException) { ShowSaveFailureDialog(saveException); DialogResult = DialogResult.None; return; } }
private void FormOkButton_Click(object sender, EventArgs e) { if (STBLEntry == null) { Close(); return; } foreach (KeyValuePair <STBL.Languages, string> nextLanguageStringPair in CurrentLanguageStrings) { string currentLanguageString = Tools.NormalizeLineEndings(STBLEntry.GetText(nextLanguageStringPair.Key)); if (currentLanguageString != nextLanguageStringPair.Value) { STBLEntry.SetText(nextLanguageStringPair.Key, nextLanguageStringPair.Value); } } Close(); }