From 41f7aa84ac876f44af684eee1ad29467c0bc43dd Mon Sep 17 00:00:00 2001 From: walterlv Date: Mon, 8 Apr 2024 18:49:47 +0800 Subject: [PATCH] ux: Add default terminal settings UI. --- src/Resources/Locales/en_US.axaml | 8 ++++++ src/Resources/Locales/zh_CN.axaml | 8 ++++++ src/ViewModels/Preference.cs | 13 ++++++++++ src/Views/Preference.axaml | 37 +++++++++++++++++++++++----- src/Views/Preference.axaml.cs | 41 +++++++++++++++++++++++++++++++ 5 files changed, 101 insertions(+), 6 deletions(-) diff --git a/src/Resources/Locales/en_US.axaml b/src/Resources/Locales/en_US.axaml index 68e57b4c..3c580bb1 100644 --- a/src/Resources/Locales/en_US.axaml +++ b/src/Resources/Locales/en_US.axaml @@ -254,6 +254,14 @@ Theme GENERAL Avatar Server + Default Terminal/Shell + Windows Terminal + Git Bash (Shell) + PowerShell (Shell) + Gnome + Konsole + AppleScript + xfce4 Check for updates on startup Language History Commits diff --git a/src/Resources/Locales/zh_CN.axaml b/src/Resources/Locales/zh_CN.axaml index 79cf9973..8fd35e6b 100644 --- a/src/Resources/Locales/zh_CN.axaml +++ b/src/Resources/Locales/zh_CN.axaml @@ -254,6 +254,14 @@ 主题 通用配置 头像服务 + 默认终端 + 终端 + Git Bash (Shell) + PowerShell (Shell) + Gnome + Konsole + AppleScript + xfce4 启动时检测软件更新 显示语言 最大历史提交数 diff --git a/src/ViewModels/Preference.cs b/src/ViewModels/Preference.cs index ee8f96a9..1d5670b8 100644 --- a/src/ViewModels/Preference.cs +++ b/src/ViewModels/Preference.cs @@ -115,6 +115,19 @@ namespace SourceGit.ViewModels } } + public string DefaultTerminal + { + get => Models.AvatarManager.SelectedServer; + set + { + if (Models.AvatarManager.SelectedServer != value) + { + Models.AvatarManager.SelectedServer = value; + OnPropertyChanged(nameof(DefaultTerminal)); + } + } + } + public int MaxHistoryCommits { get => _maxHistoryCommits; diff --git a/src/Views/Preference.axaml b/src/Views/Preference.axaml index 24d10e8d..b9265b9d 100644 --- a/src/Views/Preference.axaml +++ b/src/Views/Preference.axaml @@ -20,6 +20,12 @@ ExtendClientAreaToDecorationsHint="True" ExtendClientAreaChromeHints="NoChrome" SystemDecorations="{OnPlatform Full, Linux=None}"> + + + + + + - + https://cravatar.cn/avatar/ - + + + + + + + + + + + + + - + - - - diff --git a/src/Views/Preference.axaml.cs b/src/Views/Preference.axaml.cs index 9dfe9c30..0d35c8e2 100644 --- a/src/Views/Preference.axaml.cs +++ b/src/Views/Preference.axaml.cs @@ -6,9 +6,12 @@ using System.Threading.Tasks; using Avalonia.Collections; using Avalonia.Controls; +using Avalonia.Data.Converters; using Avalonia.Input; using Avalonia.Interactivity; using Avalonia.Media; +using Avalonia.Media.Imaging; +using Avalonia.Platform; using Avalonia.Platform.Storage; using Avalonia.Threading; @@ -242,4 +245,42 @@ namespace SourceGit.Views } } } + + public sealed class TerminalOrShellNameToBitmapConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is string terminalName && !string.IsNullOrWhiteSpace(terminalName)) + { + var icon = AssetLoader.Open(new Uri($"avares://SourceGit/Resources/ExternalTerminalIcons/{terminalName}.png", UriKind.RelativeOrAbsolute)); + return new Bitmap(icon); + } + + return null; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotSupportedException(); + } + } + + public sealed class TerminalOrShellNameToLocalizedNameConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is string terminalName && !string.IsNullOrWhiteSpace(terminalName)) + { + var name = App.Text($"Text.Preference.General.DefaultTerminalOrShell.{terminalName}"); + return name; + } + + return null; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotSupportedException(); + } + } }