Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: GeoIP for Traceroute #2477

Merged
merged 10 commits into from
Sep 4, 2023
Prev Previous commit
Next Next commit
Chore: Code cleanup
  • Loading branch information
BornToBeRoot committed Sep 2, 2023
commit 8549c50c439e0bc47e44308fe7e1c936605a0cd4
70 changes: 33 additions & 37 deletions Source/NETworkManager/Views/SettingsProfilesView.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
xmlns:d="http:https://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http:https://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:converters="clr-namespace:NETworkManager.Converters;assembly=NETworkManager.Converters"
xmlns:mah="http:https://metro.mahapps.com/winfx/xaml/controls"
xmlns:iconPacks="http:https://metro.mahapps.com/winfx/xaml/iconpacks"
xmlns:wpfHelpers="clr-namespace:NETworkManager.Utilities.WPF;assembly=NETworkManager.Utilities.WPF"
xmlns:dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
Expand All @@ -13,85 +12,82 @@
xmlns:profiles="clr-namespace:NETworkManager.Profiles;assembly=NETworkManager.Profiles"
dialogs:DialogParticipation.Register="{Binding}"
mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:SettingsProfilesViewModel}" Loaded="UserControl_Loaded">
<UserControl.Resources>
<converters:BooleanReverseConverter x:Key="BooleanReverseConverter" />
<UserControl.Resources>
<converters:BooleanToVisibilityCollapsedConverter x:Key="BooleanToVisibilityCollapsedConverter" />
<converters:BooleanReverseToVisibilityCollapsedConverter x:Key="BooleanReverseToVisibilityCollapsedConverter" />
<converters:IntGreater1ToBooleanConverter x:Key="IntGreater1ToBooleanConverter" />
<converters:IsProfilesLocationToBooleanConverter x:Key="IsProfilesLocationToBooleanConverter" />
</UserControl.Resources>
<StackPanel >
<TextBlock Style="{StaticResource HeaderTextBlock}" Text="{x:Static localization:Strings.Location}" />
<TextBox x:Name="TextBoxLocation" Text="{Binding Location}" Style="{StaticResource ReadOnlyTextBox}" IsEnabled="False" Margin="0,0,0,10" />
<Button Command="{Binding OpenLocationCommand}" Style="{StaticResource ImageWithTextButton}" HorizontalAlignment="Right" Margin="0,0,0,20">
<TextBlock Style="{StaticResource ResourceKey=HeaderTextBlock}" Text="{x:Static Member=localization:Strings.Location}" />
<TextBox x:Name="TextBoxLocation" Text="{Binding Location}" Style="{StaticResource ResourceKey=ReadOnlyTextBox}" IsEnabled="False" Margin="0,0,0,10" />
<Button Command="{Binding OpenLocationCommand}" Style="{StaticResource ResourceKey=ImageWithTextButton}" HorizontalAlignment="Right" Margin="0,0,0,20">
<Button.Content>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Rectangle Style="{StaticResource ButtonWithImageRectangle}">
<Rectangle Grid.Column="0" Grid.Row="0" Style="{StaticResource ResourceKey=ButtonWithImageRectangle}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Uniform" Visual="{iconPacks:Material Kind=FolderOpen}" />
</Rectangle.OpacityMask>
</Rectangle>
<TextBlock Grid.Column="1" Text="{x:Static localization:Strings.OpenLocation}" Style="{StaticResource ButtonWithImageTextBlock}" />
<TextBlock Grid.Column="1" Text="{x:Static Member=localization:Strings.OpenLocation}" Style="{StaticResource ResourceKey=ButtonWithImageTextBlock}" />
</Grid>
</Button.Content>
</Button>
<DataGrid x:Name="DataGridProfileLocations" ItemsSource="{Binding ProfileFiles}" SelectionMode="Single" SelectedItem="{Binding SelectedProfileFile}" Height="200" Margin="0,0,0,10">
<DataGrid.Resources>
<Style TargetType="{x:Type ScrollBar}" BasedOn="{StaticResource DataGridScrollBar}" />
<Style TargetType="{x:Type TypeName=ScrollBar}" BasedOn="{StaticResource ResourceKey=DataGridScrollBar}" />
<wpfHelpers:BindingProxy x:Key="BindingProxy" Data="{Binding}" />
<ContextMenu x:Key="RowContextMenu" Opened="ContextMenu_Opened" MinWidth="150">
<MenuItem Header="{x:Static localization:Strings.EditDots}" Command="{Binding EditProfileFileCommand}">
<MenuItem Header="{x:Static Member=localization:Strings.EditDots}" Command="{Binding EditProfileFileCommand}">
<MenuItem.Icon>
<Rectangle Width="16" Height="16" Fill="{DynamicResource MahApps.Brushes.Gray3}">
<Rectangle Width="16" Height="16" Fill="{DynamicResource ResourceKey=MahApps.Brushes.Gray3}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Uniform" Visual="{iconPacks:Modern Kind=Edit}" />
</Rectangle.OpacityMask>
</Rectangle>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="{x:Static localization:Strings.EncryptionDots}">
<MenuItem Header="{x:Static Member=localization:Strings.EncryptionDots}">
<MenuItem.Icon>
<Rectangle Width="16" Height="16" Fill="{DynamicResource MahApps.Brushes.Gray3}">
<Rectangle Width="16" Height="16" Fill="{DynamicResource ResourceKey=MahApps.Brushes.Gray3}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Uniform" Visual="{iconPacks:Material Kind=KeyVariant}" />
</Rectangle.OpacityMask>
</Rectangle>
</MenuItem.Icon>
<MenuItem Header="{x:Static localization:Strings.EnableEncryptionDots}" Command="{Binding EnableEncryptionCommand}" Visibility="{Binding Data.SelectedProfileFile.IsEncrypted, Source={StaticResource BindingProxy}, Converter={StaticResource BooleanReverseToVisibilityCollapsedConverter}}">
<MenuItem Header="{x:Static Member=localization:Strings.EnableEncryptionDots}" Command="{Binding EnableEncryptionCommand}" Visibility="{Binding Data.SelectedProfileFile.IsEncrypted, Source={StaticResource ResourceKey=BindingProxy}, Converter={StaticResource ResourceKey=BooleanReverseToVisibilityCollapsedConverter}}">
<MenuItem.Icon>
<Rectangle Width="16" Height="16" Fill="{DynamicResource MahApps.Brushes.Gray3}">
<Rectangle Width="16" Height="16" Fill="{DynamicResource ResourceKey=MahApps.Brushes.Gray3}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Uniform" Visual="{iconPacks:Material Kind=KeyVariant}" />
</Rectangle.OpacityMask>
</Rectangle>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="{x:Static localization:Strings.ChangeMasterPasswordDots}" Command="{Binding ChangeMasterPasswordCommand}" Visibility="{Binding Data.SelectedProfileFile.IsEncrypted, Source={StaticResource BindingProxy}, Converter={StaticResource BooleanToVisibilityCollapsedConverter}}">
<MenuItem Header="{x:Static Member=localization:Strings.ChangeMasterPasswordDots}" Command="{Binding ChangeMasterPasswordCommand}" Visibility="{Binding Data.SelectedProfileFile.IsEncrypted, Source={StaticResource ResourceKey=BindingProxy}, Converter={StaticResource ResourceKey=BooleanToVisibilityCollapsedConverter}}">
<MenuItem.Icon>
<Rectangle Width="16" Height="16" Fill="{DynamicResource MahApps.Brushes.Gray3}">
<Rectangle Width="16" Height="16" Fill="{DynamicResource ResourceKey=MahApps.Brushes.Gray3}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Uniform" Visual="{iconPacks:Material Kind=KeyVariant}" />
</Rectangle.OpacityMask>
</Rectangle>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="{x:Static localization:Strings.DisableEncryptionDots}" Command="{Binding DisableEncryptionCommand}" Visibility="{Binding Data.SelectedProfileFile.IsEncrypted, Source={StaticResource BindingProxy}, Converter={StaticResource BooleanToVisibilityCollapsedConverter}}">
<MenuItem Header="{x:Static Member=localization:Strings.DisableEncryptionDots}" Command="{Binding DisableEncryptionCommand}" Visibility="{Binding Data.SelectedProfileFile.IsEncrypted, Source={StaticResource ResourceKey=BindingProxy}, Converter={StaticResource ResourceKey=BooleanToVisibilityCollapsedConverter}}">
<MenuItem.Icon>
<Rectangle Width="16" Height="16" Fill="{DynamicResource MahApps.Brushes.Gray3}">
<Rectangle Width="16" Height="16" Fill="{DynamicResource ResourceKey=MahApps.Brushes.Gray3}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Uniform" Visual="{iconPacks:Material Kind=KeyVariant}" />
</Rectangle.OpacityMask>
</Rectangle>
</MenuItem.Icon>
</MenuItem>
</MenuItem>
<MenuItem Header="{x:Static localization:Strings.Delete}" Command="{Binding DeleteProfileFileCommand}">
<MenuItem Header="{x:Static Member=localization:Strings.Delete}" Command="{Binding DeleteProfileFileCommand}">
<MenuItem.Icon>
<Rectangle Width="16" Height="16" Fill="{DynamicResource MahApps.Brushes.Gray3}">
<Rectangle Width="16" Height="16" Fill="{DynamicResource ResourceKey=MahApps.Brushes.Gray3}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Uniform" Visual="{iconPacks:Material Kind=Close}" />
</Rectangle.OpacityMask>
Expand All @@ -101,19 +97,19 @@
</ContextMenu>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Header="{x:Static localization:Strings.Name}" Binding="{Binding Path=(profiles:ProfileFileInfo.Name)}" MinWidth="150" Width="Auto" />
<DataGridCheckBoxColumn ElementStyle="{StaticResource MahApps.Styles.CheckBox.DataGrid}" Header="{x:Static localization:Strings.IsEncrypted}" Binding="{Binding Path=(profiles:ProfileFileInfo.IsEncrypted)}" Width="Auto" />
<DataGridTextColumn Header="{x:Static Member=localization:Strings.Name}" Binding="{Binding Path=(profiles:ProfileFileInfo.Name)}" MinWidth="150" Width="Auto" />
<DataGridCheckBoxColumn ElementStyle="{StaticResource ResourceKey=MahApps.Styles.CheckBox.DataGrid}" Header="{x:Static Member=localization:Strings.IsEncrypted}" Binding="{Binding Path=(profiles:ProfileFileInfo.IsEncrypted)}" Width="Auto" />
</DataGrid.Columns>
<DataGrid.InputBindings>
<KeyBinding Command="{Binding EditProfileFileCommand}" Key="F2" />
<KeyBinding Command="{Binding DeleteProfileFileCommand}" Key="Delete" />
</DataGrid.InputBindings>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}" BasedOn="{StaticResource MahApps.Styles.DataGridRow}">
<Style TargetType="{x:Type DataGridRow}" BasedOn="{StaticResource ResourceKey=MahApps.Styles.DataGridRow}">
<EventSetter Event="MouseDoubleClick" Handler="DataGridRow_MouseDoubleClick" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedItems.Count, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}" Value="1" >
<Setter Property="ContextMenu" Value="{StaticResource RowContextMenu}"/>
<DataTrigger Binding="{Binding SelectedItems.Count, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TypeName=DataGrid}}}" Value="1" >
<Setter Property="ContextMenu" Value="{StaticResource ResourceKey=RowContextMenu}"/>
</DataTrigger>
</Style.Triggers>
</Style>
Expand All @@ -122,7 +118,7 @@
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal" Margin="0,0,0,10">
<Button Command="{Binding DeleteProfileFileCommand}">
<Button.Style>
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ImageWithTextButton}">
<Style TargetType="{x:Type TypeName=Button}" BasedOn="{StaticResource ResourceKey=ImageWithTextButton}">
<Setter Property="IsEnabled" Value="False"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=DataGridProfileLocations, Path=SelectedItems.Count}" Value="1">
Expand All @@ -139,18 +135,18 @@
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Rectangle Style="{StaticResource ButtonWithImageRectangle}">
<Rectangle Grid.Column="0" Grid.Row="0" Style="{StaticResource ResourceKey=ButtonWithImageRectangle}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Uniform" Visual="{iconPacks:Material Kind=Close}" />
</Rectangle.OpacityMask>
</Rectangle>
<TextBlock Grid.Column="1" Text="{x:Static localization:Strings.DeleteDots}" Style="{StaticResource ButtonWithImageTextBlock}" />
<TextBlock Grid.Column="1" Text="{x:Static Member=localization:Strings.DeleteDots}" Style="{StaticResource ResourceKey=ButtonWithImageTextBlock}" />
</Grid>
</Button.Content>
</Button>
<Button Command="{Binding EditProfileFileCommand}" Margin="10,0,0,0">
<Button.Style>
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ImageWithTextButton}">
<Style TargetType="{x:Type TypeName=Button}" BasedOn="{StaticResource ResourceKey=ImageWithTextButton}">
<Setter Property="IsEnabled" Value="False"/>
<Style.Triggers>
<MultiDataTrigger>
Expand All @@ -170,28 +166,28 @@
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Rectangle Style="{StaticResource ButtonWithImageRectangle}">
<Rectangle Grid.Column="0" Grid.Row="0" Style="{StaticResource ResourceKey=ButtonWithImageRectangle}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Uniform" Visual="{iconPacks:Modern Kind=Edit}" />
</Rectangle.OpacityMask>
</Rectangle>
<TextBlock Grid.Column="1" Text="{x:Static localization:Strings.EditDots}" Style="{StaticResource ButtonWithImageTextBlock}" />
<TextBlock Grid.Column="1" Text="{x:Static Member=localization:Strings.EditDots}" Style="{StaticResource ResourceKey=ButtonWithImageTextBlock}" />
</Grid>
</Button.Content>
</Button>
<Button Command="{Binding AddProfileFileCommand}" Style="{StaticResource ImageWithTextButton}" Margin="10,0,0,0">
<Button Command="{Binding AddProfileFileCommand}" Style="{StaticResource ResourceKey=ImageWithTextButton}" Margin="10,0,0,0">
<Button.Content>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Rectangle Style="{StaticResource ButtonWithImageRectangle}">
<Rectangle Grid.Column="0" Grid.Row="0" Style="{StaticResource ResourceKey=ButtonWithImageRectangle}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Uniform" Visual="{iconPacks:Material Kind=Plus}" />
</Rectangle.OpacityMask>
</Rectangle>
<TextBlock Grid.Column="1" Text="{x:Static localization:Strings.AddDots}" Style="{StaticResource ButtonWithImageTextBlock}" />
<TextBlock Grid.Column="1" Text="{x:Static Member=localization:Strings.AddDots}" Style="{StaticResource ResourceKey=ButtonWithImageTextBlock}" />
</Grid>
</Button.Content>
</Button>
Expand Down