Explorar el Código

UI/UX improvements

Ruben hace 6 meses
padre
commit
2943b1687f

+ 1 - 2
src/PicView.Avalonia.Win32/Views/EffectsWindow.axaml

@@ -132,7 +132,7 @@
                                 <MenuItem.Icon>
                                     <Image
                                         Height="12"
-                                        Source="{StaticResource CloseImage}"
+                                        Source="{StaticResource ClearImage}"
                                         Width="12" />
                                 </MenuItem.Icon>
                             </MenuItem>
@@ -161,7 +161,6 @@
                 Focusable="True"
                 Margin="0"
                 Padding="10,2,5,10"
-                PointerPressed="MoveWindow"
                 x:Name="EffectsView" />
         </StackPanel>
     </Border>

+ 2 - 1
src/PicView.Avalonia/UI/ScreenHelper.cs

@@ -64,7 +64,8 @@ public static class ScreenHelper
         {
             > 500 and < 600 => 500,
             > 600 and < 700 => 550,
-            >= 700 => 700,
+            >= 650 and < 750 => 720,
+            >= 750 => 750,
             _ => SizeDefaults.WindowMinSize
         };
     }

+ 2 - 2
src/PicView.Avalonia/Views/AppearanceView.axaml

@@ -182,9 +182,9 @@
                         <Setter Property="BorderThickness" Value="1" />
                         <Setter Property="BorderBrush" Value="{DynamicResource TertiaryBorderColor}" />
                     </Style>
-                    <Style Selector="Button.colorBtn.activeColorBtn">
+                    <Style Selector="Button.colorBtn.activeColorAccentBtn">
                         <Setter Property="BorderThickness" Value="2" />
-                        <Setter Property="BorderBrush" Value="#FFFFFF" />
+                        <Setter Property="BorderBrush" Value="{DynamicResource AccentColor}" />
                     </Style>
                     <Style Selector="Button.colorBtn:pointerover">
                         <Setter Property="BorderThickness" Value="2" />

+ 39 - 36
src/PicView.Avalonia/Views/AppearanceView.axaml.cs

@@ -13,6 +13,9 @@ namespace PicView.Avalonia.Views;
 public partial class AppearanceView : UserControl
 {
     private readonly CompositeDisposable _disposables = new();
+    
+    private const string ActiveColorBtnClassName = "activeColorBtn";
+    private const string ActiveColorAccentBtnClassName = "activeColorAccentBtn";
     public AppearanceView()
     {
         InitializeComponent();
@@ -70,40 +73,40 @@ public partial class AppearanceView : UserControl
         switch ((ColorOptions)Settings.Theme.ColorTheme)
         {
             case ColorOptions.Raspberry:
-                RaspberryButton.Classes.Add("activeColorBtn");
+                RaspberryButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Teal:
-                TealButton.Classes.Add("activeColorBtn");
+                TealButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Emerald:
-                EmeraldButton.Classes.Add("activeColorBtn");
+                EmeraldButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Golden:
-                GoldButton.Classes.Add("activeColorBtn");
+                GoldButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Orange:
-                OrangeButton.Classes.Add("activeColorBtn");
+                OrangeButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Pink:
-                PinkButton.Classes.Add("activeColorBtn");
+                PinkButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Purple:
-                PurpleButton.Classes.Add("activeColorBtn");
+                PurpleButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Red:
-                RedButton.Classes.Add("activeColorBtn");
+                RedButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Ruby:
-                RubyButton.Classes.Add("activeColorBtn");
+                RubyButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Magenta:
-                MagentaButton.Classes.Add("activeColorBtn");
+                MagentaButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Blue:
-                BlueButton.Classes.Add("activeColorBtn");
+                BlueButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Cyan:
-                CyanButton.Classes.Add("activeColorBtn");
+                CyanButton.Classes.Add(ActiveColorBtnClassName);
                 break;
         }
         
@@ -157,7 +160,7 @@ public partial class AppearanceView : UserControl
 
         foreach (var button in buttons)
         {
-            button.Classes.Remove("activeColorBtn");
+            button.Classes.Remove(ActiveColorBtnClassName);
         }
     }
     
@@ -167,40 +170,40 @@ public partial class AppearanceView : UserControl
         switch (colorTheme)
         {
             default:
-                BlueButton.Classes.Add("activeColorBtn");
+                BlueButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Pink:
-                PinkButton.Classes.Add("activeColorBtn");
+                PinkButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Orange:
-                OrangeButton.Classes.Add("activeColorBtn");
+                OrangeButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Ruby:
-                RubyButton.Classes.Add("activeColorBtn");
+                RubyButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Red:
-                RedButton.Classes.Add("activeColorBtn");
+                RedButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Teal:
-                TealButton.Classes.Add("activeColorBtn");
+                TealButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Raspberry:
-                RaspberryButton.Classes.Add("activeColorBtn");
+                RaspberryButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Golden:
-                GoldButton.Classes.Add("activeColorBtn");
+                GoldButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Purple:
-                PurpleButton.Classes.Add("activeColorBtn");
+                PurpleButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Cyan:
-                CyanButton.Classes.Add("activeColorBtn");
+                CyanButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Magenta:
-                MagentaButton.Classes.Add("activeColorBtn");
+                MagentaButton.Classes.Add(ActiveColorBtnClassName);
                 break;
             case ColorOptions.Emerald:
-                EmeraldButton.Classes.Add("activeColorBtn");
+                EmeraldButton.Classes.Add(ActiveColorBtnClassName);
                 break;
         }
 
@@ -269,34 +272,34 @@ public partial class AppearanceView : UserControl
         switch (selectedBg)
         {
             default:
-                TransparentBgButton.Classes.Add("activeColorBtn");
+                TransparentBgButton.Classes.Add(ActiveColorAccentBtnClassName);
                 break;
             case 1:
-                NoiseTextureButton.Classes.Add("activeColorBtn");
+                NoiseTextureButton.Classes.Add(ActiveColorAccentBtnClassName);
                 break;
             case 2:
-                CheckerboardButton.Classes.Add("activeColorBtn");
+                CheckerboardButton.Classes.Add(ActiveColorAccentBtnClassName);
                 break;
             case 3:
-                CheckerboardAltButton.Classes.Add("activeColorBtn");
+                CheckerboardAltButton.Classes.Add(ActiveColorAccentBtnClassName);
                 break;
             case 4:
-                WhiteBgButton.Classes.Add("activeColorBtn");
+                WhiteBgButton.Classes.Add(ActiveColorAccentBtnClassName);
                 break;
             case 5:
-                GrayBgButton.Classes.Add("activeColorBtn");
+                GrayBgButton.Classes.Add(ActiveColorAccentBtnClassName);
                 break;
             case 6:
-                DarkGrayBgButton.Classes.Add("activeColorBtn");
+                DarkGrayBgButton.Classes.Add(ActiveColorAccentBtnClassName);
                 break;
             case 7:
-                DarkGraySemiTransparentBgButton.Classes.Add("activeColorBtn");
+                DarkGraySemiTransparentBgButton.Classes.Add(ActiveColorAccentBtnClassName);
                 break;
             case 8:
-                DarkGraySemiTransparentAltBgButton.Classes.Add("activeColorBtn");
+                DarkGraySemiTransparentAltBgButton.Classes.Add(ActiveColorAccentBtnClassName);
                 break;
             case 9:
-                BlackBgButton.Classes.Add("activeColorBtn");
+                BlackBgButton.Classes.Add(ActiveColorAccentBtnClassName);
                 break;
         }
 
@@ -319,7 +322,7 @@ public partial class AppearanceView : UserControl
 
         foreach (var button in buttons)
         {
-            button.Classes.Remove("activeColorBtn");
+            button.Classes.Remove(ActiveColorAccentBtnClassName);
         }
     }
 }

