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);
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        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;
            }
        }
Beispiel #4
0
        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();
        }