Browse Source

Fixed SD2-865: Property window showing wrong value for "Local copy" and "specific version" on GAC references

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2362 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
4d20506557
  1. 7
      src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/LocalizedPropertyDescriptor.cs
  2. 95
      src/Main/Base/Project/Src/Project/Items/ReferenceProjectItem.cs
  3. BIN
      src/Main/StartUp/Project/Resources/StringResources.resources

7
src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/LocalizedPropertyDescriptor.cs

@ -17,7 +17,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -17,7 +17,7 @@ namespace ICSharpCode.SharpDevelop.Gui
/// </summary>
public class LocalizedPropertyDescriptor : PropertyDescriptor
{
PropertyDescriptor basePropertyDescriptor;
PropertyDescriptor basePropertyDescriptor;
string localizedName = String.Empty;
string localizedDescription = String.Empty;
@ -118,6 +118,9 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -118,6 +118,9 @@ namespace ICSharpCode.SharpDevelop.Gui
public override void ResetValue(object component)
{
this.basePropertyDescriptor.ResetValue(component);
if (component is LocalizedObject) {
((LocalizedObject)component).InformSetValue(this, component, null);
}
}
public override bool ShouldSerializeValue(object component)
@ -128,7 +131,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -128,7 +131,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public override void SetValue(object component, object value)
{
if (this.customTypeConverter != null && value.GetType() != PropertyType) {
this.basePropertyDescriptor.SetValue(component, this.customTypeConverter.ConvertFrom(value));
this.basePropertyDescriptor.SetValue(component, this.customTypeConverter.ConvertFrom(value));
} else {
this.basePropertyDescriptor.SetValue(component, value);
}

95
src/Main/Base/Project/Src/Project/Items/ReferenceProjectItem.cs

@ -48,24 +48,35 @@ namespace ICSharpCode.SharpDevelop.Project @@ -48,24 +48,35 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
[DefaultValue("global")]
[LocalizedProperty("${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.Aliases}",
Description = "${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.Aliases.Description}")]
public string Aliases {
get {
return GetEvaluatedMetadata("Aliases", "global");
}
set {
SetEvaluatedMetadata("Aliases", value);
}
}
[DefaultValue(false)]
[LocalizedProperty("${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.SpecificVersion}",
Description = "${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.SpecificVersion.Description}")]
public bool SpecificVersion {
get {
return GetEvaluatedMetadata("SpecificVersion", true);
return GetEvaluatedMetadata("SpecificVersion", false);
}
set {
SetEvaluatedMetadata("SpecificVersion", value);
}
}
[DefaultValue(true)]
[LocalizedProperty("${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.LocalCopy}",
Description = "${res:ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.LocalCopy.Description}")]
public bool Private {
get {
return GetEvaluatedMetadata("Private", true);
return GetEvaluatedMetadata("Private", !IsGacReference);
}
set {
SetEvaluatedMetadata("Private", value);
@ -131,6 +142,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -131,6 +142,7 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
[ReadOnly(true)]
public override string FileName {
get {
if (Project != null) {
@ -138,9 +150,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -138,9 +150,9 @@ namespace ICSharpCode.SharpDevelop.Project
string hintPath = HintPath;
try {
if (hintPath != null && hintPath.Length > 0) {
return Path.GetFullPath(Path.Combine(projectDir, hintPath));
return FileUtility.GetAbsolutePath(projectDir, hintPath);
}
string name = Path.GetFullPath(Path.Combine(projectDir, Include));
string name = FileUtility.GetAbsolutePath(projectDir, Include);
if (File.Exists(name)) {
return name;
}
@ -159,6 +171,13 @@ namespace ICSharpCode.SharpDevelop.Project @@ -159,6 +171,13 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
[Browsable(false)]
public bool IsGacReference {
get {
return !Path.IsPathRooted(this.FileName);
}
}
AssemblyName GetAssemblyName(string include)
{
try {
@ -169,5 +188,71 @@ namespace ICSharpCode.SharpDevelop.Project @@ -169,5 +188,71 @@ namespace ICSharpCode.SharpDevelop.Project
return null;
}
protected override void FilterProperties(PropertyDescriptorCollection globalizedProps)
{
base.FilterProperties(globalizedProps);
PropertyDescriptor privatePD = globalizedProps["Private"];
globalizedProps.Remove(privatePD);
globalizedProps.Add(new ReplaceDefaultValueDescriptor(privatePD, !IsGacReference));
}
sealed class ReplaceDefaultValueDescriptor : PropertyDescriptor
{
PropertyDescriptor baseDescriptor;
bool newDefaultValue;
public override bool ShouldSerializeValue(object component)
{
return (bool)GetValue(component) != newDefaultValue;
}
public override void ResetValue(object component)
{
SetValue(component, newDefaultValue);
}
public ReplaceDefaultValueDescriptor(PropertyDescriptor baseDescriptor, bool newDefaultValue)
: base(baseDescriptor)
{
this.baseDescriptor = baseDescriptor;
this.newDefaultValue = newDefaultValue;
}
public override string DisplayName {
get { return baseDescriptor.DisplayName; }
}
public override string Description {
get { return baseDescriptor.Description; }
}
public override Type ComponentType {
get { return baseDescriptor.ComponentType; }
}
public override bool IsReadOnly {
get { return baseDescriptor.IsReadOnly; }
}
public override bool CanResetValue(object component)
{
return baseDescriptor.CanResetValue(component);
}
public override object GetValue(object component)
{
return baseDescriptor.GetValue(component);
}
public override void SetValue(object component, object value)
{
baseDescriptor.SetValue(component, value);
}
public override Type PropertyType {
get { return baseDescriptor.PropertyType; }
}
}
}
}

BIN
src/Main/StartUp/Project/Resources/StringResources.resources

Binary file not shown.
Loading…
Cancel
Save