Refactor color and language settings

This commit is contained in:
Peter Kirmeier 2022-12-04 23:56:21 +01:00
parent 36cbd9f633
commit 22679392f4
9 changed files with 160 additions and 159 deletions

View file

@ -4,8 +4,7 @@
namespace SystemTrayMenu
{
using System.Windows.Media;
using Color = System.Drawing.Color;
using System.Drawing;
internal static class AppColors
{
@ -80,16 +79,5 @@ namespace SystemTrayMenu
public static Color Icons { get; set; }
public static Color DarkModeIcons { get; set; }
// TODO: WPF: Remove by not using system drawing colors
public static SolidColorBrush ToSolidColorBrush(this Color color)
{
return new SolidColorBrush(System.Windows.Media.Color.FromArgb(color.A, color.R, color.G, color.B));
}
public static SolidColorBrush SolidColorBrushFromString(string value)
{
return new SolidColorBrush((System.Windows.Media.Color)ColorConverter.ConvertFromString(value));
}
}
}

View file

@ -1,15 +0,0 @@
// <copyright file="ColorAndCode.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright>
namespace SystemTrayMenu
{
using System.Drawing;
internal struct ColorAndCode
{
public Color Color { get; set; }
public string HtmlColorCode { get; set; }
}
}

View file

@ -192,225 +192,225 @@ namespace SystemTrayMenu
{
ColorConverter converter = new();
ColorAndCode colorAndCode = default;
bool changed = false;
bool resetDefaults = false;
colorAndCode.HtmlColorCode = Settings.Default.ColorSelectedItem;
colorAndCode.Color = Color.FromArgb(204, 232, 255);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSelectedItem = colorAndCode.HtmlColorCode;
AppColors.SelectedItem = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeSelecetedItem;
colorAndCode.Color = Color.FromArgb(51, 51, 51);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorDarkModeSelecetedItem = colorAndCode.HtmlColorCode;
AppColors.DarkModeSelecetedItem = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSelectedItemBorder;
colorAndCode.Color = Color.FromArgb(153, 209, 255);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSelectedItemBorder = colorAndCode.HtmlColorCode;
AppColors.SelectedItemBorder = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeSelectedItemBorder;
colorAndCode.Color = Color.FromArgb(20, 29, 75);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorDarkModeSelectedItemBorder = colorAndCode.HtmlColorCode;
AppColors.DarkModeSelectedItemBorder = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorOpenFolder;
colorAndCode.Color = Color.FromArgb(194, 245, 222);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorOpenFolder = colorAndCode.HtmlColorCode;
AppColors.OpenFolder = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeOpenFolder;
colorAndCode.Color = Color.FromArgb(20, 65, 42);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorDarkModeOpenFolder = colorAndCode.HtmlColorCode;
AppColors.DarkModeOpenFolder = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorOpenFolderBorder;
colorAndCode.Color = Color.FromArgb(153, 255, 165);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorOpenFolderBorder = colorAndCode.HtmlColorCode;
AppColors.OpenFolderBorder = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeOpenFolderBorder;
colorAndCode.Color = Color.FromArgb(20, 75, 85);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorDarkModeOpenFolderBorder = colorAndCode.HtmlColorCode;
AppColors.DarkModeOpenFolderBorder = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorIcons;
colorAndCode.Color = Color.FromArgb(149, 160, 166);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorIcons = colorAndCode.HtmlColorCode;
AppColors.Icons = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeIcons;
colorAndCode.Color = Color.FromArgb(149, 160, 166);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorDarkModeIcons = colorAndCode.HtmlColorCode;
AppColors.DarkModeIcons = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSearchField;
colorAndCode.Color = Color.FromArgb(255, 255, 255);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSearchField = colorAndCode.HtmlColorCode;
AppColors.SearchField = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeSearchField;
colorAndCode.Color = Color.FromArgb(25, 25, 25);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorDarkModeSearchField = colorAndCode.HtmlColorCode;
AppColors.DarkModeSearchField = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorBackground;
colorAndCode.Color = Color.FromArgb(255, 255, 255);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorBackground = colorAndCode.HtmlColorCode;
AppColors.Background = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeBackground;
colorAndCode.Color = Color.FromArgb(32, 32, 32);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorDarkModeBackground = colorAndCode.HtmlColorCode;
AppColors.DarkModeBackground = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorBackgroundBorder;
colorAndCode.Color = Color.FromArgb(0, 0, 0);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorBackgroundBorder = colorAndCode.HtmlColorCode;
AppColors.BackgroundBorder = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorDarkModeBackgroundBorder;
colorAndCode.Color = Color.FromArgb(0, 0, 0);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorDarkModeBackgroundBorder = colorAndCode.HtmlColorCode;
AppColors.DarkModeBackgroundBorder = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrow;
colorAndCode.Color = Color.FromArgb(96, 96, 96);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrow = colorAndCode.HtmlColorCode;
AppColors.Arrow = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowHoverBackground;
colorAndCode.Color = Color.FromArgb(218, 218, 218);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowHoverBackground = colorAndCode.HtmlColorCode;
AppColors.ArrowHoverBackground = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowHover;
colorAndCode.Color = Color.FromArgb(0, 0, 0);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowHover = colorAndCode.HtmlColorCode;
AppColors.ArrowHover = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowClick;
colorAndCode.Color = Color.FromArgb(255, 255, 255);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowClick = colorAndCode.HtmlColorCode;
AppColors.ArrowClick = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowClickBackground;
colorAndCode.Color = Color.FromArgb(96, 96, 96);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowClickBackground = colorAndCode.HtmlColorCode;
AppColors.ArrowClickBackground = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSliderArrowsAndTrackHover;
colorAndCode.Color = Color.FromArgb(192, 192, 192);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSliderArrowsAndTrackHover = colorAndCode.HtmlColorCode;
AppColors.SliderArrowsAndTrackHover = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSlider;
colorAndCode.Color = Color.FromArgb(205, 205, 205);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSlider = colorAndCode.HtmlColorCode;
AppColors.Slider = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSliderHover;
colorAndCode.Color = Color.FromArgb(166, 166, 166);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSliderHover = colorAndCode.HtmlColorCode;
AppColors.SliderHover = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSliderDragging;
colorAndCode.Color = Color.FromArgb(96, 96, 96);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSliderDragging = colorAndCode.HtmlColorCode;
AppColors.SliderDragging = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorScrollbarBackground;
colorAndCode.Color = Color.FromArgb(240, 240, 240);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorScrollbarBackground = colorAndCode.HtmlColorCode;
AppColors.ScrollbarBackground = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowDarkMode;
colorAndCode.Color = Color.FromArgb(103, 103, 103);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowDarkMode = colorAndCode.HtmlColorCode;
AppColors.ArrowDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowHoverBackgroundDarkMode;
colorAndCode.Color = Color.FromArgb(55, 55, 55);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowHoverBackgroundDarkMode = colorAndCode.HtmlColorCode;
AppColors.ArrowHoverBackgroundDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowHoverDarkMode;
colorAndCode.Color = Color.FromArgb(103, 103, 103);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowHoverDarkMode = colorAndCode.HtmlColorCode;
AppColors.ArrowHoverDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowClickDarkMode;
colorAndCode.Color = Color.FromArgb(23, 23, 23);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowClickDarkMode = colorAndCode.HtmlColorCode;
AppColors.ArrowClickDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorArrowClickBackgroundDarkMode;
colorAndCode.Color = Color.FromArgb(166, 166, 166);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorArrowClickBackgroundDarkMode = colorAndCode.HtmlColorCode;
AppColors.ArrowClickBackgroundDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSliderArrowsAndTrackHoverDarkMode;
colorAndCode.Color = Color.FromArgb(77, 77, 77);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSliderArrowsAndTrackHoverDarkMode = colorAndCode.HtmlColorCode;
AppColors.SliderArrowsAndTrackHoverDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSliderDarkMode;
colorAndCode.Color = Color.FromArgb(77, 77, 77);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSliderDarkMode = colorAndCode.HtmlColorCode;
AppColors.SliderDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSliderHoverDarkMode;
colorAndCode.Color = Color.FromArgb(122, 122, 122);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSliderHoverDarkMode = colorAndCode.HtmlColorCode;
AppColors.SliderHoverDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorSliderDraggingDarkMode;
colorAndCode.Color = Color.FromArgb(166, 166, 166);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorSliderDraggingDarkMode = colorAndCode.HtmlColorCode;
AppColors.SliderDraggingDarkMode = colorAndCode.Color;
colorAndCode.HtmlColorCode = Settings.Default.ColorScrollbarBackgroundDarkMode;
colorAndCode.Color = Color.FromArgb(23, 23, 23);
colorAndCode = ProcessColorAndCode(converter, colorAndCode, ref changed);
ProcessColorAndCode(converter, ref colorAndCode, ref resetDefaults);
Settings.Default.ColorScrollbarBackgroundDarkMode = colorAndCode.HtmlColorCode;
AppColors.ScrollbarBackgroundDarkMode = colorAndCode.Color;
if (save && changed)
if (save && resetDefaults)
{
Settings.Default.Save();
}
@ -422,7 +422,7 @@ namespace SystemTrayMenu
try
{
object registryHideFileExt = Registry.GetValue(keyName, valueName, 1);
object? registryHideFileExt = Registry.GetValue(keyName, valueName, 1);
if (registryHideFileExt == null)
{
@ -460,23 +460,36 @@ namespace SystemTrayMenu
}
}
private static ColorAndCode ProcessColorAndCode(
private static void ProcessColorAndCode(
ColorConverter colorConverter,
ColorAndCode colorAndCode,
ref bool changedHtmlColorCode)
ref ColorAndCode colorAndCode,
ref bool resetDefaults)
{
Color? color;
try
{
colorAndCode.Color = (Color)colorConverter.ConvertFromString(colorAndCode.HtmlColorCode);
color = (Color?)colorConverter.ConvertFromString(colorAndCode.HtmlColorCode);
if (color != null)
{
colorAndCode.Color = (Color)color;
}
}
catch (ArgumentException ex)
{
Log.Warn($"HtmlColorCode {colorAndCode.HtmlColorCode}", ex);
colorAndCode.HtmlColorCode = ColorTranslator.ToHtml(colorAndCode.Color);
changedHtmlColorCode = true;
resetDefaults = true;
}
}
return colorAndCode;
/// <summary>
/// Helper class to process color settings.
/// </summary>
private struct ColorAndCode
{
public Color Color { get; set; }
public string HtmlColorCode { get; set; }
}
}
}

