From 120583a73feb500678ff7d8796074493f2baab2d Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Fri, 17 Nov 2006 19:29:23 +0000 Subject: [PATCH] Fixed bugs that prevented creating new VB projects. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2044 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Project/VBNetProject.cs | 17 +++-- .../Project/ICSharpCode.SharpDevelop.csproj | 1 + .../Templates/Project/ProjectDescriptor.cs | 4 +- .../Project/Src/Project/CompilableProject.cs | 2 +- .../Src/Project/MSBuildBasedProject.cs | 15 +++- .../ProjectPropertyChangedEventArgs.cs | 68 +++++++++++++++++++ 6 files changed, 94 insertions(+), 13 deletions(-) create mode 100644 src/Main/Base/Project/Src/Project/ProjectPropertyChangedEventArgs.cs diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs index ae8e8d07bc..0c3bf3557a 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs @@ -19,23 +19,26 @@ namespace VBNetBinding { public class VBNetProject : CompilableProject { - /*public override void SetProperty(string configurationName, string platform, string property, T value, PropertyStorageLocations location) + protected override void OnPropertyChanged(ProjectPropertyChangedEventArgs e) { - base.SetProperty(configurationName, platform, property, value, location); - if (property == "OutputType") { + base.OnPropertyChanged(e); + if (e.PropertyName == "OutputType") { switch (this.OutputType) { case OutputType.WinExe: - base.SetProperty(configurationName, platform, "MyType", "WindowsForms", location); + SetProperty(e.Configuration, e.Platform, + "MyType", "WindowsForms", e.Location, true); break; case OutputType.Exe: - base.SetProperty(configurationName, platform, "MyType", "Console", location); + SetProperty(e.Configuration, e.Platform, + "MyType", "Console", e.Location, true); break; default: - base.SetProperty(configurationName, platform, "MyType", "Windows", location); + SetProperty(e.Configuration, e.Platform, + "MyType", "Windows", e.Location, true); break; } } - }*/ + } [Browsable(false)] public override IAmbience Ambience { diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index 759b10618a..4f9317d731 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -64,6 +64,7 @@ + diff --git a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs b/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs index cf1cadf104..a6899ed88e 100644 --- a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs +++ b/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs @@ -172,9 +172,9 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates foreach (XmlElement propertyElement in ChildElements(propertyGroupElement)) { ProjectProperty p = new ProjectProperty(propertyElement.Name, - propertyElement.Value, + propertyElement.InnerText, configuration, platform, storageLocation); - if (string.Equals(propertyGroupElement.GetAttribute("escapeValue"), "true", StringComparison.OrdinalIgnoreCase)) { + if (string.Equals(propertyGroupElement.GetAttribute("escapeValue"), "false", StringComparison.OrdinalIgnoreCase)) { p.ValueIsLiteral = false; } else { p.ValueIsLiteral = true; diff --git a/src/Main/Base/Project/Src/Project/CompilableProject.cs b/src/Main/Base/Project/Src/Project/CompilableProject.cs index a42c55cf50..fa997815cd 100644 --- a/src/Main/Base/Project/Src/Project/CompilableProject.cs +++ b/src/Main/Base/Project/Src/Project/CompilableProject.cs @@ -299,7 +299,7 @@ namespace ICSharpCode.SharpDevelop.Project } } - protected override void OnPropertyChanged(System.ComponentModel.PropertyChangedEventArgs e) + protected override void OnPropertyChanged(ProjectPropertyChangedEventArgs e) { base.OnPropertyChanged(e); if (reparseReferencesSensitiveProperties.Contains(e.PropertyName)) { diff --git a/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs b/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs index c9afcd3d45..f0ae473981 100644 --- a/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs +++ b/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs @@ -332,9 +332,9 @@ namespace ICSharpCode.SharpDevelop.Project #endregion #region SetProperty - public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; + public event EventHandler PropertyChanged; - protected virtual void OnPropertyChanged(System.ComponentModel.PropertyChangedEventArgs e) + protected virtual void OnPropertyChanged(ProjectPropertyChangedEventArgs e) { if (PropertyChanged != null) { PropertyChanged(this, e); @@ -509,14 +509,23 @@ namespace ICSharpCode.SharpDevelop.Project out existingPropertyGroup, out oldLocation); } + ProjectPropertyChangedEventArgs args; + args = new ProjectPropertyChangedEventArgs(propertyName); + args.Configuration = configuration; + args.Platform = platform; + args.Location = location; + if (newValue == null) { if (existingPropertyGroup != null && existingProperty != null) { + args.OldValue = existingProperty.Value; + existingPropertyGroup.RemoveProperty(existingProperty); if (existingPropertyGroup.Count == 0) { project.RemovePropertyGroup(existingPropertyGroup); } } } else if (existingPropertyGroup != null && existingProperty != null) { + args.OldValue = existingProperty.Value; project.SetProperty(propertyName, newValue, existingPropertyGroup.Condition, propertyInsertionPosition, @@ -527,7 +536,7 @@ namespace ICSharpCode.SharpDevelop.Project propertyInsertionPosition, treatPropertyValueAsLiteral); } - OnPropertyChanged(new System.ComponentModel.PropertyChangedEventArgs(propertyName)); + OnPropertyChanged(args); } /// diff --git a/src/Main/Base/Project/Src/Project/ProjectPropertyChangedEventArgs.cs b/src/Main/Base/Project/Src/Project/ProjectPropertyChangedEventArgs.cs new file mode 100644 index 0000000000..aef054a7b6 --- /dev/null +++ b/src/Main/Base/Project/Src/Project/ProjectPropertyChangedEventArgs.cs @@ -0,0 +1,68 @@ +// +// +// +// +// $Revision$ +// + +using System; +using System.Collections; +using System.ComponentModel; + +namespace ICSharpCode.SharpDevelop.Project +{ + public class ProjectPropertyChangedEventArgs : EventArgs + { + string propertyName; + string configuration, platform; + string oldValue; + PropertyStorageLocations location; + + public ProjectPropertyChangedEventArgs(string propertyName) + { + if (string.IsNullOrEmpty(propertyName)) + throw new ArgumentNullException("propertyName"); + this.propertyName = propertyName; + } + + /// + /// The name of the property that has changed. + /// + public string PropertyName { + get { return propertyName; } + } + + /// + /// The configuration where the changed property was saved to. + /// + public string Configuration { + get { return configuration; } + set { configuration = value; } + } + + /// + /// The platform where the changed property was saved to. + /// + public string Platform { + get { return platform; } + set { platform = value; } + } + + /// + /// Gets the old value before the property was changed. This value might not + /// be available if the property changed location. + /// + public string OldValue { + get { return oldValue; } + set { oldValue = value; } + } + + /// + /// The location where the changed property was saved to. + /// + public PropertyStorageLocations Location { + get { return location; } + set { location = value; } + } + } +}