Skip to content

Commit 788aff1

Browse files
committed
add file picker for evtx
1 parent 75fd59c commit 788aff1

13 files changed

+163
-40
lines changed

src/WEventViewer/AboutWindow.axaml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<Window xmlns="https://github.com/avaloniaui"
2+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
4+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5+
xmlns:vm="using:WEventViewer.ViewModel"
6+
mc:Ignorable="d" d:DesignWidth="300" d:DesignHeight="200"
7+
x:Class="WEventViewer.AboutWindow"
8+
x:DataType="vm:AboutViewModel"
9+
Width="300"
10+
Height="200"
11+
Title="AboutWindow">
12+
<Design.DataContext>
13+
<vm:AboutViewModel/>
14+
</Design.DataContext>
15+
<Grid>
16+
<Grid.RowDefinitions>
17+
<RowDefinition Height="Auto"/>
18+
<RowDefinition Height="Auto"/>
19+
</Grid.RowDefinitions>
20+
21+
<Label Content="{Binding Name}" Grid.Row="0" HorizontalAlignment="Center" Margin="20"/>
22+
<Label Content="{Binding Version}" Grid.Row="1" HorizontalAlignment="Center" Margin="20"/>
23+
</Grid>
24+
</Window>

src/WEventViewer/AboutWindow.axaml.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using Avalonia;
2+
using Avalonia.Controls;
3+
using Avalonia.Markup.Xaml;
4+
5+
namespace WEventViewer;
6+
7+
public partial class AboutWindow : Window
8+
{
9+
public AboutWindow()
10+
{
11+
InitializeComponent();
12+
}
13+
}

src/WEventViewer/App.axaml.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public override void OnFrameworkInitializationCompleted()
2525
collection.AddTransient<OpenLogWindow>();
2626
collection.AddTransient<ProviderNameWindowViewModel>();
2727
collection.AddTransient<LogNameViewModel>();
28+
collection.AddTransient<AboutViewModel>();
2829
var serviceProvider = collection.BuildServiceProvider();
2930
var vm = serviceProvider.GetRequiredService<MainWindowViewModel>();
3031
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)

src/WEventViewer/ErrorWindow.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@
1717
<ScrollViewer AllowAutoHide="True" VerticalScrollBarVisibility="Auto" Margin="10">
1818
<TextBlock Text="{Binding Message}" TextWrapping="WrapWithOverflow"/>
1919
</ScrollViewer>
20-
<Button Content="Close" Margin="10"/>
20+
<Button Content="Close" Margin="10" Command="{Binding CloseCommand}"/>
2121
</StackPanel>
2222
</Window>

src/WEventViewer/LogNameWindow.axaml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,14 @@
1919
<RowDefinition Height="Auto"></RowDefinition>
2020
</Grid.RowDefinitions>
2121
<Label Content="LogNames" Grid.Row="0" Margin="10"/>
22-
<StackPanel Orientation="Horizontal" Grid.Row="1" HorizontalAlignment="Stretch">
23-
<Label Content="Search:" Margin="10" VerticalAlignment="Center"/>
24-
<TextBox Text="{Binding SearchString}" Margin="10" VerticalAlignment="Center"/>
25-
</StackPanel>
22+
<Grid Grid.Row="1" HorizontalAlignment="Stretch">
23+
<Grid.ColumnDefinitions>
24+
<ColumnDefinition Width="Auto"/>
25+
<ColumnDefinition Width="*"/>
26+
</Grid.ColumnDefinitions>
27+
<Label Content="Search:" Margin="10" VerticalAlignment="Center" Grid.Column="0"/>
28+
<TextBox Text="{Binding SearchString}" Margin="10" VerticalAlignment="Center" Grid.Column="1"/>
29+
</Grid>
2630
<ScrollViewer Grid.Row="2">
2731
<ListBox Name="LogNames" ItemsSource="{Binding LogNames}" MaxHeight="{Binding $parent.Bounds.Height}">
2832
<ListBox.ItemTemplate>

