Skip to content

Commit

Permalink
add CN I18N
Browse files Browse the repository at this point in the history
  • Loading branch information
MikiraSora committed Oct 21, 2024
1 parent f1fd082 commit 85d1d7d
Show file tree
Hide file tree
Showing 12 changed files with 454 additions and 30 deletions.
2 changes: 2 additions & 0 deletions OngekiFumenEditor/App.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
</valueconverters:EnumToStringConverter>
<converters1:CultureInfoNameConverter x:Key="CultureInfoNameConverter">
</converters1:CultureInfoNameConverter>
<valueconverters:NullToVisibilityConverter x:Key="NullToVisibilityConverter"></valueconverters:NullToVisibilityConverter>
<valueconverters:LocalizeConverter x:Key="LocalizeConverter"></valueconverters:LocalizeConverter>
<valueconverters:AsyncImageLoadConverter x:Key="AsyncImageLoadConverter">
</valueconverters:AsyncImageLoadConverter>
<valueconverters:SelectionMovableItemsCheckConverter x:Key="SelectionMovableItemsCheckConverter" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ private static ModifierKeys GetActualModifiers(Key key, ModifierKeys modifiers)

public void ChangeKeyBinding(KeyBindingDefinition definition, Key newKey, ModifierKeys newModifier)
{
Log.LogInfo($"{KeyBindingDefinition.FormatToExpression(definition.Key, definition.Modifiers)} --> {KeyBindingDefinition.FormatToExpression(newKey, newModifier)}");
Log.LogInfo($"[{definition.Key}] {KeyBindingDefinition.FormatToExpression(definition.Key, definition.Modifiers)} --> {KeyBindingDefinition.FormatToExpression(newKey, newModifier)}");

definition.Key = newKey;
definition.Modifiers = newModifier;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class KeyBindingDefinition : PropertyChangedBase

public string ConfigKey => resourceName;

public string Name => resourceName/*Resources.ResourceManager.GetString(resourceName)*/;
public string Name => Resources.ResourceManager.GetString(resourceName);

public KeyBindingDefinition(string resourceName, Key defaultKey) : this(resourceName, ModifierKeys.None, defaultKey)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:markup="clr-namespace:OngekiFumenEditor.UI.Markup"
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="设置快捷键"
Title="{markup:Translate [AssignKeybind]}"
Width="300"
Background="{DynamicResource EnvironmentWindowBackground}"
SaveWindowPosition="True"
Expand All @@ -22,8 +23,14 @@
<StackPanel Margin="10">
<TextBlock
HorizontalAlignment="Center"
FontSize="16"
Text="{Binding Definition.Name, StringFormat=请为 {0} 输入合适的快捷键组合:}" />
FontSize="16" >
<TextBlock.Text>
<MultiBinding Converter="{StaticResource LocalizeConverter}">
<markup:Translate Path="[AssignKeyBinding]"/>
<Binding Path="Definition.Name"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<TextBlock
Margin="0,15"
HorizontalAlignment="Center"
Expand All @@ -34,8 +41,16 @@
<TextBlock
HorizontalAlignment="Center"
FontSize="16"
FontWeight="Bold"
Text="{Binding ConflictDefinition.Name, StringFormat=与 {0} 的绑定键位起冲突}" />
Visibility="{Binding ConflictDefinition,Converter={StaticResource NullToVisibilityConverter} }"
Foreground="OrangeRed"
FontWeight="Bold" >
<TextBlock.Text>
<MultiBinding Converter="{StaticResource LocalizeConverter}">
<markup:Translate Path="[KeyBindingConflictDetect]"/>
<Binding Path="ConflictDefinition.Name"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
Expand All @@ -46,26 +61,26 @@
Margin="5"
Padding="10,5,10,5"
Click="Button_Click_1"
Content="{markup:Translate [Comfirm]}"
FontSize="16">
确定
</Button>

<Button
Grid.Column="1"
Margin="5"
Padding="10,5,10,5"
Click="Button_Click"
Content="{markup:Translate [Clear]}"
FontSize="16">
重置
</Button>

<Button
Grid.Column="2"
Margin="5"
Padding="10,5,10,5"
Click="Button_Click_2"
Content="{markup:Translate [Reset]}"
FontSize="16">
清空绑定
</Button>
</Grid>
</StackPanel>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,13 +113,14 @@ private void UpdateExpression()
if (!string.IsNullOrWhiteSpace(CurrentExpression))
{
ConflictDefinition = IoC.Get<IKeyBindingManager>().QueryKeyBinding(key, modifier);
if (ConflictDefinition == Definition)
ConflictDefinition = default;
PropertyChanged?.Invoke(this, new(nameof(ConflictDefinition)));
}
}

