Browse Source

recentFiles - colors for new formats added

tomaszkot 3 years ago
parent
commit
c9dcf9d27d

+ 17 - 18
PixiEditor/Helpers/Converters/FileExtensionToColorConverter.cs

@@ -1,4 +1,7 @@
-using System;
+using PixiEditor.Models;
+using System;
+using System.Collections.Generic;
+using System.Drawing.Imaging;
 using System.Globalization;
 using System.Windows.Media;
 
@@ -7,30 +10,26 @@ namespace PixiEditor.Helpers.Converters
     public class FileExtensionToColorConverter :
         SingleInstanceConverter<FileExtensionToColorConverter>
     {
-        private static readonly SolidColorBrush PixiBrush = ColorBrush(226, 1, 45);
-
-        private static readonly SolidColorBrush PngBrush = ColorBrush(56, 108, 254);
-
-        private static readonly SolidColorBrush JpgBrush = ColorBrush(36, 179, 66);
+        private static readonly Dictionary<string, SolidColorBrush> extensions2Brushes;
 
         private static readonly SolidColorBrush UnknownBrush = ColorBrush(100, 100, 100);
 
+        static FileExtensionToColorConverter()
+        {
+            extensions2Brushes = new Dictionary<string, SolidColorBrush>();
+            extensions2Brushes[Constants.NativeExtension] = ColorBrush(226, 1, 45);
+            extensions2Brushes[SupportedFilesHelper.Format2Extension(ImageFormat.Png)] = ColorBrush(56, 108, 254);
+            extensions2Brushes[SupportedFilesHelper.Format2Extension(ImageFormat.Jpeg)] = ColorBrush(36, 179, 66);
+            extensions2Brushes[SupportedFilesHelper.Format2Extension(ImageFormat.Bmp)] = ColorBrush(40, 170, 236);
+            extensions2Brushes[SupportedFilesHelper.Format2Extension(ImageFormat.Gif)] = ColorBrush(180, 0, 255);
+        }
+
         public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
         {
             string extension = (string)value;
 
-            if (extension == ".pixi")
-            {
-                return PixiBrush;
-            }
-            else if (extension == ".png")
-            {
-                return PngBrush;
-            }
-            else if (extension is ".jpg" or ".jpeg")
-            {
-                return JpgBrush;
-            }
+            if (extensions2Brushes.ContainsKey(extension))
+                return extensions2Brushes[extension];
 
             return UnknownBrush;
         }

+ 40 - 18
PixiEditor/Helpers/SupportedFilesHelper.cs

@@ -18,15 +18,20 @@ namespace PixiEditor.Helpers
             extensions = new Dictionary<string, List<string>>();
             extensions[Constants.NativeExtension] = new List<string>() { Constants.NativeExtension };
             foreach(var format in _imageFormats)
-                extensions[Format2Extension(format)] = GetExtensions(format);
+                extensions[Format2Extension(format)] = GetFormatExtensions(format);
         }
 
-        public static IEnumerable<string> GetSupportedExtensions()
+        public static IEnumerable<string> GetAllSupportedExtensions()
         {
             return extensions.SelectMany(i => i.Value);
         }
 
-        public static List<string> GetExtensions(ImageFormat format)
+        public static List<string> GetExtensions()
+        {
+            return extensions.Keys.ToList();
+        }
+
+        public static List<string> GetFormatExtensions(ImageFormat format)
         {
             var res = new List<string>();
             res.Add(Format2Extension(format));
@@ -35,45 +40,62 @@ namespace PixiEditor.Helpers
             return res;
         }
 
-        private static string Format2Extension(ImageFormat format)
+        public static string Format2Extension(ImageFormat format)
         {
             return "." + format.ToString().ToLower();
         }
 
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="imageFormat">ImageFormat</param>
-        /// <returns>Extensions of the image e.g. *.jpg;*.jpeg</returns>
-        public static string GetExtensionsFormattedForDialog(ImageFormat imageFormat)
+        static string GetExtensionsFormattedForDialog(IEnumerable<string> parts)
         {
-            var parts = GetExtensions(imageFormat);
-            return GetExtensionsFormattedForDialog(parts);
+            return string.Join(";", parts.Select(i => GetExtensionFormattedForDialog(i)));
         }
 
