using System; | |
using System.Collections.Generic; | |
using System.ComponentModel; | |
using System.Globalization; | |
using System.Linq; | |
using System.Text; | |
using System.Threading.Tasks; | |
namespace LLVM.ClangTidy | |
{ | |
/// <summary> | |
/// Allows entire categories of properties to be enabled, disabled, or inherited | |
/// in one fell swoop. We add properties to each category with the value being | |
/// this enum, and when the value is selected, we use reflection to find all other | |
/// properties in the same category and perform the corresponding action. | |
/// </summary> | |
public enum CategoryVerb | |
{ | |
None, | |
Disable, | |
Enable, | |
Inherit | |
} | |
public class CategoryVerbConverter : EnumConverter | |
{ | |
public CategoryVerbConverter() : base(typeof(CategoryVerb)) | |
{ | |
} | |
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) | |
{ | |
if (value is string) | |
{ | |
switch ((string)value) | |
{ | |
case "Disable Category": | |
return CategoryVerb.Disable; | |
case "Enable Category": | |
return CategoryVerb.Enable; | |
case "Inherit Category": | |
return CategoryVerb.Inherit; | |
case "": | |
return CategoryVerb.None; | |
} | |
} | |
return base.ConvertFrom(context, culture, value); | |
} | |
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) | |
{ | |
if (value is CategoryVerb && destinationType == typeof(string)) | |
{ | |
switch ((CategoryVerb)value) | |
{ | |
case CategoryVerb.Disable: | |
return "Disable Category"; | |
case CategoryVerb.Enable: | |
return "Enable Category"; | |
case CategoryVerb.Inherit: | |
return "Inherit Category"; | |
case CategoryVerb.None: | |
return String.Empty; | |
} | |
} | |
return base.ConvertTo(context, culture, value, destinationType); | |
} | |
} | |
} |