private void Button_Click_1(object sender, RoutedEventArgs e)
{
//确定
if (ConflictDefinition is not null)
{
if (MessageBox.Show($"你绑定的键位和 {ConflictDefinition.Name} 冲突, 如果继续绑定则清空对方冲突的键位, 是否继续?", "警告", MessageBoxButton.YesNo) != MessageBoxResult.Yes)
Expand All @@ -132,13 +133,9 @@ private void Button_Click_1(object sender, RoutedEventArgs e)

private void Button_Click_2(object sender, RoutedEventArgs e)
{
//清空绑定
key = Key.None;
modifier = ModifierKeys.None;

key = Definition.DefaultKey;
modifier = Definition.DefaultModifiers;
UpdateExpression();
DialogResult = true;
Close();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,12 @@
using OngekiFumenEditor.Properties;
using OngekiFumenEditor.UI.Dialogs;
using OngekiFumenEditor.Utils;
using System;
using System.Collections.ObjectModel;
using System.ComponentModel.Composition;
using System.Linq;
using System.Windows;
using System.Windows.Input;

namespace OngekiFumenEditor.Kernel.SettingPages.KeyBinding.ViewModels
{
Expand All @@ -21,14 +25,50 @@ public KeyBindingSettingViewModel()
{
keybindingManager = IoC.Get<IKeyBindingManager>();

Definitions = keybindingManager.KeyBindingDefinations.ToArray();
definitions = keybindingManager.KeyBindingDefinations.ToArray();
UpdateDisplayList();
}

private void UpdateDisplayList()
{
Definitions.Clear();
var list = definitions.AsEnumerable();

if (IsShowNotAssignOnly)
list = list.Where(x => x.Key == Key.None);

if (!string.IsNullOrWhiteSpace(FilterKeywords))
list = list.Where(x => string.Join(" ", [
x.Name,
x.Key,
x.Modifiers,
x.ConfigKey
]).Contains(FilterKeywords, StringComparison.InvariantCultureIgnoreCase));

Definitions.AddRange(list);
}

public string SettingsPagePath => "快捷键";

public string SettingsPageName => "键位设置";

public KeyBindingDefinition[] Definitions { get; }
private KeyBindingDefinition[] definitions;

public ObservableCollection<KeyBindingDefinition> Definitions { get; } = new();

private bool isShowNotAssignOnly;
public bool IsShowNotAssignOnly
{
get => isShowNotAssignOnly;
set => Set(ref isShowNotAssignOnly, value);
}

private string filterKeywords;
public string FilterKeywords
{
get => filterKeywords;
set => Set(ref filterKeywords, value);
}

public void ApplyChanges()
{
Expand All @@ -46,6 +86,15 @@ public void ChangeKeybind(ActionExecutionContext ctx)
if (KeyBindingDefinition.TryParseExpression(dialog.CurrentExpression, out var newKey, out var newModifier))
keybindingManager.ChangeKeyBinding(definition, newKey, newModifier);
}
if (dialog.ConflictDefinition is KeyBindingDefinition conflictDefinition)
keybindingManager.ChangeKeyBinding(conflictDefinition, Key.None, ModifierKeys.None);
}
public void ResetAllDefinitions()
{
if (MessageBox.Show(Resources.ComfirmResetAllKeybindingDefinitions, Resources.Warning, MessageBoxButton.YesNo) != MessageBoxResult.Yes)
return;
foreach (var definition in Definitions)
keybindingManager.DefaultKeyBinding(definition);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
Margin="30,3,3,3"
Padding="10,5"
cal:Message.Attach="ChangeKeybind($executionContext)"
Content="更改绑定" />
Content="{markup:Translate [Change]}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
Expand Down
Loading

0 comments on commit 85d1d7d

Please sign in to comment.