-        public static string GetExtensionsFormattedForDialog(IEnumerable<string> parts)
+        static string GetExtensionFormattedForDialog(string extension)
         {
-            return string.Join(";", parts.Select(i => "*" + i));
+            return "*" + extension;
         }
 
         public static bool IsSupportedFile(string path)
         {
             var ext = Path.GetExtension(path.ToLower());
-            return GetSupportedExtensions().Contains(ext);
+            return GetAllSupportedExtensions().Contains(ext);
         }
 
         public static bool IsExtensionSupported(string fileExtension)
         {
-            return GetSupportedExtensions().Contains(fileExtension);
+            return GetAllSupportedExtensions().Contains(fileExtension);
         }
 
         public static string GetFormattedFilesExtensions(bool includePixi)
         {
-            var allExts = SupportedFilesHelper.GetSupportedExtensions().ToList();
+            var allExts = GetAllSupportedExtensions().ToList();
             if (!includePixi)
                 allExts.Remove(Constants.NativeExtension);
-            var imageFilesExts = SupportedFilesHelper.GetExtensionsFormattedForDialog(allExts);
+            var imageFilesExts = GetExtensionsFormattedForDialog(allExts);
             return imageFilesExts;
         }
+
+        public static string BuildSaveFilter(bool includePixi)
+        {
+            var formatName2Extension = new Dictionary<string, string>();
+            if (includePixi)
+                formatName2Extension.Add("PixiEditor Files", Constants.NativeExtension);
+
+            foreach (var format in ImageFormats)
+                formatName2Extension.Add(format + " Images", Format2Extension(format));
+
+            var filter = string.Join("|", formatName2Extension.Select(i => i.Key + "|" + GetExtensionFormattedForDialog(i.Value)));
+            return filter;
+        }
+
+        public static string BuildOpenFilter()
+        {
+            var filter =
+               "Any |" + GetFormattedFilesExtensions(true) + "|" +
+               "PixiEditor Files |" + GetExtensionsFormattedForDialog(new[] { Constants.NativeExtension }) + "|" +
+               "Image Files |" + GetFormattedFilesExtensions(false);
+
+            return filter;
+        }
     }
 }

+ 1 - 26
PixiEditor/Models/IO/Exporter.cs

@@ -28,7 +28,7 @@ namespace PixiEditor.Models.IO
         {
             SaveFileDialog dialog = new SaveFileDialog
             {
-                Filter = BuildFilter(true),
+                Filter = SupportedFilesHelper.BuildSaveFilter(true),
                 FilterIndex = 0
             };
             if ((bool)dialog.ShowDialog())
@@ -41,31 +41,6 @@ namespace PixiEditor.Models.IO
             return false;
         }
 
-        public static string BuildFilter(bool includePixi)
-        {
-          string filter = string.Empty;
-          if(includePixi)
-            filter += GetFormattedString("PixiEditor Files", Constants.NativeExtensionNoDot) + "|";
-          filter += string.Join("|", SupportedFilesHelper.ImageFormats.Select(i => GetFormattedString(i)));
-          return filter;
-        }
-
-        public static string GetFormattedString(ImageFormat imageFormat)
-        {
-            return GetFormattedString(imageFormat.ToString() + " Images", SupportedFilesHelper.GetExtensionsFormattedForDialog(imageFormat));
-        }
-
-        /// <summary>
-        /// Returns formatted line describing image
-        /// </summary>
-        /// <param name="imageFormatDisplayName">Human name like 'PNG Images' </param>
-        /// <param name="extensions">Extensions of the image e.g. (*.jpg;*.jpeg)</param>
-        /// <returns>Description of the image kind, e.g. PNG Images (*.png)</returns>
-        private static string GetFormattedString(string imageFormatDisplayName, string extensions)
-        {
-            return $"{imageFormatDisplayName}|{extensions}";
-        }
-
         /// <summary>
         /// Saves editable file to chosen path and returns it.
         /// </summary>

+ 1 - 1
PixiEditor/ViewModels/SaveFilePopupViewModel.cs

@@ -62,7 +62,7 @@ namespace PixiEditor.ViewModels
                 Title = "Export path",
                 CheckPathExists = true,
                 DefaultExt = "." + SupportedFilesHelper.ImageFormats.First().ToString().ToLower(),
-                Filter = Exporter.BuildFilter(false)
+                Filter = SupportedFilesHelper.BuildSaveFilter(false)
             };
             if (path.ShowDialog() == true)
             {

+ 2 - 4
PixiEditor/ViewModels/SubViewModels/Main/FileViewModel.cs

@@ -204,10 +204,8 @@ namespace PixiEditor.ViewModels.SubViewModels.Main
                 
         private void Open(object property)
         {
-            var filter = 
-                "Any |" + SupportedFilesHelper.GetFormattedFilesExtensions(true) + "|" + 
-                "PixiEditor Files |" + SupportedFilesHelper.GetExtensionsFormattedForDialog(new[] { Constants.NativeExtension }) + "|" +
-                "Image Files |" + SupportedFilesHelper.GetFormattedFilesExtensions(false);
+            var filter = SupportedFilesHelper.BuildOpenFilter();
+
             OpenFileDialog dialog = new OpenFileDialog
             {
                 Filter = filter,