+ 2 - 0
src/PicView.Avalonia/Views/BatchResizeView.axaml

@@ -34,6 +34,7 @@
                         x:Name="SourceFolderTextBox" />
                     <customControls:IconButton
                         Classes="altHover"
+                        CornerRadius="4"
                         Data="{StaticResource AltFolderGeometry}"
                         IconHeight="20"
                         IconWidth="20"
@@ -55,6 +56,7 @@
                         x:Name="OutputFolderTextBox" />
                     <customControls:IconButton
                         Classes="altHover"
+                        CornerRadius="4"
                         Data="{StaticResource AltFolderGeometry}"
                         IconHeight="20"
                         IconWidth="20"

+ 18 - 0
src/PicView.Avalonia/Views/BatchResizeView.axaml.cs

@@ -128,6 +128,15 @@ public partial class BatchResizeView : UserControl
                     CancelButton.IsVisible = false;
                 });
             
+            this.WhenAny(x => x.OutputFolderTextBox.Text, x => x.Value)
+                .ObserveOn(RxApp.MainThreadScheduler)
+                .Skip(1)
+                .Subscribe(_ =>
+                {
+                    ResetButton.IsVisible = true;
+                    CancelButton.IsVisible = false;
+                });
+            
             this.WhenAnyValue(x => x.ConversionComboBox.SelectedItem,
                     x => x.CompressionComboBox.SelectedItem,
                     x => x.HeightResizeBox,
@@ -142,6 +151,15 @@ public partial class BatchResizeView : UserControl
                     ResetButton.IsVisible = true;
                     CancelButton.IsVisible = false;
                 });
+            
+            this.WhenAnyValue(x => x.ResizeComboBox.SelectedItem)
+                .ObserveOn(RxApp.MainThreadScheduler)
+                .Skip(1)
+                .Subscribe(_ =>
+                {
+                    ResetButton.IsVisible = true;
+                    CancelButton.IsVisible = false;
+                });
         };
     }
 

+ 353 - 349
src/PicView.Avalonia/Views/EffectsView.axaml

@@ -72,6 +72,17 @@
                         Width="12" />
                 </MenuItem.Icon>
             </MenuItem>
+            <Separator />
+            <MenuItem Header="{CompiledBinding Translation.Close}" x:Name="CloseItem">
+                <MenuItem.Icon>
+                    <Path
+                        Data="{StaticResource CloseGeometry}"
+                        Fill="{DynamicResource MainTextColor}"
+                        Height="12"
+                        Stretch="Fill"
+                        Width="12" />
+                </MenuItem.Icon>
+            </MenuItem>
         </ContextMenu>
     </UserControl.ContextMenu>
 
