Browse Source

Add flags to settings window language select combobox

Equbuxu 1 year ago
parent
commit
9bb0b62c9e

+ 9 - 6
src/PixiEditor.AvaloniaUI/Helpers/Converters/ImagePathToBitmapConverter.cs

@@ -1,6 +1,7 @@
 using System.Globalization;
 using System.Reflection;
 using Avalonia;
+using Avalonia.Data;
 using Avalonia.Media.Imaging;
 using Avalonia.Platform;
 
@@ -10,11 +11,13 @@ internal class ImagePathToBitmapConverter : SingleInstanceConverter<ImagePathToB
 {
     public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
     {
-        if (value is string path)
-        {
-            return new Bitmap(AssetLoader.Open(new Uri($"avares://{Assembly.GetExecutingAssembly().FullName}{path}")));
-        }
-
-        return null;
+        if (value is not string path)
+            return AvaloniaProperty.UnsetValue;
+        
+        Uri uri = new($"avares://{Assembly.GetExecutingAssembly().FullName}{path}");
+        if (!AssetLoader.Exists(uri))
+            return AvaloniaProperty.UnsetValue;
+        
+        return new Bitmap(AssetLoader.Open(uri));
     }
 }

+ 6 - 2
src/PixiEditor.AvaloniaUI/Views/Windows/Settings/SettingsWindow.axaml

@@ -84,8 +84,12 @@
                           SelectedItem="{Binding SettingsSubViewModel.General.SelectedLanguage, Mode=TwoWay}">
                     <ComboBox.ItemTemplate>
                         <DataTemplate>
-                            <StackPanel Orientation="Horizontal">
-                                <Image VerticalAlignment="Center" Source="{Binding IconFullPath}"/>
+                            <StackPanel Orientation="Horizontal" Height="20">
+                                <Image
+                                    MaxHeight="20"
+                                    Margin="3, 0"
+                                    VerticalAlignment="Center"
+                                    Source="{Binding IconFullPath, Converter={converters:ImagePathToBitmapConverter}}" />
                                 <TextBlock VerticalAlignment="Center" Text="{Binding Name}"/>
                             </StackPanel>
                         </DataTemplate>

+ 1 - 1
src/PixiEditor.Extensions/Common/Localization/LanguageData.cs

@@ -11,7 +11,7 @@ public class LanguageData
     
     // https://icons8.com/icon/set/flags/color
     public string IconFileName { get; set; }
-    public string IconPath = $"pack://application:,,,/PixiEditor;component/Images/LanguageFlags/";
+    public string IconPath = $"/Images/LanguageFlags/";
 
     [JsonIgnore]
     public List<string> AdditionalLocalePaths { get; set; }