diff --git a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml index 19c4a0681d..bbad3d701b 100644 --- a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml +++ b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml @@ -6,7 +6,11 @@ xmlns:project="clr-namespace:ICSharpCode.SharpDevelop.Project;assembly=ICSharpCode.SharpDevelop" xmlns:widgets="http://icsharpcode.net/sharpdevelop/widgets" xmlns:tv="http://icsharpcode.net/sharpdevelop/treeview" + xmlns:local="clr-namespace:ICSharpCode.CodeAnalysis" xmlns:core="http://icsharpcode.net/sharpdevelop/core"> + + + @@ -31,10 +35,11 @@ Style="{x:Static core:GlobalStyles.ButtonStyle}" Content="{core:Localize ICSharpCode.CodeAnalysis.ProjectOptions.AddRemoveRuleAssembly}"> - + + - + @@ -43,16 +48,28 @@ - + + + + + + + + + + + + ItemsSource="{Binding Path=RuleState}" + SelectedIndex="{Binding Index}" + DisplayMemberPath="DisplayValue"> + + diff --git a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs index 22a4ddec2f..2a271ac7ed 100644 --- a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs +++ b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanelXaml.xaml.cs @@ -8,6 +8,10 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Drawing; +using System.Drawing.Imaging; +using System.Globalization; +using System.IO; using System.Text; using System.Text.RegularExpressions; using System.Windows; @@ -16,6 +20,7 @@ using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; + using Gui.Dialogs.OptionPanels.ProjectOptions; using ICSharpCode.Core; using ICSharpCode.SharpDevelop; @@ -31,23 +36,27 @@ namespace ICSharpCode.CodeAnalysis /// /// Interaction logic for AnalysisProjectOptionsPanelXaml.xaml /// + + public partial class AnalysisProjectOptionsPanelXaml : ProjectOptionPanel { private bool initSuccess; private bool userCheck; private Dictionary rules = new Dictionary(); + 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")); } - + public ProjectProperty RunCodeAnalysis { get { return GetProperty("RunCodeAnalysis", false); } } @@ -77,7 +86,7 @@ namespace ICSharpCode.CodeAnalysis ruleAssemblies = value; if (initSuccess) { -//// OnOptionChanged(EventArgs.Empty); + //// OnOptionChanged(EventArgs.Empty); ReloadRuleList(); } } @@ -185,7 +194,6 @@ namespace ICSharpCode.CodeAnalysis #endregion - #region RuleList void ReloadRuleList() @@ -242,19 +250,54 @@ namespace ICSharpCode.CodeAnalysis return list.ToArray(); } - + #endregion + - #region TreeView + #region TreeNodes class BaseTree:SharpTreeNode { - public BaseTree(IEnumerable bla) + private Icon ruleIcon; + private int index; + + public BaseTree(IEnumerable ruleState) { - this.BLA = bla; + this.RuleState = ruleState; + RuleIcon = SystemIcons.Warning; + } + + public IEnumerable RuleState {get;set;} + + + public Icon RuleIcon { + get { return ruleIcon; } + set { ruleIcon = value; + base.RaisePropertyChanged("RuleIcon"); + } } - public IEnumerable BLA {get;set;} + + public 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; + } + base.RaisePropertyChanged("Index"); + } + } } @@ -268,6 +311,7 @@ namespace ICSharpCode.CodeAnalysis foreach (FxCopRule rule in category.Rules) { this.Children.Add(new RuleTreeNode(rule,bla)); } + } @@ -294,7 +338,7 @@ namespace ICSharpCode.CodeAnalysis return 1; else if (allWarn) return 0; - else + else return -1; } } @@ -306,7 +350,7 @@ namespace ICSharpCode.CodeAnalysis internal FxCopRule rule; internal bool isError; - public RuleTreeNode(FxCopRule rule,IEnumerable bla):base(bla) + public RuleTreeNode(FxCopRule rule,IEnumerable ruleState):base(ruleState) { this.rule = rule; } @@ -341,4 +385,33 @@ namespace ICSharpCode.CodeAnalysis } #endregion } + + [ValueConversion(typeof(System.Drawing.Icon), typeof(System.Windows.Media.ImageSource))] + public class ImageConverter : IValueConverter + { + public object Convert(object value, Type targetType, + object parameter, CultureInfo culture) + { + // empty images are empty... + if (value == null) { return null; } + var image = (System.Drawing.Icon)value; + // Winforms Image we want to get the WPF Image from... + var bitmap = new System.Windows.Media.Imaging.BitmapImage(); + bitmap.BeginInit(); + MemoryStream memoryStream = new MemoryStream(); + // Save to a memory stream... + image.Save(memoryStream); + // Rewind the stream... + memoryStream.Seek(0, System.IO.SeekOrigin.Begin); + bitmap.StreamSource = memoryStream; + bitmap.EndInit(); + return bitmap; + } + public object ConvertBack(object value, Type targetType, + object parameter, CultureInfo culture) + { + return null; + } + } + } \ No newline at end of file