View file

@ -1,13 +0,0 @@
// <copyright file="Language.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright>
namespace SystemTrayMenu.UserInterface
{
public class Language
{
public string Name { get; set; }
public string Value { get; set; }
}
}

View file

@ -111,11 +111,11 @@ namespace SystemTrayMenu.UserInterface
backColor = AppColors.DarkModeBackground.ToSolidColorBrush();
backColorSearch = AppColors.DarkModeSearchField.ToSolidColorBrush();
backgroundBorder = AppColors.DarkModeBackgroundBorder.ToSolidColorBrush();
Resources["ic_fluent_svgColor"] = AppColors.SolidColorBrushFromString(Settings.Default.ColorDarkModeIcons);
Resources["ic_fluent_svgColor"] = WPFExtensions.SolidColorBrushFromString(Settings.Default.ColorDarkModeIcons);
}
else
{
Resources["ic_fluent_svgColor"] = AppColors.SolidColorBrushFromString(Settings.Default.ColorIcons);
Resources["ic_fluent_svgColor"] = WPFExtensions.SolidColorBrushFromString(Settings.Default.ColorIcons);
}
labelTitle.Foreground = foreColor;

View file

@ -55,7 +55,7 @@
</DockPanel>
</GroupBox>
<GroupBox Header="{u:Translate 'Language'}">
<ComboBox x:Name="comboBoxLanguage" HorizontalAlignment="Left" IsReadOnly="True" DisplayMemberPath="Name" SelectedValuePath="Value" MinWidth="120"/>
<ComboBox x:Name="comboBoxLanguage" HorizontalAlignment="Left" IsReadOnly="True" DisplayMemberPath="DisplayName" SelectedValuePath="Code" MinWidth="120"/>
</GroupBox>
<Button Content="{u:Translate 'Default'}" Margin="3" MinWidth="76" Click="ButtonGeneralDefault_Click" HorizontalAlignment="Left"/>
</StackPanel>