@@ -84,367 +95,360 @@
             x:Name="SpinWaiter" />
 
         <StackPanel Width="500" x:Name="ParentContainer">
-            <Expander IsExpanded="True" Margin="0,15,0,10">
-                <Expander.Header>
+            <TextBlock
+                Classes="txt"
+                FontFamily="/Assets/Fonts/Roboto-Bold.ttf#Roboto"
+                FontSize="14"
+                Margin="0,15,0,10"
+                Padding="10,5"
+                Text="{CompiledBinding Translation.Lighting}" />
+            <StackPanel Margin="15,20">
+
+                <!--  Brightness  -->
+                <Panel>
                     <TextBlock
                         Classes="txt"
-                        FontFamily="/Assets/Fonts/Roboto-Bold.ttf#Roboto"
-                        FontSize="14"
-                        Padding="10,5"
-                        Text="{CompiledBinding Translation.Lighting}" />
-                </Expander.Header>
-                <StackPanel Margin="15,20">
-
-                    <!--  Brightness  -->
-                    <Panel>
-                        <TextBlock
-                            Classes="txt"
-                            HorizontalAlignment="Left"
-                            Text="{CompiledBinding Translation.Brightness}"
-                            VerticalAlignment="Center" />
-
-                        <Rectangle
-                            Fill="{DynamicResource MainBorderColor}"
-                            Height="20"
-                            HorizontalAlignment="Center"
-                            Margin="0,0,122,-10"
-                            Stroke="{DynamicResource MainBorderColor}"
-                            StrokeThickness="1"
-                            Width="2" />
-                    </Panel>
-
-                    <StackPanel Orientation="Horizontal">
-
-                        <customControls:CustomSlider
-                            Height="30"
-                            IsSnapToTickEnabled="True"
-                            LargeChange="5"
-                            Margin="0,1,10,1"
-                            Maximum="100"
-                            Minimum="-85"
-                            SmallChange="1"
-                            Theme="{StaticResource SetBg}"
-                            TickFrequency="1"
-                            Value="0"
-                            Width="376"
-                            x:Name="BrightnessSlider">
-                            <customControls:CustomSlider.Background>
-                                <LinearGradientBrush EndPoint="100%,50%" StartPoint="0%,50%">
-                                    <GradientStop Color="#111111" Offset="0" />
-                                    <GradientStop Color="White" Offset="1" />
-                                </LinearGradientBrush>
-                            </customControls:CustomSlider.Background>
-                        </customControls:CustomSlider>
-                        <NumericUpDown
-                            Maximum="{Binding Path=Maximum, ElementName=BrightnessSlider}"
-                            Minimum="{Binding Path=Minimum, ElementName=BrightnessSlider}"
-                            Value="{Binding Path=Value, ElementName=BrightnessSlider}" />
-                        <customControls:IconButton
-                            Background="{DynamicResource MainButtonBackgroundColor}"
-                            BorderBrush="{DynamicResource MainBorderColor}"
-                            BorderThickness="1"
-                            Classes="hover"
-                            Foreground="{DynamicResource MainTextColor}"
-                            Icon="{StaticResource UndoImage}"
-                            IconHeight="12"
-                            IconWidth="12"
-                            Margin="5,0,0,0"
-                            Width="30"
-                            x:Name="ResetBrightnessBtn" />
-                    </StackPanel>
-
-                    <!--  Contrast  -->
-                    <Panel>
-                        <TextBlock
-                            Classes="txt"
-                            HorizontalAlignment="Left"
-                            Text="{CompiledBinding Translation.Contrast}"
-                            VerticalAlignment="Center" />
-
-                        <Rectangle
-                            Fill="{DynamicResource MainBorderColor}"
-                            Height="20"
-                            HorizontalAlignment="Center"
-                            Margin="0,0,122,-10"
-                            Stroke="{DynamicResource MainBorderColor}"
-                            StrokeThickness="1"
-                            Width="2" />
-                    </Panel>
-
-                    <StackPanel Orientation="Horizontal">
-
-                        <customControls:CustomSlider
-                            Height="30"
-                            IsSnapToTickEnabled="True"
-                            LargeChange="5"
-                            Margin="0,1,10,1"
-                            Maximum="100"
-                            Minimum="-85"
-                            SmallChange="1"
-                            Theme="{StaticResource SetBg}"
-                            TickFrequency="1"
-                            Value="0"
-                            Width="376"
-                            x:Name="ContrastSlider">
-                            <customControls:CustomSlider.Background>
-                                <LinearGradientBrush EndPoint="100%,50%" StartPoint="0%,50%">
-                                    <GradientStop Color="#06FF0000" Offset="0" />
-                                    <GradientStop Color="#40FF7F00" Offset="0.17" />
-                                    <GradientStop Color="#60FFFF00" Offset="0.33" />
-                                    <GradientStop Color="#8000FF00" Offset="0.5" />
-                                    <GradientStop Color="#A00000FF" Offset="0.67" />
-                                    <GradientStop Color="#C04B0082" Offset="0.83" />
-                                    <GradientStop Color="#FF8F00FF" Offset="1" />
-                                </LinearGradientBrush>
-                            </customControls:CustomSlider.Background>
-                        </customControls:CustomSlider>
-                        <NumericUpDown
-                            Maximum="{Binding Path=Maximum, ElementName=ContrastSlider}"
-                            Minimum="{Binding Path=Minimum, ElementName=ContrastSlider}"
-                            Value="{Binding Path=Value, ElementName=ContrastSlider}" />
-                        <customControls:IconButton
-                            Background="{DynamicResource MainButtonBackgroundColor}"
-                            BorderBrush="{DynamicResource MainBorderColor}"
-                            BorderThickness="1"
-                            Classes="hover"
-                            Foreground="{DynamicResource MainTextColor}"
-                            Icon="{StaticResource UndoImage}"
-                            IconHeight="12"
-                            IconWidth="12"
-                            Margin="5,0,0,0"
-                            Width="30"
-                            x:Name="ResetContrastBtn" />
-                    </StackPanel>
-
+                        HorizontalAlignment="Left"
+                        Text="{CompiledBinding Translation.Brightness}"
+                        VerticalAlignment="Center" />
+
+                    <Rectangle
+                        Fill="{DynamicResource MainBorderColor}"
+                        Height="20"
+                        HorizontalAlignment="Center"
+                        Margin="0,0,122,-10"
+                        Stroke="{DynamicResource MainBorderColor}"
+                        StrokeThickness="1"
+                        Width="2" />
+                </Panel>
+
+                <StackPanel Orientation="Horizontal">
+
+                    <customControls:CustomSlider
+                        Height="30"
+                        IsSnapToTickEnabled="True"
+                        LargeChange="5"
+                        Margin="0,1,10,1"
+                        Maximum="100"
+                        Minimum="-85"
+                        SmallChange="1"
+                        Theme="{StaticResource SetBg}"
+                        TickFrequency="1"
+                        Value="0"
+                        Width="376"
+                        x:Name="BrightnessSlider">
+                        <customControls:CustomSlider.Background>
+                            <LinearGradientBrush EndPoint="100%,50%" StartPoint="0%,50%">
+                                <GradientStop Color="#111111" Offset="0" />
+                                <GradientStop Color="White" Offset="1" />
+                            </LinearGradientBrush>
+                        </customControls:CustomSlider.Background>
+                    </customControls:CustomSlider>
+                    <NumericUpDown
+                        Maximum="{Binding Path=Maximum, ElementName=BrightnessSlider}"
+                        Minimum="{Binding Path=Minimum, ElementName=BrightnessSlider}"
+                        Value="{Binding Path=Value, ElementName=BrightnessSlider}" />
+                    <customControls:IconButton
+                        Background="{DynamicResource MainButtonBackgroundColor}"
+                        BorderBrush="{DynamicResource MainBorderColor}"
+                        BorderThickness="1"
+                        Classes="hover"
+                        Foreground="{DynamicResource MainTextColor}"
+                        Icon="{StaticResource UndoImage}"
+                        IconHeight="12"
+                        IconWidth="12"
+                        Margin="5,0,0,0"
+                        Width="30"
+                        x:Name="ResetBrightnessBtn" />
+                </StackPanel>
 
