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
diff options
context:
space:
mode:
authorDmytro Ovcharov <dmytro.ovcharov@globallogic.com>2017-08-01 14:05:34 +0300
committerDmytro Ovcharov <dmytro.ovcharov@globallogic.com>2017-08-01 14:05:34 +0300
commit36954fe0be8e0ece65bed215e5036d5e300a0319 (patch)
treed2f1a8ef15f9b0ffff528d1e8a98ff91d3fbaa17 /main/src/core/MonoDevelop.Ide
parent2921c7a8cc0ade9d9b4e6a9aebd354fe88a8f6c6 (diff)
#53783
Diffstat (limited to 'main/src/core/MonoDevelop.Ide')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs36
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/INewProjectController.cs7
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs14
3 files changed, 34 insertions, 23 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs
index abff34f36a..f8be581b11 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs
@@ -37,6 +37,8 @@ using MonoDevelop.Ide.Gui;
using AppKit;
using Foundation;
using MonoDevelop.Core;
+using System.Threading.Tasks;
+using MonoDevelop.Ide.Projects;
namespace MonoDevelop.Ide.Projects
{
@@ -73,16 +75,18 @@ namespace MonoDevelop.Ide.Projects
actionHandler.PerformShowMenu += PerformShowMenu;
}
- void NextButtonClicked (object sender, EventArgs e)
+ void ProjectCreationFailed (object obj, EventArgs args) => ShowProjectCreationAccessibityNotification (true);
+ void ProjectCreationSucceed (object obj, EventArgs args) => ShowProjectCreationAccessibityNotification (false);
+ async void NextButtonClicked (object sender, EventArgs e) => await MoveToNextPage ();
+
+ void ShowProjectCreationAccessibityNotification (bool hasError)
{
- bool isLastPage = controller.IsLastPage;
- MoveToNextPage ();
- if (isLastPage) {
- var message = GenerateProjectCreatedMessage ();
- ShowAccessibityNotification (message);
- }
+ var projectTemplate = controller.SelectedTemplate;
+ var messageText = GettextCatalog.GetString (hasError ? "{0} creation fail" : "{0} successfully created",
+ projectTemplate.Name);
+ ShowAccessibityNotification (messageText);
}
-
+
void ShowAccessibityNotification (string message)
{
var accessibleObject = this.Accessible;
@@ -97,13 +101,6 @@ namespace MonoDevelop.Ide.Projects
NSAccessibility.PostNotification (nsObject, NSAccessibilityNotifications.AnnouncementRequestedNotification, dictionary);
}
- string GenerateProjectCreatedMessage ()
- {
- var message = GettextCatalog.GetString ("{0} successfully created");
- var template = controller.SelectedTemplate;
- return String.Format (message, template.Name);
- }
-
public void ShowDialog ()
{
MessageService.ShowCustomDialog (this);
@@ -122,16 +119,17 @@ namespace MonoDevelop.Ide.Projects
public void RegisterController (INewProjectDialogController controller)
{
this.controller = controller;
+ controller.ProjectCreationFailed += ProjectCreationFailed;
+ controller.ProjectCreationSucceed += ProjectCreationSucceed;
languageCellRenderer.SelectedLanguage = controller.SelectedLanguage;
topBannerLabel.Text = controller.BannerText;
-
LoadTemplates ();
SelectTemplateDefinedbyController ();
if (CanMoveToNextPage && !controller.ShowTemplateSelection)
MoveToNextPage ();
}
- static void SetTemplateCategoryCellData (TreeViewColumn col, CellRenderer renderer, TreeModel model, TreeIter it)
+ void SetTemplateCategoryCellData (TreeViewColumn col, CellRenderer renderer, TreeModel model, TreeIter it)
{
var categoryTextRenderer = (GtkTemplateCategoryCellRenderer)renderer;
categoryTextRenderer.Category = (TemplateCategory)model.GetValue (it, TemplateCategoryColumn);
@@ -541,12 +539,14 @@ namespace MonoDevelop.Ide.Projects
}
}
- async void MoveToNextPage ()
+ async Task MoveToNextPage ()
{
if (controller.IsLastPage) {
try {
CanMoveToNextPage = false;
await controller.Create ();
+ } catch {
+ throw;
} finally {
CanMoveToNextPage = true;
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/INewProjectController.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/INewProjectController.cs
index ebf0154203..76b58d7a69 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/INewProjectController.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/INewProjectController.cs
@@ -29,11 +29,14 @@ using System.Collections.Generic;
using MonoDevelop.Ide.Templates;
using Xwt.Drawing;
using System.Threading.Tasks;
-
+using System;
+
namespace MonoDevelop.Ide.Projects
{
interface INewProjectDialogController
- {
+ {
+ event EventHandler ProjectCreationFailed;
+ event EventHandler ProjectCreationSucceed;
IEnumerable<TemplateCategory> TemplateCategories { get; }
List<SolutionTemplate> RecentTemplates { get; }
TemplateCategory SelectedSecondLevelCategory { get; }
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 b1309458b6..d13c0b1cbe 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs
@@ -1,4 +1,4 @@
-//
+//
// NewProjectDialogController.cs
//
// Author:
@@ -43,6 +43,7 @@ using MonoDevelop.Ide.Templates;
using MonoDevelop.Projects;
using Xwt.Drawing;
using System.Threading.Tasks;
+using System.Threading;
namespace MonoDevelop.Ide.Projects
{
@@ -50,7 +51,10 @@ namespace MonoDevelop.Ide.Projects
/// To be renamed to NewProjectDialog
/// </summary>
class NewProjectDialogController : INewProjectDialogController
- {
+ {
+ public event EventHandler ProjectCreationFailed;
+ public event EventHandler ProjectCreationSucceed;
+
string chooseTemplateBannerText = GettextCatalog.GetString ("Choose a template for your new project");
string configureYourWorkspaceBannerText = GettextCatalog.GetString ("Configure your new workspace");
string configureYourSolutionBannerText = GettextCatalog.GetString ("Configure your new solution");
@@ -610,8 +614,10 @@ namespace MonoDevelop.Ide.Projects
if (wizardProvider.HasWizard)
wizardProvider.BeforeProjectIsCreated ();
- if (!await CreateProject ())
+ if (!await CreateProject ()) {
+ ProjectCreationFailed?.Invoke (this, new EventArgs ());
return;
+ }
Solution parentSolution = null;
@@ -697,6 +703,8 @@ namespace MonoDevelop.Ide.Projects
IsNewItemCreated = true;
UpdateDefaultSettings ();
+ var result = ProjectCreationSucceed?.BeginInvoke(this, new EventArgs (), new AsyncCallback ((_) => {} ),null);
+ result.AsyncWaitHandle.WaitOne ();
dialog.CloseDialog ();
}