From 38ebab0916c933cb35938cade546ecf90366c2eb Mon Sep 17 00:00:00 2001 From: Dariusz Komosinski Date: Fri, 26 Feb 2021 18:15:59 +0100 Subject: [PATCH] Add info about how many styles are active and allow for showing inactive styles. --- .../Data/Converters/BoolConverters.cs | 6 +++++ .../ViewModels/ControlDetailsViewModel.cs | 23 +++++++++++++++++++ .../Diagnostics/Views/ControlDetailsView.xaml | 17 +++++++++----- 3 files changed, 40 insertions(+), 6 deletions(-) diff --git a/src/Avalonia.Base/Data/Converters/BoolConverters.cs b/src/Avalonia.Base/Data/Converters/BoolConverters.cs index 6740c2168f..9329cdd6af 100644 --- a/src/Avalonia.Base/Data/Converters/BoolConverters.cs +++ b/src/Avalonia.Base/Data/Converters/BoolConverters.cs @@ -12,5 +12,11 @@ namespace Avalonia.Data.Converters /// public static readonly IMultiValueConverter And = new FuncMultiValueConverter(x => x.All(y => y)); + + /// + /// A multi-value converter that returns true if any of the inputs is true. + /// + public static readonly IMultiValueConverter Or = + new FuncMultiValueConverter(x => x.Any(y => y)); } } diff --git a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs index 19eb14ba06..32592559e5 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs +++ b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs @@ -21,6 +21,8 @@ namespace Avalonia.Diagnostics.ViewModels private AvaloniaPropertyViewModel _selectedProperty; private string _styleFilter; private bool _snapshotStyles; + private bool _showInactiveStyles; + private string _styleStatus; public ControlDetailsViewModel(TreePageViewModel treePage, IVisual control) { @@ -154,6 +156,18 @@ namespace Avalonia.Diagnostics.ViewModels set => RaiseAndSetIfChanged(ref _snapshotStyles, value); } + public bool ShowInactiveStyles + { + get => _showInactiveStyles; + set => RaiseAndSetIfChanged(ref _showInactiveStyles, value); + } + + public string StyleStatus + { + get => _styleStatus; + set => RaiseAndSetIfChanged(ref _styleStatus, value); + } + public ControlLayoutViewModel Layout { get; } protected override void OnPropertyChanged(PropertyChangedEventArgs e) @@ -288,9 +302,16 @@ namespace Avalonia.Diagnostics.ViewModels private void UpdateStyles() { + int activeCount = 0; + foreach (var style in AppliedStyles) { style.Update(); + + if (style.IsActive) + { + activeCount++; + } } var propertyBuckets = new Dictionary>(); @@ -330,6 +351,8 @@ namespace Avalonia.Diagnostics.ViewModels { pseudoClass.Update(); } + + StyleStatus = $"Styles ({activeCount}/{AppliedStyles.Count} active)"; } private bool FilterProperty(object arg) diff --git a/src/Avalonia.Diagnostics/Diagnostics/Views/ControlDetailsView.xaml b/src/Avalonia.Diagnostics/Diagnostics/Views/ControlDetailsView.xaml index c7a52a5a5f..9ba576c826 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/Views/ControlDetailsView.xaml +++ b/src/Avalonia.Diagnostics/Diagnostics/Views/ControlDetailsView.xaml @@ -3,7 +3,8 @@ xmlns:conv="clr-namespace:Avalonia.Diagnostics.Converters" xmlns:local="clr-namespace:Avalonia.Diagnostics.Views" xmlns:vm="clr-namespace:Avalonia.Diagnostics.ViewModels" - x:Class="Avalonia.Diagnostics.Views.ControlDetailsView"> + x:Class="Avalonia.Diagnostics.Views.ControlDetailsView" + x:Name="Main"> @@ -153,9 +154,10 @@ - - - + + + + @@ -165,10 +167,13 @@ - + - + + + +