diff options
author | Matt Ward <ward.matt@gmail.com> | 2018-04-12 01:26:12 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-12 01:26:12 +0300 |
commit | ecd14eaedf5fa3a8809728f58e595ebe47a3d3d1 (patch) | |
tree | 08afd95a53d81a03456373af1d0bdbe4859f7ea7 /main/src/core | |
parent | 14312e5152092ba2938b86fb785fbf80bad964b4 (diff) | |
parent | b7ceabd5d60bba8fc6deab39557c2e982b0b8828 (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')
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" /> |