public void ExportToPackageFiles() { ExportToPackgeFilesDialog.ShowDialog(); string exportPackageFilesPath = ExportToPackgeFilesDialog.SelectedPath; string createSourceInfoDialogTitle = Localization.GetString("ExportCreateSourceInfoMessageTitle"); string createSourceInfoDialogText = Localization.GetString("ExportCreateSourceInfoMessageText"); DialogResult createSourceInfoDialogResult = MessageBox.Show(createSourceInfoDialogText, createSourceInfoDialogTitle, MessageBoxButtons.YesNo); ImportExport.ExportToPackageFiles(Loading.Data, exportPackageFilesPath, createSourceInfoDialogResult == DialogResult.Yes); }
private void FormOkButton_Click(object sender, EventArgs e) { if (FilePathTextBox.Text == null || string.IsNullOrWhiteSpace(FilePathTextBox.Text) || !File.Exists(FilePathTextBox.Text)) { ShowNoOrInvalidFileDialog(); DialogResult = DialogResult.None; return; } if (SelectedLanguages.Count <= 0) { ShowNoLanguagesSelectedDialog(); DialogResult = DialogResult.None; return; } STBLXMLFile mergingFile = null; try { mergingFile = ImportExport.ImportFromPackageFile(FilePathTextBox.Text, SelectedLanguages); } catch (Exception readException) { ShowOpenFailureDialog(readException); DialogResult = DialogResult.None; return; } HashSet <uint> existingEntryKeys = new HashSet <uint>(); if (CreateMissingEntriesCheckBox.Checked) { foreach (STBLXMLEntry existingEntry in Loading.Data.Entries) { existingEntryKeys.Add(existingEntry.Key); } } Dictionary <uint, Dictionary <STBL.Languages, string> > mergingLanguagesKey = new Dictionary <uint, Dictionary <STBL.Languages, string> >(); foreach (STBLXMLEntry mergingEntry in mergingFile.Entries) { string mergingEntryIdentifier = mergingEntry.Identifier; if (CreateMissingEntriesCheckBox.Checked) { if (!existingEntryKeys.Contains(mergingEntry.Key)) { Loading.AddNewEntry(key: mergingEntry.Key, identifier: mergingEntry.Identifier); existingEntryKeys.Add(mergingEntry.Key); } } if (!mergingLanguagesKey.ContainsKey(mergingEntry.Key)) { mergingLanguagesKey[mergingEntry.Key] = new Dictionary <STBL.Languages, string>(); } foreach (STBL.Languages language in SelectedLanguages) { string mergingEntryLanguageText = mergingEntry.GetText(language); if (mergingEntryLanguageText == null) { continue; } mergingLanguagesKey[mergingEntry.Key][language] = mergingEntryLanguageText; } } List <uint> unmergedKeys = mergingLanguagesKey.Keys.ToList(); foreach (STBLXMLEntry existingEntry in Loading.Data.Entries) { if (!mergingLanguagesKey.ContainsKey(existingEntry.Key)) { continue; } foreach (KeyValuePair <STBL.Languages, string> languageTextPair in mergingLanguagesKey[existingEntry.Key]) { if (TextPriorityExistingRadioButton.Checked) { if (existingEntry.HasText(languageTextPair.Key)) { continue; } existingEntry.SetText(languageTextPair.Key, languageTextPair.Value); } else { existingEntry.SetText(languageTextPair.Key, languageTextPair.Value); } } } }