+                <!--  Contrast  -->
+                <Panel>
+                    <TextBlock
+                        Classes="txt"
+                        HorizontalAlignment="Left"
+                        Text="{CompiledBinding Translation.Contrast}"
+                        VerticalAlignment="Center" />
+
+                    <Rectangle
+                        Fill="{DynamicResource MainBorderColor}"
+                        Height="20"
+                        HorizontalAlignment="Center"
+                        Margin="0,0,122,-10"
+                        Stroke="{DynamicResource MainBorderColor}"
+                        StrokeThickness="1"
+                        Width="2" />
+                </Panel>
+
+                <StackPanel Orientation="Horizontal">
+
+                    <customControls:CustomSlider
+                        Height="30"
+                        IsSnapToTickEnabled="True"
+                        LargeChange="5"
+                        Margin="0,1,10,1"
+                        Maximum="100"
+                        Minimum="-85"
+                        SmallChange="1"
+                        Theme="{StaticResource SetBg}"
+                        TickFrequency="1"
+                        Value="0"
+                        Width="376"
+                        x:Name="ContrastSlider">
+                        <customControls:CustomSlider.Background>
+                            <LinearGradientBrush EndPoint="100%,50%" StartPoint="0%,50%">
+                                <GradientStop Color="#06FF0000" Offset="0" />
+                                <GradientStop Color="#40FF7F00" Offset="0.17" />
+                                <GradientStop Color="#60FFFF00" Offset="0.33" />
+                                <GradientStop Color="#8000FF00" Offset="0.5" />
+                                <GradientStop Color="#A00000FF" Offset="0.67" />
+                                <GradientStop Color="#C04B0082" Offset="0.83" />
+                                <GradientStop Color="#FF8F00FF" Offset="1" />
+                            </LinearGradientBrush>
+                        </customControls:CustomSlider.Background>
+                    </customControls:CustomSlider>
+                    <NumericUpDown
+                        Maximum="{Binding Path=Maximum, ElementName=ContrastSlider}"
+                        Minimum="{Binding Path=Minimum, ElementName=ContrastSlider}"
+                        Value="{Binding Path=Value, ElementName=ContrastSlider}" />
+                    <customControls:IconButton
+                        Background="{DynamicResource MainButtonBackgroundColor}"
+                        BorderBrush="{DynamicResource MainBorderColor}"
+                        BorderThickness="1"
+                        Classes="hover"
+                        Foreground="{DynamicResource MainTextColor}"
+                        Icon="{StaticResource UndoImage}"
+                        IconHeight="12"
+                        IconWidth="12"
+                        Margin="5,0,0,0"
+                        Width="30"
+                        x:Name="ResetContrastBtn" />
                 </StackPanel>
 
