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}" />
+ IsDefault="True"
+ Style="{DynamicResource ThemedButtonStyle}" />
@@ -68,7 +81,10 @@
-
+
///
- public void AddCulture(CultureInfo culture)
+ public void AddCulture(string culture)
{
// 文化数据列
var column = new DataGridTextColumn()
{
- Header = culture.GetFullInfo(),
- Binding = new Binding(string.Format(ValueBindingFormat, culture.Name))
+ MaxWidth = 200,
+ Header = culture,
+ Binding = new Binding(string.Format(ValueBindingFormat, culture))
{
Mode = BindingMode.TwoWay
- }
+ },
+ ElementStyle = (Style)Utils.ModMakerStyles["TextBlock_LeftCenter"],
};
DataGrid_Datas.Columns.Add(column);
- _dataGridI18nColumns.Add(culture.Name, column);
+ _dataGridI18nColumns.Add(culture, column);
}
///
/// 删除文化列
///
///
- public void RemoveCulture(CultureInfo culture)
+ public void RemoveCulture(string culture)
{
- DataGrid_Datas.Columns.Remove(_dataGridI18nColumns[culture.Name]);
- _dataGridI18nColumns.Remove(culture.Name);
+ DataGrid_Datas.Columns.Remove(_dataGridI18nColumns[culture]);
+ _dataGridI18nColumns.Remove(culture);
}
///
@@ -81,14 +83,14 @@ public partial class I18nEditWindow : WindowX
///
///
///
- public void ReplaceCulture(CultureInfo oldCulture, CultureInfo newCulture)
+ public void ReplaceCulture(string oldCulture, string newCulture)
{
//if (_dataGridI18nColumns.ContainsKey(newCultureName))
// throw new();
- var column = _dataGridI18nColumns[oldCulture.Name];
- column.Header = newCulture.GetFullInfo();
- column.Binding = new Binding(string.Format(ValueBindingFormat, newCulture.Name));
- _dataGridI18nColumns.Remove(oldCulture.Name);
- _dataGridI18nColumns.Add(newCulture.Name, column);
+ var column = _dataGridI18nColumns[oldCulture];
+ column.Header = newCulture;
+ column.Binding = new Binding(string.Format(ValueBindingFormat, newCulture));
+ _dataGridI18nColumns.Remove(oldCulture);
+ _dataGridI18nColumns.Add(newCulture, column);
}
}
diff --git a/VPet.ModMaker/Views/ModEdit/ModEditWindow.xaml b/VPet.ModMaker/Views/ModEdit/ModEditWindow.xaml
index 4a03882..fae1b72 100644
--- a/VPet.ModMaker/Views/ModEdit/ModEditWindow.xaml
+++ b/VPet.ModMaker/Views/ModEdit/ModEditWindow.xaml
@@ -304,6 +304,11 @@
+