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 <matt.ward@xamarin.com>2017-05-09 23:00:09 +0300
committerMatt Ward <matt.ward@xamarin.com>2017-05-09 23:00:09 +0300
commit5be4ee757bdbccf0baffbcb9f5cc217471437932 (patch)
treee19fc743fda20f28cf08076e2c7bcf8f742d548f /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates
parente2ec3a75b49200c72b4f8413cc027d0ddbe9e3fd (diff)
[Ide] Support project template wizards in new templating engine
The templating engine used for .NET Core projects can now specify a wizard to be used for the project template. Parameters then set by that wizard can be used to set parameters supported by the project template. These parameters are passed to the templating engine.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProjectTemplatingProvider.cs22
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineSolutionTemplate.cs2
2 files changed, 17 insertions, 7 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProjectTemplatingProvider.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProjectTemplatingProvider.cs
index 6459b3de30..e34ac65025 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProjectTemplatingProvider.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProjectTemplatingProvider.cs
@@ -42,6 +42,7 @@ using Mono.Addins;
using MonoDevelop.Ide.Codons;
using Microsoft.TemplateEngine.Abstractions;
using MonoDevelop.Ide.CodeFormatting;
+using MonoDevelop.Core.StringParsing;
using MonoDevelop.Core.Text;
namespace MonoDevelop.Ide.Templates
@@ -136,7 +137,7 @@ namespace MonoDevelop.Ide.Templates
public async Task<ProcessedTemplateResult> ProcessTemplate (SolutionTemplate template, NewProjectConfiguration config, SolutionFolder parentFolder)
{
var solutionTemplate = (MicrosoftTemplateEngineSolutionTemplate)template;
- var parameters = GetParameters (solutionTemplate);
+ var parameters = GetParameters (solutionTemplate, config);
var templateInfo = solutionTemplate.templateInfo;
var workspaceItems = new List<IWorkspaceFileObject> ();
var result = await templateCreator.InstantiateAsync (
@@ -210,14 +211,23 @@ namespace MonoDevelop.Ide.Templates
return processResult;
}
- Dictionary<string, string> GetParameters (MicrosoftTemplateEngineSolutionTemplate template)
+ Dictionary<string, string> GetParameters (MicrosoftTemplateEngineSolutionTemplate template, NewProjectConfiguration config)
{
var parameters = new Dictionary<string, string> ();
- if (string.IsNullOrEmpty (template.DefaultParameters))
- return parameters;
+ if (!string.IsNullOrEmpty (template.DefaultParameters)) {
+ foreach (TemplateParameter parameter in GetValidParameters (template.DefaultParameters)) {
+ parameters [parameter.Name] = parameter.Value;
+ }
+ }
- foreach (TemplateParameter parameter in GetValidParameters (template.DefaultParameters)) {
- parameters [parameter.Name] = parameter.Value;
+ // If the template has no wizard then no extra parameters will be set.
+ if (template.HasWizard) {
+ var model = (IStringTagModel)config.Parameters;
+ foreach (ITemplateParameter parameter in template.templateInfo.Parameters) {
+ string parameterValue = (string)model.GetValue (parameter.Name);
+ if (parameterValue != null)
+ parameters [parameter.Name] = parameterValue;
+ }
}
return parameters;
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 f8d34ed475..4961c5bde1 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineSolutionTemplate.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineSolutionTemplate.cs
@@ -51,7 +51,7 @@ namespace MonoDevelop.Ide.Templates
//TODO: Support all this params
//Condition = template.Condition;
//ProjectFileExtension = template.FileExtension;
- //Wizard = template.WizardPath;
+ Wizard = template.Wizard;
//SupportedParameters = template.SupportedParameters;
DefaultParameters = template.DefaultParameters;
ImageId = template.ImageId;