View file

@ -110,75 +110,75 @@ namespace SystemTrayMenu.UserInterface
InitializeLanguage();
void InitializeLanguage()
{
List<Language> dataSource = new()
List<LanguageID> dataSource = new()
{
new Language() { Name = "Afrikaans", Value = "af" },
new Language() { Name = "Azərbaycan", Value = "az" },
new Language() { Name = "bahasa Indonesia", Value = "id" },
new Language() { Name = "català", Value = "ca" },
new Language() { Name = "čeština", Value = "cs" },
new Language() { Name = "Cymraeg", Value = "cy" },
new Language() { Name = "dansk", Value = "da" },
new Language() { Name = "Deutsch", Value = "de" },
new Language() { Name = "eesti keel", Value = "et" },
new Language() { Name = "English", Value = "en" },
new Language() { Name = "English (United Kingdom)", Value = "en-GB" },
new Language() { Name = "Español", Value = "es" },
new Language() { Name = "Esperanto", Value = "eo" },
new Language() { Name = "euskara", Value = "eu" },
new Language() { Name = "Filipino", Value = "tl" },
new Language() { Name = "Français", Value = "fr" },
new Language() { Name = "Italian", Value = "it" },
new Language() { Name = "galego", Value = "gl" },
new Language() { Name = "Hrvatski", Value = "hr" },
new Language() { Name = "Gaeilge", Value = "ga" },
new Language() { Name = "íslenskur", Value = "is" },
new Language() { Name = "kiswahili", Value = "sw" },
new Language() { Name = "Kreyòl ayisyen", Value = "ht" },
new Language() { Name = "Latinus", Value = "la" },
new Language() { Name = "latviski", Value = "lv" },
new Language() { Name = "lietuvių", Value = "lt" },
new Language() { Name = "Magyar", Value = "hu" },
new Language() { Name = "Malti", Value = "mt" },
new Language() { Name = "Melayu", Value = "ms" },
new Language() { Name = "Nederlands", Value = "nl" },
new Language() { Name = "norsk", Value = "no" },
new Language() { Name = "Polski", Value = "pl" },
new Language() { Name = "Português (Brasil)", Value = "pt-BR" },
new Language() { Name = "português (Portugal)", Value = "pt-PT" },
new Language() { Name = "Română", Value = "ro" },
new Language() { Name = "shqiptare", Value = "sq" },
new Language() { Name = "Slovenščina", Value = "sl" },
new Language() { Name = "slovenský", Value = "sk" },
new Language() { Name = "Suorittaa loppuun", Value = "fi" },
new Language() { Name = "svenska", Value = "sv" },
new Language() { Name = "Tiếng Việt", Value = "vi" },
new Language() { Name = "Türkçe ", Value = "tr" },
new Language() { Name = "Ελληνικά", Value = "el" },
new Language() { Name = "беларуская", Value = "bg" },
new Language() { Name = "македонски", Value = "mk" },
new Language() { Name = "русский", Value = "ru" },
new Language() { Name = "Српски", Value = "sr" },
new Language() { Name = "український", Value = "uk" },
new Language() { Name = "ქართული", Value = "ka" },
new Language() { Name = "հայերեն", Value = "hy" },
new Language() { Name = "יידיש", Value = "yi" },
new Language() { Name = "עִברִית", Value = "iw" },
new Language() { Name = "اردو", Value = "ur" },
new Language() { Name = "عربي", Value = "ar" },
new Language() { Name = "فارسی", Value = "fa" },
new Language() { Name = "हिन्दी", Value = "hi" },
new Language() { Name = "ગુજરાતી", Value = "gu" },
new Language() { Name = "தமிழ்", Value = "ta" },
new Language() { Name = "తెలుగు", Value = "te" },
new Language() { Name = "ಕನ್ನಡ", Value = "kn" },
new Language() { Name = "ไทย", Value = "th" },
new Language() { Name = "ພາສາລາວ", Value = "lo" },
new Language() { Name = "ខ្មែរ", Value = "km" },
new Language() { Name = "한국어", Value = "ko" },
new Language() { Name = "中文(正體)", Value = "zh-TW" },
new Language() { Name = "中文(简体)", Value = "zh-CN" },
new Language() { Name = "日本語", Value = "ja" },
new ("Afrikaans", "af"),
new ("Azərbaycan", "az"),
new ("bahasa Indonesia", "id"),
new ("català", "ca"),
new ("čeština", "cs"),
new ("Cymraeg", "cy"),
new ("dansk", "da"),
new ("Deutsch", "de"),
new ("eesti keel", "et"),
new ("English", "en"),
new ("English (United Kingdom)", "en-GB"),
new ("Español", "es"),
new ("Esperanto", "eo"),
new ("euskara", "eu"),
new ("Filipino", "tl"),
new ("Français", "fr"),
new ("Italian", "it"),
new ("galego", "gl"),
new ("Hrvatski", "hr"),
new ("Gaeilge", "ga"),
new ("íslenskur", "is"),
new ("kiswahili", "sw"),
new ("Kreyòl ayisyen", "ht"),
new ("Latinus", "la"),
new ("latviski", "lv"),
new ("lietuvių", "lt"),
new ("Magyar", "hu"),
new ("Malti", "mt"),
new ("Melayu", "ms"),
new ("Nederlands", "nl"),
new ("norsk", "no"),
new ("Polski", "pl"),
new ("Português (Brasil)", "pt-BR"),
new ("português (Portugal)", "pt-PT"),
new ("Română", "ro"),
new ("shqiptare", "sq"),
new ("Slovenščina", "sl"),
new ("slovenský", "sk"),
new ("Suorittaa loppuun", "fi"),
new ("svenska", "sv"),
new ("Tiếng Việt", "vi"),
new ("Türkçe ", "tr"),
new ("Ελληνικά", "el"),
new ("беларуская", "bg"),
new ("македонски", "mk"),
new ("русский", "ru"),
new ("Српски", "sr"),
new ("український", "uk"),
new ("ქართული", "ka"),
new ("հայերեն", "hy"),
new ("יידיש", "yi"),
new ("עִברִית", "iw"),
new ("اردو", "ur"),
new ("عربي", "ar"),
new ("فارسی", "fa"),
new ("हिन्दी", "hi"),
new ("ગુજરાતી", "gu"),
new ("தமிழ்", "ta"),
new ("తెలుగు", "te"),
new ("ಕನ್ನಡ", "kn"),
new ("ไทย", "th"),
new ("ພາສາລາວ", "lo"),
new ("ខ្មែរ", "km"),
new ("한국어", "ko"),
new ("中文(正體)", "zh-TW"),
new ("中文(简体)", "zh-CN"),
new ("日本語", "ja"),
};
comboBoxLanguage.ItemsSource = dataSource;
comboBoxLanguage.SelectedValue = Settings.Default.CurrentCultureInfoName;
@ -666,8 +666,8 @@ namespace SystemTrayMenu.UserInterface
#if TODO // HOTKEY
Settings.Default.HotKey = new KeysConverter().ConvertToInvariantString(textBoxHotkey.Hotkey | textBoxHotkey.HotkeyModifiers);
Settings.Default.CurrentCultureInfoName = comboBoxLanguage.SelectedValue.ToString();
#endif
Settings.Default.CurrentCultureInfoName = comboBoxLanguage.SelectedValue.ToString();
Settings.Default.SizeInPercent = numericUpDownSizeInPercent.Value;
Settings.Default.IconSizeInPercent = numericUpDownIconSizeInPercent.Value;
if (DllImports.NativeMethods.IsTouchEnabled())
@ -1223,5 +1223,21 @@ namespace SystemTrayMenu.UserInterface
public bool ColumnOnlyFiles { get; set; }
}
/// <summary>
/// Pairs of language display names and their ISO 639-1 standard language codes.
/// </summary>
private class LanguageID
{
public LanguageID(string displayName, string languageCode)
{
DisplayName = displayName;
Code = languageCode;
}
public string DisplayName { get; set; }
public string Code { get; set; }
}
}
}

View file

@ -125,9 +125,10 @@ namespace SystemTrayMenu.Utilities
internal static void WriteApplicationRuns()
{
Assembly assembly = Assembly.GetExecutingAssembly();
Version? version = assembly.GetName().Version;
LogValue.Info($"Application Start " +
assembly.ManifestModule.Name + " | " +
assembly.GetName().Version.ToString() + " | " +
(version != null ? version.ToString() : string.Empty) + " | " +
$"ScalingFactor={Scaling.Factor}");
}

View file

@ -13,6 +13,7 @@ namespace SystemTrayMenu.Utilities
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Threading;
using Color = System.Windows.Media.Color;
using Point = System.Windows.Point;
internal static class WPFExtensions
@ -106,5 +107,15 @@ namespace SystemTrayMenu.Utilities
null!,
CultureInfo.InvariantCulture);
}
internal static SolidColorBrush ToSolidColorBrush(this System.Drawing.Color color)
{
return new SolidColorBrush(Color.FromArgb(color.A, color.R, color.G, color.B));
}
internal static SolidColorBrush SolidColorBrushFromString(string value)
{
return new SolidColorBrush((Color)System.Windows.Media.ColorConverter.ConvertFromString(value));
}
}
}