src/WEventViewer/MainWindow.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<MenuItem Header="Show _LogNames" Name="PrintLogNames" Click="PrintLogNamesClick"/>
2323
<MenuItem Header="_Close" Command="{Binding CloseCommand}"/>
2424
</MenuItem>
25-
<MenuItem Header="_About"/>
25+
<MenuItem Header="_About" Click="AboutClick"/>
2626

2727
</Menu>
2828
<ScrollViewer HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="20" MinHeight="200" MinWidth="200" Height="{Binding Mode=OneWay,Path=ScrollViewerHeight}" Name="LogViewer">

src/WEventViewer/MainWindow.axaml.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ private void PrintProviderClick(object? sender, Avalonia.Interactivity.RoutedEve
7575
{
7676
var vm = serviceProvider.GetService<ProviderNameWindowViewModel>();
7777
var w = new ProviderNamesWindow() { DataContext = vm };
78-
w.Show(this);
78+
w.Show();
7979
}
8080

8181
}
@@ -86,6 +86,16 @@ private void PrintLogNamesClick(object? sender, RoutedEventArgs e)
8686
{
8787
var vm = serviceProvider.GetService<LogNameViewModel>();
8888
var w = new LogNameWindow() { DataContext = vm };
89+
w.Show();
90+
}
91+
}
92+
93+
private void AboutClick(object? sender, RoutedEventArgs e)
94+
{
95+
if (serviceProvider != null)
96+
{
97+
var vm = serviceProvider.GetService<AboutViewModel>();
98+
var w = new AboutWindow() { DataContext = vm };
8999
w.Show(this);
90100
}
91101
}

