public Editor(STBLXMLEntry stblEntry = null) { if (stblEntry != null) { STBLEntry = stblEntry; } InitializeComponent(); IdentifierTextBox.Text = STBLEntry.Identifier; LastKeyValue = STBLEntry.Key; KeyDecimalTextBox.Text = STBLEntry.Key.ToString(); KeyHexadecimalTextBox.Text = STBLEntry.Key.ToString("x").ToUpper(); foreach (STBL.Languages language in STBL.GetAllLanguages()) { string languageText = STBLEntry.GetText(language); CurrentLanguageStrings[language] = Tools.NormalizeLineEndings(languageText); CurrentLanguageStates[language] = languageText != null ? true : false; } Forms.SetupLanguageComboBox(LanguageSelector, DefaultLanguage); }
public SendTo(List <STBLXMLEntry> splittingEntries = null) { SelectedLanguages = new HashSet <STBL.Languages>(STBL.GetAllLanguages()); if (splittingEntries != null) { SplittingEntries = splittingEntries; } InitializeComponent(); }
public static void SetupLanguagePicker(Picker picker, List <STBL.Languages> checkedLanguages) { foreach (STBL.Languages language in STBL.GetAllLanguages()) { bool languageIsChecked = false; if (checkedLanguages.Contains(language)) { languageIsChecked = true; } picker.AddItem(new PickerItem(STBL.GetLanguageLocalizedName(language), language), isChecked: languageIsChecked); } }
public Translator(STBLXMLEntry stblEntry = null) { if (stblEntry != null) { STBLEntry = stblEntry; } InitializeComponent(); IdentifierTextBox.Text = STBLEntry.Identifier; foreach (STBL.Languages language in STBL.GetAllLanguages()) { string languageText = STBLEntry.GetText(language); CurrentLanguageStrings[language] = Tools.NormalizeLineEndings(languageText); CurrentLanguageStates[language] = languageText != null ? true : false; } Forms.SetupLanguageComboBox(ReferencingLanguageSelector, DefaultReferenceLanguage); Forms.SetupLanguageComboBox(EditingLanguageSelector, DefaultEditingLanguage); }
public static void SetupLanguageComboBox(ComboBox comboBox, STBL.Languages?defaultLanguage, bool includeNullLanguage = false) { LanguageComboBoxItem selectedLanguageItem = null; List <LanguageComboBoxItem> languageItems = new List <LanguageComboBoxItem>(); if (includeNullLanguage) { LanguageComboBoxItem languageNullItem = new LanguageComboBoxItem(null); languageItems.Add(languageNullItem); if (defaultLanguage == null) { selectedLanguageItem = languageNullItem; } } foreach (STBL.Languages language in STBL.GetAllLanguages()) { LanguageComboBoxItem languageItem = new LanguageComboBoxItem(language); if (defaultLanguage == language) { selectedLanguageItem = languageItem; } languageItems.Add(languageItem); } comboBox.DataSource = languageItems; if (selectedLanguageItem != null) { comboBox.SelectedItem = selectedLanguageItem; } }
public static void ExportToPackageFiles(STBLXMLFile exportingFile, string exportDirectoryPath, bool buildSourceInfoFiles) { Directory.CreateDirectory(exportDirectoryPath); STBL.Languages fallbackLanguage = STBL.GetLanguage(exportingFile.FallbackLanguage); foreach (STBL.Languages language in STBL.GetAllLanguages()) { string languageFileName = string.Format(exportingFile.STBLName, new STBL.LanguageFileName(language)); string stblFileName = languageFileName + "." + STBLFileExtension; string stblFilePath = Path.Combine(exportDirectoryPath, stblFileName); using (BinaryWriter exportFileWriter = new BinaryWriter(new FileStream(stblFilePath, FileMode.Create))) { string[] texts = new string[exportingFile.Entries.Count]; ushort[] textsByteCounts = new ushort[exportingFile.Entries.Count]; uint entryByteCount = 0; for (int entryIndex = 0; entryIndex < exportingFile.Entries.Count; entryIndex++) { string entryLanguageText = exportingFile.Entries[entryIndex].GetText(language); if (entryLanguageText == null) { entryLanguageText = exportingFile.Entries[entryIndex].GetText(fallbackLanguage); } if (entryLanguageText == null) { entryLanguageText = exportingFile.Entries[entryIndex].Identifier; } texts[entryIndex] = entryLanguageText; textsByteCounts[entryIndex] = (ushort)Encoding.UTF8.GetByteCount(texts[entryIndex]); entryByteCount += textsByteCounts[entryIndex] + 1u; } exportFileWriter.Write(Encoding.UTF8.GetBytes("STBL")); exportFileWriter.Write((byte)5); exportFileWriter.Write((ushort)0); exportFileWriter.Write((uint)exportingFile.Entries.Count); exportFileWriter.Write(0u); exportFileWriter.Write((ushort)0); exportFileWriter.Write(entryByteCount); for (int textsIndex = 0; textsIndex < exportingFile.Entries.Count; textsIndex++) { exportFileWriter.Write(exportingFile.Entries[textsIndex].Key); exportFileWriter.Write((byte)0); exportFileWriter.Write(textsByteCounts[textsIndex]); exportFileWriter.Write(texts[textsIndex].ToCharArray()); } } if (buildSourceInfoFiles) { string sourceInfoFilePath = stblFilePath + "." + SourceInfoFileExtension; string languageInstanceHexadecimal = ((int)language).ToString("x2") + exportingFile.STBLInstance.ToString("x").Substring(2); ulong languageInstance = ulong.Parse(languageInstanceHexadecimal, NumberStyles.HexNumber); Tools.WriteXML(sourceInfoFilePath, new SourceInfo() { Name = languageFileName, TypeID = 570775514, GroupID = exportingFile.STBLGroup, InstanceID = languageInstance }); } } }
public Predicate <STBLXMLEntry> GetFilterPredicate() { string keyFilterLower = KeyFilter?.ToLower(); Regex identifierFilterRegex = null; if (IdentifierFilterUseRegex) { identifierFilterRegex = new Regex(IdentifierFilter, RegexOptions.Multiline | (IdentifierFilterMatchCase ? RegexOptions.None : RegexOptions.IgnoreCase)); } Regex textFilterRegex = null; if (TextFilterUseRegex) { textFilterRegex = new Regex(TextFilter, RegexOptions.Multiline | (TextFilterMatchCase ? RegexOptions.None : RegexOptions.IgnoreCase)); } return(delegate(STBLXMLEntry entry) { if (KeyFilter != null) { string itemKeyDecimal = entry.Key.ToString(); string itemKeyHexadecimal = "0x" + entry.Key.ToString("x"); if (!itemKeyDecimal.Contains(keyFilterLower) && !itemKeyHexadecimal.Contains(keyFilterLower)) { return true; } } if (IdentifierFilter != null) { if (!IdentifierFilterUseRegex || identifierFilterRegex == null) { if (entry.Identifier.IndexOf(IdentifierFilter, IdentifierFilterMatchCase ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase) < 0) { return true; } } else { if (!identifierFilterRegex.IsMatch(entry.Identifier)) { return true; } } } if (TextFilter != null) { foreach (STBL.Languages languague in STBL.GetAllLanguages()) { string languageText = entry.GetText(languague); if (languageText == null) { continue; } if (!TextFilterUseRegex || textFilterRegex == null) { if (languageText.IndexOf(TextFilter, TextFilterMatchCase ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase) < 0) { return true; } } else { if (!textFilterRegex.IsMatch(languageText)) { return true; } } } } if (UntranslatedFilter != null) { try { STBL.Languages untranslatedFilterLanguague = STBL.GetLanguage((int)UntranslatedFilter); if (entry.GetText(untranslatedFilterLanguague) != null) { return true; } } catch { } } return false; }); }