mirror of
https://github.com/LorisYounger/VPet.ModMaker.git
synced 2024-08-30 18:22:21 +00:00
更新
This commit is contained in:
parent
2d72f2d46f
commit
7e94da39c4
@ -15,7 +15,6 @@ namespace VPet.ModMaker.Models;
|
|||||||
public class ModMaker : MainPlugin
|
public class ModMaker : MainPlugin
|
||||||
{
|
{
|
||||||
public ILine Set;
|
public ILine Set;
|
||||||
|
|
||||||
public override string PluginName => "ModMaker";
|
public override string PluginName => "ModMaker";
|
||||||
|
|
||||||
public ModMakerWindow Maker;
|
public ModMakerWindow Maker;
|
||||||
@ -38,7 +37,7 @@ public class ModMaker : MainPlugin
|
|||||||
Setting();
|
Setting();
|
||||||
};
|
};
|
||||||
modset.Items.Add(menuset);
|
modset.Items.Add(menuset);
|
||||||
Application.Current.Resources.MergedDictionaries.Add(new ModMakerStyles());
|
Application.Current.Resources.MergedDictionaries.Add(Utils.ModMakerStyles);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Setting()
|
public override void Setting()
|
||||||
|
@ -26,6 +26,8 @@ public static class Utils
|
|||||||
public const int DecodePixelHeight = 250;
|
public const int DecodePixelHeight = 250;
|
||||||
public static char[] Separator { get; } = new char[] { '_' };
|
public static char[] Separator { get; } = new char[] { '_' };
|
||||||
|
|
||||||
|
public static ModMakerStyles ModMakerStyles { get; } = new ModMakerStyles();
|
||||||
|
|
||||||
//public static BitmapImage LoadImageToStream(string imagePath)
|
//public static BitmapImage LoadImageToStream(string imagePath)
|
||||||
//{
|
//{
|
||||||
// BitmapImage bitmapImage = new();
|
// BitmapImage bitmapImage = new();
|
||||||
|
@ -124,7 +124,7 @@
|
|||||||
<Compile Include="Models\ModModel\SelectTextModel.cs" />
|
<Compile Include="Models\ModModel\SelectTextModel.cs" />
|
||||||
<Compile Include="Models\ModModel\WorkModel.cs" />
|
<Compile Include="Models\ModModel\WorkModel.cs" />
|
||||||
<Compile Include="SimpleObservable\ObservableCommandT.cs" />
|
<Compile Include="SimpleObservable\ObservableCommandT.cs" />
|
||||||
<Compile Include="Styles.cs" />
|
<Compile Include="ModMakerStyles.cs" />
|
||||||
<Compile Include="ViewModels\ModEdit\AddCultureWindowVM.cs" />
|
<Compile Include="ViewModels\ModEdit\AddCultureWindowVM.cs" />
|
||||||
<Compile Include="ViewModels\ModEdit\AnimeEdit\FoodAnimeEditWindowVM.cs" />
|
<Compile Include="ViewModels\ModEdit\AnimeEdit\FoodAnimeEditWindowVM.cs" />
|
||||||
<Compile Include="ViewModels\ModEdit\AnimeEdit\AnimeEditWindowVM.cs" />
|
<Compile Include="ViewModels\ModEdit\AnimeEdit\AnimeEditWindowVM.cs" />
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
using HKW.HKWViewModels.SimpleObservable;
|
using HKW.HKWViewModels.SimpleObservable;
|
||||||
|
using LinePutScript.Localization.WPF;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@ -27,15 +29,45 @@ public class AddCultureWindowVM
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public ObservableValue<string> Culture { get; } = new();
|
public ObservableValue<string> Culture { get; } = new();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 当前文化全名
|
||||||
|
/// </summary>
|
||||||
|
public ObservableValue<string> CultureFullName { get; } = new(UnknownCulture);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 搜索文化
|
/// 搜索文化
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ObservableValue<string> Search { get; } = new();
|
public ObservableValue<string> Search { get; } = new();
|
||||||
|
|
||||||
|
public static string UnknownCulture = "未知文化".Translate();
|
||||||
|
|
||||||
public AddCultureWindowVM()
|
public AddCultureWindowVM()
|
||||||
{
|
{
|
||||||
ShowCultures.Value = AllCultures;
|
ShowCultures.Value = AllCultures;
|
||||||
Search.ValueChanged += Search_ValueChanged;
|
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)
|
private void Search_ValueChanged(string oldValue, string newValue)
|
||||||
|
@ -15,6 +15,8 @@ using System.Windows;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using LinePutScript.Localization.WPF;
|
using LinePutScript.Localization.WPF;
|
||||||
using Panuon.WPF.UI;
|
using Panuon.WPF.UI;
|
||||||
|
using VPet.ModMaker.Views.ModEdit.I18nEdit;
|
||||||
|
using System.Globalization;
|
||||||
|
|
||||||
namespace VPet.ModMaker.ViewModels.ModEdit;
|
namespace VPet.ModMaker.ViewModels.ModEdit;
|
||||||
|
|
||||||
@ -65,6 +67,11 @@ public class ModEditWindowVM
|
|||||||
/// 保存至命令
|
/// 保存至命令
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ObservableCommand SaveToCommand { get; } = new();
|
public ObservableCommand SaveToCommand { get; } = new();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 编辑多语言内容
|
||||||
|
/// </summary>
|
||||||
|
public ObservableCommand EditI18nCommand { get; } = new();
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public ModEditWindowVM(ModEditWindow window)
|
public ModEditWindowVM(ModEditWindow window)
|
||||||
@ -75,11 +82,25 @@ public class ModEditWindowVM
|
|||||||
AddCultureCommand.ExecuteEvent += AddCulture;
|
AddCultureCommand.ExecuteEvent += AddCulture;
|
||||||
EditCultureCommand.ExecuteEvent += EditCulture;
|
EditCultureCommand.ExecuteEvent += EditCulture;
|
||||||
RemoveCultureCommand.ExecuteEvent += RemoveCulture;
|
RemoveCultureCommand.ExecuteEvent += RemoveCulture;
|
||||||
|
EditI18nCommand.ExecuteEvent += EditI18n;
|
||||||
|
|
||||||
SaveCommand.ExecuteEvent += Save;
|
SaveCommand.ExecuteEvent += Save;
|
||||||
SaveToCommand.ExecuteEvent += SaveTo;
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 关闭
|
/// 关闭
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -14,15 +14,11 @@
|
|||||||
d:DataContext="{d:DesignInstance Type=vm:AddCultureWindowVM}"
|
d:DataContext="{d:DesignInstance Type=vm:AddCultureWindowVM}"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<Window.Resources>
|
<Grid>
|
||||||
<ResourceDictionary Source="/VPet-Simulator.Windows.Interface;component/ResourceStyle.xaml" />
|
|
||||||
</Window.Resources>
|
|
||||||
<Grid>
|
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition />
|
<ColumnDefinition />
|
||||||
<ColumnDefinition Width="Auto" MinWidth="100" />
|
<ColumnDefinition Width="Auto" MinWidth="100" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition />
|
<RowDefinition />
|
||||||
@ -32,12 +28,27 @@
|
|||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition />
|
<RowDefinition />
|
||||||
<RowDefinition />
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
<ColumnDefinition />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Label Content="{ll:Str 当前文化}" />
|
||||||
|
<TextBlock
|
||||||
|
Grid.Column="1"
|
||||||
|
Margin="10,0,0,0"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{Binding CultureFullName.Value}" />
|
||||||
|
</Grid>
|
||||||
<TextBox
|
<TextBox
|
||||||
x:Name="TextBox_Lang"
|
x:Name="TextBox_Lang"
|
||||||
|
Grid.Row="1"
|
||||||
pu:TextBoxHelper.Watermark="{ll:Str 文化名称}"
|
pu:TextBoxHelper.Watermark="{ll:Str 文化名称}"
|
||||||
|
Style="{DynamicResource StandardTextBoxStyle}"
|
||||||
Text="{Binding Culture.Value, UpdateSourceTrigger=PropertyChanged}" />
|
Text="{Binding Culture.Value, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
<TextBlock Grid.Row="1">
|
<TextBlock Grid.Row="2">
|
||||||
<Hyperlink Click="Hyperlink_Click">
|
<Hyperlink Click="Hyperlink_Click">
|
||||||
<TextBlock Text="{ll:Str 详情请参阅 Windows 支持的语言/区域名称列表中的“语言标记”列}" />
|
<TextBlock Text="{ll:Str 详情请参阅 Windows 支持的语言/区域名称列表中的“语言标记”列}" />
|
||||||
</Hyperlink>
|
</Hyperlink>
|
||||||
@ -53,14 +64,16 @@
|
|||||||
Margin="10"
|
Margin="10"
|
||||||
Click="Button_Cancel_Click"
|
Click="Button_Cancel_Click"
|
||||||
Content="{ll:Str 取消}"
|
Content="{ll:Str 取消}"
|
||||||
IsCancel="True" />
|
IsCancel="True"
|
||||||
|
Style="{DynamicResource ThemedButtonStyle}" />
|
||||||
<Button
|
<Button
|
||||||
x:Name="Button_Yes"
|
x:Name="Button_Yes"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Margin="10"
|
Margin="10"
|
||||||
Click="Button_Yes_Click"
|
Click="Button_Yes_Click"
|
||||||
Content="{ll:Str 确定}"
|
Content="{ll:Str 确定}"
|
||||||
IsDefault="True" />
|
IsDefault="True"
|
||||||
|
Style="{DynamicResource ThemedButtonStyle}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid Grid.Column="1">
|
<Grid Grid.Column="1">
|
||||||
@ -68,7 +81,10 @@
|
|||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition />
|
<RowDefinition />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<TextBox pu:TextBoxHelper.Watermark="{ll:Str 搜索}" Text="{Binding Search.Value, UpdateSourceTrigger=PropertyChanged}" />
|
<TextBox
|
||||||
|
pu:TextBoxHelper.Watermark="{ll:Str 搜索}"
|
||||||
|
Style="{DynamicResource StandardTextBoxStyle}"
|
||||||
|
Text="{Binding Search.Value, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
<ListBox
|
<ListBox
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
ItemsSource="{Binding ShowCultures.Value}"
|
ItemsSource="{Binding ShowCultures.Value}"
|
||||||
|
@ -51,29 +51,31 @@ public partial class I18nEditWindow : WindowX
|
|||||||
/// 添加文化列
|
/// 添加文化列
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="culture"></param>
|
/// <param name="culture"></param>
|
||||||
public void AddCulture(CultureInfo culture)
|
public void AddCulture(string culture)
|
||||||
{
|
{
|
||||||
// 文化数据列
|
// 文化数据列
|
||||||
var column = new DataGridTextColumn()
|
var column = new DataGridTextColumn()
|
||||||
{
|
{
|
||||||
Header = culture.GetFullInfo(),
|
MaxWidth = 200,
|
||||||
Binding = new Binding(string.Format(ValueBindingFormat, culture.Name))
|
Header = culture,
|
||||||
|
Binding = new Binding(string.Format(ValueBindingFormat, culture))
|
||||||
{
|
{
|
||||||
Mode = BindingMode.TwoWay
|
Mode = BindingMode.TwoWay
|
||||||
}
|
},
|
||||||
|
ElementStyle = (Style)Utils.ModMakerStyles["TextBlock_LeftCenter"],
|
||||||
};
|
};
|
||||||
DataGrid_Datas.Columns.Add(column);
|
DataGrid_Datas.Columns.Add(column);
|
||||||
_dataGridI18nColumns.Add(culture.Name, column);
|
_dataGridI18nColumns.Add(culture, column);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 删除文化列
|
/// 删除文化列
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="culture"></param>
|
/// <param name="culture"></param>
|
||||||
public void RemoveCulture(CultureInfo culture)
|
public void RemoveCulture(string culture)
|
||||||
{
|
{
|
||||||
DataGrid_Datas.Columns.Remove(_dataGridI18nColumns[culture.Name]);
|
DataGrid_Datas.Columns.Remove(_dataGridI18nColumns[culture]);
|
||||||
_dataGridI18nColumns.Remove(culture.Name);
|
_dataGridI18nColumns.Remove(culture);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -81,14 +83,14 @@ public partial class I18nEditWindow : WindowX
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="oldCulture"></param>
|
/// <param name="oldCulture"></param>
|
||||||
/// <param name="newCulture"></param>
|
/// <param name="newCulture"></param>
|
||||||
public void ReplaceCulture(CultureInfo oldCulture, CultureInfo newCulture)
|
public void ReplaceCulture(string oldCulture, string newCulture)
|
||||||
{
|
{
|
||||||
//if (_dataGridI18nColumns.ContainsKey(newCultureName))
|
//if (_dataGridI18nColumns.ContainsKey(newCultureName))
|
||||||
// throw new();
|
// throw new();
|
||||||
var column = _dataGridI18nColumns[oldCulture.Name];
|
var column = _dataGridI18nColumns[oldCulture];
|
||||||
column.Header = newCulture.GetFullInfo();
|
column.Header = newCulture;
|
||||||
column.Binding = new Binding(string.Format(ValueBindingFormat, newCulture.Name));
|
column.Binding = new Binding(string.Format(ValueBindingFormat, newCulture));
|
||||||
_dataGridI18nColumns.Remove(oldCulture.Name);
|
_dataGridI18nColumns.Remove(oldCulture);
|
||||||
_dataGridI18nColumns.Add(newCulture.Name, column);
|
_dataGridI18nColumns.Add(newCulture, column);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -304,6 +304,11 @@
|
|||||||
</ListBox.ItemContainerStyle>
|
</ListBox.ItemContainerStyle>
|
||||||
</ListBox>
|
</ListBox>
|
||||||
<StackPanel Grid.Row="2">
|
<StackPanel Grid.Row="2">
|
||||||
|
<Button
|
||||||
|
x:Name="Button_EditI18n"
|
||||||
|
Command="{Binding EditI18nCommand}"
|
||||||
|
Content="{ll:Str 编辑多语言内容}"
|
||||||
|
Style="{DynamicResource ThemedButtonStyle}" />
|
||||||
<Button
|
<Button
|
||||||
x:Name="Button_Save"
|
x:Name="Button_Save"
|
||||||
Command="{Binding SaveCommand}"
|
Command="{Binding SaveCommand}"
|
||||||
|
@ -16,9 +16,6 @@
|
|||||||
Style="{DynamicResource WindowXStyle}"
|
Style="{DynamicResource WindowXStyle}"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<Window.Resources>
|
|
||||||
<ResourceDictionary Source="/VPet-Simulator.Windows.Interface;component/ResourceStyle.xaml" />
|
|
||||||
</Window.Resources>
|
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition />
|
<ColumnDefinition />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user