125 lines
8.8 KiB
XML
125 lines
8.8 KiB
XML
<Window x:Class="EonaCat.PortMonitor.MainWindow"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
Title="EonaCat Port Monitor" Height="600" Width="1600" WindowStartupLocation="CenterScreen">
|
|
|
|
<Window.Resources>
|
|
<ResourceDictionary Source="/Themes.xaml" />
|
|
</Window.Resources>
|
|
|
|
<Grid Background="{DynamicResource DynamicBackgroundColor}">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Define a Grid inside the first Row (to contain the StackPanel and the button) -->
|
|
<Grid Grid.Row="0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<!-- Flexible space -->
|
|
<ColumnDefinition Width="Auto" />
|
|
<!-- Fixed width for the button -->
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- Filter and other elements go in the first column -->
|
|
<StackPanel Grid.Column="0" Orientation="Horizontal" Margin="10">
|
|
<TextBlock Text="Filter by Keyword:" VerticalAlignment="Center" Margin="5" />
|
|
<TextBox Name="KeywordFilter" Width="200" Margin="5" KeyUp="FilterConnections_KeyUp"/>
|
|
</StackPanel>
|
|
|
|
<!-- Theme switch button goes in the second column (aligned to the right) -->
|
|
<Button x:Name="btnTheme" Content="🌙" Width="40" Height="30" Margin="10,0" VerticalAlignment="Center" Grid.Column="1" Click="btnTheme_Click" />
|
|
</Grid>
|
|
|
|
<!-- Network Statistics Section -->
|
|
<StackPanel Grid.Row="1" Orientation="Horizontal" Margin="10">
|
|
<TextBlock Name="TcpUdpStatsText" VerticalAlignment="Center" FontSize="14" Margin="5" />
|
|
</StackPanel>
|
|
|
|
<!-- DataGrid for Connections -->
|
|
<TabControl Margin="10" Grid.Row="2" >
|
|
<TabItem Header="Connections" >
|
|
<DataGrid Name="NetworkDataGrid" AutoGenerateColumns="False" IsReadOnly="True" Margin="10" PreviewMouseDoubleClick="DataGrid_PreviewMouseDoubleClick">
|
|
<DataGrid.CellStyle>
|
|
<Style TargetType="DataGridCell">
|
|
<Setter Property="Background" Value="{Binding ConnectionColor}" />
|
|
</Style>
|
|
</DataGrid.CellStyle>
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Protocol" Binding="{Binding Protocol}" Width="100" />
|
|
<DataGridTextColumn Header="Local Address" Binding="{Binding LocalAddress}" Width="200"/>
|
|
<DataGridTextColumn Header="Local Port" Binding="{Binding LocalPort}" Width="100"/>
|
|
<DataGridTextColumn Header="Remote Address" Binding="{Binding RemoteAddress}" Width="200"/>
|
|
<DataGridTextColumn Header="Remote Port" Binding="{Binding RemotePort}" Width="100"/>
|
|
<DataGridTextColumn Header="State" Binding="{Binding State}" Width="150"/>
|
|
<DataGridTextColumn Header="Process Name" Binding="{Binding ProcessName}" Width="200"/>
|
|
<DataGridTextColumn Header="Process Id" Binding="{Binding ProcessId}" Width="100"/>
|
|
<DataGridTextColumn Header="Connection Duration" Binding="{Binding ConnectionDuration}" Width="150"/>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</TabItem>
|
|
<TabItem Header="Inbound Connections" >
|
|
<DataGrid Name="InboundDataGrid" AutoGenerateColumns="False" IsReadOnly="True" Margin="10" PreviewMouseDoubleClick="DataGrid_PreviewMouseDoubleClick">
|
|
<DataGrid.CellStyle>
|
|
<Style TargetType="DataGridCell">
|
|
<Setter Property="Background" Value="{Binding ConnectionColor}" />
|
|
</Style>
|
|
</DataGrid.CellStyle>
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Protocol" Binding="{Binding Protocol}" Width="100"/>
|
|
<DataGridTextColumn Header="Local Address" Binding="{Binding LocalAddress}" Width="200"/>
|
|
<DataGridTextColumn Header="Local Port" Binding="{Binding LocalPort}" Width="100"/>
|
|
<DataGridTextColumn Header="Remote Address" Binding="{Binding RemoteAddress}" Width="200"/>
|
|
<DataGridTextColumn Header="Remote Port" Binding="{Binding RemotePort}" Width="100"/>
|
|
<DataGridTextColumn Header="State" Binding="{Binding State}" Width="150"/>
|
|
<DataGridTextColumn Header="Process Name" Binding="{Binding ProcessName}" Width="200"/>
|
|
<DataGridTextColumn Header="Process Id" Binding="{Binding ProcessId}" Width="100"/>
|
|
<DataGridTextColumn Header="Connection Duration" Binding="{Binding ConnectionDuration}" Width="150"/>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</TabItem>
|
|
<TabItem Header="Outbound Connections" >
|
|
<DataGrid Name="OutboundDataGrid" AutoGenerateColumns="False" IsReadOnly="True" Margin="10" PreviewMouseDoubleClick="DataGrid_PreviewMouseDoubleClick">
|
|
<DataGrid.CellStyle>
|
|
<Style TargetType="DataGridCell">
|
|
<Setter Property="Background" Value="{Binding ConnectionColor}" />
|
|
</Style>
|
|
</DataGrid.CellStyle>
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Protocol" Binding="{Binding Protocol}" Width="100"/>
|
|
<DataGridTextColumn Header="Local Address" Binding="{Binding LocalAddress}" Width="200"/>
|
|
<DataGridTextColumn Header="Local Port" Binding="{Binding LocalPort}" Width="100"/>
|
|
<DataGridTextColumn Header="Remote Address" Binding="{Binding RemoteAddress}" Width="200"/>
|
|
<DataGridTextColumn Header="Remote Port" Binding="{Binding RemotePort}" Width="100"/>
|
|
<DataGridTextColumn Header="State" Binding="{Binding State}" Width="150"/>
|
|
<DataGridTextColumn Header="Process Name" Binding="{Binding ProcessName}" Width="200"/>
|
|
<DataGridTextColumn Header="Process Id" Binding="{Binding ProcessId}" Width="100"/>
|
|
<DataGridTextColumn Header="Connection Duration" Binding="{Binding ConnectionDuration}" Width="150"/>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</TabItem>
|
|
</TabControl>
|
|
|
|
<!-- Export Section -->
|
|
<StackPanel Grid.Row="3" Orientation="Horizontal" Margin="10">
|
|
<Button Content="Export to JSON" Width="120" Height="30" Margin="10,0" VerticalAlignment="Center" Click="ExportToJsonButton_Click" />
|
|
<Button Content="Export to XML" Width="120" Height="30" Margin="10,0" VerticalAlignment="Center" Click="ExportToXmlButton_Click" />
|
|
<Button Content="Export to CSV" Width="120" Height="30" Margin="10,0" VerticalAlignment="Center" Click="ExportToCsvButton_Click" />
|
|
<Button Content="Export to HTML" Width="120" Height="30" Margin="10,0" VerticalAlignment="Center" Click="ExportToHtmlButton_Click" />
|
|
<Button Content="Save Filter Preset" Width="120" Height="30" Margin="10,0" VerticalAlignment="Center" Click="SaveFilterPresetButton_Click" />
|
|
<Button Content="Load Filter Preset" Width="120" Height="30" Margin="10,0" VerticalAlignment="Center" Click="LoadFilterPresetButton_Click" />
|
|
<Button Content="Open Process Path" Width="120" Height="30" Margin="10,0" VerticalAlignment="Center" Click="ProcessPathButton_Click" />
|
|
<Button Content="Kill Process" Width="120" Height="30" Margin="10,0" VerticalAlignment="Center" Click="KillProcessButton_Click" />
|
|
<Button Content="IP Lookup" Width="120" Height="30" Margin="10,0" VerticalAlignment="Center" Click="IpLookupButton_Click" />
|
|
<Button Content="Block IP" Width="120" Height="30" Margin="10,0" VerticalAlignment="Center" Click="BlockIpButton_Click" />
|
|
<StackPanel>
|
|
<CheckBox x:Name="chkMinimize" Content="Minimize on start" VerticalContentAlignment="Center" Width="120" Height="30" Margin="10,0" VerticalAlignment="Center" Checked="chkMinimize_Checked" />
|
|
<CheckBox x:Name="chkShowPopups" Content="Show notifications" VerticalContentAlignment="Center" Width="120" Height="30" Margin="10,0" VerticalAlignment="Center" IsChecked="True" Checked="chkShowPopups_Checked" />
|
|
</StackPanel>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Window>
|