-            </Expander>
 
-            <Expander IsExpanded="True" Margin="0,0,0,10">
-                <Expander.Header>
+            </StackPanel>
+
+
+            <TextBlock
+                Classes="txt"
+                FontFamily="/Assets/Fonts/Roboto-Bold.ttf#Roboto"
+                FontSize="14"
+                Margin="0,0,0,10"
+                Padding="10,5"
+                Text="{CompiledBinding Translation.Effects}" />
+            <StackPanel Margin="15,0">
+
+                <!--  Blur  -->
+                <Panel Margin="0,10,0,5">
                     <TextBlock
                         Classes="txt"
-                        FontFamily="/Assets/Fonts/Roboto-Bold.ttf#Roboto"
-                        FontSize="14"
-                        Padding="10,5"
-                        Text="{CompiledBinding Translation.Effects}" />
-                </Expander.Header>
-                <StackPanel Margin="15,0">
-
-                    <!--  Blur  -->
-                    <Panel Margin="0,10,0,5">
-                        <TextBlock
-                            Classes="txt"
-                            HorizontalAlignment="Left"
-                            Text="{CompiledBinding Translation.Blur}"
-                            VerticalAlignment="Center" />
-                    </Panel>
-
-                    <StackPanel Orientation="Horizontal">
-
-                        <customControls:CustomSlider
-                            BorderBrush="{DynamicResource MainBorderColor}"
-                            BorderThickness="1"
-                            Height="30"
-                            IsSnapToTickEnabled="True"
-                            Margin="0,1,10,1"
-                            Maximum="100"
-                            Minimum="0"
-                            SmallChange="1"
-                            TickFrequency="1"
-                            Value="0"
-                            Width="376"
-                            x:Name="BlurSlider" />
-                        <NumericUpDown
-                            Maximum="{Binding Path=Maximum, ElementName=BlurSlider}"
-                            Minimum="{Binding Path=Minimum, ElementName=BlurSlider}"
-                            Value="{Binding Path=Value, ElementName=BlurSlider}" />
-                        <customControls:IconButton
-                            Background="{DynamicResource MainButtonBackgroundColor}"
-                            BorderBrush="{DynamicResource MainBorderColor}"
-                            BorderThickness="1"
-                            Classes="hover"
-                            Foreground="{DynamicResource MainTextColor}"
-                            Icon="{StaticResource UndoImage}"
-                            IconHeight="12"
-                            IconWidth="12"
-                            Margin="5,0,0,0"
-                            Width="30"
-                            x:Name="ResetBlurBtn" />
-                    </StackPanel>
-
-                    <!--  Pencil Sketch  -->
-                    <Panel Margin="0,10,0,5">
-                        <TextBlock
-                            Classes="txt"
-                            HorizontalAlignment="Left"
-                            Text="{CompiledBinding Translation.PencilSketch}"
-                            VerticalAlignment="Center" />
-                    </Panel>
-
-                    <StackPanel Orientation="Horizontal">
-
-                        <customControls:CustomSlider
-                            BorderBrush="{DynamicResource MainBorderColor}"
-                            BorderThickness="1"
-                            Height="30"
-                            IsSnapToTickEnabled="True"
-                            LargeChange="1"
-                            Margin="0,1,10,1"
-                            Maximum="6"
-                            Minimum="0"
-                            SmallChange="1"
-                            TickFrequency="1"
-                            Value="0"
-                            Width="376"
-                            x:Name="PencilSketchSlider" />
-                        <NumericUpDown
-                            Maximum="{Binding Path=Maximum, ElementName=PencilSketchSlider}"
-                            Minimum="{Binding Path=Minimum, ElementName=PencilSketchSlider}"
-                            Value="{Binding Path=Value, ElementName=PencilSketchSlider}" />
-                        <customControls:IconButton
-                            Background="{DynamicResource MainButtonBackgroundColor}"
-                            BorderBrush="{DynamicResource MainBorderColor}"
-                            BorderThickness="1"
-                            Classes="hover"
-                            Foreground="{DynamicResource MainTextColor}"
-                            Icon="{StaticResource UndoImage}"
-                            IconHeight="12"
-                            IconWidth="12"
-                            Margin="5,0,0,0"
-                            Width="30"
-                            x:Name="ResetPencilSketchBtn" />
-                    </StackPanel>
-
-                    <!--  Posterize  -->
-                    <Panel Margin="0,10,0,5">
-                        <TextBlock
-                            Classes="txt"
-                            HorizontalAlignment="Left"
-                            Text="{CompiledBinding Translation.Posterize}"
-                            VerticalAlignment="Center" />
-                    </Panel>
-
-                    <StackPanel Orientation="Horizontal">
-
-                        <customControls:CustomSlider
-                            BorderBrush="{DynamicResource MainBorderColor}"
-                            BorderThickness="1"
-                            Height="30"
-                            IsSnapToTickEnabled="True"
-                            LargeChange="1"
-                            Margin="0,1,10,1"
-                            Maximum="8"
-                            Minimum="0"
-                            SmallChange="1"
-                            TickFrequency="1"
-                            Value="0"
-                            Width="376"
-                            x:Name="PosterizeSlider" />
-                        <NumericUpDown
-                            Maximum="{Binding Path=Maximum, ElementName=PosterizeSlider}"
-                            Minimum="{Binding Path=Minimum, ElementName=PosterizeSlider}"
-                            Value="{Binding Path=Value, ElementName=PosterizeSlider}" />
-                        <customControls:IconButton
-                            Background="{DynamicResource MainButtonBackgroundColor}"
-                            BorderBrush="{DynamicResource MainBorderColor}"
-                            BorderThickness="1"
-                            Classes="hover"
-                            Foreground="{DynamicResource MainTextColor}"
-                            Icon="{StaticResource UndoImage}"
-                            IconHeight="12"
-                            IconWidth="12"
-                            Margin="5,0,0,0"
-                            Width="30"
-                            x:Name="ResetPosterizeBtn" />
-                    </StackPanel>
-
-                    <!--  Solarize  -->
-                    <Panel Margin="0,10,0,5">
-                        <TextBlock
-                            Classes="txt"
-                            HorizontalAlignment="Left"
-                            Text="{CompiledBinding Translation.Solarize}"
-                            VerticalAlignment="Center" />
-                    </Panel>
-
-                    <StackPanel Orientation="Horizontal">
-
-                        <customControls:CustomSlider
-                            BorderBrush="{DynamicResource MainBorderColor}"
-                            BorderThickness="1"
-                            Height="30"
-                            IsSnapToTickEnabled="True"
-                            LargeChange="10"
-                            Margin="0,1,10,1"
-                            Maximum="95"
-                            Minimum="0"
-                            SmallChange="5"
-                            TickFrequency="10"
-                            Value="0"
-                            Width="376"
-                            x:Name="SolarizeSlider" />
-                        <NumericUpDown
-                            Maximum="{Binding Path=Maximum, ElementName=SolarizeSlider}"
-                            Minimum="{Binding Path=Minimum, ElementName=SolarizeSlider}"
-                            Value="{Binding Path=Value, ElementName=SolarizeSlider}" />
-                        <customControls:IconButton
-                            Background="{DynamicResource MainButtonBackgroundColor}"
-                            BorderBrush="{DynamicResource MainBorderColor}"
-                            BorderThickness="1"
-                            Classes="hover"
-                            Foreground="{DynamicResource MainTextColor}"
-                            Icon="{StaticResource UndoImage}"
-                            IconHeight="12"
-                            IconWidth="12"
-                            Margin="5,0,0,0"
-                            Width="30"
-                            x:Name="ResetSolarizeBtn" />
-                    </StackPanel>
-
-
-                    <!--  Black/White  -->
-                    <ToggleButton
-                        Background="Transparent"
-                        Classes="altHover"
-                        Margin="0,5,0,0"
-                        x:Name="BlackAndWhiteToggleButton">
-                        <TextBlock
-                            Classes="txt"
-                            HorizontalAlignment="Left"
-                            Text="{CompiledBinding Translation.BlackAndWhite}"
-                            VerticalAlignment="Center" />
-                    </ToggleButton>
-
-                    <!--  Negative Colors  -->
-                    <ToggleButton
-                        Background="Transparent"
-                        Classes="altHover"
-                        x:Name="NegativeToggleButton">
-                        <TextBlock
-                            Classes="txt"
-                            HorizontalAlignment="Left"
-                            Text="{CompiledBinding Translation.NegativeColors}"
-                            VerticalAlignment="Center" />
-                    </ToggleButton>
-
-                    <!--  Old  Movie  -->
-                    <ToggleButton
-                        Background="Transparent"
-                        Classes="altHover"
-                        x:Name="OldMovieToggleButton">
-                        <TextBlock
-                            Classes="txt"
-                            HorizontalAlignment="Left"
-                            Text="{CompiledBinding Translation.OldMovie}"
-                            VerticalAlignment="Center" />
-                    </ToggleButton>
+                        HorizontalAlignment="Left"
+                        Text="{CompiledBinding Translation.Blur}"
+                        VerticalAlignment="Center" />
+                </Panel>
+
+                <StackPanel Orientation="Horizontal">
+
+                    <customControls:CustomSlider
+                        BorderBrush="{DynamicResource MainBorderColor}"
+                        BorderThickness="1"
+                        Height="30"
+                        IsSnapToTickEnabled="True"
+                        Margin="0,1,10,1"
+                        Maximum="100"
+                        Minimum="0"
+                        SmallChange="1"
+                        TickFrequency="1"
+                        Value="0"
+                        Width="376"
+                        x:Name="BlurSlider" />
+                    <NumericUpDown
+                        Maximum="{Binding Path=Maximum, ElementName=BlurSlider}"
+                        Minimum="{Binding Path=Minimum, ElementName=BlurSlider}"
+                        Value="{Binding Path=Value, ElementName=BlurSlider}" />
+                    <customControls:IconButton
+                        Background="{DynamicResource MainButtonBackgroundColor}"
+                        BorderBrush="{DynamicResource MainBorderColor}"
+                        BorderThickness="1"
+                        Classes="hover"
+                        Foreground="{DynamicResource MainTextColor}"
+                        Icon="{StaticResource UndoImage}"
+                        IconHeight="12"
+                        IconWidth="12"
+                        Margin="5,0,0,0"
+                        Width="30"
+                        x:Name="ResetBlurBtn" />
+                </StackPanel>
 
