diff options
Diffstat (limited to 'main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.NodeBuilders/TranslationProjectNodeBuilder.cs')
-rw-r--r-- | main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.NodeBuilders/TranslationProjectNodeBuilder.cs | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.NodeBuilders/TranslationProjectNodeBuilder.cs b/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.NodeBuilders/TranslationProjectNodeBuilder.cs index cdfdc78f73..938ce3a94b 100644 --- a/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.NodeBuilders/TranslationProjectNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.NodeBuilders/TranslationProjectNodeBuilder.cs @@ -32,6 +32,7 @@ using MonoDevelop.Core; using MonoDevelop.Components.Commands; using MonoDevelop.Ide.Gui.Components; using MonoDevelop.Ide; +using System.Threading.Tasks; namespace MonoDevelop.Gettext.NodeBuilders { @@ -122,7 +123,7 @@ namespace MonoDevelop.Gettext.NodeBuilders if (project == null) return; MessageService.ShowCustomDialog (new TranslationProjectOptionsDialog (project)); - IdeApp.Workspace.Save (); + IdeApp.Workspace.SaveAsync (); } [CommandUpdateHandler (Commands.AddTranslation)] @@ -144,7 +145,7 @@ namespace MonoDevelop.Gettext.NodeBuilders 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)) { + using (ProgressMonitor monitor = IdeApp.Workbench.ProgressMonitors.GetOutputProgressMonitor (monitorTitle, "md-package", true, true)) { project.AddNewTranslation (language, monitor); UpdateTranslations (project); } @@ -154,14 +155,10 @@ namespace MonoDevelop.Gettext.NodeBuilders chooser.Destroy (); } } - static IAsyncOperation currentUpdateTranslationOperation = MonoDevelop.Core.ProgressMonitoring.NullAsyncOperation.Success; + static Task currentUpdateTranslationOperation = Task.FromResult (0); - void UpdateTranslationsAsync (object ob) + void UpdateTranslationsAsync (ProgressMonitor monitor, TranslationProject project) { - object[] data = (object[]) ob; - IProgressMonitor monitor = (IProgressMonitor) data [0]; - TranslationProject project = (TranslationProject) data [1]; - try { project.UpdateTranslations (monitor); Gtk.Application.Invoke (delegate { @@ -180,9 +177,8 @@ namespace MonoDevelop.Gettext.NodeBuilders { if (currentUpdateTranslationOperation != null && !currentUpdateTranslationOperation.IsCompleted) return; - IProgressMonitor monitor = IdeApp.Workbench.ProgressMonitors.GetBuildProgressMonitor (); - currentUpdateTranslationOperation = monitor.AsyncOperation; - DispatchService.BackgroundDispatch (new StatefulMessageHandler (UpdateTranslationsAsync), new object[] {monitor, project}); + ProgressMonitor monitor = IdeApp.Workbench.ProgressMonitors.GetBuildProgressMonitor (); + currentUpdateTranslationOperation = Task.Factory.StartNew (() => UpdateTranslationsAsync (monitor, project)); } [CommandHandler (Commands.UpdateTranslations)] |