src/WEventViewer/OpenLogWindow.axaml

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,44 +20,62 @@
2020
<RowDefinition Height="Auto"></RowDefinition>
2121
</Grid.RowDefinitions>
2222
<StackPanel Margin="10" Orientation="Vertical" Grid.Row="0" Name="OptionPanel">
23-
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" Grid.Row="0" VerticalAlignment="Center">
23+
<Grid HorizontalAlignment="Stretch" Grid.Row="0" VerticalAlignment="Center">
24+
<Grid.ColumnDefinitions>
25+
<ColumnDefinition Width="Auto"/>
26+
<ColumnDefinition Width="*"/>
27+
<ColumnDefinition Width="Auto"/>
28+
</Grid.ColumnDefinitions>
2429
<Label Content="LogName"
25-
Margin="10,10,10,10"
26-
HorizontalAlignment="Left"
27-
VerticalAlignment="Center"
30+
Margin="10,10,10,10"
31+
VerticalAlignment="Center"
32+
HorizontalAlignment="Left"
33+
Grid.Column="0"
2834
/>
2935
<TextBox HorizontalContentAlignment="Left"
30-
VerticalContentAlignment="Center"
31-
TextAlignment="Left"
32-
Margin="10,10,10,10"
33-
HorizontalAlignment="Right"
34-
Text="{Binding LogName, Mode=TwoWay}"
35-
MinWidth="200" MaxWidth="1000"
36+
VerticalContentAlignment="Center"
37+
HorizontalAlignment="Stretch"
38+
TextAlignment="Left"
39+
Margin="10,10,10,10"
40+
Text="{Binding LogName, Mode=TwoWay}"
41+
MinWidth="200" MaxWidth="1000"
42+
Grid.Column="1"
3643
/>
37-
</StackPanel>
38-
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Center">
44+
<Button Name="OpenLogButton"
45+
Grid.Column="2"
46+
Content="Open"
47+
IsVisible="{Binding IsEnableFilePathOpenButton}"
48+
Click="OnLogOpenButtonClicked"/>
49+
</Grid>
50+
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Center">
51+
<Grid.ColumnDefinitions>
52+
<ColumnDefinition Width="Auto"/>
53+
<ColumnDefinition Width="Auto"/>
54+
</Grid.ColumnDefinitions>
3955
<Label Content="PathType"
40-
Margin="10,10,10,10"
41-
HorizontalAlignment="Left"
42-
VerticalAlignment="Center"/>
56+
Margin="10,10,10,10"
57+
HorizontalAlignment="Left"
58+
VerticalAlignment="Center"
59+
Grid.Column="0"/>
4360
<!--<TextBox Margin="10,10,10,10"
4461
HorizontalAlignment="Stretch"
4562
TextAlignment="Left"
4663
VerticalContentAlignment="Center"
4764
Text="{Binding Path=PathType, Mode=TwoWay,Converter={StaticResource PathTypeConverter}}"/>-->
48-
<ComboBox
65+
<ComboBox
4966
HorizontalAlignment="Stretch"
5067
Margin="10"
5168
ItemsSource="{Binding PathTypes}"
5269
SelectedValue="{Binding CurrentSelected}"
70+
Grid.Column="1"
5371
>
5472
<ComboBox.ItemTemplate>
5573
<DataTemplate>
5674
<Label Content="{Binding DisplayName}"/>
5775
</DataTemplate>
5876
</ComboBox.ItemTemplate>
5977
</ComboBox>
60-
</StackPanel>
78+
</Grid>
6179
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" VerticalAlignment="Stretch" MaxHeight="300" MaxWidth="{Binding #OptionPanel.Bounds.Width}">
6280
<StackPanel Orientation="Vertical" Margin="10">
6381
<CheckBox Name="UseRawQuery" Content="raw query" Margin="10" IsChecked="{Binding UseRawQuery}"/>

src/WEventViewer/OpenLogWindow.axaml.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
using Avalonia;
22
using Avalonia.Controls;
3+
using Avalonia.Interactivity;
34
using Avalonia.Markup.Xaml;
45
using CommunityToolkit.Mvvm.Messaging;
6+
using Avalonia.Platform.Storage;
7+
using WEventViewer.ViewModel;
8+
using System.Collections.Generic;
59

610
namespace WEventViewer;
711

@@ -16,4 +20,21 @@ public OpenLogWindow()
1620
this.Close(msg.isOk);
1721
});
1822
}
23+
public async void OnLogOpenButtonClicked(object? sender, RoutedEventArgs routedEventArgs)
24+
{
25+
var topLevel = TopLevel.GetTopLevel(this);
26+
if (topLevel != null && DataContext is OpenLogWindowViewModel vm)
27+
{
28+
var files = await topLevel.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions()
29+
{
30+
Title = "Open exported log file",
31+
AllowMultiple = false,
32+
SuggestedFileName = "*.evtx"
33+
, });
34+
if (files != null && files.Count != 0)
35+
{
36+
vm.LogName = files[0].Path.LocalPath;
37+
}
38+
}
39+
}
1940
}

src/WEventViewer/ProviderNamesWindow.axaml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,14 @@
1919
<RowDefinition Height="Auto"></RowDefinition>
2020
</Grid.RowDefinitions>
2121
<Label Content="Providers" Grid.Row="0" Margin="10"/>
22-
<StackPanel Orientation="Horizontal" Grid.Row="1" HorizontalAlignment="Stretch">
23-
<Label Content="Search:" Margin="10" VerticalAlignment="Center"/>
24-
<TextBox Text="{Binding SearchString}" Margin="10" VerticalAlignment="Center"/>
25-
</StackPanel>
22+
<Grid Grid.Row="1" HorizontalAlignment="Stretch">
23+
<Grid.ColumnDefinitions>
24+
<ColumnDefinition Width="Auto"/>
25+
<ColumnDefinition Width="*"/>
26+
</Grid.ColumnDefinitions>
27+
<Label Content="Search:" Margin="10" VerticalAlignment="Center" Grid.Column="0"/>
28+
<TextBox Text="{Binding SearchString}" Margin="10" VerticalAlignment="Center" Grid.Column="1"/>
29+
</Grid>
2630
<ScrollViewer Grid.Row="2">
2731
<ListBox Name="Providers" ItemsSource="{Binding Providers}" MaxHeight="{Binding $parent.Bounds.Height}">
2832
<ListBox.ItemTemplate>

0 commit comments

Comments
 (0)