+                <!--  Pencil Sketch  -->
+                <Panel Margin="0,10,0,5">
+                    <TextBlock
+                        Classes="txt"
+                        HorizontalAlignment="Left"
+                        Text="{CompiledBinding Translation.PencilSketch}"
+                        VerticalAlignment="Center" />
+                </Panel>
+
+                <StackPanel Orientation="Horizontal">
+
+                    <customControls:CustomSlider
+                        BorderBrush="{DynamicResource MainBorderColor}"
+                        BorderThickness="1"
+                        Height="30"
+                        IsSnapToTickEnabled="True"
+                        LargeChange="1"
+                        Margin="0,1,10,1"
+                        Maximum="6"
+                        Minimum="0"
+                        SmallChange="1"
+                        TickFrequency="1"
+                        Value="0"
+                        Width="376"
+                        x:Name="PencilSketchSlider" />
+                    <NumericUpDown
+                        Maximum="{Binding Path=Maximum, ElementName=PencilSketchSlider}"
+                        Minimum="{Binding Path=Minimum, ElementName=PencilSketchSlider}"
+                        Value="{Binding Path=Value, ElementName=PencilSketchSlider}" />
+                    <customControls:IconButton
+                        Background="{DynamicResource MainButtonBackgroundColor}"
+                        BorderBrush="{DynamicResource MainBorderColor}"
+                        BorderThickness="1"
+                        Classes="hover"
+                        Foreground="{DynamicResource MainTextColor}"
+                        Icon="{StaticResource UndoImage}"
+                        IconHeight="12"
+                        IconWidth="12"
+                        Margin="5,0,0,0"
+                        Width="30"
+                        x:Name="ResetPencilSketchBtn" />
+                </StackPanel>
 
