mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-06-26 04:44:59 +00:00
ux: Add default terminal settings UI.
This commit is contained in:
parent
acbf3605fd
commit
41f7aa84ac
5 changed files with 101 additions and 6 deletions
|
@ -254,6 +254,14 @@
|
||||||
<x:String x:Key="Text.Preference.Appearance.Theme" xml:space="preserve">Theme</x:String>
|
<x:String x:Key="Text.Preference.Appearance.Theme" xml:space="preserve">Theme</x:String>
|
||||||
<x:String x:Key="Text.Preference.General" xml:space="preserve">GENERAL</x:String>
|
<x:String x:Key="Text.Preference.General" xml:space="preserve">GENERAL</x:String>
|
||||||
<x:String x:Key="Text.Preference.General.AvatarServer" xml:space="preserve">Avatar Server</x:String>
|
<x:String x:Key="Text.Preference.General.AvatarServer" xml:space="preserve">Avatar Server</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.DefaultTerminal" xml:space="preserve">Default Terminal/Shell</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.DefaultTerminalOrShell.wt" xml:space="preserve">Windows Terminal</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.DefaultTerminalOrShell.git-bash" xml:space="preserve">Git Bash (Shell)</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.DefaultTerminalOrShell.pwsh" xml:space="preserve">PowerShell (Shell)</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.DefaultTerminalOrShell.gnome" xml:space="preserve">Gnome</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.DefaultTerminalOrShell.konsole" xml:space="preserve">Konsole</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.DefaultTerminalOrShell.osascript" xml:space="preserve">AppleScript</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.DefaultTerminalOrShell.xfce4" xml:space="preserve">xfce4</x:String>
|
||||||
<x:String x:Key="Text.Preference.General.Check4UpdatesOnStartup" xml:space="preserve">Check for updates on startup</x:String>
|
<x:String x:Key="Text.Preference.General.Check4UpdatesOnStartup" xml:space="preserve">Check for updates on startup</x:String>
|
||||||
<x:String x:Key="Text.Preference.General.Locale" xml:space="preserve">Language</x:String>
|
<x:String x:Key="Text.Preference.General.Locale" xml:space="preserve">Language</x:String>
|
||||||
<x:String x:Key="Text.Preference.General.MaxHistoryCommits" xml:space="preserve">History Commits</x:String>
|
<x:String x:Key="Text.Preference.General.MaxHistoryCommits" xml:space="preserve">History Commits</x:String>
|
||||||
|
|
|
@ -254,6 +254,14 @@
|
||||||
<x:String x:Key="Text.Preference.Appearance.Theme" xml:space="preserve">主题</x:String>
|
<x:String x:Key="Text.Preference.Appearance.Theme" xml:space="preserve">主题</x:String>
|
||||||
<x:String x:Key="Text.Preference.General" xml:space="preserve">通用配置</x:String>
|
<x:String x:Key="Text.Preference.General" xml:space="preserve">通用配置</x:String>
|
||||||
<x:String x:Key="Text.Preference.General.AvatarServer" xml:space="preserve">头像服务</x:String>
|
<x:String x:Key="Text.Preference.General.AvatarServer" xml:space="preserve">头像服务</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.DefaultTerminal" xml:space="preserve">默认终端</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.DefaultTerminalOrShell.wt" xml:space="preserve">终端</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.DefaultTerminalOrShell.git-bash" xml:space="preserve">Git Bash (Shell)</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.DefaultTerminalOrShell.pwsh" xml:space="preserve">PowerShell (Shell)</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.DefaultTerminalOrShell.gnome" xml:space="preserve">Gnome</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.DefaultTerminalOrShell.konsole" xml:space="preserve">Konsole</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.DefaultTerminalOrShell.osascript" xml:space="preserve">AppleScript</x:String>
|
||||||
|
<x:String x:Key="Text.Preference.General.DefaultTerminalOrShell.xfce4" xml:space="preserve">xfce4</x:String>
|
||||||
<x:String x:Key="Text.Preference.General.Check4UpdatesOnStartup" xml:space="preserve">启动时检测软件更新</x:String>
|
<x:String x:Key="Text.Preference.General.Check4UpdatesOnStartup" xml:space="preserve">启动时检测软件更新</x:String>
|
||||||
<x:String x:Key="Text.Preference.General.Locale" xml:space="preserve">显示语言</x:String>
|
<x:String x:Key="Text.Preference.General.Locale" xml:space="preserve">显示语言</x:String>
|
||||||
<x:String x:Key="Text.Preference.General.MaxHistoryCommits" xml:space="preserve">最大历史提交数</x:String>
|
<x:String x:Key="Text.Preference.General.MaxHistoryCommits" xml:space="preserve">最大历史提交数</x:String>
|
||||||
|
|
|
@ -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
|
public int MaxHistoryCommits
|
||||||
{
|
{
|
||||||
get => _maxHistoryCommits;
|
get => _maxHistoryCommits;
|
||||||
|
|
|
@ -20,6 +20,12 @@
|
||||||
ExtendClientAreaToDecorationsHint="True"
|
ExtendClientAreaToDecorationsHint="True"
|
||||||
ExtendClientAreaChromeHints="NoChrome"
|
ExtendClientAreaChromeHints="NoChrome"
|
||||||
SystemDecorations="{OnPlatform Full, Linux=None}">
|
SystemDecorations="{OnPlatform Full, Linux=None}">
|
||||||
|
|
||||||
|
<Window.Resources>
|
||||||
|
<v:TerminalOrShellNameToBitmapConverter x:Key="TerminalOrShellNameToBitmapConverter" />
|
||||||
|
<v:TerminalOrShellNameToLocalizedNameConverter x:Key="TerminalOrShellNameToLocalizedNameConverter" />
|
||||||
|
</Window.Resources>
|
||||||
|
|
||||||
<Grid RowDefinitions="Auto,Auto" Margin="{OnPlatform 0, Linux=6}">
|
<Grid RowDefinitions="Auto,Auto" Margin="{OnPlatform 0, Linux=6}">
|
||||||
<!-- Custom window shadow for Linux -->
|
<!-- Custom window shadow for Linux -->
|
||||||
<Border Grid.Row="0" Grid.RowSpan="2"
|
<Border Grid.Row="0" Grid.RowSpan="2"
|
||||||
|
@ -67,7 +73,7 @@
|
||||||
<TabItem.Header>
|
<TabItem.Header>
|
||||||
<TextBlock Classes="tab_header" Text="{DynamicResource Text.Preference.General}"/>
|
<TextBlock Classes="tab_header" Text="{DynamicResource Text.Preference.General}"/>
|
||||||
</TabItem.Header>
|
</TabItem.Header>
|
||||||
<Grid Margin="8" RowDefinitions="32,32,32,32,32,32" ColumnDefinitions="Auto,*">
|
<Grid Margin="8" RowDefinitions="32,32,32,32,32,32,32" ColumnDefinitions="Auto,*">
|
||||||
<TextBlock Grid.Row="0" Grid.Column="0"
|
<TextBlock Grid.Row="0" Grid.Column="0"
|
||||||
Text="{DynamicResource Text.Preference.General.Locale}"
|
Text="{DynamicResource Text.Preference.General.Locale}"
|
||||||
HorizontalAlignment="Right"
|
HorizontalAlignment="Right"
|
||||||
|
@ -94,12 +100,31 @@
|
||||||
<sys:String>https://cravatar.cn/avatar/</sys:String>
|
<sys:String>https://cravatar.cn/avatar/</sys:String>
|
||||||
</ComboBox.Items>
|
</ComboBox.Items>
|
||||||
</ComboBox>
|
</ComboBox>
|
||||||
|
|
||||||
<TextBlock Grid.Row="2" Grid.Column="0"
|
<TextBlock Grid.Row="2" Grid.Column="0"
|
||||||
|
Text="{DynamicResource Text.Preference.General.DefaultTerminal}"
|
||||||
|
HorizontalAlignment="Right"
|
||||||
|
Margin="0,0,16,0"/>
|
||||||
|
<ComboBox Grid.Row="2" Grid.Column="1"
|
||||||
|
MinHeight="28"
|
||||||
|
Padding="8,0"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
SelectedItem="{Binding DefaultTerminal, Mode=TwoWay}">
|
||||||
|
<ComboBox.ItemTemplate>
|
||||||
|
<DataTemplate DataType="x:String">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<Image Width="16" Height="16" Source="{Binding Converter={StaticResource TerminalOrShellNameToBitmapConverter}}" />
|
||||||
|
<TextBlock Text="{Binding Converter={StaticResource TerminalOrShellNameToLocalizedNameConverter}}" />
|
||||||
|
</StackPanel>
|
||||||
|
</DataTemplate>
|
||||||
|
</ComboBox.ItemTemplate>
|
||||||
|
</ComboBox>
|
||||||
|
|
||||||
|
<TextBlock Grid.Row="3" Grid.Column="0"
|
||||||
Text="{DynamicResource Text.Preference.General.MaxHistoryCommits}"
|
Text="{DynamicResource Text.Preference.General.MaxHistoryCommits}"
|
||||||
HorizontalAlignment="Right"
|
HorizontalAlignment="Right"
|
||||||
Margin="0,0,16,0"/>
|
Margin="0,0,16,0"/>
|
||||||
<Grid Grid.Row="2" Grid.Column="1" ColumnDefinitions="*,64">
|
<Grid Grid.Row="3" Grid.Column="1" ColumnDefinitions="*,64">
|
||||||
<Slider Grid.Column="0"
|
<Slider Grid.Column="0"
|
||||||
Minimum="20000" Maximum="100000"
|
Minimum="20000" Maximum="100000"
|
||||||
TickPlacement="BottomRight" TickFrequency="5000"
|
TickPlacement="BottomRight" TickFrequency="5000"
|
||||||
|
@ -123,16 +148,16 @@
|
||||||
Text="{Binding MaxHistoryCommits}"/>
|
Text="{Binding MaxHistoryCommits}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<CheckBox Grid.Row="3" Grid.Column="1"
|
<CheckBox Grid.Row="4" Grid.Column="1"
|
||||||
Content="{DynamicResource Text.Preference.General.RestoreTabs}"
|
Content="{DynamicResource Text.Preference.General.RestoreTabs}"
|
||||||
IsChecked="{Binding RestoreTabs, Mode=TwoWay}"/>
|
IsChecked="{Binding RestoreTabs, Mode=TwoWay}"/>
|
||||||
|
|
||||||
<CheckBox Grid.Row="4" Grid.Column="1"
|
<CheckBox Grid.Row="5" Grid.Column="1"
|
||||||
Height="32"
|
Height="32"
|
||||||
Content="{DynamicResource Text.Preference.General.UseFixedTabWidth}"
|
Content="{DynamicResource Text.Preference.General.UseFixedTabWidth}"
|
||||||
IsChecked="{Binding Source={x:Static vm:Preference.Instance}, Path=UseFixedTabWidth, Mode=TwoWay}"/>
|
IsChecked="{Binding Source={x:Static vm:Preference.Instance}, Path=UseFixedTabWidth, Mode=TwoWay}"/>
|
||||||
|
|
||||||
<CheckBox Grid.Row="5" Grid.Column="1"
|
<CheckBox Grid.Row="6" Grid.Column="1"
|
||||||
Height="32"
|
Height="32"
|
||||||
Content="{DynamicResource Text.Preference.General.Check4UpdatesOnStartup}"
|
Content="{DynamicResource Text.Preference.General.Check4UpdatesOnStartup}"
|
||||||
IsChecked="{Binding Source={x:Static vm:Preference.Instance}, Path=Check4UpdatesOnStartup, Mode=TwoWay}"/>
|
IsChecked="{Binding Source={x:Static vm:Preference.Instance}, Path=Check4UpdatesOnStartup, Mode=TwoWay}"/>
|
||||||
|
|
|
@ -6,9 +6,12 @@ using System.Threading.Tasks;
|
||||||
|
|
||||||
using Avalonia.Collections;
|
using Avalonia.Collections;
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Data.Converters;
|
||||||
using Avalonia.Input;
|
using Avalonia.Input;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
using Avalonia.Media;
|
using Avalonia.Media;
|
||||||
|
using Avalonia.Media.Imaging;
|
||||||
|
using Avalonia.Platform;
|
||||||
using Avalonia.Platform.Storage;
|
using Avalonia.Platform.Storage;
|
||||||
using Avalonia.Threading;
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue