Browse Source

Project converter now converts project settings.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1006 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
1acdd6d9e0
  1. 7
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBToCSharpConverter.cs
  2. 7
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/CSharpToVBConverter.cs
  3. 12
      src/Main/Base/Project/Src/Project/AbstractProject.cs
  4. 34
      src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs
  5. 20
      src/Main/Base/Project/Src/Project/PropertyGroup.cs

7
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBToCSharpConverter.cs

@ -31,6 +31,13 @@ namespace CSharpBinding @@ -31,6 +31,13 @@ namespace CSharpBinding
ConvertFile(sourceItem, targetItem, ".vb", ".cs", SupportedLanguage.VBNet, new CSharpOutputVisitor());
}
protected override void CopyProperties(IProject sourceProject, IProject targetProject)
{
base.CopyProperties(sourceProject, targetProject);
FixProperty((CSharpProject)targetProject, "DefineConstants",
delegate(string v) { return v.Replace(',', ';'); });
}
protected override void ConvertAst(CompilationUnit compilationUnit, List<ISpecial> specials)
{
PreProcessingDirective.VBToCSharp(specials);

7
src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/CSharpToVBConverter.cs

@ -37,6 +37,13 @@ namespace VBNetBinding @@ -37,6 +37,13 @@ namespace VBNetBinding
new CSharpToVBNetConvertVisitor().Visit(compilationUnit, null);
}
protected override void CopyProperties(IProject sourceProject, IProject targetProject)
{
base.CopyProperties(sourceProject, targetProject);
FixProperty((VBNetProject)targetProject, "DefineConstants",
delegate(string v) { return v.Replace(';', ','); });
}
protected override IProject CreateProject(string targetProjectDirectory, IProject sourceProject)
{
ProjectCreateInformation info = new ProjectCreateInformation();

12
src/Main/Base/Project/Src/Project/AbstractProject.cs

@ -33,6 +33,18 @@ namespace ICSharpCode.SharpDevelop.Project @@ -33,6 +33,18 @@ namespace ICSharpCode.SharpDevelop.Project
protected string fileName;
protected string language;
public Dictionary<string, PropertyGroup> Configurations {
get {
return configurations;
}
}
public Dictionary<string, PropertyGroup> UserConfigurations {
get {
return userConfigurations;
}
}
public static string GetConfigurationNameFromKey(string key)
{
return key.Substring(0, key.IndexOf('|'));

34
src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs

@ -37,7 +37,39 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -37,7 +37,39 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
protected virtual void CopyProperties(IProject sourceProject, IProject targetProject)
{
AbstractProject sp = sourceProject as AbstractProject;
AbstractProject tp = targetProject as AbstractProject;
if (sp != null && tp != null) {
tp.Configurations.Clear();
tp.UserConfigurations.Clear();
foreach (KeyValuePair<string, PropertyGroup> pair in sp.Configurations) {
tp.Configurations.Add(pair.Key, pair.Value.Clone());
}
foreach (KeyValuePair<string, PropertyGroup> pair in sp.UserConfigurations) {
tp.UserConfigurations.Add(pair.Key, pair.Value.Clone());
}
tp.BaseConfiguration.Merge(sp.BaseConfiguration);
tp.UserBaseConfiguration.Merge(sp.UserBaseConfiguration);
}
}
/// <summary>
/// Changes a property in the <paramref name="project"/> by applying a method to its value.
/// </summary>
protected void FixProperty(AbstractProject project, string propertyName, Converter<string, string> method)
{
if (project.BaseConfiguration.IsSet(propertyName))
project.BaseConfiguration[propertyName] = method(project.BaseConfiguration[propertyName]);
if (project.UserBaseConfiguration.IsSet(propertyName))
project.UserBaseConfiguration[propertyName] = method(project.UserBaseConfiguration[propertyName]);
foreach (PropertyGroup pg in project.Configurations.Values) {
if (pg.IsSet(propertyName))
pg[propertyName] = method(pg[propertyName]);
}
foreach (PropertyGroup pg in project.UserConfigurations.Values) {
if (pg.IsSet(propertyName))
pg[propertyName] = method(pg[propertyName]);
}
}
protected virtual void FixExtensionOfExtraProperties(FileProjectItem item, string sourceExtension, string targetExtension)

20
src/Main/Base/Project/Src/Project/PropertyGroup.cs

@ -14,9 +14,9 @@ using System.Xml; @@ -14,9 +14,9 @@ using System.Xml;
namespace ICSharpCode.SharpDevelop.Project
{
/// <summary>
/// Description of PropertyGroup.
/// Contains a set of MSBuild properties.
/// </summary>
public class PropertyGroup : IEnumerable<KeyValuePair<string, string>>
public sealed class PropertyGroup : IEnumerable<KeyValuePair<string, string>>, ICloneable
{
// TODO: Isn't MSBuild case-insensitive ???
Dictionary<string, bool> isGuardedProperty = new Dictionary<string, bool>();
@ -50,6 +50,18 @@ namespace ICSharpCode.SharpDevelop.Project @@ -50,6 +50,18 @@ namespace ICSharpCode.SharpDevelop.Project
return properties.GetEnumerator();
}
public PropertyGroup Clone()
{
PropertyGroup pg = new PropertyGroup();
pg.Merge(this);
return pg;
}
object ICloneable.Clone()
{
return this.Clone();
}
public T Get<T>(string property, T defaultValue)
{
if (!properties.ContainsKey(property)) {
@ -99,10 +111,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -99,10 +111,6 @@ namespace ICSharpCode.SharpDevelop.Project
properties[property] = value.ToString();
}
public PropertyGroup()
{
}
public void Merge(PropertyGroup group)
{
foreach (KeyValuePair<string, string> entry in group.properties) {

Loading…
Cancel
Save