diff options
author | Jose Miguel Torres <jostor@microsoft.com> | 2019-07-25 18:27:26 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-25 18:27:26 +0300 |
commit | b4a2b5332741b84bcb8af627efccd1cc57637909 (patch) | |
tree | bdd54731c66d6cc6d944b8debb7023fbfddf0f8a /main/src/addins | |
parent | 8c59b16c33066c8862b44e95bde77aa01fd1ab1d (diff) | |
parent | c6950692db6d26daf06d3d555f124e39e3dfb749 (diff) |
Merge pull request #8219 from mono/Fixes-697714
[dotnetcore] Turns DotNetCoreNotInstalledDialog into a InfoBar
Diffstat (limited to 'main/src/addins')
-rw-r--r-- | main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.csproj | 2 | ||||
-rw-r--r-- | main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreNotInstalledInfoBar.cs (renamed from main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreNotInstalledDialog.cs) | 68 | ||||
-rw-r--r-- | main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectExtension.cs | 25 | ||||
-rw-r--r-- | main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreSdk.cs | 6 |
4 files changed, 35 insertions, 66 deletions
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.csproj b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.csproj index 01aa705bac..bb1c502dc0 100644 --- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.csproj +++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.csproj @@ -26,7 +26,7 @@ <Compile Include="MonoDevelop.DotNetCore\DotNetCorePath.cs" /> <Compile Include="MonoDevelop.DotNetCore\DotNetCoreExecutionHandler.cs" /> <Compile Include="MonoDevelop.DotNetCore.Templating\DotNetCoreProjectTemplateWizard.cs" /> - <Compile Include="MonoDevelop.DotNetCore\DotNetCoreNotInstalledDialog.cs" /> + <Compile Include="MonoDevelop.DotNetCore\DotNetCoreNotInstalledInfoBar.cs" /> <Compile Include="MonoDevelop.DotNetCore\DotNetCoreSdkPaths.cs" /> <Compile Include="MonoDevelop.DotNetCore\DotNetCoreCanReferenceProjectExtension.cs" /> <Compile Include="MonoDevelop.DotNetCore\DotNetCliToolReference.cs" /> diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreNotInstalledDialog.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreNotInstalledInfoBar.cs index 9fb149f4f3..dd4578c87d 100644 --- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreNotInstalledDialog.cs +++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreNotInstalledInfoBar.cs @@ -1,5 +1,5 @@ // -// DotNetCoreNotInstalledDialog.cs +// DotNetCoreNotInstalledInfoBar.cs // // Author: // Matt Ward <matt.ward@xamarin.com> @@ -26,70 +26,38 @@ using MonoDevelop.Core; using MonoDevelop.Ide; -using MonoDevelop.Ide.Gui; -using System; +using MonoDevelop.Ide.Gui.Components; namespace MonoDevelop.DotNetCore { - class DotNetCoreNotInstalledDialog : IDisposable + class DotNetCoreNotInstalledInfoBar { - static readonly string defaultMessage = GettextCatalog.GetString (".NET Core SDK is not installed. This is required to build and run .NET Core projects."); - - GenericMessage message; - AlertButton downloadButton; string downloadUrl = DotNetCoreDownloadUrl.GetDotNetCoreDownloadUrl (); - public DotNetCoreNotInstalledDialog () - { - Build (); - } - - void Build () - { - message = new GenericMessage { - Text = defaultMessage, - DefaultButton = 1, - Icon = Stock.Information - }; - - downloadButton = new AlertButton (GettextCatalog.GetString ("Download .NET Core...")); - message.Buttons.Add (AlertButton.Cancel); - message.Buttons.Add (downloadButton); - - message.AlertButtonClicked += AlertButtonClicked; - } - - void AlertButtonClicked (object sender, AlertButtonEventArgs e) - { - if (e.Button == downloadButton) - IdeServices.DesktopService.ShowUrl (downloadUrl); - } - - public void Dispose () - { - message.AlertButtonClicked -= AlertButtonClicked; - } + public string Message { get; set; } + public bool IsUnsupportedVersion { get; set; } + public bool IsNetStandard { get; set; } + public DotNetCoreVersion RequiredDotNetCoreVersion { get; set; } + public string CurrentDotNetCorePath { get; set; } - public void Show () + public void Prompt () { - if (IsUnsupportedVersion || IsNetStandard) //for .net standard we'll show generic message + var items = new InfoBarItem [] { + new InfoBarItem (GettextCatalog.GetString ("Download .NET Core"), InfoBarItemKind.Button, DownloadButtonClicked, true) + }; + + if (IsUnsupportedVersion || IsNetStandard || RequiredDotNetCoreVersion == null) //for .net standard we'll show generic message Message = DotNetCoreSdk.GetNotSupportedVersionMessage (); else { Message = DotNetCoreSdk.GetNotSupportedVersionMessage (RequiredDotNetCoreVersion.OriginalString); downloadUrl = DotNetCoreDownloadUrl.GetDotNetCoreDownloadUrl (RequiredDotNetCoreVersion); } - MessageService.GenericAlert (message); + IdeApp.Workbench.ShowInfoBar (false, new InfoBarOptions (Message) { + Items = items + }); } - public string Message { - get { return message.Text; } - set { message.Text = value; } - } - - public bool IsUnsupportedVersion { get; set; } - public bool IsNetStandard { get; set; } - public DotNetCoreVersion RequiredDotNetCoreVersion { get; set; } - public string CurrentDotNetCorePath { get; set; } + void DownloadButtonClicked () => IdeServices.DesktopService.ShowUrl (downloadUrl); } } diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectExtension.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectExtension.cs index df43588e79..217a718ff0 100644 --- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectExtension.cs +++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectExtension.cs @@ -194,10 +194,7 @@ namespace MonoDevelop.DotNetCore Task ShowCannotExecuteDotNetCoreApplicationDialog () { return Runtime.RunInMainThread (() => { - using (var dialog = new DotNetCoreNotInstalledDialog ()) { - dialog.Message = GettextCatalog.GetString (".NET Core is required to run this application."); - dialog.Show (); - } + CreateInfoBarInstance ().Prompt (); }); } @@ -206,19 +203,23 @@ namespace MonoDevelop.DotNetCore return Runtime.RunInMainThread (() => { if (ShownDotNetCoreSdkNotInstalledDialogForSolution ()) return; - + Project.ParentSolution.ExtendedProperties [ShownDotNetCoreSdkInstalledExtendedPropertyName] = "true"; - using (var dialog = new DotNetCoreNotInstalledDialog ()) { - dialog.IsUnsupportedVersion = unsupportedSdkVersion; - dialog.RequiredDotNetCoreVersion = DotNetCoreVersion.Parse (Project.TargetFramework.Id.Version); - dialog.CurrentDotNetCorePath = sdkPaths.MSBuildSDKsPath; - dialog.IsNetStandard = Project.TargetFramework.Id.IsNetStandard (); - dialog.Show (); - } + CreateInfoBarInstance (unsupportedSdkVersion).Prompt (); }); } + DotNetCoreNotInstalledInfoBar CreateInfoBarInstance (bool unsupportedSdkVersion = false) + { + return new DotNetCoreNotInstalledInfoBar { + IsUnsupportedVersion = unsupportedSdkVersion, + RequiredDotNetCoreVersion = DotNetCoreVersion.Parse (Project.TargetFramework.Id.Version), + CurrentDotNetCorePath = sdkPaths.MSBuildSDKsPath, + IsNetStandard = Project.TargetFramework.Id.IsNetStandard () + }; + } + bool ShownDotNetCoreSdkNotInstalledDialogForSolution () { return Project.ParentSolution.ExtendedProperties.Contains (ShownDotNetCoreSdkInstalledExtendedPropertyName); diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreSdk.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreSdk.cs index 60028713d4..50992bf057 100644 --- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreSdk.cs +++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreSdk.cs @@ -184,10 +184,10 @@ namespace MonoDevelop.DotNetCore { string GetMessage (DotNetCoreVersion currentVersion) { - return GettextCatalog.GetString ("NET Core {0}.{1} SDK version {2} is not compatible with this version of Visual Studio for Mac. Install the latest update to the .NET Core {0}.{1} SDK by visiting {3}.", currentVersion.Major, currentVersion.Minor, currentVersion.ToString (), DotNetCoreDownloadUrl.GetDotNetCoreDownloadUrl (currentVersion)); + return GettextCatalog.GetString (".NET Core {0}.{1} SDK version {2} is not compatible with this version of Visual Studio for Mac. Install the latest update to the .NET Core {0}.{1} SDK by visiting {3}", currentVersion.Major, currentVersion.Minor, currentVersion.ToString (), DotNetCoreDownloadUrl.GetDotNetCoreDownloadUrl (currentVersion)); } - var installedVersion = Versions.OrderByDescending (x => x).FirstOrDefault (); + var installedVersion = Versions?.OrderByDescending (x => x).FirstOrDefault (); if (installedVersion != null) { if (installedVersion < DotNetCoreVersion.MinimumSupportedSdkVersion) { return GetMessage (installedVersion); @@ -198,7 +198,7 @@ namespace MonoDevelop.DotNetCore } } - return GettextCatalog.GetString (".NET Core {0} SDK is required to build this application, and is not installed. Install the latest update to the .NET Core {0} SDK by visiting {1}.", version, DotNetCoreDownloadUrl.GetDotNetCoreDownloadUrl (version)); + return GettextCatalog.GetString (".NET Core {0} SDK is required to build this application, and is not installed. Install the latest update to the .NET Core {0} SDK by visiting {1}", version, DotNetCoreDownloadUrl.GetDotNetCoreDownloadUrl (version)); } } } |