diff --git a/VPet.ModMaker/Styles.cs b/VPet.ModMaker/ModMakerStyles.cs similarity index 100% rename from VPet.ModMaker/Styles.cs rename to VPet.ModMaker/ModMakerStyles.cs diff --git a/VPet.ModMaker/Models/ModMaker.cs b/VPet.ModMaker/Models/ModMaker.cs index 2e195ba..9800d06 100644 --- a/VPet.ModMaker/Models/ModMaker.cs +++ b/VPet.ModMaker/Models/ModMaker.cs @@ -15,7 +15,6 @@ namespace VPet.ModMaker.Models; public class ModMaker : MainPlugin { public ILine Set; - public override string PluginName => "ModMaker"; public ModMakerWindow Maker; @@ -38,7 +37,7 @@ public class ModMaker : MainPlugin Setting(); }; modset.Items.Add(menuset); - Application.Current.Resources.MergedDictionaries.Add(new ModMakerStyles()); + Application.Current.Resources.MergedDictionaries.Add(Utils.ModMakerStyles); } public override void Setting() diff --git a/VPet.ModMaker/Models/Utils.cs b/VPet.ModMaker/Models/Utils.cs index 4f6db90..a605a02 100644 --- a/VPet.ModMaker/Models/Utils.cs +++ b/VPet.ModMaker/Models/Utils.cs @@ -26,6 +26,8 @@ public static class Utils public const int DecodePixelHeight = 250; public static char[] Separator { get; } = new char[] { '_' }; + public static ModMakerStyles ModMakerStyles { get; } = new ModMakerStyles(); + //public static BitmapImage LoadImageToStream(string imagePath) //{ // BitmapImage bitmapImage = new(); diff --git a/VPet.ModMaker/VPet.ModMaker.csproj b/VPet.ModMaker/VPet.ModMaker.csproj index 8e71719..5b0801b 100644 --- a/VPet.ModMaker/VPet.ModMaker.csproj +++ b/VPet.ModMaker/VPet.ModMaker.csproj @@ -124,7 +124,7 @@ - + diff --git a/VPet.ModMaker/ViewModels/ModEdit/AddCultureWindowVM.cs b/VPet.ModMaker/ViewModels/ModEdit/AddCultureWindowVM.cs index 154a316..39955d6 100644 --- a/VPet.ModMaker/ViewModels/ModEdit/AddCultureWindowVM.cs +++ b/VPet.ModMaker/ViewModels/ModEdit/AddCultureWindowVM.cs @@ -1,7 +1,9 @@ using HKW.HKWViewModels.SimpleObservable; +using LinePutScript.Localization.WPF; using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -27,15 +29,45 @@ public class AddCultureWindowVM /// public ObservableValue Culture { get; } = new(); + /// + /// 当前文化全名 + /// + public ObservableValue CultureFullName { get; } = new(UnknownCulture); + /// /// 搜索文化 /// public ObservableValue Search { get; } = new(); + public static string UnknownCulture = "未知文化".Translate(); + public AddCultureWindowVM() { ShowCultures.Value = AllCultures; Search.ValueChanged += Search_ValueChanged; + Culture.ValueChanged += Culture_ValueChanged; + } + + private void Culture_ValueChanged(string oldValue, string newValue) + { + if (string.IsNullOrWhiteSpace(newValue)) + { + CultureFullName.Value = UnknownCulture; + return; + } + CultureInfo info = null!; + try + { + info = CultureInfo.GetCultureInfo(newValue); + } + catch + { + CultureFullName.Value = UnknownCulture; + } + if (info is not null) + { + CultureFullName.Value = info.GetFullInfo(); + } } private void Search_ValueChanged(string oldValue, string newValue) diff --git a/VPet.ModMaker/ViewModels/ModEdit/ModEditWindowVM.cs b/VPet.ModMaker/ViewModels/ModEdit/ModEditWindowVM.cs index 0851bbd..bcf9fae 100644 --- a/VPet.ModMaker/ViewModels/ModEdit/ModEditWindowVM.cs +++ b/VPet.ModMaker/ViewModels/ModEdit/ModEditWindowVM.cs @@ -15,6 +15,8 @@ using System.Windows; using System.IO; using LinePutScript.Localization.WPF; using Panuon.WPF.UI; +using VPet.ModMaker.Views.ModEdit.I18nEdit; +using System.Globalization; namespace VPet.ModMaker.ViewModels.ModEdit; @@ -65,6 +67,11 @@ public class ModEditWindowVM /// 保存至命令 /// public ObservableCommand SaveToCommand { get; } = new(); + + /// + /// 编辑多语言内容 + /// + public ObservableCommand EditI18nCommand { get; } = new(); #endregion public ModEditWindowVM(ModEditWindow window) @@ -75,11 +82,25 @@ public class ModEditWindowVM AddCultureCommand.ExecuteEvent += AddCulture; EditCultureCommand.ExecuteEvent += EditCulture; RemoveCultureCommand.ExecuteEvent += RemoveCulture; + EditI18nCommand.ExecuteEvent += EditI18n; SaveCommand.ExecuteEvent += Save; SaveToCommand.ExecuteEvent += SaveTo; } + private void EditI18n() + { + var window = new I18nEditWindow(); + foreach (var culture in I18nHelper.Current.CultureNames) + window.AddCulture(culture); + //if (window.IsCancel) + // return; + //I18nHelper.Current.CultureNames.Add(window.ViewModel.Culture.Value); + //if (I18nHelper.Current.CultureNames.Count == 1) + // I18nHelper.Current.CultureName.Value = window.ViewModel.Culture.Value; + window.ShowDialog(); + } + /// /// 关闭 /// diff --git a/VPet.ModMaker/Views/ModEdit/AddCultureWindow.xaml b/VPet.ModMaker/Views/ModEdit/AddCultureWindow.xaml index 6485c1d..8733809 100644 --- a/VPet.ModMaker/Views/ModEdit/AddCultureWindow.xaml +++ b/VPet.ModMaker/Views/ModEdit/AddCultureWindow.xaml @@ -14,15 +14,11 @@ d:DataContext="{d:DesignInstance Type=vm:AddCultureWindowVM}" WindowStartupLocation="CenterScreen" mc:Ignorable="d"> - - - - + - @@ -32,12 +28,27 @@ + + + + + + + - + @@ -53,14 +64,16 @@ Margin="10" Click="Button_Cancel_Click" Content="{ll:Str 取消}" - IsCancel="True" /> + IsCancel="True" + Style="{DynamicResource ThemedButtonStyle}" />