Browse Source

Add info about how many styles are active and allow for showing inactive styles.

pull/5537/head
Dariusz Komosinski 6 years ago
parent
commit
38ebab0916
  1. 6
      src/Avalonia.Base/Data/Converters/BoolConverters.cs
  2. 23
      src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs
  3. 17
      src/Avalonia.Diagnostics/Diagnostics/Views/ControlDetailsView.xaml

6
src/Avalonia.Base/Data/Converters/BoolConverters.cs

@ -12,5 +12,11 @@ namespace Avalonia.Data.Converters
/// </summary> /// </summary>
public static readonly IMultiValueConverter And = public static readonly IMultiValueConverter And =
new FuncMultiValueConverter<bool, bool>(x => x.All(y => y)); new FuncMultiValueConverter<bool, bool>(x => x.All(y => y));
/// <summary>
/// A multi-value converter that returns true if any of the inputs is true.
/// </summary>
public static readonly IMultiValueConverter Or =
new FuncMultiValueConverter<bool, bool>(x => x.Any(y => y));
} }
} }

23
src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs

@ -21,6 +21,8 @@ namespace Avalonia.Diagnostics.ViewModels
private AvaloniaPropertyViewModel _selectedProperty; private AvaloniaPropertyViewModel _selectedProperty;
private string _styleFilter; private string _styleFilter;
private bool _snapshotStyles; private bool _snapshotStyles;
private bool _showInactiveStyles;
private string _styleStatus;
public ControlDetailsViewModel(TreePageViewModel treePage, IVisual control) public ControlDetailsViewModel(TreePageViewModel treePage, IVisual control)
{ {
@ -154,6 +156,18 @@ namespace Avalonia.Diagnostics.ViewModels
set => RaiseAndSetIfChanged(ref _snapshotStyles, value); 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; } public ControlLayoutViewModel Layout { get; }
protected override void OnPropertyChanged(PropertyChangedEventArgs e) protected override void OnPropertyChanged(PropertyChangedEventArgs e)
@ -288,9 +302,16 @@ namespace Avalonia.Diagnostics.ViewModels
private void UpdateStyles() private void UpdateStyles()
{ {
int activeCount = 0;
foreach (var style in AppliedStyles) foreach (var style in AppliedStyles)
{ {
style.Update(); style.Update();
if (style.IsActive)
{
activeCount++;
}
} }
var propertyBuckets = new Dictionary<AvaloniaProperty, List<SetterViewModel>>(); var propertyBuckets = new Dictionary<AvaloniaProperty, List<SetterViewModel>>();
@ -330,6 +351,8 @@ namespace Avalonia.Diagnostics.ViewModels
{ {
pseudoClass.Update(); pseudoClass.Update();
} }
StyleStatus = $"Styles ({activeCount}/{AppliedStyles.Count} active)";
} }
private bool FilterProperty(object arg) private bool FilterProperty(object arg)

17
src/Avalonia.Diagnostics/Diagnostics/Views/ControlDetailsView.xaml

@ -3,7 +3,8 @@
xmlns:conv="clr-namespace:Avalonia.Diagnostics.Converters" xmlns:conv="clr-namespace:Avalonia.Diagnostics.Converters"
xmlns:local="clr-namespace:Avalonia.Diagnostics.Views" xmlns:local="clr-namespace:Avalonia.Diagnostics.Views"
xmlns:vm="clr-namespace:Avalonia.Diagnostics.ViewModels" xmlns:vm="clr-namespace:Avalonia.Diagnostics.ViewModels"
x:Class="Avalonia.Diagnostics.Views.ControlDetailsView"> x:Class="Avalonia.Diagnostics.Views.ControlDetailsView"
x:Name="Main">
<UserControl.Resources> <UserControl.Resources>
<SolidColorBrush x:Key="ThicknessBorderBrush" Color="#666666" /> <SolidColorBrush x:Key="ThicknessBorderBrush" Color="#666666" />
@ -153,9 +154,10 @@
<Grid Grid.Row="2" Margin="4" RowDefinitions="Auto,Auto"> <Grid Grid.Row="2" Margin="4" RowDefinitions="Auto,Auto">
<Grid Grid.Row="0" Margin="2" ColumnDefinitions="Auto,*,Auto"> <Grid Grid.Row="0" Margin="2" ColumnDefinitions="Auto,*,Auto,Auto">
<TextBlock Grid.Column="0" Text="Styles" /> <TextBlock FontWeight="Bold" Grid.Column="0" Text="{Binding StyleStatus}" VerticalAlignment="Center" />
<ToggleButton Margin="2,0,0,0" Grid.Column="2" ToolTip.Tip="Snapshot current styles (Alt+S/Alt+D to enable/disable within debugged window)" Content="Snapshot" IsChecked="{Binding SnapshotStyles}" /> <CheckBox Margin="2,0,0,0" Grid.Column="2" Content="Show inactive" IsChecked="{Binding ShowInactiveStyles}" ToolTip.Tip="Show styles that are currently inactive" />
<ToggleButton Margin="2,0,0,0" Grid.Column="3" ToolTip.Tip="Snapshot current styles (Alt+S/Alt+D to enable/disable within debugged window)" Content="Snapshot" IsChecked="{Binding SnapshotStyles}" />
</Grid> </Grid>
<TextBox Grid.Row="1" Margin="2" Grid.Column="0" Watermark="Filter" Text="{Binding StyleFilter}" /> <TextBox Grid.Row="1" Margin="2" Grid.Column="0" Watermark="Filter" Text="{Binding StyleFilter}" />
@ -165,10 +167,13 @@
<ItemsControl Items="{Binding AppliedStyles}" > <ItemsControl Items="{Binding AppliedStyles}" >
<ItemsControl.ItemTemplate> <ItemsControl.ItemTemplate>
<DataTemplate> <DataTemplate>
<Border BorderThickness="0,0,0,1" BorderBrush="#6C6C6C"> <Border BorderThickness="0,0,0,1" BorderBrush="#6C6C6C" Opacity="{Binding IsActive, Converter={StaticResource BoolToOpacity}}">
<Border.IsVisible> <Border.IsVisible>
<MultiBinding Converter="{x:Static BoolConverters.And}"> <MultiBinding Converter="{x:Static BoolConverters.And}">
<Binding Path="IsActive" /> <MultiBinding Converter="{x:Static BoolConverters.Or}" >
<Binding Path="IsActive" />
<Binding Path="#Main.DataContext.ShowInactiveStyles" />
</MultiBinding>
<Binding Path="IsVisible" /> <Binding Path="IsVisible" />
</MultiBinding> </MultiBinding>
</Border.IsVisible> </Border.IsVisible>

Loading…
Cancel
Save