+                <!--  Posterize  -->
+                <Panel Margin="0,10,0,5">
+                    <TextBlock
+                        Classes="txt"
+                        HorizontalAlignment="Left"
+                        Text="{CompiledBinding Translation.Posterize}"
+                        VerticalAlignment="Center" />
+                </Panel>
+
+                <StackPanel Orientation="Horizontal">
+
+                    <customControls:CustomSlider
+                        BorderBrush="{DynamicResource MainBorderColor}"
+                        BorderThickness="1"
+                        Height="30"
+                        IsSnapToTickEnabled="True"
+                        LargeChange="1"
+                        Margin="0,1,10,1"
+                        Maximum="8"
+                        Minimum="0"
+                        SmallChange="1"
+                        TickFrequency="1"
+                        Value="0"
+                        Width="376"
+                        x:Name="PosterizeSlider" />
+                    <NumericUpDown
+                        Maximum="{Binding Path=Maximum, ElementName=PosterizeSlider}"
+                        Minimum="{Binding Path=Minimum, ElementName=PosterizeSlider}"
+                        Value="{Binding Path=Value, ElementName=PosterizeSlider}" />
+                    <customControls:IconButton
+                        Background="{DynamicResource MainButtonBackgroundColor}"
+                        BorderBrush="{DynamicResource MainBorderColor}"
+                        BorderThickness="1"
+                        Classes="hover"
+                        Foreground="{DynamicResource MainTextColor}"
+                        Icon="{StaticResource UndoImage}"
+                        IconHeight="12"
+                        IconWidth="12"
+                        Margin="5,0,0,0"
+                        Width="30"
+                        x:Name="ResetPosterizeBtn" />
                 </StackPanel>
 
