diff --git a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml index bbad3d701b..ecd0dd223a 100644 --- a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml +++ b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml @@ -33,6 +33,7 @@ - + + - - - - - - - - - - + + + + + + + + + + + + - + diff --git a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs index 2a271ac7ed..88b6585735 100644 --- a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs +++ b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs @@ -44,16 +44,15 @@ namespace ICSharpCode.CodeAnalysis private bool userCheck; private Dictionary rules = new Dictionary(); - private List bla = new List(); + private List> bla = new List>(); public AnalysisProjectOptionsPanelXaml() { InitializeComponent(); DataContext = this; - - bla.Add(new KeyItemPair("Warning","Warning")); - bla.Add(new KeyItemPair("Error","Error")); - bla.Add(new KeyItemPair("None","None")); + bla.Add(Tuple.Create(SystemIcons.Warning,"Warning")); + bla.Add(Tuple.Create(SystemIcons.Error,"Error")); +// bla.Add(Tuple.Create(null,"None")); } @@ -69,6 +68,7 @@ namespace ICSharpCode.CodeAnalysis public ProjectProperty CodeAnalysisRules { get { return GetProperty("CodeAnalysisRules","",TextBoxEditMode.EditEvaluatedProperty); } } + #region Rule Assemblies Property string ruleAssemblies; @@ -113,6 +113,8 @@ namespace ICSharpCode.CodeAnalysis b.Append('!'); b.Append(rule.Identifier); } + Console.WriteLine(""); + Console.WriteLine(b.ToString()); } } return b.ToString(); @@ -148,6 +150,7 @@ namespace ICSharpCode.CodeAnalysis ruleNode.isError = error; } } + /* foreach (SharpTreeNode cat in ruleTreeView.Root.Children) { bool noneChecked = true; foreach (RuleTreeNode rtn in cat.Children) { @@ -157,7 +160,7 @@ namespace ICSharpCode.CodeAnalysis } } cat.IsChecked = !noneChecked; - } + } */ userCheck = true; } @@ -190,6 +193,11 @@ namespace ICSharpCode.CodeAnalysis ReloadRuleList(); } + protected override bool Save(MSBuildBasedProject project, string configuration, string platform) + { + this.CodeAnalysisRules.Value = RuleString; + return base.Save(project, configuration, platform); + } #endregion @@ -228,11 +236,23 @@ namespace ICSharpCode.CodeAnalysis } initSuccess = true; ReadRuleString(); + foreach (var element in ruleTreeView.Root.Children) { + element.PropertyChanged += delegate { + base.IsDirty = true; + }; + } } } } - string[] GetRuleAssemblyList(bool replacePath) + + private void OnPropertyChanged(object sender,System.ComponentModel.PropertyChangedEventArgs e) + { + base.IsDirty = true; + } + + + private string[] GetRuleAssemblyList(bool replacePath) { List list = new List(); string fxCopPath = FxCopWrapper.FindFxCopPath(); @@ -250,6 +270,11 @@ namespace ICSharpCode.CodeAnalysis return list.ToArray(); } + private void ChangeRuleAssembliesButtonClick object sender, RoutedEventArgs e) + { + + } + #endregion @@ -258,45 +283,35 @@ namespace ICSharpCode.CodeAnalysis class BaseTree:SharpTreeNode { - private Icon ruleIcon; private int index; - public BaseTree(IEnumerable ruleState) + public BaseTree(IEnumerable> ruleState) { this.RuleState = ruleState; - RuleIcon = SystemIcons.Warning; } - public IEnumerable RuleState {get;set;} - + public IEnumerable> RuleState {get;set;} - public Icon RuleIcon { - get { return ruleIcon; } - set { ruleIcon = value; - base.RaisePropertyChanged("RuleIcon"); - } - } - - public int Index { + public virtual int Index { get { return index; } - set { index = value; - switch (index) { - case 0: - RuleIcon = SystemIcons.Warning; - break; - case 1: - RuleIcon = SystemIcons.Error; - break; - case 2: - RuleIcon = null; - break; - default: - - break; + set { + if (index != value) { + index = value; + switch (index) { + case 0: + break; + case 1: + break; + case 2: + break; + default: + break; + } + base.RaisePropertyChanged("Index"); } - base.RaisePropertyChanged("Index"); } + } } @@ -305,13 +320,12 @@ namespace ICSharpCode.CodeAnalysis { internal FxCopCategory category; - public CategoryTreeNode(FxCopCategory category,IEnumerable bla):base(bla) + public CategoryTreeNode(FxCopCategory category,IEnumerable> bla):base(bla) { this.category = category; foreach (FxCopRule rule in category.Rules) { this.Children.Add(new RuleTreeNode(rule,bla)); } - } @@ -348,9 +362,19 @@ namespace ICSharpCode.CodeAnalysis class RuleTreeNode :BaseTree { internal FxCopRule rule; - internal bool isError; +// internal bool isError; + bool error; + + internal bool isError { + get { return error; } + set { error = value; + if (error) { + base.Index = 1; + } + } + } - public RuleTreeNode(FxCopRule rule,IEnumerable ruleState):base(ruleState) + public RuleTreeNode(FxCopRule rule,IEnumerable> ruleState):base(ruleState) { this.rule = rule; } @@ -368,6 +392,15 @@ namespace ICSharpCode.CodeAnalysis return rule.CategoryName + "#" + rule.CheckId; } } + + public override int Index { + get { return base.Index; } + set { base.Index = value; + if (Index == 1) { + error = true; + } + } + } } class MessageNode : SharpTreeNode @@ -384,7 +417,9 @@ namespace ICSharpCode.CodeAnalysis } } #endregion + } + [ValueConversion(typeof(System.Drawing.Icon), typeof(System.Windows.Media.ImageSource))] public class ImageConverter : IValueConverter diff --git a/src/AddIns/Analysis/CodeCoverage/Project/CodeCoverage.csproj b/src/AddIns/Analysis/CodeCoverage/Project/CodeCoverage.csproj index 702ac12aea..0f5ac5a2a7 100644 --- a/src/AddIns/Analysis/CodeCoverage/Project/CodeCoverage.csproj +++ b/src/AddIns/Analysis/CodeCoverage/Project/CodeCoverage.csproj @@ -19,6 +19,7 @@ v4.0 + False ..\..\..\..\..\AddIns\Analysis\CodeCoverage\