Browse Source

Improve setters filter

pull/5991/head
Max Katz 5 years ago
parent
commit
92cd193237
  1. 21
      src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs
  2. 13
      src/Avalonia.Diagnostics/Diagnostics/ViewModels/TreePageViewModel.cs
  3. 8
      src/Avalonia.Diagnostics/Diagnostics/Views/ControlDetailsView.xaml

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

@ -19,7 +19,6 @@ namespace Avalonia.Diagnostics.ViewModels
private readonly IVisual _control;
private readonly IDictionary<object, List<PropertyViewModel>> _propertyIndex;
private AvaloniaPropertyViewModel _selectedProperty;
private string _styleFilter;
private bool _snapshotStyles;
private bool _showInactiveStyles;
private string _styleStatus;
@ -144,12 +143,6 @@ namespace Avalonia.Diagnostics.ViewModels
set => RaiseAndSetIfChanged(ref _selectedProperty, value);
}
public string StyleFilter
{
get => _styleFilter;
set => RaiseAndSetIfChanged(ref _styleFilter, value);
}
public bool SnapshotStyles
{
get => _snapshotStyles;
@ -174,11 +167,7 @@ namespace Avalonia.Diagnostics.ViewModels
{
base.OnPropertyChanged(e);
if (e.PropertyName == nameof(StyleFilter))
{
UpdateStyleFilters();
}
else if (e.PropertyName == nameof(SnapshotStyles))
if (e.PropertyName == nameof(SnapshotStyles))
{
if (!SnapshotStyles)
{
@ -187,19 +176,15 @@ namespace Avalonia.Diagnostics.ViewModels
}
}
private void UpdateStyleFilters()
public void UpdateStyleFilters()
{
var filter = StyleFilter;
bool hasFilter = !string.IsNullOrEmpty(filter);
foreach (var style in AppliedStyles)
{
var hasVisibleSetter = false;
foreach (var setter in style.Setters)
{
setter.IsVisible =
!hasFilter || setter.Name.IndexOf(filter, StringComparison.OrdinalIgnoreCase) >= 0;
setter.IsVisible = TreePage.SettersFilter.Filter(setter.Name);
hasVisibleSetter |= setter.IsVisible;
}

13
src/Avalonia.Diagnostics/Diagnostics/ViewModels/TreePageViewModel.cs

@ -16,12 +16,17 @@ namespace Avalonia.Diagnostics.ViewModels
PropertiesFilter = new FilterViewModel();
PropertiesFilter.RefreshFilter += (s, e) => Details?.PropertiesView.Refresh();
SettersFilter = new FilterViewModel();
SettersFilter.RefreshFilter += (s, e) => Details?.UpdateStyleFilters();
}
public MainViewModel MainView { get; }
public FilterViewModel PropertiesFilter { get; }
public FilterViewModel SettersFilter { get; }
public TreeNode[] Nodes { get; protected set; }
public TreeNode SelectedNode
@ -29,18 +34,12 @@ namespace Avalonia.Diagnostics.ViewModels
get => _selectedNode;
private set
{
var oldDetails = Details;
if (RaiseAndSetIfChanged(ref _selectedNode, value))
{
Details = value != null ?
new ControlDetailsViewModel(this, value.Visual) :
null;
if (Details != null && oldDetails != null)
{
Details.StyleFilter = oldDetails.StyleFilter;
}
Details?.UpdateStyleFilters();
}
}
}

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

@ -67,7 +67,13 @@
<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>
<TextBox Grid.Row="1" Margin="2" Grid.Column="0" Watermark="Filter" Text="{Binding StyleFilter}" />
<controls:FilterTextBox Grid.Row="1" Margin="2" Grid.Column="0"
DataContext="{Binding TreePage.SettersFilter}"
Text="{Binding FilterString}"
Watermark="Filter setters"
UseCaseSensitiveFilter="{Binding UseCaseSensitiveFilter}"
UseWholeWordFilter="{Binding UseWholeWordFilter}"
UseRegexFilter="{Binding UseRegexFilter}" />
</Grid>
<ScrollViewer Grid.Row="1" HorizontalScrollBarVisibility="Disabled">

Loading…
Cancel
Save