Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorLluis Sanchez <lluis@xamarin.com>2019-07-31 17:57:33 +0300
committerGitHub <noreply@github.com>2019-07-31 17:57:33 +0300
commitcf0230df38a6d61631075c892efcab3035aa7d69 (patch)
treef45682477f7ef58410de97e96edc807ef83fe7ab /main
parentc51182794e9e06c8559f48af2666e8dd2d8ee1b5 (diff)
parentf5778969723f80b4323de63278253bac35ef97ae (diff)
Merge pull request #8194 from mono/backport-pr-8153-to-release-8.2
[release-8.2] [GetToCode] Adds ShowAsync method in NewProjectController with TaskCo…
Diffstat (limited to 'main')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs103
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs7
2 files changed, 61 insertions, 49 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs
index 7ccb045856..41d24f6c9f 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs
@@ -181,9 +181,9 @@ namespace MonoDevelop.Ide.Projects
imageProvider.Dispose ();
- return IsNewItemCreated;
- }
-
+ return ProjectCreation != null && !(ProjectCreation.IsCompleted && !ProjectCreation.Result);
+ }
+
void GetVersionControlHandler ()
{
versionControlHandler = AddinManager.GetExtensionObjects ("/MonoDevelop/Ide/VersionControlProjectTemplateHandler", typeof(IVersionControlProjectTemplateHandler), true)
@@ -613,10 +613,13 @@ namespace MonoDevelop.Ide.Projects
public async Task Create ()
{
+ projectCreated = new TaskCompletionSource<bool> ();
+
if (wizardProvider.HasWizard)
wizardProvider.BeforeProjectIsCreated ();
- if (!await CreateProject ()) {
+ if (!await CreateProject ()) {
+ projectCreated.SetResult (false);
ProjectCreationFailed?.Invoke (this, EventArgs.Empty);
return;
}
@@ -667,55 +670,59 @@ namespace MonoDevelop.Ide.Projects
string solutionFileName = Path.Combine (projectConfiguration.SolutionLocation, finalConfigurationPage.SolutionFileName);
if (File.Exists (solutionFileName)) {
if (!MessageService.Confirm (GettextCatalog.GetString ("File {0} already exists. Overwrite?", solutionFileName), AlertButton.OverwriteFile)) {
- ParentFolder = null;//Reset process of creating solution
+ ParentFolder = null;//Reset process of creating solution
+ projectCreated.SetResult (false);
return;
}
File.Delete (solutionFileName);
}
}
- dialog.CloseDialog ();
-
- if (ParentFolder != null)
- await IdeApp.ProjectOperations.SaveAsync (ParentFolder.ParentSolution);
- else
- await IdeApp.ProjectOperations.SaveAsync (processedTemplate.WorkspaceItems);
-
- CreateVersionControlItems ();
-
- if (OpenSolution) {
- DisposeExistingNewItems ();
- TemplateWizard wizard = wizardProvider.CurrentWizard;
- if (await OpenCreatedSolution (processedTemplate)) {
- var sol = IdeApp.Workspace.GetAllSolutions ().FirstOrDefault ();
- if (sol != null) {
- if (wizard != null)
- wizard.ItemsCreated (new [] { sol });
- InstallProjectTemplatePackages (sol);
- }
- }
- }
- else {
- // The item is not a solution being opened, so it is going to be added to
- // an existing item. In this case, it must not be disposed by the dialog.
- RunTemplateActions (processedTemplate);
- if (wizardProvider.HasWizard)
- wizardProvider.CurrentWizard.ItemsCreated (processedTemplate.WorkspaceItems);
- if (ParentFolder != null)
- InstallProjectTemplatePackages (ParentFolder.ParentSolution);
- }
-
- wizardProvider.Dispose ();
- IsNewItemCreated = true;
- UpdateDefaultSettings ();
-
- var tcs = new TaskCompletionSource<bool> ();
- Gtk.Application.Invoke ((sender, args) => {
- ProjectCreated?.Invoke (this, EventArgs.Empty);
- tcs.SetResult (true);
- });
- await tcs.Task;
- }
+ dialog.CloseDialog ();
+
+ try {
+ if (ParentFolder != null)
+ await IdeApp.ProjectOperations.SaveAsync (ParentFolder.ParentSolution);
+ else
+ await IdeApp.ProjectOperations.SaveAsync (processedTemplate.WorkspaceItems);
+
+ CreateVersionControlItems ();
+
+ if (OpenSolution) {
+ DisposeExistingNewItems ();
+ TemplateWizard wizard = wizardProvider.CurrentWizard;
+ if (await OpenCreatedSolution (processedTemplate)) {
+ var sol = IdeApp.Workspace.GetAllSolutions ().FirstOrDefault ();
+ if (sol != null) {
+ if (wizard != null)
+ wizard.ItemsCreated (new [] { sol });
+ InstallProjectTemplatePackages (sol);
+ }
+ }
+ } else {
+ // The item is not a solution being opened, so it is going to be added to
+ // an existing item. In this case, it must not be disposed by the dialog.
+ RunTemplateActions (processedTemplate);
+ if (wizardProvider.HasWizard)
+ wizardProvider.CurrentWizard.ItemsCreated (processedTemplate.WorkspaceItems);
+ if (ParentFolder != null)
+ InstallProjectTemplatePackages (ParentFolder.ParentSolution);
+ }
+
+ wizardProvider.Dispose ();
+ IsNewItemCreated = true;
+ UpdateDefaultSettings ();
+
+ projectCreated.SetResult (true);
+ await Runtime.RunInMainThread (() => ProjectCreated?.Invoke (this, EventArgs.Empty));
+ } catch (Exception ex) {
+ projectCreated.SetException (ex);
+ throw;
+ }
+ }
+
+ public Task<bool> ProjectCreation => projectCreated?.Task;
+ TaskCompletionSource<bool> projectCreated;
public WizardPage CurrentWizardPage {
get {
@@ -937,7 +944,7 @@ namespace MonoDevelop.Ide.Projects
public Image GetImage (SolutionTemplate template)
{
return imageProvider.GetImage (template);
- }
+ }
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs
index 8f2ac13ba8..d1880c52c4 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs
@@ -713,7 +713,12 @@ namespace MonoDevelop.Ide
newProjectDialog.OpenSolution = true;
newProjectDialog.SelectedTemplateId = defaultTemplate;
newProjectDialog.ShowTemplateSelection = showTemplateSelection;
- return newProjectDialog.Show ();
+ var show = newProjectDialog.Show ();
+ if (show) {
+ WelcomePage.WelcomePageService.HideWelcomePageOrWindow ();
+ return await newProjectDialog.ProjectCreation;
+ }
+ return false;
}
public Task<WorkspaceItem> AddNewWorkspaceItem (Workspace parentWorkspace)