-            </Expander>
+                <!--  Solarize  -->
+                <Panel Margin="0,10,0,5">
+                    <TextBlock
+                        Classes="txt"
+                        HorizontalAlignment="Left"
+                        Text="{CompiledBinding Translation.Solarize}"
+                        VerticalAlignment="Center" />
+                </Panel>
+
+                <StackPanel Orientation="Horizontal">
+
+                    <customControls:CustomSlider
+                        BorderBrush="{DynamicResource MainBorderColor}"
+                        BorderThickness="1"
+                        Height="30"
+                        IsSnapToTickEnabled="True"
+                        LargeChange="10"
+                        Margin="0,1,10,1"
+                        Maximum="95"
+                        Minimum="0"
+                        SmallChange="5"
+                        TickFrequency="10"
+                        Value="0"
+                        Width="376"
+                        x:Name="SolarizeSlider" />
+                    <NumericUpDown
+                        Maximum="{Binding Path=Maximum, ElementName=SolarizeSlider}"
+                        Minimum="{Binding Path=Minimum, ElementName=SolarizeSlider}"
+                        Value="{Binding Path=Value, ElementName=SolarizeSlider}" />
+                    <customControls:IconButton
+                        Background="{DynamicResource MainButtonBackgroundColor}"
+                        BorderBrush="{DynamicResource MainBorderColor}"
+                        BorderThickness="1"
+                        Classes="hover"
+                        Foreground="{DynamicResource MainTextColor}"
+                        Icon="{StaticResource UndoImage}"
+                        IconHeight="12"
+                        IconWidth="12"
+                        Margin="5,0,0,0"
+                        Width="30"
+                        x:Name="ResetSolarizeBtn" />
+                </StackPanel>
+
+
+                <!--  Black/White  -->
+                <ToggleButton
+                    Background="Transparent"
+                    Classes="altHover"
+                    Margin="0,5,0,0"
+                    x:Name="BlackAndWhiteToggleButton">
+                    <TextBlock
+                        Classes="txt"
+                        HorizontalAlignment="Left"
+                        Text="{CompiledBinding Translation.BlackAndWhite}"
+                        VerticalAlignment="Center" />
+                </ToggleButton>
+
+                <!--  Negative Colors  -->
+                <ToggleButton
+                    Background="Transparent"
+                    Classes="altHover"
+                    x:Name="NegativeToggleButton">
+                    <TextBlock
+                        Classes="txt"
+                        HorizontalAlignment="Left"
+                        Text="{CompiledBinding Translation.NegativeColors}"
+                        VerticalAlignment="Center" />
+                </ToggleButton>
+
+                <!--  Old  Movie  -->
+                <ToggleButton
+                    Background="Transparent"
+                    Classes="altHover"
+                    x:Name="OldMovieToggleButton">
+                    <TextBlock
+                        Classes="txt"
+                        HorizontalAlignment="Left"
+                        Text="{CompiledBinding Translation.OldMovie}"
+                        VerticalAlignment="Center" />
+                </ToggleButton>
+
+
+            </StackPanel>
 
         </StackPanel>
     </Panel>

+ 2 - 0
src/PicView.Avalonia/Views/EffectsView.axaml.cs

@@ -61,6 +61,8 @@ public partial class EffectsView : UserControl
 
     private void InitializeUIEvents(MainViewModel vm)
     {
+        CloseItem.Click += (_, _) => (VisualRoot as Window)?.Close();
+        
         PointerPressed += OnPointerPressed;
         ClearEffectsItem.Click += async (_, _) => await RemoveEffects();
         ResetContrastBtn.Click += (_, _) => ContrastSlider.Value = 0;

+ 8 - 5
src/PicView.Avalonia/Views/FileAssociationsView.axaml

@@ -24,17 +24,18 @@
                                         Mode=OneWay}"
             VerticalAlignment="Center" />
 
-        <StackPanel
+        <DockPanel
             Focusable="True"
             HorizontalAlignment="Center"
             IsHitTestVisible="{CompiledBinding !AssociationsViewModel.IsProcessing,
                                                Mode=OneWay}"
+            LastChildFill="True"
             Opacity="{CompiledBinding AssociationsViewModel.Opacity,
-                                      Mode=OneWay}"
-            Orientation="Vertical">
+                                      Mode=OneWay}">
 
             <TextBlock
                 Classes="txt"
+                DockPanel.Dock="Top"
                 FontFamily="/Assets/Fonts/Roboto-Bold.ttf#Roboto"
                 FontSize="14"
                 Margin="0,20,0,0"
@@ -43,6 +44,7 @@
 
             <TextBlock
                 Classes="txt"
+                DockPanel.Dock="Top"
                 Foreground="{StaticResource SecondaryTextColor}"
                 HorizontalAlignment="Left"
                 Padding="0,5,10,15"
@@ -51,7 +53,7 @@
 
             <StackPanel
                 Background="Transparent"
-                HorizontalAlignment="Right"
+                DockPanel.Dock="Top"
                 Margin="0,0,0,5"
                 Orientation="Horizontal">
 
@@ -128,6 +130,7 @@
 
             <customControls:AutoScrollViewer
                 Background="Transparent"
+                DockPanel.Dock="Top"
                 Height="520"
                 x:Name="FileTypesScrollViewer">
                 <StackPanel x:Name="FileTypesContainer">
@@ -203,6 +206,6 @@
                 </Button>
 
             </DockPanel>
-        </StackPanel>
+        </DockPanel>
     </Panel>
 </UserControl>

+ 1 - 1
src/PicView.Avalonia/Views/FileAssociationsView.axaml.cs

@@ -26,7 +26,7 @@ public partial class FileAssociationsView : UserControl
         {
             > 500 and <= 650 => 340,
             >= 650 and <= 700 => 440,
-            >= 700 => 480,
+            >= 700 => 500,
             _ => 240
         };