mirror of
https://github.com/jayfunc/BetterLyrics.git
synced 2026-01-12 19:24:55 +08:00
chores: plug-in system has been initially completed.
This commit is contained in:
15
.idea/.idea.BetterLyrics/.idea/.gitignore
generated
vendored
Normal file
15
.idea/.idea.BetterLyrics/.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Rider ignored files
|
||||||
|
/contentModel.xml
|
||||||
|
/.idea.BetterLyrics.iml
|
||||||
|
/modules.xml
|
||||||
|
/projectSettingsUpdater.xml
|
||||||
|
# Ignored default folder with query files
|
||||||
|
/queries/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
4
.idea/.idea.BetterLyrics/.idea/encodings.xml
generated
Normal file
4
.idea/.idea.BetterLyrics/.idea/encodings.xml
generated
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
|
||||||
|
</project>
|
||||||
8
.idea/.idea.BetterLyrics/.idea/indexLayout.xml
generated
Normal file
8
.idea/.idea.BetterLyrics/.idea/indexLayout.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="UserContentModel">
|
||||||
|
<attachedFolders />
|
||||||
|
<explicitIncludes />
|
||||||
|
<explicitExcludes />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/.idea.BetterLyrics/.idea/vcs.xml
generated
Normal file
6
.idea/.idea.BetterLyrics/.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>net10.0-windows10.0.26100.0</TargetFramework>
|
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
|
||||||
<Nullable>enable</Nullable>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\BetterLyrics.Core\BetterLyrics.Core.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
using BetterLyrics.Core.Interfaces;
|
|
||||||
using BetterLyrics.Core.Models;
|
|
||||||
|
|
||||||
namespace BetterLyrics.Plugins.Demo
|
|
||||||
{
|
|
||||||
public class DemoLyricsProvider : ILyricsSearchPlugin
|
|
||||||
{
|
|
||||||
public string Id => "f7acc86b-6e3d-42c3-a9a9-8c05c5339412";
|
|
||||||
public string Name => "Plugin name";
|
|
||||||
public string Author => "jayfunc";
|
|
||||||
|
|
||||||
public string Description => "Plugin description";
|
|
||||||
|
|
||||||
public void Initialize() { }
|
|
||||||
|
|
||||||
public async Task<LyricsSearchResult> GetLyricsAsync(string title, string artist, string album, double duration)
|
|
||||||
{
|
|
||||||
await Task.Delay(300);
|
|
||||||
|
|
||||||
string searchedTitle = "Demo Song";
|
|
||||||
string searchedArtist = "Demo Artist";
|
|
||||||
string searchedAlbum = "Demo Album";
|
|
||||||
double searchedDuration = 25.0;
|
|
||||||
|
|
||||||
string searchedRaw =
|
|
||||||
$"[00:00.00]Welcome to use Demo Plugin\n" +
|
|
||||||
$"[00:05.00]Playing: {title} now\n" +
|
|
||||||
$"[00:10.00]Artist: {artist}\n" +
|
|
||||||
$"[00:15.00]Album: {album}\n" +
|
|
||||||
$"[00:20.00]Duration: {duration}\n" +
|
|
||||||
$"[00:25.00]This is a test lyrics source...";
|
|
||||||
|
|
||||||
string searchedTranslation =
|
|
||||||
$"[00:00.00]欢迎使用演示插件\n" +
|
|
||||||
$"[00:05.00]当前正在播放:{title}\n" +
|
|
||||||
$"[00:10.00]歌手:{artist}\n" +
|
|
||||||
$"[00:15.00]专辑:{album}\n" +
|
|
||||||
$"[00:20.00]时长:{duration}\n" +
|
|
||||||
$"[00:25.00]这是一个测试歌词源...";
|
|
||||||
|
|
||||||
string searchedTransliteration =
|
|
||||||
$"[00:00.00]ˈwɛlkəm tuː juːz ˈdɛmoʊ ˈplʌgɪn\n" +
|
|
||||||
$"[00:05.00]ˈpleɪɪŋ: {title} naʊ\n" +
|
|
||||||
$"[00:10.00]ˈɑːrtɪst: {artist}\n" +
|
|
||||||
$"[00:15.00]ˈælbəm: {album}\n" +
|
|
||||||
$"[00:20.00]dʊˈreɪʃən: {duration}\n" +
|
|
||||||
$"[00:25.00]ðɪs ɪz ə tɛst ˈlɪrɪks sɔːrs...";
|
|
||||||
|
|
||||||
string searchedReference = "https://path.to.lyrics/if.the.lyrics.was.originally.fetched.from.web";
|
|
||||||
|
|
||||||
return new LyricsSearchResult(
|
|
||||||
searchedTitle,
|
|
||||||
searchedArtist,
|
|
||||||
searchedAlbum,
|
|
||||||
searchedDuration,
|
|
||||||
searchedRaw,
|
|
||||||
searchedTranslation,
|
|
||||||
searchedTransliteration,
|
|
||||||
searchedReference);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -6,7 +6,6 @@
|
|||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<SupportedOSPlatformVersion>10.0.19041.0</SupportedOSPlatformVersion>
|
<SupportedOSPlatformVersion>10.0.19041.0</SupportedOSPlatformVersion>
|
||||||
<RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>
|
<RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>
|
||||||
<UseWinUI>true</UseWinUI>
|
|
||||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
@@ -98,11 +97,39 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\BetterLyrics.Core\BetterLyrics.Core.csproj" >
|
<ProjectReference Include="..\BetterLyrics.Core\BetterLyrics.Core.csproj" />
|
||||||
<Private>false</Private>
|
|
||||||
<ExcludeAssets>runtime</ExcludeAssets>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\RomajiConverter.Core\RomajiConverter.Core.csproj" />
|
<ProjectReference Include="..\RomajiConverter.Core\RomajiConverter.Core.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Target Name="AutoExcludeSharedAssemblies" AfterTargets="ResolveAssemblyReferences">
|
||||||
|
<PropertyGroup>
|
||||||
|
<HostOutputDir>..\BetterLyrics.WinUI3\BetterLyrics.WinUI3\bin\x64\$(Configuration)\$(TargetFramework)\</HostOutputDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<Message Text="[Debug] Searching for Host Assemblies in: $(HostOutputDir)" Importance="High" />
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<FilesToCopy Include="@(ReferenceCopyLocalPaths)" />
|
||||||
|
<SharedFiles Include="@(FilesToCopy)"
|
||||||
|
Condition="Exists('$(HostOutputDir)%(Filename)%(Extension)')" />
|
||||||
|
<ReferenceCopyLocalPaths Remove="@(SharedFiles)" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Message Text="[Smart Trim] Excluded shared assemblies:%0a@(SharedFiles->' -> %(Filename)%(Extension)', '%0a')" Importance="High" Condition="'@(SharedFiles)' != ''" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<Target Name="RunPluginAnalyzer" AfterTargets="Build">
|
||||||
|
<PropertyGroup>
|
||||||
|
<AnalyzerPath>..\PluginAnalyzer\bin\Debug\net10.0\PluginAnalyzer.exe</AnalyzerPath>
|
||||||
|
<ScanDir>$(TargetDir)</ScanDir>
|
||||||
|
<Ns>BetterLyrics.WinUI3</Ns>
|
||||||
|
<Prefix>$(ProjectName)</Prefix>
|
||||||
|
|
||||||
|
<OutputDir>..\BetterLyrics.WinUI3\BetterLyrics.WinUI3\PluginConfigs\</OutputDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<Message Text="[Analyzer] Delivering configs to Main App..." Importance="High" />
|
||||||
|
<Exec Command=""$(AnalyzerPath)" "$(ScanDir)\" "$(Ns)" "$(Prefix)" "$(OutputDir)\"" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -143,7 +143,7 @@
|
|||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.7175" />
|
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.7463" />
|
||||||
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.8.251106002" />
|
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.8.251106002" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(WapProjPath)\Microsoft.DesktopBridge.targets" />
|
<Import Project="$(WapProjPath)\Microsoft.DesktopBridge.targets" />
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
<Identity
|
<Identity
|
||||||
Name="37412.BetterLyrics"
|
Name="37412.BetterLyrics"
|
||||||
Publisher="CN=E1428B0E-DC1D-4EA4-ACB1-4556569D5BA9"
|
Publisher="CN=E1428B0E-DC1D-4EA4-ACB1-4556569D5BA9"
|
||||||
Version="1.2.265.0" />
|
Version="1.2.260.0" />
|
||||||
|
|
||||||
<mp:PhoneIdentity PhoneProductId="ca4a4830-fc19-40d9-b823-53e2bff3d816" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
|
<mp:PhoneIdentity PhoneProductId="ca4a4830-fc19-40d9-b823-53e2bff3d816" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.UI.Xaml;
|
using Microsoft.UI.Xaml;
|
||||||
using Microsoft.Windows.AppLifecycle; // 关键:App生命周期管理
|
using Microsoft.Windows.AppLifecycle;
|
||||||
using Serilog;
|
using Serilog;
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
<PackageReference Include="CommunityToolkit.WinUI.Triggers" Version="8.2.251219" />
|
<PackageReference Include="CommunityToolkit.WinUI.Triggers" Version="8.2.251219" />
|
||||||
<PackageReference Include="ComputeSharp.D2D1.WinUI" Version="3.2.0" />
|
<PackageReference Include="ComputeSharp.D2D1.WinUI" Version="3.2.0" />
|
||||||
<PackageReference Include="csharp-pinyin" Version="1.0.1" />
|
<PackageReference Include="csharp-pinyin" Version="1.0.1" />
|
||||||
<PackageReference Include="DevWinUI.Controls" Version="9.8.1" />
|
<PackageReference Include="DevWinUI.Controls" Version="9.9.2" />
|
||||||
<PackageReference Include="Dubya.WindowsMediaController" Version="2.5.6" />
|
<PackageReference Include="Dubya.WindowsMediaController" Version="2.5.6" />
|
||||||
<PackageReference Include="F23.StringSimilarity" Version="7.0.1" />
|
<PackageReference Include="F23.StringSimilarity" Version="7.0.1" />
|
||||||
<PackageReference Include="FlaUI.UIA3" Version="5.0.0" />
|
<PackageReference Include="FlaUI.UIA3" Version="5.0.0" />
|
||||||
@@ -98,13 +98,13 @@
|
|||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="10.0.1" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="10.0.1" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.1" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.1" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.1">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.1">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.0.1" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.0.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.1" />
|
||||||
<PackageReference Include="Microsoft.Graphics.Win2D" Version="1.3.2" />
|
<PackageReference Include="Microsoft.Graphics.Win2D" Version="1.3.2" />
|
||||||
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.7175" />
|
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.7463" />
|
||||||
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.8.251106002" />
|
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.8.251106002" />
|
||||||
<PackageReference Include="NAudio.Wasapi" Version="2.2.1" />
|
<PackageReference Include="NAudio.Wasapi" Version="2.2.1" />
|
||||||
<PackageReference Include="NTextCat" Version="0.3.65" />
|
<PackageReference Include="NTextCat" Version="0.3.65" />
|
||||||
@@ -123,12 +123,12 @@
|
|||||||
<PackageReference Include="VCollab.DiscordRichPresence" Version="1.7.0" />
|
<PackageReference Include="VCollab.DiscordRichPresence" Version="1.7.0" />
|
||||||
<PackageReference Include="WebDav.Client" Version="2.9.0" />
|
<PackageReference Include="WebDav.Client" Version="2.9.0" />
|
||||||
<PackageReference Include="WinUIEx" Version="2.9.0" />
|
<PackageReference Include="WinUIEx" Version="2.9.0" />
|
||||||
<PackageReference Include="z440.atl.core" Version="7.9.0" />
|
<PackageReference Include="z440.atl.core" Version="7.10.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\..\BetterLyrics.Core\BetterLyrics.Core.csproj" />
|
<ProjectReference Include="..\..\BetterLyrics.Core\BetterLyrics.Core.csproj" />
|
||||||
<ProjectReference Include="..\..\ColorThief.WinUI3\ColorThief.WinUI3.csproj" />
|
<ProjectReference Include="..\..\ColorThief.WinUI3\ColorThief.WinUI3.csproj" />
|
||||||
<ProjectReference Include="..\..\Impressionist\Impressionist\Impressionist.csproj" />
|
<ProjectReference Include="..\..\Impressionist\Impressionist\Impressionist.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Rendering\InAppLyricsRenderer.xaml">
|
<Page Update="Rendering\InAppLyricsRenderer.xaml">
|
||||||
@@ -140,257 +140,245 @@
|
|||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<!--Disable Trimming for Specific Packages-->
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<TrimmerRootAssembly Include="FlaUI.UIA3" />
|
<TrimmerRootDescriptor Include="PluginConfigs\**\*_TrimmerRoots.xml" />
|
||||||
<TrimmerRootAssembly Include="Interop.UIAutomationClient" />
|
<TrimmerRootDescriptor Include="Core_TrimmerRoots.xml" />
|
||||||
<TrimmerRootAssembly Include="Microsoft.EntityFrameworkCore" />
|
|
||||||
<TrimmerRootAssembly Include="Microsoft.EntityFrameworkCore.Abstractions" />
|
|
||||||
<TrimmerRootAssembly Include="Microsoft.EntityFrameworkCore.Relational" />
|
|
||||||
<TrimmerRootAssembly Include="Microsoft.EntityFrameworkCore.Sqlite" />
|
|
||||||
<TrimmerRootAssembly Include="NAudio.Wasapi" />
|
|
||||||
<TrimmerRootAssembly Include="TagLibSharp" />
|
|
||||||
<TrimmerRootAssembly Include="Vanara.PInvoke.DwmApi" />
|
|
||||||
<TrimmerRootAssembly Include="Vanara.PInvoke.Gdi32" />
|
|
||||||
<TrimmerRootAssembly Include="Vanara.PInvoke.Shell32" />
|
|
||||||
<TrimmerRootAssembly Include="Vanara.PInvoke.User32" />
|
|
||||||
<TrimmerRootAssembly Include="Vanara.Windows.Shell" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Update="Assets\AIMP.png">
|
<Content Update="Assets\AIMP.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\AlbumArtPlaceholder.png">
|
<Content Update="Assets\AlbumArtPlaceholder.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\Alipay.jpg">
|
<Content Update="Assets\Alipay.jpg">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\AMLLPlayer.png">
|
<Content Update="Assets\AMLLPlayer.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\AppleMusic.png">
|
<Content Update="Assets\AppleMusic.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\Chrome.png">
|
<Content Update="Assets\Chrome.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\Edge.png">
|
<Content Update="Assets\Edge.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\FluidEffect.bin">
|
<Content Update="Assets\FluidEffect.bin">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\Empty.png">
|
<Content Update="Assets\Empty.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\EmptyBox.png">
|
<Content Update="Assets\EmptyBox.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\EmptyState.png">
|
<Content Update="Assets\EmptyState.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\Folder.png">
|
<Content Update="Assets\Folder.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\foobar2000.png">
|
<Content Update="Assets\foobar2000.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\HyPlayer.png">
|
<Content Update="Assets\HyPlayer.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\iTunes.png">
|
<Content Update="Assets\iTunes.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\KugouMusic.png">
|
<Content Update="Assets\KugouMusic.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\LastFM.png">
|
<Content Update="Assets\LastFM.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\Leaf.png">
|
<Content Update="Assets\Leaf.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\Listen1.png">
|
<Content Update="Assets\Listen1.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\Logo.ico">
|
<Content Update="Assets\Logo.ico">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\Logo.png">
|
<Content Update="Assets\Logo.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\LXMusic.png">
|
<Content Update="Assets\LXMusic.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\MediaPlayerWindows11.png">
|
<Content Update="Assets\MediaPlayerWindows11.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\MoeKoeMusic.png">
|
<Content Update="Assets\MoeKoeMusic.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\MusicBee.png">
|
<Content Update="Assets\MusicBee.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\NetEaseCloudMusic.png">
|
<Content Update="Assets\NetEaseCloudMusic.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\OriginalSoundHQPlayer.png">
|
<Content Update="Assets\OriginalSoundHQPlayer.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\Page.png">
|
<Content Update="Assets\Page.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\PlanetMusic.png">
|
<Content Update="Assets\PlanetMusic.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\PotPlayer.png">
|
<Content Update="Assets\PotPlayer.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\QQMusic.png">
|
<Content Update="Assets\QQMusic.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\Question.png">
|
<Content Update="Assets\Question.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\RevolvingHearts.gif">
|
<Content Update="Assets\RevolvingHearts.gif">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\SaltPlayerForWindows.png">
|
<Content Update="Assets\SaltPlayerForWindows.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\Segoe Fluent Icons.ttf">
|
<Content Update="Assets\Segoe Fluent Icons.ttf">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\Spotify.png">
|
<Content Update="Assets\Spotify.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\WeChatReward.png">
|
<Content Update="Assets\WeChatReward.png">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Assets\Wiki82.profile.xml">
|
<Content Update="Assets\Wiki82.profile.xml">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\PluginManagerControl.xaml">
|
<Page Update="Controls\PluginManagerControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\PatronControl.xaml">
|
<Page Update="Controls\PatronControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Styles\GhostSliderStyle.xaml">
|
<Page Update="Styles\GhostSliderStyle.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Styles\Converters.xaml">
|
<Page Update="Styles\Converters.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\PlayQueue.xaml">
|
<Page Update="Controls\PlayQueue.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\StatsDashboardControl.xaml">
|
<Page Update="Controls\StatsDashboardControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\FontFamilyAutoSuggestBox.xaml">
|
<Page Update="Controls\FontFamilyAutoSuggestBox.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\LyricsStyleSettingsControl.xaml">
|
<Page Update="Controls\LyricsStyleSettingsControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Views\LyricsWindowSwitchWindow.xaml">
|
<Page Update="Views\LyricsWindowSwitchWindow.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\LyricsWindowSwitchControl.xaml">
|
<Page Update="Controls\LyricsWindowSwitchControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\DemoWindowGrid.xaml">
|
<Page Update="Controls\DemoWindowGrid.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\LyricsWindowSettingsControl.xaml">
|
<Page Update="Controls\LyricsWindowSettingsControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Views\LyricsSearchWindow.xaml">
|
<Page Update="Views\LyricsSearchWindow.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\LyricsSearchControl.xaml">
|
<Page Update="Controls\LyricsSearchControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\ShortcutTextBox.xaml">
|
<Page Update="Controls\ShortcutTextBox.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\ExtendedSlider.xaml">
|
<Page Update="Controls\ExtendedSlider.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\LyricsEffectSettingsControl.xaml">
|
<Page Update="Controls\LyricsEffectSettingsControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\MediaSettingsControl.xaml">
|
<Page Update="Controls\MediaSettingsControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\PlaybackSettingsControl.xaml">
|
<Page Update="Controls\PlaybackSettingsControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\AlbumArtAreaStyleSettingsControl.xaml">
|
<Page Update="Controls\AlbumArtAreaStyleSettingsControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\LyricsBackgroundSettingsControl.xaml">
|
<Page Update="Controls\LyricsBackgroundSettingsControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\AppSettingsControl.xaml">
|
<Page Update="Controls\AppSettingsControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Views\MusicGalleryWindow.xaml">
|
<Page Update="Views\MusicGalleryWindow.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Views\MusicGalleryPage.xaml">
|
<Page Update="Views\MusicGalleryPage.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Views\SettingsWindow.xaml">
|
<Page Update="Views\SettingsWindow.xaml">
|
||||||
@@ -403,54 +391,57 @@
|
|||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\RemoteServerConfigControl.xaml">
|
<Page Update="Controls\RemoteServerConfigControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\NowPlayingBar.xaml">
|
<Page Update="Controls\NowPlayingBar.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Views\SystemTrayWindow.xaml">
|
<Page Update="Views\SystemTrayWindow.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\WindowSettingsControl.xaml">
|
<Page Update="Controls\WindowSettingsControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\AlbumArtAreaEffectSettingsControl.xaml">
|
<Page Update="Controls\AlbumArtAreaEffectSettingsControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\ImageSwitcher.xaml">
|
<Page Update="Controls\ImageSwitcher.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\ShadowImage.xaml">
|
<Page Update="Controls\ShadowImage.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\PropertyRow.xaml">
|
<Page Update="Controls\PropertyRow.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Controls\AboutControl.xaml">
|
<Page Update="Controls\AboutControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="Styles\InteractiveListViewHeaderStyle.xaml">
|
<Page Update="Styles\InteractiveListViewHeaderStyle.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="PluginConfigs\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<!-- Publish Properties -->
|
<!-- Publish Properties -->
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|||||||
@@ -196,23 +196,23 @@
|
|||||||
<ComboBox SelectedIndex="{x:Bind LyricsEffectSettings.LyricsScrollEasingType, Mode=TwoWay, Converter={StaticResource EnumToIntConverter}}">
|
<ComboBox SelectedIndex="{x:Bind LyricsEffectSettings.LyricsScrollEasingType, Mode=TwoWay, Converter={StaticResource EnumToIntConverter}}">
|
||||||
<ComboBoxItem x:Uid="SettingsPageEasingTypeLinear" />
|
<ComboBoxItem x:Uid="SettingsPageEasingTypeLinear" />
|
||||||
<ComboBoxItem x:Uid="SettingsPageEasingTypeSmoothStep" />
|
<ComboBoxItem x:Uid="SettingsPageEasingTypeSmoothStep" />
|
||||||
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseInOutSine" />
|
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseSine" />
|
||||||
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseInOutQuad" />
|
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseQuad" />
|
||||||
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseInOutCubic" />
|
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseCubic" />
|
||||||
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseInOutQuart" />
|
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseQuart" />
|
||||||
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseInOutQuint" />
|
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseQuint" />
|
||||||
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseInOutExpo" />
|
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseExpo" />
|
||||||
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseInOutCirc" />
|
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseCirc" />
|
||||||
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseInOutBack" />
|
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseBack" />
|
||||||
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseInOutElastic" />
|
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseElastic" />
|
||||||
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseInOutBounce" />
|
<ComboBoxItem x:Uid="SettingsPageEasingTypeEaseBounce" />
|
||||||
</ComboBox>
|
</ComboBox>
|
||||||
<dev:SettingsExpander.Items>
|
<dev:SettingsExpander.Items>
|
||||||
<dev:SettingsCard Header="Easing Mode">
|
<dev:SettingsCard x:Uid="SettingsPageEasingMode">
|
||||||
<ComboBox SelectedIndex="{x:Bind LyricsEffectSettings.LyricsScrollEasingMode, Mode=TwoWay, Converter={StaticResource EnumToIntConverter}}">
|
<ComboBox SelectedIndex="{x:Bind LyricsEffectSettings.LyricsScrollEasingMode, Mode=TwoWay, Converter={StaticResource EnumToIntConverter}}">
|
||||||
<ComboBoxItem Content="EaseIn" />
|
<ComboBoxItem x:Uid="SettingsPageEasingModeIn" />
|
||||||
<ComboBoxItem Content="EaseOut" />
|
<ComboBoxItem x:Uid="SettingsPageEasingModeOut" />
|
||||||
<ComboBoxItem Content="EaseInOut" />
|
<ComboBoxItem x:Uid="SettingsPageEasingModeInOut" />
|
||||||
</ComboBox>
|
</ComboBox>
|
||||||
</dev:SettingsCard>
|
</dev:SettingsCard>
|
||||||
<dev:SettingsCard x:Uid="SettingsPageScrollTopDuration">
|
<dev:SettingsCard x:Uid="SettingsPageScrollTopDuration">
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<linker>
|
||||||
|
<assembly fullname="FlaUI.UIA3" preserve="all" />
|
||||||
|
<assembly fullname="Interop.UIAutomationClient" preserve="all" />
|
||||||
|
|
||||||
|
<assembly fullname="Microsoft.EntityFrameworkCore" preserve="all" />
|
||||||
|
<assembly fullname="Microsoft.EntityFrameworkCore.Abstractions" preserve="all" />
|
||||||
|
<assembly fullname="Microsoft.EntityFrameworkCore.Relational" preserve="all" />
|
||||||
|
<assembly fullname="Microsoft.EntityFrameworkCore.Sqlite" preserve="all" />
|
||||||
|
|
||||||
|
<assembly fullname="NAudio.Wasapi" preserve="all" />
|
||||||
|
<assembly fullname="TagLibSharp" preserve="all" />
|
||||||
|
|
||||||
|
<assembly fullname="Vanara.PInvoke.DwmApi" preserve="all" />
|
||||||
|
<assembly fullname="Vanara.PInvoke.Gdi32" preserve="all" />
|
||||||
|
<assembly fullname="Vanara.PInvoke.Shell32" preserve="all" />
|
||||||
|
<assembly fullname="Vanara.PInvoke.User32" preserve="all" />
|
||||||
|
<assembly fullname="Vanara.Windows.Shell" preserve="all" />
|
||||||
|
|
||||||
|
</linker>
|
||||||
@@ -129,7 +129,7 @@ namespace BetterLyrics.WinUI3.Parsers.LyricsParser
|
|||||||
{
|
{
|
||||||
romaji = await transliterationService.TransliterateText(main.WrappedOriginalText, PhoneticHelper.RomanCode, token);
|
romaji = await transliterationService.TransliterateText(main.WrappedOriginalText, PhoneticHelper.RomanCode, token);
|
||||||
_lyricsDataArr.FirstOrDefault()?.SetTransliteration(romaji);
|
_lyricsDataArr.FirstOrDefault()?.SetTransliteration(romaji);
|
||||||
transliterationSearchProvider = TransliterationSearchProvider.CutletDocker;
|
transliterationSearchProvider = TransliterationSearchProvider.Plugin;
|
||||||
}
|
}
|
||||||
catch (TaskCanceledException) { }
|
catch (TaskCanceledException) { }
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
<linker>
|
||||||
|
<assembly fullname="System.Collections" preserve="all" />
|
||||||
|
<assembly fullname="System.IO.MemoryMappedFiles" preserve="all" />
|
||||||
|
<assembly fullname="System.Linq" preserve="all" />
|
||||||
|
<assembly fullname="System.Memory" preserve="all" />
|
||||||
|
<assembly fullname="System.ObjectModel" preserve="all" />
|
||||||
|
<assembly fullname="System.Runtime" preserve="all" />
|
||||||
|
<assembly fullname="System.Runtime.InteropServices" preserve="all" />
|
||||||
|
<assembly fullname="System.Text.RegularExpressions" preserve="all" />
|
||||||
|
<assembly fullname="System.Threading" preserve="all" />
|
||||||
|
<assembly fullname="BetterLyrics.WinUI3">
|
||||||
|
<type fullname="BetterLyrics.WinUI3.PluginConfigs.BetterLyrics_Plugins_Romaji_Config" preserve="all" />
|
||||||
|
</assembly>
|
||||||
|
</linker>
|
||||||
@@ -0,0 +1,137 @@
|
|||||||
|
// Auto-Generated by PluginAnalyzer
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
|
namespace BetterLyrics.WinUI3.PluginConfigs;
|
||||||
|
internal static class BetterLyrics_Plugins_Romaji_Config
|
||||||
|
{
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.AppContext))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.AppDomain))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.ArgumentException))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.ArgumentNullException))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.ArgumentOutOfRangeException))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Array))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.AsyncCallback))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Boolean))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Buffer))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Byte))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Char))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Collections.Generic.Dictionary<,>))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Collections.Generic.IEnumerable<>))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Collections.Generic.IEnumerator<>))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Collections.Generic.LinkedList<>))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Collections.Generic.LinkedListNode<>))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Collections.Generic.List<>))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Collections.IEnumerable))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Collections.IEnumerator))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Collections.ObjectModel.Collection<>))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Collections.ObjectModel.ObservableCollection<>))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.ComponentModel.INotifyPropertyChanged))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.ComponentModel.PropertyChangedEventArgs))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.ComponentModel.PropertyChangedEventHandler))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Delegate))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Diagnostics.DebuggableAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Diagnostics.DebuggableAttribute.DebuggingModes))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Diagnostics.DebuggerBrowsableAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Diagnostics.DebuggerBrowsableState))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Diagnostics.DebuggerHiddenAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Enum))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Environment))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Exception))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Func<,>))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.GC))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IAsyncResult))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IComparable<>))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IDisposable))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Int16))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Int32))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Int64))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.InvalidOperationException))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IO.BinaryReader))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IO.File))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IO.FileAccess))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IO.FileMode))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IO.FileShare))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IO.FileStream))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IO.HandleInheritability))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IO.MemoryMappedFiles.MemoryMappedFile))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IO.MemoryMappedFiles.MemoryMappedFileAccess))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IO.MemoryMappedFiles.MemoryMappedViewAccessor))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IO.MemoryMappedFiles.MemoryMappedViewStream))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IO.Path))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IO.Stream))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IO.StreamReader))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IO.TextReader))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.IO.UnmanagedMemoryAccessor))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Linq.Enumerable))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Linq.IGrouping<,>))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Math))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.MemoryExtensions))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.MulticastDelegate))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.NotImplementedException))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.NotSupportedException))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Nullable<>))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Object))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.ObjectDisposedException))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.ObsoleteAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.ParamArrayAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.ReadOnlySpan<>))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Reflection.Assembly))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Reflection.AssemblyCompanyAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Reflection.AssemblyConfigurationAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Reflection.AssemblyCopyrightAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Reflection.AssemblyDescriptionAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Reflection.AssemblyFileVersionAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Reflection.AssemblyInformationalVersionAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Reflection.AssemblyMetadataAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Reflection.AssemblyProductAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Reflection.AssemblyTitleAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Reflection.AssemblyTrademarkAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Reflection.DefaultMemberAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Runtime.CompilerServices.CallerMemberNameAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Runtime.CompilerServices.CompilationRelaxationsAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Runtime.CompilerServices.CompilerGeneratedAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Runtime.CompilerServices.ExtensionAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Runtime.CompilerServices.IsReadOnlyAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Runtime.CompilerServices.IteratorStateMachineAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Runtime.CompilerServices.NullableAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Runtime.CompilerServices.NullableContextAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Runtime.CompilerServices.RefSafetyRulesAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Runtime.CompilerServices.RuntimeCompatibilityAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Runtime.CompilerServices.TupleElementNamesAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Runtime.InteropServices.InAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Runtime.Serialization.SerializationInfo))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Runtime.Serialization.StreamingContext))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Runtime.Versioning.SupportedOSPlatformAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Runtime.Versioning.TargetFrameworkAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Runtime.Versioning.TargetPlatformAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Security.Permissions.SecurityAction))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Security.Permissions.SecurityPermissionAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Security.UnverifiableCodeAttribute))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Single))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.String))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.StringSplitOptions))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Text.Encoding))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Text.RegularExpressions.Capture))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Text.RegularExpressions.Group))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Text.RegularExpressions.GroupCollection))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Text.RegularExpressions.Match))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Text.RegularExpressions.MatchCollection))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Text.RegularExpressions.Regex))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Text.RegularExpressions.RegexOptions))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Text.StringBuilder))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Threading.Interlocked))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Threading.Tasks.Task))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Threading.Tasks.Task<>))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.TimeSpan))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.Type))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.UInt16))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.UInt32))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.ValueTuple<,>))]
|
||||||
|
[DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(System.ValueType))]
|
||||||
|
[ModuleInitializer]
|
||||||
|
internal static void Initialize()
|
||||||
|
{
|
||||||
|
// This method runs automatically on startup.
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@ using System.Collections.Generic;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.IO.Compression;
|
using System.IO.Compression;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
using Windows.Storage;
|
using Windows.Storage;
|
||||||
|
|
||||||
namespace BetterLyrics.WinUI3.Services.PluginService
|
namespace BetterLyrics.WinUI3.Services.PluginService
|
||||||
@@ -45,58 +46,91 @@ namespace BetterLyrics.WinUI3.Services.PluginService
|
|||||||
|
|
||||||
private void TryLoadPlugin(string dllPath)
|
private void TryLoadPlugin(string dllPath)
|
||||||
{
|
{
|
||||||
|
// 1. Create Context
|
||||||
|
var loadContext = new PluginLoadContext(dllPath);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var loadContext = new PluginLoadContext(dllPath);
|
|
||||||
var assembly = loadContext.LoadFromAssemblyPath(dllPath);
|
var assembly = loadContext.LoadFromAssemblyPath(dllPath);
|
||||||
bool isPluginFound = false;
|
int loadedCount = 0; // Track successfully loaded plugins
|
||||||
|
|
||||||
foreach (var type in assembly.GetExportedTypes())
|
// 2. [Safety Check] Safely retrieve types
|
||||||
|
IEnumerable<Type> types;
|
||||||
|
try
|
||||||
{
|
{
|
||||||
if (typeof(IPlugin).IsAssignableFrom(type) && !type.IsAbstract)
|
types = assembly.GetExportedTypes();
|
||||||
|
}
|
||||||
|
catch (ReflectionTypeLoadException ex)
|
||||||
|
{
|
||||||
|
// If some types fail to load, only keep the usable ones!
|
||||||
|
types = ex.Types.Where(t => t != null)!;
|
||||||
|
foreach (var loaderEx in ex.LoaderExceptions)
|
||||||
{
|
{
|
||||||
var plugin = (IPlugin?)Activator.CreateInstance(type);
|
_logger.LogWarning("Partial type loading failure in DLL {path}: {msg}", dllPath, loaderEx?.Message);
|
||||||
if (plugin == null) continue;
|
|
||||||
|
|
||||||
if (_plugins.Any(p => p.Id == plugin.Id))
|
|
||||||
{
|
|
||||||
// 遇到重复 ID,我们选择跳过新的,保留旧的
|
|
||||||
// (或者你也可以设计成卸载旧的加载新的,这取决于策略)
|
|
||||||
// 由于我们已经加载了 assembly,现在决定不用它,必须卸载 context
|
|
||||||
loadContext.Unload();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
plugin.Initialize();
|
|
||||||
}
|
|
||||||
catch (Exception initEx)
|
|
||||||
{
|
|
||||||
_logger.LogError(initEx, "Failed to initialize plugin {id} from {path}", plugin.Id, dllPath);
|
|
||||||
loadContext.Unload();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_plugins.Add(plugin);
|
|
||||||
_pluginContexts.Add(plugin.Id, loadContext);
|
|
||||||
isPluginFound = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isPluginFound)
|
foreach (var type in types)
|
||||||
|
{
|
||||||
|
// 3. Check if it is a valid plugin class
|
||||||
|
if (typeof(IPlugin).IsAssignableFrom(type) && !type.IsAbstract)
|
||||||
|
{
|
||||||
|
IPlugin? plugin = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// 4. [Instantiation Guard] Prevent plugin constructor errors from crashing the main app
|
||||||
|
plugin = (IPlugin?)Activator.CreateInstance(type);
|
||||||
|
if (plugin == null) continue;
|
||||||
|
|
||||||
|
// 5. Check for duplicate IDs
|
||||||
|
if (_plugins.Any(p => p.Id == plugin.Id))
|
||||||
|
{
|
||||||
|
_logger.LogWarning("Skipping duplicate plugin: {id} ({path})", plugin.Id, dllPath);
|
||||||
|
// Explicitly break reference to aid Unload
|
||||||
|
plugin = null;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 6. Initialize
|
||||||
|
plugin.Initialize();
|
||||||
|
|
||||||
|
// 7. Add to collection
|
||||||
|
_plugins.Add(plugin);
|
||||||
|
_pluginContexts.Add(plugin.Id, loadContext);
|
||||||
|
loadedCount++;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Failed to initialize/instantiate plugin {type}", type.FullName);
|
||||||
|
|
||||||
|
// If plugin initialization fails, explicitly dispose if possible
|
||||||
|
if (plugin is IDisposable disposable)
|
||||||
|
{
|
||||||
|
try { disposable.Dispose(); } catch { }
|
||||||
|
}
|
||||||
|
plugin = null; // Break reference
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 8. Finalize: If no usable plugins were found in this DLL, unload Context
|
||||||
|
if (loadedCount > 0)
|
||||||
{
|
{
|
||||||
_loadedDllPaths.Add(dllPath);
|
_loadedDllPaths.Add(dllPath);
|
||||||
|
_logger.LogInformation("Successfully loaded {count} plugin(s) from {path}", loadedCount, dllPath);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_logger.LogWarning("No valid plugin types found in assembly {path}", dllPath);
|
_logger.LogWarning("No valid plugins found in {path}. Unloading context.", dllPath);
|
||||||
|
// No plugin instances remain alive at this point, safe to unload
|
||||||
loadContext.Unload();
|
loadContext.Unload();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_logger.LogError(ex, "Failed to load plugin from {path}", dllPath);
|
_logger.LogError(ex, "Failed to load assembly: {path}", dllPath);
|
||||||
|
// Only unload here if the loading process completely crashed
|
||||||
|
try { loadContext.Unload(); } catch { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,31 +26,6 @@ namespace BetterLyrics.WinUI3.Services.TransliterationService
|
|||||||
_httpClient = new HttpClient();
|
_httpClient = new HttpClient();
|
||||||
}
|
}
|
||||||
|
|
||||||
//public async Task<string> TransliterateText(string text, string targetLangCode, CancellationToken token)
|
|
||||||
//{
|
|
||||||
// if (string.IsNullOrWhiteSpace(text))
|
|
||||||
// {
|
|
||||||
// throw new Exception(text + " is empty or null.");
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (string.IsNullOrEmpty(_settingsService.AppSettings.TranslationSettings.CutletDockerServer))
|
|
||||||
// {
|
|
||||||
// throw new Exception("cutlet-docker server URL is not set in settings.");
|
|
||||||
// }
|
|
||||||
|
|
||||||
// var request = new CutletDockerRequest { Text = text };
|
|
||||||
// var reqJson = System.Text.Json.JsonSerializer.Serialize(request, SourceGenerationContext.Default.CutletDockerRequest);
|
|
||||||
|
|
||||||
// var url = $"{_settingsService.AppSettings.TranslationSettings.CutletDockerServer}/convert";
|
|
||||||
// var response = await _httpClient.PostAsync(url, new StringContent(reqJson, Encoding.UTF8, "application/json"));
|
|
||||||
|
|
||||||
// response.EnsureSuccessStatusCode();
|
|
||||||
// var resJson = await response.Content.ReadAsStringAsync(token);
|
|
||||||
|
|
||||||
// var result = System.Text.Json.JsonSerializer.Deserialize(resJson, SourceGenerationContext.Default.CutletDockerResponse);
|
|
||||||
// return result?.RomajiText ?? string.Empty;
|
|
||||||
//}
|
|
||||||
|
|
||||||
public async Task<string> TransliterateText(string text, string targetLangCode, CancellationToken token)
|
public async Task<string> TransliterateText(string text, string targetLangCode, CancellationToken token)
|
||||||
{
|
{
|
||||||
string? result = null;
|
string? result = null;
|
||||||
|
|||||||
@@ -810,34 +810,37 @@
|
|||||||
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
||||||
<value>منطقة قابلة للسحب</value>
|
<value>منطقة قابلة للسحب</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBack.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeOut.Content" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseBack.Content" xml:space="preserve">
|
||||||
<value>EaseInOutBack</value>
|
<value>EaseInOutBack</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBounce.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBounce.Content" xml:space="preserve">
|
||||||
<value>EaseInOutBounce</value>
|
<value>EaseInOutBounce</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCirc.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCirc.Content" xml:space="preserve">
|
||||||
<value>EaseInOutCirc</value>
|
<value>EaseInOutCirc</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCubic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCubic.Content" xml:space="preserve">
|
||||||
<value>EaseInOutCubic</value>
|
<value>EaseInOutCubic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutElastic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseElastic.Content" xml:space="preserve">
|
||||||
<value>EaseInOutElastic</value>
|
<value>EaseInOutElastic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutExpo.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseExpo.Content" xml:space="preserve">
|
||||||
<value>EaseInOutExpo</value>
|
<value>EaseInOutExpo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuad.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuad.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuad</value>
|
<value>EaseInOutQuad</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuart.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuart.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuart</value>
|
<value>EaseInOutQuart</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuint.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuint.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuint</value>
|
<value>EaseInOutQuint</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutSine.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseSine.Content" xml:space="preserve">
|
||||||
<value>EaseInOutSine</value>
|
<value>EaseInOutSine</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
||||||
|
|||||||
@@ -810,35 +810,38 @@
|
|||||||
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
||||||
<value>Ziehbereich</value>
|
<value>Ziehbereich</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBack.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeOut.Content" xml:space="preserve">
|
||||||
<value>Back Ease In-Out</value>
|
<value />
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBounce.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBack.Content" xml:space="preserve">
|
||||||
<value>Bounce Ease In-Out</value>
|
<value>Back</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCirc.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBounce.Content" xml:space="preserve">
|
||||||
<value>Circular Ease In-Out</value>
|
<value>Bounce</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCubic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCirc.Content" xml:space="preserve">
|
||||||
<value>Cubic Ease In-Out</value>
|
<value>Circular</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutElastic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCubic.Content" xml:space="preserve">
|
||||||
<value>Elastic Ease In-Out</value>
|
<value>Cubic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutExpo.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseElastic.Content" xml:space="preserve">
|
||||||
<value>Exponential Ease In-Out</value>
|
<value>Elastic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuad.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseExpo.Content" xml:space="preserve">
|
||||||
<value>Quadratic Ease In-Out</value>
|
<value>Exponential</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuart.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuad.Content" xml:space="preserve">
|
||||||
<value>Quartic Ease In-Out</value>
|
<value>Quadratic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuint.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuart.Content" xml:space="preserve">
|
||||||
<value>Quintic Ease In-Out</value>
|
<value>Quartic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutSine.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuint.Content" xml:space="preserve">
|
||||||
<value>Sine Ease In-Out</value>
|
<value>Quintic</value>
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseSine.Content" xml:space="preserve">
|
||||||
|
<value>Sine</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
||||||
<value>Linear</value>
|
<value>Linear</value>
|
||||||
|
|||||||
@@ -810,35 +810,47 @@
|
|||||||
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
||||||
<value>Draggable Area</value>
|
<value>Draggable Area</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBack.Content" xml:space="preserve">
|
<data name="SettingsPageEasingMode.Header" xml:space="preserve">
|
||||||
<value>Back Ease In-Out</value>
|
<value>Easing Mode</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBounce.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeIn.Content" xml:space="preserve">
|
||||||
<value>Bounce Ease In-Out</value>
|
<value>In</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCirc.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeInOut.Content" xml:space="preserve">
|
||||||
<value>Circular Ease In-Out</value>
|
<value>In-Out</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCubic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeOut.Content" xml:space="preserve">
|
||||||
<value>Cubic Ease In-Out</value>
|
<value>Out</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutElastic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBack.Content" xml:space="preserve">
|
||||||
<value>Elastic Ease In-Out</value>
|
<value>Back</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutExpo.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBounce.Content" xml:space="preserve">
|
||||||
<value>Exponential Ease In-Out</value>
|
<value>Bounce</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuad.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCirc.Content" xml:space="preserve">
|
||||||
<value>Quadratic Ease In-Out</value>
|
<value>Circular</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuart.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCubic.Content" xml:space="preserve">
|
||||||
<value>Quartic Ease In-Out</value>
|
<value>Cubic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuint.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseElastic.Content" xml:space="preserve">
|
||||||
<value>Quintic Ease In-Out</value>
|
<value>Elastic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutSine.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseExpo.Content" xml:space="preserve">
|
||||||
<value>Sine Ease In-Out</value>
|
<value>Exponential</value>
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseQuad.Content" xml:space="preserve">
|
||||||
|
<value>Quadratic</value>
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseQuart.Content" xml:space="preserve">
|
||||||
|
<value>Quartic</value>
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseQuint.Content" xml:space="preserve">
|
||||||
|
<value>Quintic</value>
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseSine.Content" xml:space="preserve">
|
||||||
|
<value>Sine</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
||||||
<value>Linear</value>
|
<value>Linear</value>
|
||||||
|
|||||||
@@ -810,35 +810,41 @@
|
|||||||
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
||||||
<value>Área arrastrable</value>
|
<value>Área arrastrable</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBack.Content" xml:space="preserve">
|
<data name="SettingsPageEasingMode.Header" xml:space="preserve">
|
||||||
<value>Back Ease In-Out</value>
|
<value />
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBounce.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeOut.Content" xml:space="preserve">
|
||||||
<value>Bounce Ease In-Out</value>
|
<value />
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCirc.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBack.Content" xml:space="preserve">
|
||||||
<value>Circular Ease In-Out</value>
|
<value>Back</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCubic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBounce.Content" xml:space="preserve">
|
||||||
<value>Cubic Ease In-Out</value>
|
<value>Bounce</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutElastic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCirc.Content" xml:space="preserve">
|
||||||
<value>Elastic Ease In-Out</value>
|
<value>Circular</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutExpo.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCubic.Content" xml:space="preserve">
|
||||||
<value>Exponential Ease In-Out</value>
|
<value>Cubic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuad.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseElastic.Content" xml:space="preserve">
|
||||||
<value>Quadratic Ease In-Out</value>
|
<value>Elastic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuart.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseExpo.Content" xml:space="preserve">
|
||||||
<value>Quartic Ease In-Out</value>
|
<value>Exponential</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuint.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuad.Content" xml:space="preserve">
|
||||||
<value>Quintic Ease In-Out</value>
|
<value>Quadratic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutSine.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuart.Content" xml:space="preserve">
|
||||||
<value>Sine Ease In-Out</value>
|
<value>Quartic</value>
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseQuint.Content" xml:space="preserve">
|
||||||
|
<value>Quintic</value>
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseSine.Content" xml:space="preserve">
|
||||||
|
<value>Sine</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
||||||
<value>Lineal</value>
|
<value>Lineal</value>
|
||||||
|
|||||||
@@ -810,35 +810,38 @@
|
|||||||
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
||||||
<value>Zone déplaçable</value>
|
<value>Zone déplaçable</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBack.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeOut.Content" xml:space="preserve">
|
||||||
<value>Back Ease In-Out</value>
|
<value />
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBounce.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBack.Content" xml:space="preserve">
|
||||||
<value>Bounce Ease In-Out</value>
|
<value>Back</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCirc.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBounce.Content" xml:space="preserve">
|
||||||
<value>Circular Ease In-Out</value>
|
<value>Bounce</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCubic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCirc.Content" xml:space="preserve">
|
||||||
<value>Cubic Ease In-Out</value>
|
<value>Circular</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutElastic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCubic.Content" xml:space="preserve">
|
||||||
<value>Elastic Ease In-Out</value>
|
<value>Cubic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutExpo.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseElastic.Content" xml:space="preserve">
|
||||||
<value>Exponential Ease In-Out</value>
|
<value>Elastic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuad.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseExpo.Content" xml:space="preserve">
|
||||||
<value>Quadratic Ease In-Out</value>
|
<value>Exponential</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuart.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuad.Content" xml:space="preserve">
|
||||||
<value>Quartic Ease In-Out</value>
|
<value>Quadratic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuint.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuart.Content" xml:space="preserve">
|
||||||
<value>Quintic Ease In-Out</value>
|
<value>Quartic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutSine.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuint.Content" xml:space="preserve">
|
||||||
<value>Sine Ease In-Out</value>
|
<value>Quintic</value>
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseSine.Content" xml:space="preserve">
|
||||||
|
<value>Sine</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
||||||
<value>Linéaire</value>
|
<value>Linéaire</value>
|
||||||
|
|||||||
@@ -810,34 +810,37 @@
|
|||||||
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
||||||
<value>खींचने योग्य क्षेत्र</value>
|
<value>खींचने योग्य क्षेत्र</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBack.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeOut.Content" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseBack.Content" xml:space="preserve">
|
||||||
<value>EaseInOutBack</value>
|
<value>EaseInOutBack</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBounce.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBounce.Content" xml:space="preserve">
|
||||||
<value>EaseInOutBounce</value>
|
<value>EaseInOutBounce</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCirc.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCirc.Content" xml:space="preserve">
|
||||||
<value>EaseInOutCirc</value>
|
<value>EaseInOutCirc</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCubic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCubic.Content" xml:space="preserve">
|
||||||
<value>EaseInOutCubic</value>
|
<value>EaseInOutCubic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutElastic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseElastic.Content" xml:space="preserve">
|
||||||
<value>EaseInOutElastic</value>
|
<value>EaseInOutElastic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutExpo.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseExpo.Content" xml:space="preserve">
|
||||||
<value>EaseInOutExpo</value>
|
<value>EaseInOutExpo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuad.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuad.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuad</value>
|
<value>EaseInOutQuad</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuart.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuart.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuart</value>
|
<value>EaseInOutQuart</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuint.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuint.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuint</value>
|
<value>EaseInOutQuint</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutSine.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseSine.Content" xml:space="preserve">
|
||||||
<value>EaseInOutSine</value>
|
<value>EaseInOutSine</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
||||||
|
|||||||
@@ -810,34 +810,37 @@
|
|||||||
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
||||||
<value>Area yang Dapat Diseret</value>
|
<value>Area yang Dapat Diseret</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBack.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeOut.Content" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseBack.Content" xml:space="preserve">
|
||||||
<value>EaseInOutBack</value>
|
<value>EaseInOutBack</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBounce.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBounce.Content" xml:space="preserve">
|
||||||
<value>EaseInOutBounce</value>
|
<value>EaseInOutBounce</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCirc.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCirc.Content" xml:space="preserve">
|
||||||
<value>EaseInOutCirc</value>
|
<value>EaseInOutCirc</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCubic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCubic.Content" xml:space="preserve">
|
||||||
<value>EaseInOutCubic</value>
|
<value>EaseInOutCubic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutElastic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseElastic.Content" xml:space="preserve">
|
||||||
<value>EaseInOutElastic</value>
|
<value>EaseInOutElastic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutExpo.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseExpo.Content" xml:space="preserve">
|
||||||
<value>EaseInOutExpo</value>
|
<value>EaseInOutExpo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuad.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuad.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuad</value>
|
<value>EaseInOutQuad</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuart.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuart.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuart</value>
|
<value>EaseInOutQuart</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuint.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuint.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuint</value>
|
<value>EaseInOutQuint</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutSine.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseSine.Content" xml:space="preserve">
|
||||||
<value>EaseInOutSine</value>
|
<value>EaseInOutSine</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
||||||
|
|||||||
@@ -810,34 +810,37 @@
|
|||||||
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
||||||
<value>ドラッグ可能エリア</value>
|
<value>ドラッグ可能エリア</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBack.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeOut.Content" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseBack.Content" xml:space="preserve">
|
||||||
<value>バックイーズ イン アウト</value>
|
<value>バックイーズ イン アウト</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBounce.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBounce.Content" xml:space="preserve">
|
||||||
<value>バウンスイーズ イン アウト</value>
|
<value>バウンスイーズ イン アウト</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCirc.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCirc.Content" xml:space="preserve">
|
||||||
<value>サーキュラーイーズ イン アウト</value>
|
<value>サーキュラーイーズ イン アウト</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCubic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCubic.Content" xml:space="preserve">
|
||||||
<value>キュービックイーズ イン アウト</value>
|
<value>キュービックイーズ イン アウト</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutElastic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseElastic.Content" xml:space="preserve">
|
||||||
<value>エラスティックイーズ イン アウト</value>
|
<value>エラスティックイーズ イン アウト</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutExpo.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseExpo.Content" xml:space="preserve">
|
||||||
<value>エキスポネンシャルイーズ イン アウト</value>
|
<value>エキスポネンシャルイーズ イン アウト</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuad.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuad.Content" xml:space="preserve">
|
||||||
<value>クアドラティックイーズ イン アウト</value>
|
<value>クアドラティックイーズ イン アウト</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuart.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuart.Content" xml:space="preserve">
|
||||||
<value>クオートイーズ イン アウト</value>
|
<value>クオートイーズ イン アウト</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuint.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuint.Content" xml:space="preserve">
|
||||||
<value>クイントイーズ イン アウト</value>
|
<value>クイントイーズ イン アウト</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutSine.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseSine.Content" xml:space="preserve">
|
||||||
<value>サインイーズ イン アウト</value>
|
<value>サインイーズ イン アウト</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
||||||
|
|||||||
@@ -810,35 +810,38 @@
|
|||||||
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
||||||
<value>드래그 가능 영역</value>
|
<value>드래그 가능 영역</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBack.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeOut.Content" xml:space="preserve">
|
||||||
<value>Back Ease In-Out</value>
|
<value />
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBounce.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBack.Content" xml:space="preserve">
|
||||||
<value>Bounce Ease In-Out</value>
|
<value>Back</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCirc.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBounce.Content" xml:space="preserve">
|
||||||
<value>Circular Ease In-Out</value>
|
<value>Bounce</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCubic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCirc.Content" xml:space="preserve">
|
||||||
<value>Cubic Ease In-Out</value>
|
<value>Circular</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutElastic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCubic.Content" xml:space="preserve">
|
||||||
<value>Elastic Ease In-Out</value>
|
<value>Cubic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutExpo.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseElastic.Content" xml:space="preserve">
|
||||||
<value>Exponential Ease In-Out</value>
|
<value>Elastic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuad.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseExpo.Content" xml:space="preserve">
|
||||||
<value>Quadratic Ease In-Out</value>
|
<value>Exponential</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuart.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuad.Content" xml:space="preserve">
|
||||||
<value>Quartic Ease In-Out</value>
|
<value>Quadratic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuint.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuart.Content" xml:space="preserve">
|
||||||
<value>Quintic Ease In-Out</value>
|
<value>Quartic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutSine.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuint.Content" xml:space="preserve">
|
||||||
<value>Sine Ease In-Out</value>
|
<value>Quintic</value>
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseSine.Content" xml:space="preserve">
|
||||||
|
<value>Sine</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
||||||
<value>Linear (선형)</value>
|
<value>Linear (선형)</value>
|
||||||
|
|||||||
@@ -810,34 +810,37 @@
|
|||||||
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
||||||
<value>Kawasan Boleh Diseret</value>
|
<value>Kawasan Boleh Diseret</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBack.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeOut.Content" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseBack.Content" xml:space="preserve">
|
||||||
<value>EaseInOutBack</value>
|
<value>EaseInOutBack</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBounce.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBounce.Content" xml:space="preserve">
|
||||||
<value>EaseInOutBounce</value>
|
<value>EaseInOutBounce</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCirc.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCirc.Content" xml:space="preserve">
|
||||||
<value>EaseInOutCirc</value>
|
<value>EaseInOutCirc</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCubic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCubic.Content" xml:space="preserve">
|
||||||
<value>EaseInOutCubic</value>
|
<value>EaseInOutCubic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutElastic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseElastic.Content" xml:space="preserve">
|
||||||
<value>EaseInOutElastic</value>
|
<value>EaseInOutElastic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutExpo.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseExpo.Content" xml:space="preserve">
|
||||||
<value>EaseInOutExpo</value>
|
<value>EaseInOutExpo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuad.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuad.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuad</value>
|
<value>EaseInOutQuad</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuart.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuart.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuart</value>
|
<value>EaseInOutQuart</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuint.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuint.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuint</value>
|
<value>EaseInOutQuint</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutSine.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseSine.Content" xml:space="preserve">
|
||||||
<value>EaseInOutSine</value>
|
<value>EaseInOutSine</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
||||||
|
|||||||
@@ -810,34 +810,37 @@
|
|||||||
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
||||||
<value>Área de Arrastar</value>
|
<value>Área de Arrastar</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBack.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeOut.Content" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseBack.Content" xml:space="preserve">
|
||||||
<value>EaseInOutBack</value>
|
<value>EaseInOutBack</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBounce.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBounce.Content" xml:space="preserve">
|
||||||
<value>EaseInOutBounce</value>
|
<value>EaseInOutBounce</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCirc.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCirc.Content" xml:space="preserve">
|
||||||
<value>EaseInOutCirc</value>
|
<value>EaseInOutCirc</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCubic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCubic.Content" xml:space="preserve">
|
||||||
<value>EaseInOutCubic</value>
|
<value>EaseInOutCubic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutElastic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseElastic.Content" xml:space="preserve">
|
||||||
<value>EaseInOutElastic</value>
|
<value>EaseInOutElastic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutExpo.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseExpo.Content" xml:space="preserve">
|
||||||
<value>EaseInOutExpo</value>
|
<value>EaseInOutExpo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuad.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuad.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuad</value>
|
<value>EaseInOutQuad</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuart.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuart.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuart</value>
|
<value>EaseInOutQuart</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuint.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuint.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuint</value>
|
<value>EaseInOutQuint</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutSine.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseSine.Content" xml:space="preserve">
|
||||||
<value>EaseInOutSine</value>
|
<value>EaseInOutSine</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
||||||
|
|||||||
@@ -810,35 +810,38 @@
|
|||||||
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
||||||
<value>Перетаскиваемая область</value>
|
<value>Перетаскиваемая область</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBack.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeOut.Content" xml:space="preserve">
|
||||||
<value>Back Ease In-Out</value>
|
<value />
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBounce.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBack.Content" xml:space="preserve">
|
||||||
<value>Bounce Ease In-Out</value>
|
<value>Back</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCirc.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBounce.Content" xml:space="preserve">
|
||||||
<value>Circular Ease In-Out</value>
|
<value>Bounce</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCubic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCirc.Content" xml:space="preserve">
|
||||||
<value>Cubic Ease In-Out</value>
|
<value>Circular</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutElastic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCubic.Content" xml:space="preserve">
|
||||||
<value>Elastic Ease In-Out</value>
|
<value>Cubic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutExpo.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseElastic.Content" xml:space="preserve">
|
||||||
<value>Exponential Ease In-Out</value>
|
<value>Elastic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuad.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseExpo.Content" xml:space="preserve">
|
||||||
<value>Quadratic Ease In-Out</value>
|
<value>Exponential</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuart.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuad.Content" xml:space="preserve">
|
||||||
<value>Quartic Ease In-Out</value>
|
<value>Quadratic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuint.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuart.Content" xml:space="preserve">
|
||||||
<value>Quintic Ease In-Out</value>
|
<value>Quartic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutSine.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuint.Content" xml:space="preserve">
|
||||||
<value>Sine Ease In-Out</value>
|
<value>Quintic</value>
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseSine.Content" xml:space="preserve">
|
||||||
|
<value>Sine</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
||||||
<value>Linear</value>
|
<value>Linear</value>
|
||||||
|
|||||||
@@ -810,34 +810,37 @@
|
|||||||
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
||||||
<value>พื้นที่ลาก</value>
|
<value>พื้นที่ลาก</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBack.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeOut.Content" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseBack.Content" xml:space="preserve">
|
||||||
<value>EaseInOutBack</value>
|
<value>EaseInOutBack</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBounce.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBounce.Content" xml:space="preserve">
|
||||||
<value>EaseInOutBounce</value>
|
<value>EaseInOutBounce</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCirc.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCirc.Content" xml:space="preserve">
|
||||||
<value>EaseInOutCirc</value>
|
<value>EaseInOutCirc</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCubic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCubic.Content" xml:space="preserve">
|
||||||
<value>EaseInOutCubic</value>
|
<value>EaseInOutCubic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutElastic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseElastic.Content" xml:space="preserve">
|
||||||
<value>EaseInOutElastic</value>
|
<value>EaseInOutElastic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutExpo.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseExpo.Content" xml:space="preserve">
|
||||||
<value>EaseInOutExpo</value>
|
<value>EaseInOutExpo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuad.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuad.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuad</value>
|
<value>EaseInOutQuad</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuart.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuart.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuart</value>
|
<value>EaseInOutQuart</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuint.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuint.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuint</value>
|
<value>EaseInOutQuint</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutSine.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseSine.Content" xml:space="preserve">
|
||||||
<value>EaseInOutSine</value>
|
<value>EaseInOutSine</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
||||||
|
|||||||
@@ -810,34 +810,37 @@
|
|||||||
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
||||||
<value>Vùng có thể kéo</value>
|
<value>Vùng có thể kéo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBack.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeOut.Content" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseBack.Content" xml:space="preserve">
|
||||||
<value>EaseInOutBack</value>
|
<value>EaseInOutBack</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBounce.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBounce.Content" xml:space="preserve">
|
||||||
<value>EaseInOutBounce</value>
|
<value>EaseInOutBounce</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCirc.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCirc.Content" xml:space="preserve">
|
||||||
<value>EaseInOutCirc</value>
|
<value>EaseInOutCirc</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCubic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCubic.Content" xml:space="preserve">
|
||||||
<value>EaseInOutCubic</value>
|
<value>EaseInOutCubic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutElastic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseElastic.Content" xml:space="preserve">
|
||||||
<value>EaseInOutElastic</value>
|
<value>EaseInOutElastic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutExpo.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseExpo.Content" xml:space="preserve">
|
||||||
<value>EaseInOutExpo</value>
|
<value>EaseInOutExpo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuad.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuad.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuad</value>
|
<value>EaseInOutQuad</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuart.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuart.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuart</value>
|
<value>EaseInOutQuart</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuint.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuint.Content" xml:space="preserve">
|
||||||
<value>EaseInOutQuint</value>
|
<value>EaseInOutQuint</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutSine.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseSine.Content" xml:space="preserve">
|
||||||
<value>EaseInOutSine</value>
|
<value>EaseInOutSine</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
||||||
|
|||||||
@@ -810,35 +810,47 @@
|
|||||||
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
||||||
<value>可拖动区域</value>
|
<value>可拖动区域</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBack.Content" xml:space="preserve">
|
<data name="SettingsPageEasingMode.Header" xml:space="preserve">
|
||||||
<value>回弹缓入缓出</value>
|
<value>缓动类型</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBounce.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeIn.Content" xml:space="preserve">
|
||||||
<value>弹跳缓入缓出</value>
|
<value>缓入</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCirc.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeInOut.Content" xml:space="preserve">
|
||||||
<value>圆形缓入缓出</value>
|
<value>缓出</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCubic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeOut.Content" xml:space="preserve">
|
||||||
<value>三次缓入缓出</value>
|
<value>缓入缓出</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutElastic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBack.Content" xml:space="preserve">
|
||||||
<value>弹性缓入缓出</value>
|
<value>回弹</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutExpo.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBounce.Content" xml:space="preserve">
|
||||||
<value>指数缓入缓出</value>
|
<value>弹跳</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuad.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCirc.Content" xml:space="preserve">
|
||||||
<value>二次缓入缓出</value>
|
<value>圆形</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuart.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCubic.Content" xml:space="preserve">
|
||||||
<value>四次缓入缓出</value>
|
<value>三次</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuint.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseElastic.Content" xml:space="preserve">
|
||||||
<value>五次缓入缓出</value>
|
<value>弹性</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutSine.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseExpo.Content" xml:space="preserve">
|
||||||
<value>正弦缓入缓出</value>
|
<value>指数</value>
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseQuad.Content" xml:space="preserve">
|
||||||
|
<value>二次</value>
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseQuart.Content" xml:space="preserve">
|
||||||
|
<value>四次</value>
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseQuint.Content" xml:space="preserve">
|
||||||
|
<value>五次</value>
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseSine.Content" xml:space="preserve">
|
||||||
|
<value>正弦</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
||||||
<value>线性</value>
|
<value>线性</value>
|
||||||
|
|||||||
@@ -810,34 +810,37 @@
|
|||||||
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
<data name="SettingsPageDragArea.Header" xml:space="preserve">
|
||||||
<value>可拖曳區域</value>
|
<value>可拖曳區域</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBack.Content" xml:space="preserve">
|
<data name="SettingsPageEasingModeOut.Content" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageEasingTypeEaseBack.Content" xml:space="preserve">
|
||||||
<value>回彈緩入緩出</value>
|
<value>回彈緩入緩出</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutBounce.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseBounce.Content" xml:space="preserve">
|
||||||
<value>彈跳緩入緩出</value>
|
<value>彈跳緩入緩出</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCirc.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCirc.Content" xml:space="preserve">
|
||||||
<value>圓形緩入緩出</value>
|
<value>圓形緩入緩出</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutCubic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseCubic.Content" xml:space="preserve">
|
||||||
<value>三次緩入緩出</value>
|
<value>三次緩入緩出</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutElastic.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseElastic.Content" xml:space="preserve">
|
||||||
<value>彈性緩入緩出</value>
|
<value>彈性緩入緩出</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutExpo.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseExpo.Content" xml:space="preserve">
|
||||||
<value>指數緩入緩出</value>
|
<value>指數緩入緩出</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuad.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuad.Content" xml:space="preserve">
|
||||||
<value>二次緩入緩出</value>
|
<value>二次緩入緩出</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuart.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuart.Content" xml:space="preserve">
|
||||||
<value>四次緩入緩出</value>
|
<value>四次緩入緩出</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutQuint.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseQuint.Content" xml:space="preserve">
|
||||||
<value>五次緩入緩出</value>
|
<value>五次緩入緩出</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeEaseInOutSine.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeEaseSine.Content" xml:space="preserve">
|
||||||
<value>正弦緩入緩出</value>
|
<value>正弦緩入緩出</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
<data name="SettingsPageEasingTypeLinear.Content" xml:space="preserve">
|
||||||
|
|||||||
127
BetterLyrics.sln
127
BetterLyrics.sln
@@ -1,127 +0,0 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
|
||||||
# Visual Studio Version 18
|
|
||||||
VisualStudioVersion = 18.1.11312.151
|
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
|
||||||
Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "BetterLyrics.WinUI3 (Package)", "BetterLyrics.WinUI3\BetterLyrics.WinUI3 (Package)\BetterLyrics.WinUI3 (Package).wapproj", "{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BetterLyrics.WinUI3", "BetterLyrics.WinUI3\BetterLyrics.WinUI3\BetterLyrics.WinUI3.csproj", "{6D26909A-9EE5-4D26-9E81-686BDE36A9D3}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Impressionist", "Impressionist\Impressionist\Impressionist.csproj", "{A678BCA5-03DE-71E4-73C1-388B7550E4E3}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ColorThief.WinUI3", "ColorThief.WinUI3\ColorThief.WinUI3.csproj", "{8F2FE667-2D91-428E-0630-05E6330F9625}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BetterLyrics.Core", "BetterLyrics.Core\BetterLyrics.Core.csproj", "{0F47FE6F-D0AA-49E5-8F33-78DFDEB1F810}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BetterLyrics.Plugins.Romaji", "BetterLyrics.Plugins.Romaji\BetterLyrics.Plugins.Romaji.csproj", "{DD2D477F-94CD-4D4B-8B59-C127F2850E34}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RomajiConverter.Core", "RomajiConverter.Core\RomajiConverter.Core.csproj", "{351807DB-CD63-B939-8071-B1FBFF969569}"
|
|
||||||
EndProject
|
|
||||||
Global
|
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
|
||||||
Debug|ARM64 = Debug|ARM64
|
|
||||||
Debug|x64 = Debug|x64
|
|
||||||
Debug|x86 = Debug|x86
|
|
||||||
Release|ARM64 = Release|ARM64
|
|
||||||
Release|x64 = Release|x64
|
|
||||||
Release|x86 = Release|x86
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Debug|ARM64.Build.0 = Debug|ARM64
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Debug|ARM64.Deploy.0 = Debug|ARM64
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Debug|x64.Deploy.0 = Debug|x64
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Debug|x86.ActiveCfg = Debug|x86
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Debug|x86.Build.0 = Debug|x86
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Debug|x86.Deploy.0 = Debug|x86
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Release|ARM64.ActiveCfg = Release|ARM64
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Release|ARM64.Build.0 = Release|ARM64
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Release|ARM64.Deploy.0 = Release|ARM64
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Release|x64.Build.0 = Release|x64
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Release|x64.Deploy.0 = Release|x64
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Release|x86.ActiveCfg = Release|x86
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Release|x86.Build.0 = Release|x86
|
|
||||||
{6576CD19-EF92-4099-B37D-E2D8EBDB6BF5}.Release|x86.Deploy.0 = Release|x86
|
|
||||||
{6D26909A-9EE5-4D26-9E81-686BDE36A9D3}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
|
||||||
{6D26909A-9EE5-4D26-9E81-686BDE36A9D3}.Debug|ARM64.Build.0 = Debug|ARM64
|
|
||||||
{6D26909A-9EE5-4D26-9E81-686BDE36A9D3}.Debug|x64.ActiveCfg = Debug|x64
|
|
||||||
{6D26909A-9EE5-4D26-9E81-686BDE36A9D3}.Debug|x64.Build.0 = Debug|x64
|
|
||||||
{6D26909A-9EE5-4D26-9E81-686BDE36A9D3}.Debug|x86.ActiveCfg = Debug|x86
|
|
||||||
{6D26909A-9EE5-4D26-9E81-686BDE36A9D3}.Debug|x86.Build.0 = Debug|x86
|
|
||||||
{6D26909A-9EE5-4D26-9E81-686BDE36A9D3}.Release|ARM64.ActiveCfg = Release|ARM64
|
|
||||||
{6D26909A-9EE5-4D26-9E81-686BDE36A9D3}.Release|ARM64.Build.0 = Release|ARM64
|
|
||||||
{6D26909A-9EE5-4D26-9E81-686BDE36A9D3}.Release|x64.ActiveCfg = Release|x64
|
|
||||||
{6D26909A-9EE5-4D26-9E81-686BDE36A9D3}.Release|x64.Build.0 = Release|x64
|
|
||||||
{6D26909A-9EE5-4D26-9E81-686BDE36A9D3}.Release|x86.ActiveCfg = Release|x86
|
|
||||||
{6D26909A-9EE5-4D26-9E81-686BDE36A9D3}.Release|x86.Build.0 = Release|x86
|
|
||||||
{A678BCA5-03DE-71E4-73C1-388B7550E4E3}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
|
||||||
{A678BCA5-03DE-71E4-73C1-388B7550E4E3}.Debug|ARM64.Build.0 = Debug|Any CPU
|
|
||||||
{A678BCA5-03DE-71E4-73C1-388B7550E4E3}.Debug|x64.ActiveCfg = Debug|Any CPU
|
|
||||||
{A678BCA5-03DE-71E4-73C1-388B7550E4E3}.Debug|x64.Build.0 = Debug|Any CPU
|
|
||||||
{A678BCA5-03DE-71E4-73C1-388B7550E4E3}.Debug|x86.ActiveCfg = Debug|Any CPU
|
|
||||||
{A678BCA5-03DE-71E4-73C1-388B7550E4E3}.Debug|x86.Build.0 = Debug|Any CPU
|
|
||||||
{A678BCA5-03DE-71E4-73C1-388B7550E4E3}.Release|ARM64.ActiveCfg = Release|Any CPU
|
|
||||||
{A678BCA5-03DE-71E4-73C1-388B7550E4E3}.Release|ARM64.Build.0 = Release|Any CPU
|
|
||||||
{A678BCA5-03DE-71E4-73C1-388B7550E4E3}.Release|x64.ActiveCfg = Release|Any CPU
|
|
||||||
{A678BCA5-03DE-71E4-73C1-388B7550E4E3}.Release|x64.Build.0 = Release|Any CPU
|
|
||||||
{A678BCA5-03DE-71E4-73C1-388B7550E4E3}.Release|x86.ActiveCfg = Release|Any CPU
|
|
||||||
{A678BCA5-03DE-71E4-73C1-388B7550E4E3}.Release|x86.Build.0 = Release|Any CPU
|
|
||||||
{8F2FE667-2D91-428E-0630-05E6330F9625}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
|
||||||
{8F2FE667-2D91-428E-0630-05E6330F9625}.Debug|ARM64.Build.0 = Debug|Any CPU
|
|
||||||
{8F2FE667-2D91-428E-0630-05E6330F9625}.Debug|x64.ActiveCfg = Debug|Any CPU
|
|
||||||
{8F2FE667-2D91-428E-0630-05E6330F9625}.Debug|x64.Build.0 = Debug|Any CPU
|
|
||||||
{8F2FE667-2D91-428E-0630-05E6330F9625}.Debug|x86.ActiveCfg = Debug|Any CPU
|
|
||||||
{8F2FE667-2D91-428E-0630-05E6330F9625}.Debug|x86.Build.0 = Debug|Any CPU
|
|
||||||
{8F2FE667-2D91-428E-0630-05E6330F9625}.Release|ARM64.ActiveCfg = Release|Any CPU
|
|
||||||
{8F2FE667-2D91-428E-0630-05E6330F9625}.Release|ARM64.Build.0 = Release|Any CPU
|
|
||||||
{8F2FE667-2D91-428E-0630-05E6330F9625}.Release|x64.ActiveCfg = Release|Any CPU
|
|
||||||
{8F2FE667-2D91-428E-0630-05E6330F9625}.Release|x64.Build.0 = Release|Any CPU
|
|
||||||
{8F2FE667-2D91-428E-0630-05E6330F9625}.Release|x86.ActiveCfg = Release|Any CPU
|
|
||||||
{8F2FE667-2D91-428E-0630-05E6330F9625}.Release|x86.Build.0 = Release|Any CPU
|
|
||||||
{0F47FE6F-D0AA-49E5-8F33-78DFDEB1F810}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
|
||||||
{0F47FE6F-D0AA-49E5-8F33-78DFDEB1F810}.Debug|ARM64.Build.0 = Debug|Any CPU
|
|
||||||
{0F47FE6F-D0AA-49E5-8F33-78DFDEB1F810}.Debug|x64.ActiveCfg = Debug|Any CPU
|
|
||||||
{0F47FE6F-D0AA-49E5-8F33-78DFDEB1F810}.Debug|x64.Build.0 = Debug|Any CPU
|
|
||||||
{0F47FE6F-D0AA-49E5-8F33-78DFDEB1F810}.Debug|x86.ActiveCfg = Debug|Any CPU
|
|
||||||
{0F47FE6F-D0AA-49E5-8F33-78DFDEB1F810}.Debug|x86.Build.0 = Debug|Any CPU
|
|
||||||
{0F47FE6F-D0AA-49E5-8F33-78DFDEB1F810}.Release|ARM64.ActiveCfg = Release|Any CPU
|
|
||||||
{0F47FE6F-D0AA-49E5-8F33-78DFDEB1F810}.Release|ARM64.Build.0 = Release|Any CPU
|
|
||||||
{0F47FE6F-D0AA-49E5-8F33-78DFDEB1F810}.Release|x64.ActiveCfg = Release|Any CPU
|
|
||||||
{0F47FE6F-D0AA-49E5-8F33-78DFDEB1F810}.Release|x64.Build.0 = Release|Any CPU
|
|
||||||
{0F47FE6F-D0AA-49E5-8F33-78DFDEB1F810}.Release|x86.ActiveCfg = Release|Any CPU
|
|
||||||
{0F47FE6F-D0AA-49E5-8F33-78DFDEB1F810}.Release|x86.Build.0 = Release|Any CPU
|
|
||||||
{DD2D477F-94CD-4D4B-8B59-C127F2850E34}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
|
||||||
{DD2D477F-94CD-4D4B-8B59-C127F2850E34}.Debug|ARM64.Build.0 = Debug|Any CPU
|
|
||||||
{DD2D477F-94CD-4D4B-8B59-C127F2850E34}.Debug|x64.ActiveCfg = Debug|Any CPU
|
|
||||||
{DD2D477F-94CD-4D4B-8B59-C127F2850E34}.Debug|x64.Build.0 = Debug|Any CPU
|
|
||||||
{DD2D477F-94CD-4D4B-8B59-C127F2850E34}.Debug|x86.ActiveCfg = Debug|Any CPU
|
|
||||||
{DD2D477F-94CD-4D4B-8B59-C127F2850E34}.Debug|x86.Build.0 = Debug|Any CPU
|
|
||||||
{DD2D477F-94CD-4D4B-8B59-C127F2850E34}.Release|ARM64.ActiveCfg = Release|Any CPU
|
|
||||||
{DD2D477F-94CD-4D4B-8B59-C127F2850E34}.Release|ARM64.Build.0 = Release|Any CPU
|
|
||||||
{DD2D477F-94CD-4D4B-8B59-C127F2850E34}.Release|x64.ActiveCfg = Release|Any CPU
|
|
||||||
{DD2D477F-94CD-4D4B-8B59-C127F2850E34}.Release|x64.Build.0 = Release|Any CPU
|
|
||||||
{DD2D477F-94CD-4D4B-8B59-C127F2850E34}.Release|x86.ActiveCfg = Release|Any CPU
|
|
||||||
{DD2D477F-94CD-4D4B-8B59-C127F2850E34}.Release|x86.Build.0 = Release|Any CPU
|
|
||||||
{351807DB-CD63-B939-8071-B1FBFF969569}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
|
||||||
{351807DB-CD63-B939-8071-B1FBFF969569}.Debug|ARM64.Build.0 = Debug|Any CPU
|
|
||||||
{351807DB-CD63-B939-8071-B1FBFF969569}.Debug|x64.ActiveCfg = Debug|Any CPU
|
|
||||||
{351807DB-CD63-B939-8071-B1FBFF969569}.Debug|x64.Build.0 = Debug|Any CPU
|
|
||||||
{351807DB-CD63-B939-8071-B1FBFF969569}.Debug|x86.ActiveCfg = Debug|Any CPU
|
|
||||||
{351807DB-CD63-B939-8071-B1FBFF969569}.Debug|x86.Build.0 = Debug|Any CPU
|
|
||||||
{351807DB-CD63-B939-8071-B1FBFF969569}.Release|ARM64.ActiveCfg = Release|Any CPU
|
|
||||||
{351807DB-CD63-B939-8071-B1FBFF969569}.Release|ARM64.Build.0 = Release|Any CPU
|
|
||||||
{351807DB-CD63-B939-8071-B1FBFF969569}.Release|x64.ActiveCfg = Release|Any CPU
|
|
||||||
{351807DB-CD63-B939-8071-B1FBFF969569}.Release|x64.Build.0 = Release|Any CPU
|
|
||||||
{351807DB-CD63-B939-8071-B1FBFF969569}.Release|x86.ActiveCfg = Release|Any CPU
|
|
||||||
{351807DB-CD63-B939-8071-B1FBFF969569}.Release|x86.Build.0 = Release|Any CPU
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
|
||||||
HideSolutionNode = FALSE
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
|
||||||
SolutionGuid = {0FD73F15-ED69-4DC2-9FD3-A4F03AF172A4}
|
|
||||||
EndGlobalSection
|
|
||||||
EndGlobal
|
|
||||||
21
BetterLyrics.slnx
Normal file
21
BetterLyrics.slnx
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<Solution>
|
||||||
|
<Configurations>
|
||||||
|
<Platform Name="ARM64" />
|
||||||
|
<Platform Name="x64" />
|
||||||
|
<Platform Name="x86" />
|
||||||
|
</Configurations>
|
||||||
|
<Project Path="BetterLyrics.Core/BetterLyrics.Core.csproj" />
|
||||||
|
<Project Path="BetterLyrics.Plugins.Romaji/BetterLyrics.Plugins.Romaji.csproj" />
|
||||||
|
<Project Path="BetterLyrics.WinUI3/BetterLyrics.WinUI3 (Package)/BetterLyrics.WinUI3 (Package).wapproj" Type="c7167f0d-bc9f-4e6e-afe1-012c56b48db5">
|
||||||
|
<Deploy />
|
||||||
|
</Project>
|
||||||
|
<Project Path="BetterLyrics.WinUI3/BetterLyrics.WinUI3/BetterLyrics.WinUI3.csproj">
|
||||||
|
<Platform Solution="*|ARM64" Project="ARM64" />
|
||||||
|
<Platform Solution="*|x64" Project="x64" />
|
||||||
|
<Platform Solution="*|x86" Project="x86" />
|
||||||
|
</Project>
|
||||||
|
<Project Path="ColorThief.WinUI3/ColorThief.WinUI3.csproj" />
|
||||||
|
<Project Path="Impressionist/Impressionist/Impressionist.csproj" />
|
||||||
|
<Project Path="PluginAnalyzer/PluginAnalyzer.csproj" Id="8ee58bf7-807d-486c-8d7d-c00bb9ec2b81" />
|
||||||
|
<Project Path="RomajiConverter.Core/RomajiConverter.Core.csproj" />
|
||||||
|
</Solution>
|
||||||
@@ -4,11 +4,6 @@
|
|||||||
<TargetPlatformMinVersion>10.0.19041.0</TargetPlatformMinVersion>
|
<TargetPlatformMinVersion>10.0.19041.0</TargetPlatformMinVersion>
|
||||||
<RootNamespace>ColorThief.WinUI3</RootNamespace>
|
<RootNamespace>ColorThief.WinUI3</RootNamespace>
|
||||||
<RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>
|
<RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>
|
||||||
<UseWinUI>true</UseWinUI>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.7175" />
|
|
||||||
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.8.251106002" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
14
PluginAnalyzer/PluginAnalyzer.csproj
Normal file
14
PluginAnalyzer/PluginAnalyzer.csproj
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Mono.Cecil" Version="0.11.6" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
254
PluginAnalyzer/Program.cs
Normal file
254
PluginAnalyzer/Program.cs
Normal file
@@ -0,0 +1,254 @@
|
|||||||
|
using Mono.Cecil;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
|
class Program
|
||||||
|
{
|
||||||
|
// Global sets
|
||||||
|
static HashSet<string> _mergedAssemblies = new HashSet<string>();
|
||||||
|
static HashSet<string> _mergedSystemTypes = new HashSet<string>();
|
||||||
|
static string _currentScanDirectory = "";
|
||||||
|
|
||||||
|
static void Main(string[] args)
|
||||||
|
{
|
||||||
|
// =========================================================
|
||||||
|
// 🚀 MODE 1: CLI Automation Mode (被 VS 编译调用时)
|
||||||
|
// =========================================================
|
||||||
|
if (args.Length > 0)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string scanPath = args[0].Replace("\"", "").Trim();
|
||||||
|
string targetNs = args.Length > 1 ? args[1] : "BetterLyrics.WinUI3";
|
||||||
|
string prefix = args.Length > 2 ? args[2] : "Plugin";
|
||||||
|
|
||||||
|
// 读取第4个参数作为输出目录,如果没传,就默认用扫描目录
|
||||||
|
string outputDir = args.Length > 3 ? args[3].Replace("\"", "").Trim() : scanPath;
|
||||||
|
|
||||||
|
Console.WriteLine($"[Analyzer] Scanning: {scanPath}");
|
||||||
|
Console.WriteLine($"[Analyzer] Output to: {outputDir}");
|
||||||
|
|
||||||
|
RunBatch(scanPath, targetNs, prefix, outputDir, silent: true);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"[Analyzer] Error: {ex.Message}");
|
||||||
|
Environment.Exit(1);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================================
|
||||||
|
// 🚀 MODE 2: Interactive Mode (手动双击运行)
|
||||||
|
// =========================================================
|
||||||
|
Console.WriteLine("==================================================");
|
||||||
|
Console.WriteLine(" Plugin Dependency Analyzer (Auto-CLI Ready) ");
|
||||||
|
Console.WriteLine("==================================================");
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
_mergedAssemblies.Clear();
|
||||||
|
_mergedSystemTypes.Clear();
|
||||||
|
|
||||||
|
Console.WriteLine("\n1. Enter Plugin FOLDER path (or 'exit'):");
|
||||||
|
Console.Write("> ");
|
||||||
|
string input = Console.ReadLine();
|
||||||
|
if (string.IsNullOrWhiteSpace(input)) continue;
|
||||||
|
if (input.Trim().ToLower() == "exit") break;
|
||||||
|
|
||||||
|
string path = input.Replace("\"", "").Trim();
|
||||||
|
if (!Directory.Exists(path)) { Console.WriteLine("[ERROR] Folder not found."); continue; }
|
||||||
|
|
||||||
|
Console.WriteLine("2. Enter Namespace (Default: BetterLyrics.WinUI3):");
|
||||||
|
Console.Write("> ");
|
||||||
|
string ns = Console.ReadLine().Trim();
|
||||||
|
if (string.IsNullOrWhiteSpace(ns)) ns = "BetterLyrics.WinUI3";
|
||||||
|
|
||||||
|
string prefix = new DirectoryInfo(path).Name;
|
||||||
|
Console.WriteLine($"3. Enter prefix (Default: {prefix}):");
|
||||||
|
Console.Write("> ");
|
||||||
|
string p = Console.ReadLine().Trim();
|
||||||
|
if (!string.IsNullOrWhiteSpace(p)) prefix = p;
|
||||||
|
|
||||||
|
// 👇👇👇【修复点在这里】👇👇👇
|
||||||
|
// 交互模式下,我们默认把文件生成在 exe 旁边的 AnalyzerOutput 文件夹里
|
||||||
|
string interactiveOutputDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "AnalyzerOutput");
|
||||||
|
|
||||||
|
// 传入 interactiveOutputDir 以匹配新的方法签名
|
||||||
|
RunBatch(path, ns, prefix, interactiveOutputDir, silent: false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
// 下面的 RunBatch 和 GenerateFiles 签名已更新支持 outputDir
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
|
||||||
|
static void RunBatch(string scanPath, string ns, string prefix, string outputDir, bool silent)
|
||||||
|
{
|
||||||
|
_currentScanDirectory = scanPath;
|
||||||
|
_mergedAssemblies.Clear();
|
||||||
|
_mergedSystemTypes.Clear();
|
||||||
|
|
||||||
|
ProcessDirectory(scanPath);
|
||||||
|
|
||||||
|
// 传递 outputDir
|
||||||
|
GenerateFiles(prefix, ns, outputDir, silent);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void GenerateFiles(string prefix, string rootNamespace, string outputDir, bool silent)
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(outputDir);
|
||||||
|
|
||||||
|
string xmlFileName = $"{prefix}_TrimmerRoots.xml";
|
||||||
|
string csFileName = $"{prefix}_TrimmingConfig.cs";
|
||||||
|
|
||||||
|
// 👇 关键修改:区分 Assembly 名和 Namespace 名
|
||||||
|
string assemblyName = rootNamespace; // DLL 名字 (例如 BetterLyrics.WinUI3)
|
||||||
|
string codeNamespace = $"{rootNamespace}.PluginConfigs"; // C# 命名空间 (例如 BetterLyrics.WinUI3.PluginConfigs)
|
||||||
|
|
||||||
|
// 类名和全名
|
||||||
|
string configClassName = $"{prefix.Replace(".", "_").Replace(" ", "_")}_Config";
|
||||||
|
string fullConfigClassName = $"{codeNamespace}.{configClassName}";
|
||||||
|
|
||||||
|
// 路径变量
|
||||||
|
string xmlPath = Path.Combine(outputDir, xmlFileName);
|
||||||
|
string csPath = Path.Combine(outputDir, csFileName);
|
||||||
|
|
||||||
|
// ==========================================
|
||||||
|
// 1. Generate XML
|
||||||
|
// ==========================================
|
||||||
|
var xmlBuilder = new StringBuilder();
|
||||||
|
xmlBuilder.AppendLine("");
|
||||||
|
xmlBuilder.AppendLine("<linker>");
|
||||||
|
|
||||||
|
// A. 保护插件依赖
|
||||||
|
if (_mergedAssemblies.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (var asm in _mergedAssemblies.OrderBy(n => n))
|
||||||
|
xmlBuilder.AppendLine($" <assembly fullname=\"{asm}\" preserve=\"all\" />");
|
||||||
|
}
|
||||||
|
|
||||||
|
// B. 保护生成的 Config 类
|
||||||
|
// ⚠️ 注意:assembly fullname 必须是 rootNamespace (DLL名),而不是 codeNamespace
|
||||||
|
xmlBuilder.AppendLine($" <assembly fullname=\"{assemblyName}\">");
|
||||||
|
xmlBuilder.AppendLine($" <type fullname=\"{fullConfigClassName}\" preserve=\"all\" />");
|
||||||
|
xmlBuilder.AppendLine($" </assembly>");
|
||||||
|
|
||||||
|
xmlBuilder.AppendLine("</linker>");
|
||||||
|
|
||||||
|
// ==========================================
|
||||||
|
// 2. Generate C#
|
||||||
|
// ==========================================
|
||||||
|
var csBuilder = new StringBuilder();
|
||||||
|
csBuilder.AppendLine("// Auto-Generated by PluginAnalyzer");
|
||||||
|
csBuilder.AppendLine("using System.Diagnostics.CodeAnalysis;");
|
||||||
|
csBuilder.AppendLine("using System.Runtime.CompilerServices;");
|
||||||
|
csBuilder.AppendLine("");
|
||||||
|
|
||||||
|
// 👇 这里使用带后缀的命名空间
|
||||||
|
csBuilder.AppendLine($"namespace {codeNamespace};");
|
||||||
|
|
||||||
|
csBuilder.AppendLine($"internal static class {configClassName}");
|
||||||
|
csBuilder.AppendLine("{");
|
||||||
|
|
||||||
|
foreach (var type in _mergedSystemTypes.OrderBy(n => n))
|
||||||
|
{
|
||||||
|
csBuilder.AppendLine($" [DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof({type}))]");
|
||||||
|
}
|
||||||
|
|
||||||
|
csBuilder.AppendLine(" [ModuleInitializer]");
|
||||||
|
csBuilder.AppendLine(" internal static void Initialize()");
|
||||||
|
csBuilder.AppendLine(" {");
|
||||||
|
csBuilder.AppendLine(" // This method runs automatically on startup.");
|
||||||
|
csBuilder.AppendLine(" }");
|
||||||
|
csBuilder.AppendLine("}");
|
||||||
|
|
||||||
|
// ==========================================
|
||||||
|
// 3. Write & Notify
|
||||||
|
// ==========================================
|
||||||
|
File.WriteAllText(xmlPath, xmlBuilder.ToString());
|
||||||
|
File.WriteAllText(csPath, csBuilder.ToString());
|
||||||
|
|
||||||
|
if (!silent)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"[Analyzer] Generated: {xmlFileName}");
|
||||||
|
Process.Start("explorer.exe", outputDir);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine($"[Analyzer] Created: {xmlPath}");
|
||||||
|
Console.WriteLine($"[Analyzer] Created: {csPath}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
// Helpers (逻辑保持不变)
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
|
||||||
|
static void ProcessDirectory(string folderPath)
|
||||||
|
{
|
||||||
|
var files = Directory.GetFiles(folderPath, "*.dll");
|
||||||
|
foreach (var file in files)
|
||||||
|
{
|
||||||
|
if (!IsHostOrSystemBinary(Path.GetFileName(file))) AnalyzeDll(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void AnalyzeDll(string path)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var resolver = new DefaultAssemblyResolver();
|
||||||
|
resolver.AddSearchDirectory(Path.GetDirectoryName(path));
|
||||||
|
using var assembly = AssemblyDefinition.ReadAssembly(path, new ReaderParameters { AssemblyResolver = resolver });
|
||||||
|
|
||||||
|
foreach (var typeRef in assembly.MainModule.GetTypeReferences())
|
||||||
|
{
|
||||||
|
if (typeRef.Scope is AssemblyNameReference asmRef && !IsIgnoredDependency(asmRef.Name) && !IsLocalDll(asmRef.Name))
|
||||||
|
_mergedAssemblies.Add(asmRef.Name);
|
||||||
|
|
||||||
|
if (typeRef.FullName.StartsWith("System.") || typeRef.FullName.StartsWith("Microsoft.Win32"))
|
||||||
|
_mergedSystemTypes.Add(FormatTypeName(typeRef));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool IsLocalDll(string asmName) => File.Exists(Path.Combine(_currentScanDirectory, asmName + ".dll"));
|
||||||
|
|
||||||
|
static bool IsHostOrSystemBinary(string fileName)
|
||||||
|
{
|
||||||
|
fileName = fileName.ToLower();
|
||||||
|
return fileName.StartsWith("betterlyrics.") && !fileName.Contains("plugin") ||
|
||||||
|
fileName.StartsWith("microsoft.windows") || fileName.StartsWith("winrt.") || fileName.StartsWith("system.");
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool IsIgnoredDependency(string asmName) => asmName.Contains("BetterLyrics") || asmName.Contains("WindowsAppSDK") || asmName.Contains("Microsoft.Windows") || asmName == "netstandard" || asmName == "mscorlib";
|
||||||
|
|
||||||
|
static string FormatTypeName(TypeReference type)
|
||||||
|
{
|
||||||
|
string name = type.FullName;
|
||||||
|
|
||||||
|
// 1. 处理嵌套类型 (Cecil 用 '/',C# 用 '.')
|
||||||
|
name = name.Replace("/", ".");
|
||||||
|
|
||||||
|
// 2. 处理泛型 (核心修复:根据参数数量动态生成逗号)
|
||||||
|
// List`1 -> List<>
|
||||||
|
// Dictionary`2 -> Dictionary<,>
|
||||||
|
// Tuple`3 -> Tuple<,,>
|
||||||
|
if (name.Contains("`"))
|
||||||
|
{
|
||||||
|
name = Regex.Replace(name, @"`(\d+)", match =>
|
||||||
|
{
|
||||||
|
int argsCount = int.Parse(match.Groups[1].Value);
|
||||||
|
// 逗号数量 = 参数数量 - 1
|
||||||
|
// 比如 1个参数=0个逗号 (<>)
|
||||||
|
// 比如 2个参数=1个逗号 (<,>)
|
||||||
|
return "<" + new string(',', Math.Max(0, argsCount - 1)) + ">";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -19,7 +19,6 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="RomajiConverter.Core.targets" PackagePath="build/RomajiConverter.Core.targets" />
|
|
||||||
<None Include="docs\README.md" Pack="true" PackagePath="\" />
|
<None Include="docs\README.md" Pack="true" PackagePath="\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
<Project>
|
|
||||||
<ItemGroup>
|
|
||||||
<UniDicFiles Include="$(MSBuildThisFileDirectory)\..\contentFiles\any\any\unidic\**\*" />
|
|
||||||
<CustomizeDict Include="$(MSBuildThisFileDirectory)\..\contentFiles\any\any\customizeDict.txt" />
|
|
||||||
<VariantFiles Include="$(MSBuildThisFileDirectory)\..\contentFiles\any\any\Variants\**\*" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<Target Name="CopyFiles" BeforeTargets="Build">
|
|
||||||
<Copy SourceFiles="@(UniDicFiles)" DestinationFolder="$(TargetDir)unidic\%(RecursiveDir)" />
|
|
||||||
<Copy SourceFiles="@(CustomizeDict)" DestinationFolder="$(TargetDir)" />
|
|
||||||
<Copy SourceFiles="@(VariantFiles)" DestinationFolder="$(TargetDir)Variants\%(RecursiveDir)" />
|
|
||||||
</Target>
|
|
||||||
</Project>
|
|
||||||
Reference in New Issue
Block a user