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:
authorMatt Ward <ward.matt@gmail.com>2018-04-12 01:26:12 +0300
committerGitHub <noreply@github.com>2018-04-12 01:26:12 +0300
commitecd14eaedf5fa3a8809728f58e595ebe47a3d3d1 (patch)
tree08afd95a53d81a03456373af1d0bdbe4859f7ea7 /main/src/core
parent14312e5152092ba2938b86fb785fbf80bad964b4 (diff)
parentb7ceabd5d60bba8fc6deab39557c2e982b0b8828 (diff)
Merge pull request #3912 from mono/xamarin-forms-use-dotnet-templating-project-templates
[Forms] Use dotnet templating project templates
Diffstat (limited to 'main/src/core')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/FinalProjectConfigurationPage.cs37
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkProjectConfigurationWidget.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs10
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngine.cs24
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineSolutionTemplate.cs52
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj12
-rw-r--r--main/src/core/MonoDevelop.Ide/packages.config12
7 files changed, 106 insertions, 43 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/FinalProjectConfigurationPage.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/FinalProjectConfigurationPage.cs
index 0b6956b18b..c903c47c92 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/FinalProjectConfigurationPage.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/FinalProjectConfigurationPage.cs
@@ -40,6 +40,10 @@ namespace MonoDevelop.Ide.Projects
SolutionTemplate template;
bool valid;
bool projectNameIsReadOnly;
+ bool? createProjectDirectoryInsideSolutionDirectory;
+ bool createProjectDirectoryInsideSolutionDirectoryEnabled = true;
+ bool? createGitIgnoreFile;
+ bool gitIgnoreEnabled = true;
public FinalProjectConfigurationPage (NewProjectConfiguration config)
{
@@ -138,7 +142,12 @@ namespace MonoDevelop.Ide.Projects
}
public bool CreateGitIgnoreFile {
- get { return config.CreateGitIgnoreFile; }
+ get {
+ if (createGitIgnoreFile.HasValue) {
+ return createGitIgnoreFile.Value;
+ }
+ return config.CreateGitIgnoreFile;
+ }
set { config.CreateGitIgnoreFile = value; }
}
@@ -148,7 +157,12 @@ namespace MonoDevelop.Ide.Projects
}
public bool CreateProjectDirectoryInsideSolutionDirectory {
- get { return config.CreateProjectDirectoryInsideSolutionDirectory; }
+ get {
+ if (createProjectDirectoryInsideSolutionDirectory.HasValue) {
+ return createProjectDirectoryInsideSolutionDirectory.Value;
+ }
+ return config.CreateProjectDirectoryInsideSolutionDirectory;
+ }
set { config.CreateProjectDirectoryInsideSolutionDirectory = value; }
}
@@ -161,11 +175,11 @@ namespace MonoDevelop.Ide.Projects
}
public bool IsCreateProjectDirectoryInsideSolutionDirectoryEnabled {
- get { return HasProjects && IsNewSolution; }
+ get { return HasProjects && IsNewSolution && createProjectDirectoryInsideSolutionDirectoryEnabled; }
}
public bool IsGitIgnoreEnabled {
- get { return config.UseGit && IsUseGitEnabled; }
+ get { return config.UseGit && IsUseGitEnabled && gitIgnoreEnabled; }
}
public bool IsUseGitEnabled { get; set; }
@@ -230,6 +244,21 @@ namespace MonoDevelop.Ide.Projects
{
ProjectName = Parameters ["ProjectName"];
projectNameIsReadOnly = Parameters.GetBoolValue ("IsProjectNameReadOnly", false);
+
+ createProjectDirectoryInsideSolutionDirectory = GetParameterValue ("CreateProjectDirectoryInsideSolutionDirectory");
+ createProjectDirectoryInsideSolutionDirectoryEnabled = Parameters. GetBoolValue ("IsCreateProjectDirectoryInsideSolutionDirectoryEnabled", true);
+
+ createGitIgnoreFile = GetParameterValue ("CreateGitIgnoreFile");
+ gitIgnoreEnabled = Parameters.GetBoolValue ("IsGitIgnoreEnabled", true);
+ }
+
+ bool? GetParameterValue (string name)
+ {
+ string value = Parameters [name];
+ if (!string.IsNullOrEmpty (value)) {
+ return Parameters.GetBoolValue (name);
+ }
+ return null;
}
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkProjectConfigurationWidget.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkProjectConfigurationWidget.cs
index b3ff375713..e1c784cb94 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkProjectConfigurationWidget.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkProjectConfigurationWidget.cs
@@ -247,7 +247,7 @@ namespace MonoDevelop.Ide.Projects
solutionNameTextBox.Sensitive = projectConfiguration.IsSolutionNameEnabled;
projectNameTextBox.Sensitive = projectConfiguration.IsProjectNameEnabled;
createProjectWithinSolutionDirectoryCheckBox.Sensitive = projectConfiguration.IsCreateProjectDirectoryInsideSolutionDirectoryEnabled;
- createProjectWithinSolutionDirectoryCheckBox.Active = projectConfiguration.IsCreateProjectDirectoryInsideSolutionDirectoryEnabled ? projectConfiguration.CreateProjectDirectoryInsideSolutionDirectory : true;
+ createProjectWithinSolutionDirectoryCheckBox.Active = projectConfiguration.CreateProjectDirectoryInsideSolutionDirectory;
useGitCheckBox.Sensitive = projectConfiguration.IsUseGitEnabled;
useGitCheckBox.Active = projectConfiguration.UseGit;
createGitIgnoreFileCheckBox.Sensitive = projectConfiguration.IsGitIgnoreEnabled;
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 85cd497ecf..b7b621049d 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs
@@ -59,8 +59,8 @@ namespace MonoDevelop.Ide.Projects
string configureYourWorkspaceBannerText = GettextCatalog.GetString ("Configure your new workspace");
string configureYourSolutionBannerText = GettextCatalog.GetString ("Configure your new solution");
- const string UseGitPropertyName = "Dialogs.NewProjectDialog.UseGit";
- const string CreateGitIgnoreFilePropertyName = "Dialogs.NewProjectDialog.CreateGitIgnoreFile";
+ internal const string UseGitPropertyName = "Dialogs.NewProjectDialog.UseGit";
+ internal const string CreateGitIgnoreFilePropertyName = "Dialogs.NewProjectDialog.CreateGitIgnoreFile";
internal const string CreateProjectSubDirectoryPropertyName = "MonoDevelop.Core.Gui.Dialogs.NewProjectDialog.AutoCreateProjectSubdir";
const string NewSolutionLastSelectedCategoryPropertyName = "Dialogs.NewProjectDialog.LastSelectedCategoryPath";
const string NewSolutionLastSelectedTemplatePropertyName = "Dialogs.NewProjectDialog.LastSelectedTemplate";
@@ -204,7 +204,7 @@ namespace MonoDevelop.Ide.Projects
void UpdateDefaultSettings ()
{
UpdateDefaultGitSettings ();
- if (IsNewSolution)
+ if (IsNewSolution && finalConfigurationPage.IsCreateProjectDirectoryInsideSolutionDirectoryEnabled)
PropertyService.Set (CreateProjectSubDirectoryPropertyName, projectConfiguration.CreateProjectDirectoryInsideSolutionDirectory);
PropertyService.Set (SelectedLanguagePropertyName, GetLanguageForTemplateProcessing ());
DefaultSelectedCategoryPath = GetSelectedCategoryPath ();
@@ -270,7 +270,9 @@ namespace MonoDevelop.Ide.Projects
void UpdateDefaultGitSettings ()
{
PropertyService.Set (UseGitPropertyName, projectConfiguration.UseGit);
- PropertyService.Set (CreateGitIgnoreFilePropertyName, projectConfiguration.CreateGitIgnoreFile);
+
+ if (finalConfigurationPage.IsGitIgnoreEnabled)
+ PropertyService.Set (CreateGitIgnoreFilePropertyName, projectConfiguration.CreateGitIgnoreFile);
}
protected virtual INewProjectDialogBackend CreateNewProjectDialog ()
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngine.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngine.cs
index 21d85218a9..934088c9e3 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngine.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngine.cs
@@ -292,25 +292,11 @@ namespace MonoDevelop.Ide.Templates
class MyTemplateEngineHost : DefaultTemplateEngineHost
{
- public MyTemplateEngineHost ()
- : base (BrandingService.ApplicationName, BuildInfo.CompatVersion, "en-US", new Dictionary<string, string> { { "dotnet-cli-version", "0" } }, new Dictionary<Guid, Func<Type>>
- {
- { new Guid("0C434DF7-E2CB-4DEE-B216-D7C58C8EB4B3"), () => typeof(RunnableProjectGenerator) },
- { new Guid("3147965A-08E5-4523-B869-02C8E9A8AAA1"), () => typeof(BalancedNestingConfig) },
- { new Guid("3E8BCBF0-D631-45BA-A12D-FBF1DE03AA38"), () => typeof(ConditionalConfig) },
- { new Guid("A1E27A4B-9608-47F1-B3B8-F70DF62DC521"), () => typeof(FlagsConfig) },
- { new Guid("3FAE1942-7257-4247-B44D-2DDE07CB4A4A"), () => typeof(IncludeConfig) },
- { new Guid("3D33B3BF-F40E-43EB-A14D-F40516F880CD"), () => typeof(RegionConfig) },
- { new Guid("62DB7F1F-A10E-46F0-953F-A28A03A81CD1"), () => typeof(ReplacementConfig) },
- { new Guid("370996FE-2943-4AED-B2F6-EC03F0B75B4A"), () => typeof(ConstantMacro) },
- { new Guid("BB625F71-6404-4550-98AF-B2E546F46C5F"), () => typeof(EvaluateMacro) },
- { new Guid("10919008-4E13-4FA8-825C-3B4DA855578E"), () => typeof(GuidMacro) },
- { new Guid("F2B423D7-3C23-4489-816A-41D8D2A98596"), () => typeof(NowMacro) },
- { new Guid("011E8DC1-8544-4360-9B40-65FD916049B7"), () => typeof(RandomMacro) },
- { new Guid("8A4D4937-E23F-426D-8398-3BDBD1873ADB"), () => typeof(RegexMacro) },
- { new Guid("B57D64E0-9B4F-4ABE-9366-711170FD5294"), () => typeof(SwitchMacro) },
- { new Guid("10919118-4E13-4FA9-825C-3B4DA855578E"), () => typeof(CaseChangeMacro) }
- }.ToList ())
+ static readonly AssemblyComponentCatalog builtIns = new AssemblyComponentCatalog (new[] {
+ typeof (RunnableProjectGenerator).Assembly,
+ });
+
+ public MyTemplateEngineHost () : base (BrandingService.ApplicationName, BuildInfo.CompatVersion, "en-US", new Dictionary<string, string> { { "dotnet-cli-version", "0" } }, builtIns)
{
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineSolutionTemplate.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineSolutionTemplate.cs
index a68b940eb4..c4194bdf1b 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineSolutionTemplate.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineSolutionTemplate.cs
@@ -24,11 +24,12 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
using Microsoft.TemplateEngine.Abstractions;
using Microsoft.TemplateEngine.Edge.Settings;
-using System.Linq;
using MonoDevelop.Ide.Codons;
-using System.Collections.Generic;
namespace MonoDevelop.Ide.Templates
{
@@ -40,7 +41,7 @@ namespace MonoDevelop.Ide.Templates
: base (template.Id, template.OverrideName ?? templateInfo.Name, template.Icon)
{
this.templateInfo = templateInfo;
- Description = template.OverrideDescription ?? templateInfo.Description;
+ Description = ParseDescription (template.OverrideDescription) ?? templateInfo.Description;
Category = template.Category;
Language = MicrosoftTemplateEngine.GetLanguage (templateInfo);
GroupId = template.GroupId ?? templateInfo.GroupIdentity;
@@ -120,5 +121,50 @@ namespace MonoDevelop.Ide.Templates
}
return result;
}
+
+ /// <summary>
+ /// Replaces \n in description with new lines unless escaped with an extra backslash.
+ /// </summary>
+ static internal string ParseDescription (string description)
+ {
+ if (string.IsNullOrEmpty (description)) {
+ return description;
+ }
+
+ int index = description.IndexOf ("\\n", StringComparison.Ordinal);
+ if (index == -1) {
+ return description;
+ }
+
+ var textBuilder = new StringBuilder (description.Length);
+
+ index = 0;
+ while (index < description.Length) {
+ char ch = description [index];
+
+ if (ch == '\\') {
+ index++;
+ if (index >= description.Length) {
+ textBuilder.Append (ch);
+ } else if (description [index] == 'n') {
+ textBuilder.Append (Environment.NewLine);
+ } else if (description [index] == '\\') {
+ textBuilder.Append ('\\');
+ index++;
+ if (index < description.Length && description [index] == 'n') {
+ textBuilder.Append ("n");
+ } else {
+ textBuilder.Append ("\\");
+ }
+ }
+ } else {
+ textBuilder.Append (ch);
+ }
+
+ index++;
+ }
+
+ return textBuilder.ToString ();
+ }
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj
index ad465b9a4d..9e0e188fb6 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj
@@ -118,22 +118,22 @@
<HintPath>..\..\..\packages\JetBrains.SharpZipLib.Stripped.0.87.20170615.10\lib\net40\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TemplateEngine.Abstractions">
- <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Abstractions.1.0.0-beta2-20170523-241\lib\net45\Microsoft.TemplateEngine.Abstractions.dll</HintPath>
+ <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Abstractions.1.0.0-beta3-20171117-314\lib\net45\Microsoft.TemplateEngine.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TemplateEngine.Core">
- <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Core.1.0.0-beta2-20170523-241\lib\net45\Microsoft.TemplateEngine.Core.dll</HintPath>
+ <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Core.1.0.0-beta3-20171117-314\lib\net45\Microsoft.TemplateEngine.Core.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TemplateEngine.Core.Contracts">
- <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Core.Contracts.1.0.0-beta2-20170523-241\lib\net45\Microsoft.TemplateEngine.Core.Contracts.dll</HintPath>
+ <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Core.Contracts.1.0.0-beta3-20171117-314\lib\net45\Microsoft.TemplateEngine.Core.Contracts.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TemplateEngine.Edge">
- <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Edge.1.0.0-beta2-20170523-241\lib\net45\Microsoft.TemplateEngine.Edge.dll</HintPath>
+ <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Edge.1.0.0-beta3-20171117-314\lib\net45\Microsoft.TemplateEngine.Edge.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TemplateEngine.Orchestrator.RunnableProjects">
- <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Orchestrator.RunnableProjects.1.0.0-beta2-20170523-241\lib\net45\Microsoft.TemplateEngine.Orchestrator.RunnableProjects.dll</HintPath>
+ <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Orchestrator.RunnableProjects.1.0.0-beta3-20171117-314\lib\net45\Microsoft.TemplateEngine.Orchestrator.RunnableProjects.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TemplateEngine.Utils">
- <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Utils.1.0.0-beta2-20170523-241\lib\net45\Microsoft.TemplateEngine.Utils.dll</HintPath>
+ <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Utils.1.0.0-beta3-20171117-314\lib\net45\Microsoft.TemplateEngine.Utils.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.Composition, Version=15.6.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<HintPath>..\..\..\packages\Microsoft.VisualStudio.Composition.15.6.36\lib\net45\Microsoft.VisualStudio.Composition.dll</HintPath>
diff --git a/main/src/core/MonoDevelop.Ide/packages.config b/main/src/core/MonoDevelop.Ide/packages.config
index 3229b43a8a..0d86112706 100644
--- a/main/src/core/MonoDevelop.Ide/packages.config
+++ b/main/src/core/MonoDevelop.Ide/packages.config
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
- <package id="Microsoft.TemplateEngine.Abstractions" version="1.0.0-beta2-20170523-241" targetFramework="net461" />
- <package id="Microsoft.TemplateEngine.Core" version="1.0.0-beta2-20170523-241" targetFramework="net461" />
- <package id="Microsoft.TemplateEngine.Core.Contracts" version="1.0.0-beta2-20170523-241" targetFramework="net461" />
- <package id="Microsoft.TemplateEngine.Edge" version="1.0.0-beta2-20170523-241" targetFramework="net461" />
- <package id="Microsoft.TemplateEngine.Orchestrator.RunnableProjects" version="1.0.0-beta2-20170523-241" targetFramework="net461" />
- <package id="Microsoft.TemplateEngine.Utils" version="1.0.0-beta2-20170523-241" targetFramework="net461" />
+ <package id="Microsoft.TemplateEngine.Abstractions" version="1.0.0-beta3-20171117-314" targetFramework="net461" />
+ <package id="Microsoft.TemplateEngine.Core" version="1.0.0-beta3-20171117-314" targetFramework="net461" />
+ <package id="Microsoft.TemplateEngine.Core.Contracts" version="1.0.0-beta3-20171117-314" targetFramework="net461" />
+ <package id="Microsoft.TemplateEngine.Edge" version="1.0.0-beta3-20171117-314" targetFramework="net461" />
+ <package id="Microsoft.TemplateEngine.Orchestrator.RunnableProjects" version="1.0.0-beta3-20171117-314" targetFramework="net461" />
+ <package id="Microsoft.TemplateEngine.Utils" version="1.0.0-beta3-20171117-314" targetFramework="net461" />
<package id="Newtonsoft.Json" version="10.0.3" targetFramework="net45" />
<package id="JetBrains.SharpZipLib.Stripped" version="0.87.20170615.10" targetFramework="net461" />
<package id="System.Collections.Immutable" version="1.3.1" targetFramework="net45" />