public CatalogEditorView (TranslationProject project, string poFile) { catalog = new Catalog (project); poEditorWidget = new POEditorWidget (project); catalog.DirtyChanged += delegate (object sender, EventArgs args) { IsDirty = catalog.IsDirty; }; }
void UpdateTranslationsAsync(ProgressMonitor monitor, TranslationProject project) { try { project.UpdateTranslations(monitor, false); Gtk.Application.Invoke((o, args) => { POEditorWidget.ReloadWidgets(); }); } catch (Exception ex) { monitor.ReportError(GettextCatalog.GetString("Translation update failed."), ex); } finally { monitor.Log.WriteLine(); monitor.Log.WriteLine(GettextCatalog.GetString("---------------------- Done ----------------------")); monitor.Dispose(); } }
public static TranslationProject FromMultiSpreadsheet(string masterLanguage, Stream stream) { var tpc = new TranslationProject(); using (var package = new OfficeOpenXml.ExcelPackage()) { package.Load(stream); foreach (var worksheet in package.Workbook.Worksheets) { var project = Export.FromIWorksheet(worksheet.Name, masterLanguage, new XlsXWorksheet(worksheet)); tpc.Projects.Add(worksheet.Name, project); } } return(tpc); }
public void ToOneXLSX(TranslationProject tpc, string targetDir) { string fileName = @"\"; foreach (var kvp in tpc.Projects) { fileName += "_" + kvp.Key; } fileName += ".xlsx"; FileInfo newFile = new FileInfo(targetDir + fileName); if (newFile.Exists) { newFile.Delete(); // ensures we create a new workbook newFile = new FileInfo(targetDir + fileName); } using (var package = new OfficeOpenXml.ExcelPackage(newFile)) { var worksheet = package.Workbook.Worksheets.Add("Traductions"); //write header int columnCount = 0; worksheet.Cells[0, columnCount++].Value = ""; worksheet.Cells[0, columnCount++].Value = tpc.Projects.First().Value.MasterLanguage; foreach (var l in tpc.Projects.First().Value.Languages) { worksheet.Cells[0, columnCount++].Value = l; } int rowCount = 1; foreach (var kvp in tpc.Projects) { worksheet.Cells[rowCount, 0].Value = "ns:" + kvp.Key; rowCount++; rowCount = IO.Export.ToIWorksheet(kvp.Value, new XlsXWorksheet(worksheet), rowCount); } package.Save(); } }
void UpdateTranslationsAsync(object ob) { object[] data = (object[])ob; IProgressMonitor monitor = (IProgressMonitor)data [0]; TranslationProject project = (TranslationProject)data [1]; try { project.UpdateTranslations(monitor); Gtk.Application.Invoke(delegate { POEditorWidget.ReloadWidgets(); }); } catch (Exception ex) { monitor.ReportError(GettextCatalog.GetString("Translation update failed."), ex); } finally { monitor.Log.WriteLine(); monitor.Log.WriteLine(GettextCatalog.GetString("---------------------- Done ----------------------")); monitor.Dispose(); } }
public void ToIWorksheet(TranslationProject tpc, IWorksheet worksheet) { //write header int columnCount = 1; worksheet[1, columnCount++] = ""; worksheet[1, columnCount++] = tpc.Projects.First().Value.MasterLanguage; foreach (var l in tpc.Projects.First().Value.Languages) { worksheet[1, columnCount++] = l; } int rowCount = 2; foreach (var kvp in tpc.Projects) { worksheet[rowCount, 1] = "ns:" + kvp.Key; rowCount++; rowCount = IO.Export.ToIWorksheet(kvp.Value, worksheet, rowCount); } }
public void OnAddTranslation () { TranslationProject project = CurrentNode.DataItem as TranslationProject; if (project == null) return; string monitorTitle = GettextCatalog.GetString ("Translator Output"); Translator.LanguageChooserDialog chooser = new Translator.LanguageChooserDialog (); try { if (MessageService.RunCustomDialog (chooser) == (int)ResponseType.Ok) { string language = chooser.Language + (chooser.HasCountry ? "_" + chooser.Country : ""); using (IProgressMonitor monitor = IdeApp.Workbench.ProgressMonitors.GetOutputProgressMonitor (monitorTitle, "md-package", true, true)) { project.AddNewTranslation (language, monitor); UpdateTranslations (project); } } } finally { chooser.Destroy (); chooser.Dispose (); } }
private void CreateNewTranslation() { var infos = _pluginManager.GetAllGames(); var form = new NewProjectSettings(dockTheme, infos); var formResult = form.ShowDialog(this); if (formResult == DialogResult.Cancel) { return; } if (!CloseAllDocuments()) { return; } var game = _pluginManager.GetGame(form.SelectedGame); var workFolder = form.WorkFolder; var gameFolder = form.GameFolder; if (Directory.Exists(workFolder)) { var files = Directory.GetFiles(workFolder); var directories = Directory.GetDirectories(workFolder); if (files.Length + directories.Length > 0) { #if DEBUG PathHelper.DeleteDirectory(workFolder); #else MessageBox.Show($"La carpeta {workFolder} no está vacía. Debes elegir una carpeta vacía.", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; #endif } } else { Directory.CreateDirectory(workFolder); } var project = new TranslationProject(game, gameFolder, workFolder); var workForm = new WorkingForm(dockTheme, "Nueva traducción"); workForm.DoWork += (sender, args) => { var worker = sender as BackgroundWorker; try { project.ReadTranslationFiles(worker); worker.ReportProgress(-1, "FINALIZADO"); } catch (UserCancelException e) { args.Cancel = true; worker.ReportProgress(-1, "Eliminando ficheros..."); PathHelper.DeleteDirectory(workFolder); worker.ReportProgress(-1, "Terminado"); } #if !DEBUG catch (Exception e) { worker.ReportProgress(0, $"ERROR: {e.Message}\n{e.StackTrace}"); } #endif }; workForm.ShowDialog(this); if (workForm.Cancelled) { return; } _project = project; _explorer.LoadTree(_project.FileContainers); _currentFile = null; _project.Save(); Text = $"Translation Framework 2.0 - {_project.Game.Name} - {_project.WorkPath}"; tsbExportProject.Enabled = true; mniFileExport.Enabled = true; tsbSearchInFiles.Enabled = true; mniEditSearchInFiles.Enabled = true; mniBulkTextsExport.Enabled = true; mniBulkTextsImport.Enabled = true; mniBulkImagesExport.Enabled = true; mniBulkImagesImport.Enabled = true; }
void UpdateTranslations (TranslationProject project, Translation translation) { if (currentUpdateTranslationOperation != null && !currentUpdateTranslationOperation.IsCompleted) return; ProgressMonitor monitor = IdeApp.Workbench.ProgressMonitors.GetBuildProgressMonitor (); currentUpdateTranslationOperation = Task.Run (() => UpdateTranslationsAsync (monitor, project, translation)); }
void UpdateTranslationsAsync (ProgressMonitor monitor, TranslationProject project, Translation translation) { try { project.UpdateTranslations (monitor, translation); Gtk.Application.Invoke (delegate { POEditorWidget.ReloadWidgets (); }); } catch (Exception ex) { monitor.ReportError (GettextCatalog.GetString ("Translation update failed."), ex); } finally { monitor.Log.WriteLine (); monitor.Log.WriteLine (GettextCatalog.GetString ("---------------------- Done ----------------------")); monitor.Dispose (); } }
void UpdateTranslations (TranslationProject project, Translation translation) { if (currentUpdateTranslationOperation != null && !currentUpdateTranslationOperation.IsCompleted) return; IProgressMonitor monitor = IdeApp.Workbench.ProgressMonitors.GetBuildProgressMonitor (); currentUpdateTranslationOperation = monitor.AsyncOperation; DispatchService.BackgroundDispatch (new StatefulMessageHandler (UpdateTranslationsAsync), new object[] {monitor, project, translation}); }