瀏覽代碼

Platforms wip

Krzysztof Krysiński 2 年之前
父節點
當前提交
121879fe1a
共有 97 個文件被更改,包括 472 次插入137 次删除
  1. 9 0
      src/PixiEditor.Platform.MSStore/MSAdditionalContentProvider.cs
  2. 13 0
      src/PixiEditor.Platform.MSStore/MicrosoftStorePlatform.cs
  3. 13 0
      src/PixiEditor.Platform.MSStore/PixiEditor.Platform.MSStore.csproj
  4. 13 0
      src/PixiEditor.Platform.Standalone/PixiEditor.Platform.Standalone.csproj
  5. 9 0
      src/PixiEditor.Platform.Standalone/StandaloneAdditionalContentProvider.cs
  6. 13 0
      src/PixiEditor.Platform.Standalone/StandalonePlatform.cs
  7. 13 0
      src/PixiEditor.Platform.Steam/PixiEditor.Platform.Steam.csproj
  8. 9 0
      src/PixiEditor.Platform.Steam/SteamAdditionalContentProvider.cs
  9. 13 0
      src/PixiEditor.Platform.Steam/SteamPlatform.cs
  10. 11 0
      src/PixiEditor.Platform/IAdditionalContentProvider.cs
  11. 8 0
      src/PixiEditor.Platform/IPlatform.cs
  12. 13 0
      src/PixiEditor.Platform/PixiEditor.Platform.csproj
  13. 18 0
      src/PixiEditor.Platform/PlatformServiceCollection.cs
  14. 181 0
      src/PixiEditor.sln
  15. 1 1
      src/PixiEditor/App.xaml.cs
  16. 1 1
      src/PixiEditor/Exceptions/CorruptedFileException.cs
  17. 1 1
      src/PixiEditor/Exceptions/InvalidFileTypeException.cs
  18. 1 1
      src/PixiEditor/Exceptions/MissingFileException.cs
  19. 1 1
      src/PixiEditor/Exceptions/RecoverableException.cs
  20. 1 1
      src/PixiEditor/Helpers/Collections/ActionDisplayList.cs
  21. 1 1
      src/PixiEditor/Helpers/Converters/BlendModeToStringConverter.cs
  22. 1 1
      src/PixiEditor/Helpers/Converters/BoolToValueConverter.cs
  23. 0 1
      src/PixiEditor/Helpers/Converters/EnumToStringConverter.cs
  24. 1 1
      src/PixiEditor/Helpers/Converters/KeyToStringConverter.cs
  25. 1 1
      src/PixiEditor/Helpers/Converters/LangConverter.cs
  26. 0 1
      src/PixiEditor/Helpers/Extensions/BlendModeEx.cs
  27. 1 1
      src/PixiEditor/Helpers/Extensions/ServiceCollectionHelpers.cs
  28. 1 1
      src/PixiEditor/Helpers/RegistryHelpers.cs
  29. 1 1
      src/PixiEditor/Models/Commands/Attributes/Commands/CommandAttribute.cs
  30. 1 1
      src/PixiEditor/Models/Commands/Attributes/Commands/FilterAttribute.cs
  31. 1 1
      src/PixiEditor/Models/Commands/Attributes/Commands/GroupAttribute.cs
  32. 1 1
      src/PixiEditor/Models/Commands/CommandController.cs
  33. 1 1
      src/PixiEditor/Models/Commands/CommandGroup.cs
  34. 1 1
      src/PixiEditor/Models/Commands/Commands/Command.cs
  35. 1 1
      src/PixiEditor/Models/DataHolders/KeyCombination.cs
  36. 2 2
      src/PixiEditor/Models/Dialogs/ConfirmationDialog.cs
  37. 1 1
      src/PixiEditor/Models/Dialogs/NoticeDialog.cs
  38. 2 2
      src/PixiEditor/Models/Dialogs/OptionDialog.cs
  39. 1 1
      src/PixiEditor/Models/Dialogs/OptionsDialog.cs
  40. 1 1
      src/PixiEditor/Models/DocumentModels/DocumentStructureHelper.cs
  41. 1 1
      src/PixiEditor/Models/IO/Importer.cs
  42. 1 1
      src/PixiEditor/Models/IO/PaletteParsers/JascPalFile/JascFileException.cs
  43. 1 3
      src/PixiEditor/Models/Localization/ILocalizationProvider.cs
  44. 1 1
      src/PixiEditor/Models/Localization/Language.cs
  45. 1 1
      src/PixiEditor/Models/Localization/LanguageData.cs
  46. 1 1
      src/PixiEditor/Models/Localization/LocalizationData.cs
  47. 1 2
      src/PixiEditor/Models/Localization/LocalizationProvider.cs
  48. 2 3
      src/PixiEditor/Models/Localization/LocalizedString.cs
  49. 60 47
      src/PixiEditor/PixiEditor.csproj
  50. 1 1
      src/PixiEditor/ViewModels/SettingsWindowViewModel.cs
  51. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Document/DocumentViewModel.cs
  52. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Document/TransformOverlays/DocumentTransformViewModel.cs
  53. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Main/ColorsViewModel.cs
  54. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Main/DebugViewModel.cs
  55. 0 1
      src/PixiEditor/ViewModels/SubViewModels/Main/DiscordViewModel.cs
  56. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Main/FileViewModel.cs
  57. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Main/LayersViewModel.cs
  58. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Main/UpdateViewModel.cs
  59. 0 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/ToolSettings/Settings/BoolSetting.cs
  60. 0 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/ToolSettings/Settings/ColorSetting.cs
  61. 0 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/ToolSettings/Settings/EnumSetting.cs
  62. 0 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/ToolSettings/Settings/FloatSetting.cs
  63. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/ToolSettings/Settings/Setting.cs
  64. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/ToolViewModel.cs
  65. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/BrightnessToolViewModel.cs
  66. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/ColorPickerToolViewModel.cs
  67. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/EllipseToolViewModel.cs
  68. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/EraserToolViewModel.cs
  69. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/FloodFillToolViewModel.cs
  70. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/LassoToolViewModel.cs
  71. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/LineToolViewModel.cs
  72. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/MagicWandToolViewModel.cs
  73. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/MoveToolViewModel.cs
  74. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/MoveViewportToolViewModel.cs
  75. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/PenToolViewModel.cs
  76. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/RectangleToolViewModel.cs
  77. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/RotateViewportToolViewModel.cs
  78. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/SelectToolViewModel.cs
  79. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/ZoomToolViewModel.cs
  80. 1 3
      src/PixiEditor/ViewModels/SubViewModels/UserPreferences/Settings/DiscordSettings.cs
  81. 1 1
      src/PixiEditor/ViewModels/SubViewModels/UserPreferences/Settings/GeneralSettings.cs
  82. 1 1
      src/PixiEditor/ViewModels/ViewModelMain.cs
  83. 1 1
      src/PixiEditor/Views/Dialogs/AboutPopup.xaml.cs
  84. 1 1
      src/PixiEditor/Views/Dialogs/ConfirmationPopup.xaml.cs
  85. 1 1
      src/PixiEditor/Views/Dialogs/DebugDialogs/Localization/LocalizationDataContext.cs
  86. 1 1
      src/PixiEditor/Views/Dialogs/DebugDialogs/Localization/PoeLanguage.cs
  87. 0 1
      src/PixiEditor/Views/Dialogs/DialogTitleBar.xaml.cs
  88. 1 1
      src/PixiEditor/Views/Dialogs/ExportFilePopup.xaml.cs
  89. 1 1
      src/PixiEditor/Views/Dialogs/ImportShortcutTemplatePopup.xaml.cs
  90. 1 1
      src/PixiEditor/Views/Dialogs/PalettesBrowser.xaml.cs
  91. 0 1
      src/PixiEditor/Views/Dialogs/SettingsWindow.xaml
  92. 2 0
      src/PixiEditor/Views/MainWindow.xaml.cs
  93. 1 1
      src/PixiEditor/Views/Translator.cs
  94. 0 1
      src/PixiEditor/Views/UserControls/DiscordRPPreview.xaml.cs
  95. 1 1
      src/PixiEditor/Views/UserControls/KeyCombinationBox.xaml.cs
  96. 1 1
      src/PixiEditor/Views/UserControls/Overlays/SymmetryOverlay/SymmetryOverlay.cs
  97. 1 1
      src/PixiEditor/Views/UserControls/ShortcutBox.cs

+ 9 - 0
src/PixiEditor.Platform.MSStore/MSAdditionalContentProvider.cs

@@ -0,0 +1,9 @@
+namespace PixiEditor.Platform.MSStore;
+
+public sealed class MSAdditionalContentProvider : IAdditionalContentProvider
+{
+    public bool IsContentAvailable(AdditionalContentProduct product)
+    {
+        return true;
+    }
+}

+ 13 - 0
src/PixiEditor.Platform.MSStore/MicrosoftStorePlatform.cs

@@ -0,0 +1,13 @@
+namespace PixiEditor.Platform.MSStore;
+
+public sealed class MicrosoftStorePlatform : IPlatform
+{
+    public bool PerformHandshake()
+    {
+        return true;
+    }
+
+    public IAdditionalContentProvider? AdditionalContentProvider { get; } = new MSAdditionalContentProvider();
+
+    public static IPlatform Current { get; } = new MicrosoftStorePlatform();
+}

+ 13 - 0
src/PixiEditor.Platform.MSStore/PixiEditor.Platform.MSStore.csproj

@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <TargetFramework>net7.0</TargetFramework>
+        <ImplicitUsings>enable</ImplicitUsings>
+        <Nullable>enable</Nullable>
+    </PropertyGroup>
+
+    <ItemGroup>
+      <ProjectReference Include="..\PixiEditor.Platform\PixiEditor.Platform.csproj" />
+    </ItemGroup>
+
+</Project>

+ 13 - 0
src/PixiEditor.Platform.Standalone/PixiEditor.Platform.Standalone.csproj

@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <TargetFramework>net7.0</TargetFramework>
+        <ImplicitUsings>enable</ImplicitUsings>
+        <Nullable>enable</Nullable>
+    </PropertyGroup>
+
+    <ItemGroup>
+      <ProjectReference Include="..\PixiEditor.Platform\PixiEditor.Platform.csproj" />
+    </ItemGroup>
+
+</Project>

+ 9 - 0
src/PixiEditor.Platform.Standalone/StandaloneAdditionalContentProvider.cs

@@ -0,0 +1,9 @@
+namespace PixiEditor.Platform.Standalone;
+
+public sealed class StandaloneAdditionalContentProvider : IAdditionalContentProvider
+{
+    public bool IsContentAvailable(AdditionalContentProduct product)
+    {
+        return false;
+    }
+}

+ 13 - 0
src/PixiEditor.Platform.Standalone/StandalonePlatform.cs

@@ -0,0 +1,13 @@
+namespace PixiEditor.Platform.Standalone;
+
+public sealed class StandalonePlatform : IPlatform
+{
+    public bool PerformHandshake()
+    {
+        return true;
+    }
+
+    public IAdditionalContentProvider? AdditionalContentProvider { get; } = new StandaloneAdditionalContentProvider();
+
+    public static IPlatform Current { get; } = new StandalonePlatform();
+}

+ 13 - 0
src/PixiEditor.Platform.Steam/PixiEditor.Platform.Steam.csproj

@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <TargetFramework>net7.0</TargetFramework>
+        <ImplicitUsings>enable</ImplicitUsings>
+        <Nullable>enable</Nullable>
+    </PropertyGroup>
+
+    <ItemGroup>
+      <ProjectReference Include="..\PixiEditor.Platform\PixiEditor.Platform.csproj" />
+    </ItemGroup>
+
+</Project>

+ 9 - 0
src/PixiEditor.Platform.Steam/SteamAdditionalContentProvider.cs

@@ -0,0 +1,9 @@
+namespace PixiEditor.Platform.Steam;
+
+public sealed class SteamAdditionalContentProvider : IAdditionalContentProvider
+{
+    public bool IsContentAvailable(AdditionalContentProduct product)
+    {
+        return true;
+    }
+}

+ 13 - 0
src/PixiEditor.Platform.Steam/SteamPlatform.cs

@@ -0,0 +1,13 @@
+namespace PixiEditor.Platform.Steam;
+
+public class SteamPlatform : IPlatform
+{
+    public bool PerformHandshake()
+    {
+        return true;
+    }
+
+    public IAdditionalContentProvider? AdditionalContentProvider { get; } = new SteamAdditionalContentProvider();
+
+    public static IPlatform Current { get; } = new SteamPlatform();
+}

+ 11 - 0
src/PixiEditor.Platform/IAdditionalContentProvider.cs

@@ -0,0 +1,11 @@
+namespace PixiEditor.Platform;
+
+public enum AdditionalContentProduct
+{
+    SupporterPack
+}
+
+public interface IAdditionalContentProvider
+{
+    public bool IsContentAvailable(AdditionalContentProduct product);
+}

+ 8 - 0
src/PixiEditor.Platform/IPlatform.cs

@@ -0,0 +1,8 @@
+namespace PixiEditor.Platform;
+
+public interface IPlatform
+{
+    public static IPlatform Current { get; }
+    public bool PerformHandshake();
+    public IAdditionalContentProvider? AdditionalContentProvider { get; }
+}

+ 13 - 0
src/PixiEditor.Platform/PixiEditor.Platform.csproj

@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <TargetFramework>net7.0</TargetFramework>
+        <ImplicitUsings>enable</ImplicitUsings>
+        <Nullable>enable</Nullable>
+    </PropertyGroup>
+
+    <ItemGroup>
+      <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="7.0.0" />
+    </ItemGroup>
+
+</Project>

+ 18 - 0
src/PixiEditor.Platform/PlatformServiceCollection.cs

@@ -0,0 +1,18 @@
+using Microsoft.Extensions.DependencyInjection;
+
+namespace PixiEditor.Platform;
+
+public static class PlatformServiceCollection
+{
+    public static IServiceCollection AddPlatform(this IServiceCollection services)
+    {
+        if (IPlatform.Current == null)
+            throw new InvalidOperationException("No platform was found");
+
+        services.AddSingleton(IPlatform.Current);
+
+        if (IPlatform.Current.AdditionalContentProvider != null)
+            services.AddSingleton(IPlatform.Current.AdditionalContentProvider);
+        return services;
+    }
+}

+ 181 - 0
src/PixiEditor.sln

@@ -40,6 +40,22 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PixiEditorGen", "PixiEditor
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PixiEditor.Builder", "PixiEditor.Builder\build\PixiEditor.Builder.csproj", "{7AEE19FA-A4F8-4ACA-9E39-401AA1F603C2}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PixiEditor.Platform.Steam", "PixiEditor.Platform.Steam\PixiEditor.Platform.Steam.csproj", "{9BCD0764-9C16-4A2A-B153-C676FEF38887}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PixiEditor.Platform", "PixiEditor.Platform\PixiEditor.Platform.csproj", "{2BDEB8C6-F22D-43EA-A309-B3387A803689}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PixiEditor.Platform.MSStore", "PixiEditor.Platform.MSStore\PixiEditor.Platform.MSStore.csproj", "{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Platforms", "Platforms", "{9A81B795-66AB-4743-9284-90565941343D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{1E816135-76C1-4255-BE3C-BF17895A65AA}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Deployment", "Deployment", "{68C3DA2D-D2EA-426E-A866-0019E425C816}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{5AFBF881-C054-4CE4-8159-8D4017FFD27A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PixiEditor.Platform.Standalone", "PixiEditor.Platform.Standalone\PixiEditor.Platform.Standalone.csproj", "{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -620,6 +636,150 @@ Global
 		{7AEE19FA-A4F8-4ACA-9E39-401AA1F603C2}.Steam|x64.Build.0 = Debug|x64
 		{7AEE19FA-A4F8-4ACA-9E39-401AA1F603C2}.Steam|x86.ActiveCfg = Debug|x86
 		{7AEE19FA-A4F8-4ACA-9E39-401AA1F603C2}.Steam|x86.Build.0 = Debug|x86
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Debug|x64.Build.0 = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Debug|x86.Build.0 = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.DevRelease|Any CPU.ActiveCfg = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.DevRelease|Any CPU.Build.0 = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.DevRelease|x64.ActiveCfg = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.DevRelease|x64.Build.0 = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.DevRelease|x86.ActiveCfg = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.DevRelease|x86.Build.0 = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.MSIX Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.MSIX Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.MSIX Debug|x64.ActiveCfg = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.MSIX Debug|x64.Build.0 = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.MSIX Debug|x86.ActiveCfg = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.MSIX Debug|x86.Build.0 = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.MSIX|Any CPU.ActiveCfg = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.MSIX|Any CPU.Build.0 = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.MSIX|x64.ActiveCfg = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.MSIX|x64.Build.0 = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.MSIX|x86.ActiveCfg = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.MSIX|x86.Build.0 = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Release|x64.ActiveCfg = Release|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Release|x64.Build.0 = Release|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Release|x86.ActiveCfg = Release|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Release|x86.Build.0 = Release|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Steam|Any CPU.ActiveCfg = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Steam|Any CPU.Build.0 = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Steam|x64.ActiveCfg = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Steam|x64.Build.0 = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Steam|x86.ActiveCfg = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Steam|x86.Build.0 = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Debug|x64.Build.0 = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Debug|x86.Build.0 = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.DevRelease|Any CPU.ActiveCfg = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.DevRelease|Any CPU.Build.0 = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.DevRelease|x64.ActiveCfg = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.DevRelease|x64.Build.0 = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.DevRelease|x86.ActiveCfg = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.DevRelease|x86.Build.0 = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.MSIX Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.MSIX Debug|Any CPU.Build.0 = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.MSIX Debug|x64.ActiveCfg = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.MSIX Debug|x64.Build.0 = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.MSIX Debug|x86.ActiveCfg = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.MSIX Debug|x86.Build.0 = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.MSIX|Any CPU.ActiveCfg = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.MSIX|Any CPU.Build.0 = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.MSIX|x64.ActiveCfg = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.MSIX|x64.Build.0 = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.MSIX|x86.ActiveCfg = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.MSIX|x86.Build.0 = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Release|Any CPU.Build.0 = Release|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Release|x64.ActiveCfg = Release|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Release|x64.Build.0 = Release|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Release|x86.ActiveCfg = Release|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Release|x86.Build.0 = Release|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Steam|Any CPU.ActiveCfg = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Steam|Any CPU.Build.0 = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Steam|x64.ActiveCfg = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Steam|x64.Build.0 = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Steam|x86.ActiveCfg = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Steam|x86.Build.0 = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Debug|x64.Build.0 = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Debug|x86.Build.0 = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.DevRelease|Any CPU.ActiveCfg = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.DevRelease|Any CPU.Build.0 = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.DevRelease|x64.ActiveCfg = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.DevRelease|x64.Build.0 = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.DevRelease|x86.ActiveCfg = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.DevRelease|x86.Build.0 = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.MSIX Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.MSIX Debug|Any CPU.Build.0 = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.MSIX Debug|x64.ActiveCfg = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.MSIX Debug|x64.Build.0 = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.MSIX Debug|x86.ActiveCfg = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.MSIX Debug|x86.Build.0 = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.MSIX|Any CPU.ActiveCfg = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.MSIX|Any CPU.Build.0 = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.MSIX|x64.ActiveCfg = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.MSIX|x64.Build.0 = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.MSIX|x86.ActiveCfg = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.MSIX|x86.Build.0 = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Release|Any CPU.Build.0 = Release|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Release|x64.ActiveCfg = Release|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Release|x64.Build.0 = Release|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Release|x86.ActiveCfg = Release|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Release|x86.Build.0 = Release|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Steam|Any CPU.ActiveCfg = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Steam|Any CPU.Build.0 = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Steam|x64.ActiveCfg = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Steam|x64.Build.0 = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Steam|x86.ActiveCfg = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Steam|x86.Build.0 = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Debug|x64.Build.0 = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Debug|x86.Build.0 = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.DevRelease|Any CPU.ActiveCfg = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.DevRelease|Any CPU.Build.0 = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.DevRelease|x64.ActiveCfg = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.DevRelease|x64.Build.0 = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.DevRelease|x86.ActiveCfg = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.DevRelease|x86.Build.0 = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.MSIX Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.MSIX Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.MSIX Debug|x64.ActiveCfg = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.MSIX Debug|x64.Build.0 = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.MSIX Debug|x86.ActiveCfg = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.MSIX Debug|x86.Build.0 = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.MSIX|Any CPU.ActiveCfg = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.MSIX|Any CPU.Build.0 = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.MSIX|x64.ActiveCfg = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.MSIX|x64.Build.0 = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.MSIX|x86.ActiveCfg = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.MSIX|x86.Build.0 = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Release|x64.ActiveCfg = Release|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Release|x64.Build.0 = Release|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Release|x86.ActiveCfg = Release|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Release|x86.Build.0 = Release|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Steam|Any CPU.ActiveCfg = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Steam|Any CPU.Build.0 = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Steam|x64.ActiveCfg = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Steam|x64.Build.0 = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Steam|x86.ActiveCfg = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Steam|x86.Build.0 = Debug|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -627,4 +787,25 @@ Global
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {D04B4AB0-CA33-42FD-A909-79966F9255C5}
 	EndGlobalSection
+	GlobalSection(NestedProjects) = preSolution
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689} = {9A81B795-66AB-4743-9284-90565941343D}
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6} = {9A81B795-66AB-4743-9284-90565941343D}
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887} = {9A81B795-66AB-4743-9284-90565941343D}
+		{6A9DA760-1E47-414C-B8E8-3B4927F18131} = {1E816135-76C1-4255-BE3C-BF17895A65AA}
+		{2CCDDE79-06CB-4771-AF85-7B25313EBA30} = {1E816135-76C1-4255-BE3C-BF17895A65AA}
+		{294FD171-9536-474C-A679-83F0266275FB} = {1E816135-76C1-4255-BE3C-BF17895A65AA}
+		{758DF7DF-A8B1-4409-B79A-018E542B7251} = {1E816135-76C1-4255-BE3C-BF17895A65AA}
+		{5FC5E9C5-F439-43AA-92AF-9B7554D6FA13} = {1E816135-76C1-4255-BE3C-BF17895A65AA}
+		{98040E8A-F08E-45F8-956F-6480C8272049} = {1E816135-76C1-4255-BE3C-BF17895A65AA}
+		{80BB2920-3DC0-406C-9E2B-30B08D5CC7A8} = {1E816135-76C1-4255-BE3C-BF17895A65AA}
+		{1DC5B4C4-6902-4659-AE7E-17FDA0403DEB} = {1E816135-76C1-4255-BE3C-BF17895A65AA}
+		{69DD5830-C682-49FB-B1A5-D2A506EEA06B} = {1E816135-76C1-4255-BE3C-BF17895A65AA}
+		{7AEE19FA-A4F8-4ACA-9E39-401AA1F603C2} = {68C3DA2D-D2EA-426E-A866-0019E425C816}
+		{1F97F972-F9E8-4F35-A8B5-3F71408D2230} = {68C3DA2D-D2EA-426E-A866-0019E425C816}
+		{41B40602-2E8C-4B76-9BDB-B9FDE686ACCE} = {68C3DA2D-D2EA-426E-A866-0019E425C816}
+		{E31A8266-5BCA-4877-B9E5-9C5BB42829D6} = {5AFBF881-C054-4CE4-8159-8D4017FFD27A}
+		{510ED47C-2455-4DCE-A561-1074725E1236} = {5AFBF881-C054-4CE4-8159-8D4017FFD27A}
+		{5193C1C1-8362-40FD-802B-E097E8C88082} = {5AFBF881-C054-4CE4-8159-8D4017FFD27A}
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE} = {9A81B795-66AB-4743-9284-90565941343D}
+	EndGlobalSection
 EndGlobal

+ 1 - 1
src/PixiEditor/App.xaml.cs

@@ -2,11 +2,11 @@
 using System.Text.RegularExpressions;
 using System.Windows;
 using System.Windows.Media;
-using PixiEditor.Localization;
 using PixiEditor.Models.Controllers;
 using PixiEditor.Models.DataHolders;
 using PixiEditor.Models.Dialogs;
 using PixiEditor.Models.Enums;
+using PixiEditor.Models.Localization;
 using PixiEditor.Views;
 using PixiEditor.Views.Dialogs;
 

+ 1 - 1
src/PixiEditor/Exceptions/CorruptedFileException.cs

@@ -1,6 +1,6 @@
 using System.IO;
 using System.Runtime.Serialization;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Exceptions;
 

+ 1 - 1
src/PixiEditor/Exceptions/InvalidFileTypeException.cs

@@ -1,5 +1,5 @@
 using System.Runtime.Serialization;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Exceptions;
 

+ 1 - 1
src/PixiEditor/Exceptions/MissingFileException.cs

@@ -1,5 +1,5 @@
 using System.Runtime.Serialization;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Exceptions;
 

+ 1 - 1
src/PixiEditor/Exceptions/RecoverableException.cs

@@ -1,5 +1,5 @@
 using System.Runtime.Serialization;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Exceptions;
 

+ 1 - 1
src/PixiEditor/Helpers/Collections/ActionDisplayList.cs

@@ -1,5 +1,5 @@
 using System.Collections;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Helpers.Collections;
 

+ 1 - 1
src/PixiEditor/Helpers/Converters/BlendModeToStringConverter.cs

@@ -1,7 +1,7 @@
 using System.Globalization;
 using PixiEditor.ChangeableDocument.Enums;
 using PixiEditor.Helpers.Extensions;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Helpers.Converters;
 internal class BlendModeToStringConverter : SingleInstanceConverter<BlendModeToStringConverter>

+ 1 - 1
src/PixiEditor/Helpers/Converters/BoolToValueConverter.cs

@@ -1,5 +1,5 @@
 using System.Globalization;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Helpers.Converters;
 

+ 0 - 1
src/PixiEditor/Helpers/Converters/EnumToStringConverter.cs

@@ -1,6 +1,5 @@
 using PixiEditor.Models.Enums;
 using System;
-using PixiEditor.Localization;
 
 namespace PixiEditor.Helpers.Converters;
 

+ 1 - 1
src/PixiEditor/Helpers/Converters/KeyToStringConverter.cs

@@ -1,6 +1,6 @@
 using System.Globalization;
 using System.Windows.Input;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Helpers.Converters;
 

+ 1 - 1
src/PixiEditor/Helpers/Converters/LangConverter.cs

@@ -1,5 +1,5 @@
 using System.Globalization;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Helpers.Converters;
 

+ 0 - 1
src/PixiEditor/Helpers/Extensions/BlendModeEx.cs

@@ -1,5 +1,4 @@
 using PixiEditor.ChangeableDocument.Enums;
-using PixiEditor.Localization;
 
 namespace PixiEditor.Helpers.Extensions;
 internal static class BlendModeEx

+ 1 - 1
src/PixiEditor/Helpers/Extensions/ServiceCollectionHelpers.cs

@@ -1,11 +1,11 @@
 using Microsoft.Extensions.DependencyInjection;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands;
 using PixiEditor.Models.Controllers;
 using PixiEditor.Models.DataProviders;
 using PixiEditor.Models.IO;
 using PixiEditor.Models.IO.PaletteParsers;
 using PixiEditor.Models.IO.PaletteParsers.JascPalFile;
+using PixiEditor.Models.Localization;
 using PixiEditor.Models.UserPreferences;
 using PixiEditor.ViewModels;
 using PixiEditor.ViewModels.SubViewModels.Document;

+ 1 - 1
src/PixiEditor/Helpers/RegistryHelpers.cs

@@ -2,8 +2,8 @@
 using System.Security.AccessControl;
 using System.Windows;
 using Microsoft.Win32;
-using PixiEditor.Localization;
 using PixiEditor.Models.Dialogs;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Helpers;
 

+ 1 - 1
src/PixiEditor/Models/Commands/Attributes/Commands/CommandAttribute.cs

@@ -1,6 +1,6 @@
 using System.Windows.Input;
-using PixiEditor.Localization;
 using PixiEditor.Models.DataHolders;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Models.Commands.Attributes.Commands;
 

+ 1 - 1
src/PixiEditor/Models/Commands/Attributes/Commands/FilterAttribute.cs

@@ -1,4 +1,4 @@
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Models.Commands.Attributes.Commands;
 

+ 1 - 1
src/PixiEditor/Models/Commands/Attributes/Commands/GroupAttribute.cs

@@ -1,4 +1,4 @@
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Models.Commands.Attributes.Commands;
 

+ 1 - 1
src/PixiEditor/Models/Commands/CommandController.cs

@@ -3,11 +3,11 @@ using System.Reflection;
 using System.Windows.Media;
 using Microsoft.Extensions.DependencyInjection;
 using Newtonsoft.Json;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Commands;
 using PixiEditor.Models.Commands.Evaluators;
 using PixiEditor.Models.DataHolders;
 using PixiEditor.Models.Dialogs;
+using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Tools;
 using CommandAttribute = PixiEditor.Models.Commands.Attributes.Commands.Command;
 

+ 1 - 1
src/PixiEditor/Models/Commands/CommandGroup.cs

@@ -1,9 +1,9 @@
 using System.Collections;
 using System.ComponentModel;
 using System.Windows.Input;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Commands;
 using PixiEditor.Models.DataHolders;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Models.Commands;
 

+ 1 - 1
src/PixiEditor/Models/Commands/Commands/Command.cs

@@ -1,9 +1,9 @@
 using System.Diagnostics;
 using System.Windows.Input;
 using System.Windows.Media;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Evaluators;
 using PixiEditor.Models.DataHolders;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Models.Commands.Commands;
 

+ 1 - 1
src/PixiEditor/Models/DataHolders/KeyCombination.cs

@@ -4,7 +4,7 @@ using System.Diagnostics;
 using System.Globalization;
 using System.Text;
 using System.Windows.Input;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Models.DataHolders;
 

+ 2 - 2
src/PixiEditor/Models/Dialogs/ConfirmationDialog.cs

@@ -1,5 +1,5 @@
-using PixiEditor.Localization;
-using PixiEditor.Models.Enums;
+using PixiEditor.Models.Enums;
+using PixiEditor.Models.Localization;
 using PixiEditor.Views;
 using PixiEditor.Views.Dialogs;
 

+ 1 - 1
src/PixiEditor/Models/Dialogs/NoticeDialog.cs

@@ -1,4 +1,4 @@
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 using PixiEditor.Views.Dialogs;
 
 namespace PixiEditor.Models.Dialogs;

+ 2 - 2
src/PixiEditor/Models/Dialogs/OptionDialog.cs

@@ -1,5 +1,5 @@
-using PixiEditor.Localization;
-using PixiEditor.Models.Enums;
+using PixiEditor.Models.Enums;
+using PixiEditor.Models.Localization;
 using PixiEditor.Views.Dialogs;
 
 namespace PixiEditor.Models.Dialogs;

+ 1 - 1
src/PixiEditor/Models/Dialogs/OptionsDialog.cs

@@ -1,7 +1,7 @@
 using System.Collections;
 using System.Windows.Controls;
 using System.Windows.Media;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 using PixiEditor.Views.Dialogs;
 
 namespace PixiEditor.Models.Dialogs;

+ 1 - 1
src/PixiEditor/Models/DocumentModels/DocumentStructureHelper.cs

@@ -1,6 +1,6 @@
 using PixiEditor.ChangeableDocument.Enums;
-using PixiEditor.Localization;
 using PixiEditor.Models.Enums;
+using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Document;
 
 namespace PixiEditor.Models.DocumentModels;

+ 1 - 1
src/PixiEditor/Models/IO/Importer.cs

@@ -10,8 +10,8 @@ using PixiEditor.DrawingApi.Core.Surface.ImageData;
 using PixiEditor.DrawingApi.Core.Surface.PaintImpl;
 using PixiEditor.Exceptions;
 using PixiEditor.Helpers;
-using PixiEditor.Localization;
 using PixiEditor.Models.DataHolders;
+using PixiEditor.Models.Localization;
 using PixiEditor.Parser;
 using PixiEditor.Parser.Deprecated;
 using PixiEditor.ViewModels.SubViewModels.Document;

+ 1 - 1
src/PixiEditor/Models/IO/PaletteParsers/JascPalFile/JascFileException.cs

@@ -1,6 +1,6 @@
 using System.Runtime.Serialization;
 using PixiEditor.Exceptions;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Models.IO.PaletteParsers.JascPalFile;
 

+ 1 - 3
src/PixiEditor/Localization/ILocalizationProvider.cs → src/PixiEditor/Models/Localization/ILocalizationProvider.cs

@@ -1,6 +1,4 @@
-using System.IO;
-
-namespace PixiEditor.Localization;
+namespace PixiEditor.Models.Localization;
 
 public interface ILocalizationProvider
 {

+ 1 - 1
src/PixiEditor/Localization/Language.cs → src/PixiEditor/Models/Localization/Language.cs

@@ -1,7 +1,7 @@
 using System.Diagnostics;
 using System.Windows;
 
-namespace PixiEditor.Localization;
+namespace PixiEditor.Models.Localization;
 
 [DebuggerDisplay("{LanguageData.Name}, strings: {Locale.Count}")]
 public class Language

+ 1 - 1
src/PixiEditor/Localization/LanguageData.cs → src/PixiEditor/Models/Localization/LanguageData.cs

@@ -1,7 +1,7 @@
 using System.Globalization;
 using Newtonsoft.Json;
 
-namespace PixiEditor.Localization;
+namespace PixiEditor.Models.Localization;
 
 public class LanguageData
 {

+ 1 - 1
src/PixiEditor/Localization/LocalizationData.cs → src/PixiEditor/Models/Localization/LocalizationData.cs

@@ -1,6 +1,6 @@
 using System.Diagnostics;
 
-namespace PixiEditor.Localization;
+namespace PixiEditor.Models.Localization;
 
 [DebuggerDisplay("{Languages.Count} Language(s)")]
 public class LocalizationData

+ 1 - 2
src/PixiEditor/Localization/LocalizationProvider.cs → src/PixiEditor/Models/Localization/LocalizationProvider.cs

@@ -1,11 +1,10 @@
 using System.Globalization;
 using System.IO;
-using System.Reflection;
 using Newtonsoft.Json;
 using PixiEditor.Models.IO;
 using PixiEditor.Models.UserPreferences;
 
-namespace PixiEditor.Localization;
+namespace PixiEditor.Models.Localization;
 
 internal class LocalizationProvider : ILocalizationProvider
 {

+ 2 - 3
src/PixiEditor/Localization/LocalizedString.cs → src/PixiEditor/Models/Localization/LocalizedString.cs

@@ -1,7 +1,6 @@
-using System.Text;
-using PixiEditor.Models.Enums;
+using PixiEditor.Models.Enums;
 
-namespace PixiEditor.Localization;
+namespace PixiEditor.Models.Localization;
 
 public struct LocalizedString
 {

+ 60 - 47
src/PixiEditor/PixiEditor.csproj

@@ -24,19 +24,51 @@
 	</PropertyGroup>
 
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MSIX|AnyCPU'">
-		<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DefineConstants>TRACE;RELEASE</DefineConstants>
+    <Optimize>true</Optimize>
 	</PropertyGroup>
 
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MSIX|x86'">
-		<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DefineConstants>TRACE;RELEASE</DefineConstants>
+    <Optimize>true</Optimize>
 		<PlatformTarget>x86</PlatformTarget>
 	</PropertyGroup>
 
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MSIX|x64'">
-		<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DefineConstants>TRACE;RELEASE</DefineConstants>
+    <Optimize>true</Optimize>
 		<PlatformTarget>x64</PlatformTarget>
 	</PropertyGroup>
 
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MSIX Debug|AnyCPU'">
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DebugType>full</DebugType>
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MSIX Debug|x86'">
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DebugType>full</DebugType>
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MSIX Debug|x64'">
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DebugType>full</DebugType>
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <PlatformTarget>x64</PlatformTarget>
+  </PropertyGroup>
+
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
 		<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
 		<DefineConstants>TRACE;UPDATE</DefineConstants>
@@ -54,24 +86,6 @@
 		<PlatformTarget>x64</PlatformTarget>
 	</PropertyGroup>
 
-	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MSIX|AnyCPU'">
-		<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-		<DefineConstants>TRACE;RELEASE</DefineConstants>
-		<Optimize>true</Optimize>
-	</PropertyGroup>
-
-	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MSIX|x86'">
-		<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-		<DefineConstants>TRACE;RELEASE</DefineConstants>
-		<Optimize>true</Optimize>
-	</PropertyGroup>
-
-	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MSIX|x64'">
-		<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-		<DefineConstants>TRACE;RELEASE</DefineConstants>
-		<Optimize>true</Optimize>
-	</PropertyGroup>
-
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
 		<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
 		<DebugType>full</DebugType>
@@ -93,32 +107,6 @@
 		<PlatformTarget>x64</PlatformTarget>
 	</PropertyGroup>
 
-	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MSIX Debug|AnyCPU'">
-		<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-		<DebugType>full</DebugType>
-		<DebugSymbols>true</DebugSymbols>
-		<Optimize>false</Optimize>
-		<DefineConstants>DEBUG;TRACE</DefineConstants>
-	</PropertyGroup>
-
-	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MSIX Debug|x86'">
-		<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-		<DebugType>full</DebugType>
-		<DebugSymbols>true</DebugSymbols>
-		<Optimize>false</Optimize>
-		<DefineConstants>DEBUG;TRACE</DefineConstants>
-		<PlatformTarget>x86</PlatformTarget>
-	</PropertyGroup>
-
-	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MSIX Debug|x64'">
-		<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-		<DebugType>full</DebugType>
-		<DebugSymbols>true</DebugSymbols>
-		<Optimize>false</Optimize>
-		<DefineConstants>DEBUG;TRACE</DefineConstants>
-		<PlatformTarget>x64</PlatformTarget>
-	</PropertyGroup>
-
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Steam|x86'">
 	  <DefineConstants>TRACE;RELEASE;STEAM</DefineConstants>
 	  <Optimize>True</Optimize>
@@ -157,7 +145,31 @@
     <PlatformTarget>x86</PlatformTarget>
 	  <Optimize>True</Optimize>
 	</PropertyGroup>
+  
+  <ItemGroup Condition="'$(Configuration)' == 'DevRelease'">
+    <ProjectReference Include="..\PixiEditor.Platform.Standalone\PixiEditor.Platform.Standalone.csproj" />
+  </ItemGroup>
+
+  <ItemGroup Condition="'$(Configuration)' == 'Debug'">
+    <ProjectReference Include="..\PixiEditor.Platform.Standalone\PixiEditor.Platform.Standalone.csproj" />
+  </ItemGroup>
 
+  <ItemGroup Condition="'$(Configuration)' == 'Release'">
+    <ProjectReference Include="..\PixiEditor.Platform.Standalone\PixiEditor.Platform.Standalone.csproj" />
+  </ItemGroup>
+  
+  <ItemGroup Condition="'$(Configuration)' == 'Steam'">
+    <ProjectReference Include="..\PixiEditor.Platform.Steam\PixiEditor.Platform.Steam.csproj" />
+  </ItemGroup>
+  
+  <ItemGroup Condition="'$(Configuration)' == 'MSIX Debug'">
+    <ProjectReference Include="..\PixiEditor.Platform.MSStore\PixiEditor.Platform.MSStore.csproj" />
+  </ItemGroup>
+
+  <ItemGroup Condition="'$(Configuration)' == 'MSIX'">
+    <ProjectReference Include="..\PixiEditor.Platform.MSStore\PixiEditor.Platform.MSStore.csproj" />
+  </ItemGroup>
+  
 	<ItemGroup>
 		<Compile Remove="Styles\AvalonDock\Images\**" />
 		<EmbeddedResource Remove="Styles\AvalonDock\Images\**" />
@@ -454,6 +466,7 @@
 	<ItemGroup>
 		<ProjectReference Include="..\PixiEditor.ChangeableDocument\PixiEditor.ChangeableDocument.csproj" />
 		<ProjectReference Include="..\PixiEditor.DrawingApi.Skia\PixiEditor.DrawingApi.Skia.csproj" />
+		<ProjectReference Include="..\PixiEditor.Platform\PixiEditor.Platform.csproj" />
 		<ProjectReference Include="..\PixiEditor.UpdateModule\PixiEditor.UpdateModule.csproj" />
 		<ProjectReference Include="..\PixiEditor.Zoombox\PixiEditor.Zoombox.csproj" />
 		<ProjectReference Include="..\PixiEditorGen\PixiEditorGen.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />

+ 1 - 1
src/PixiEditor/ViewModels/SettingsWindowViewModel.cs

@@ -7,12 +7,12 @@ using PixiEditor.ViewModels.SubViewModels.UserPreferences;
 using System.Windows;
 using System.Windows.Input;
 using Microsoft.Win32;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
 using PixiEditor.Models.Commands.Templates;
 using PixiEditor.Models.UserPreferences;
 using PixiEditor.Views.Dialogs;
 using PixiEditor.Exceptions;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.ViewModels;
 

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Document/DocumentViewModel.cs

@@ -17,12 +17,12 @@ using PixiEditor.DrawingApi.Core.Surface.ImageData;
 using PixiEditor.DrawingApi.Core.Surface.Vector;
 using PixiEditor.Helpers;
 using PixiEditor.Helpers.Collections;
-using PixiEditor.Localization;
 using PixiEditor.Models.Controllers;
 using PixiEditor.Models.DataHolders;
 using PixiEditor.Models.DocumentModels;
 using PixiEditor.Models.DocumentModels.Public;
 using PixiEditor.Models.Enums;
+using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Document.TransformOverlays;
 using PixiEditor.Views.UserControls.SymmetryOverlay;
 using Color = PixiEditor.DrawingApi.Core.ColorsImpl.Color;

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Document/TransformOverlays/DocumentTransformViewModel.cs

@@ -2,8 +2,8 @@
 using ChunkyImageLib.DataHolders;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.Helpers;
-using PixiEditor.Localization;
 using PixiEditor.Models.Enums;
+using PixiEditor.Models.Localization;
 using PixiEditor.Views.UserControls.Overlays.TransformOverlay;
 
 namespace PixiEditor.ViewModels.SubViewModels.Document.TransformOverlays;

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Main/ColorsViewModel.cs

@@ -3,7 +3,6 @@ using System.Windows.Input;
 using System.Windows.Media;
 using Microsoft.Extensions.DependencyInjection;
 using PixiEditor.Helpers;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.XAML;
 using PixiEditor.Models.Controllers;
 using PixiEditor.Models.DataHolders;
@@ -13,6 +12,7 @@ using PixiEditor.Models.Dialogs;
 using PixiEditor.Models.Enums;
 using PixiEditor.Models.ExternalServices;
 using PixiEditor.Models.IO;
+using PixiEditor.Models.Localization;
 using PixiEditor.Views.Dialogs;
 using Color = PixiEditor.DrawingApi.Core.ColorsImpl.Color;
 using Colors = PixiEditor.DrawingApi.Core.ColorsImpl.Colors;

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Main/DebugViewModel.cs

@@ -6,11 +6,11 @@ using System.Windows.Input;
 using Microsoft.Win32;
 using Newtonsoft.Json;
 using PixiEditor.Helpers;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
 using PixiEditor.Models.Commands.Templates.Parsers;
 using PixiEditor.Models.Dialogs;
 using PixiEditor.Models.Enums;
+using PixiEditor.Models.Localization;
 using PixiEditor.Models.UserPreferences;
 using PixiEditor.Views.Dialogs.DebugDialogs;
 using PixiEditor.Views.Dialogs.DebugDialogs.Localization;

+ 0 - 1
src/PixiEditor/ViewModels/SubViewModels/Main/DiscordViewModel.cs

@@ -1,6 +1,5 @@
 using System.ComponentModel;
 using DiscordRPC;
-using PixiEditor.Localization;
 using PixiEditor.Models.Controllers;
 using PixiEditor.Models.Events;
 using PixiEditor.Models.UserPreferences;

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Main/FileViewModel.cs

@@ -11,12 +11,12 @@ using PixiEditor.ChangeableDocument.Enums;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.Exceptions;
 using PixiEditor.Helpers;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
 using PixiEditor.Models.Controllers;
 using PixiEditor.Models.DataHolders;
 using PixiEditor.Models.Dialogs;
 using PixiEditor.Models.IO;
+using PixiEditor.Models.Localization;
 using PixiEditor.Models.UserPreferences;
 using PixiEditor.Parser;
 using PixiEditor.ViewModels.SubViewModels.Document;

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Main/LayersViewModel.cs

@@ -7,12 +7,12 @@ using Microsoft.Win32;
 using PixiEditor.ChangeableDocument.Enums;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.Exceptions;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
 using PixiEditor.Models.Controllers;
 using PixiEditor.Models.Dialogs;
 using PixiEditor.Models.Enums;
 using PixiEditor.Models.IO;
+using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Document;
 
 namespace PixiEditor.ViewModels.SubViewModels.Main;

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Main/UpdateViewModel.cs

@@ -6,10 +6,10 @@ using System.Linq;
 using System.Threading.Tasks;
 using System.Windows;
 using PixiEditor.Helpers;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes;
 using PixiEditor.Models.Commands.Attributes.Commands;
 using PixiEditor.Models.Dialogs;
+using PixiEditor.Models.Localization;
 using PixiEditor.Models.UserPreferences;
 using PixiEditor.UpdateModule;
 

+ 0 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/ToolSettings/Settings/BoolSetting.cs

@@ -2,7 +2,6 @@
 using System.Windows.Controls;
 using System.Windows.Controls.Primitives;
 using System.Windows.Data;
-using PixiEditor.Localization;
 
 namespace PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Settings;
 

+ 0 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/ToolSettings/Settings/ColorSetting.cs

@@ -4,7 +4,6 @@ using System.Windows.Data;
 using System.Windows.Media;
 using Microsoft.Xaml.Behaviors;
 using PixiEditor.Helpers.Behaviours;
-using PixiEditor.Localization;
 using PixiEditor.Views.UserControls;
 
 namespace PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Settings;

+ 0 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/ToolSettings/Settings/EnumSetting.cs

@@ -3,7 +3,6 @@ using System.Windows.Controls;
 using System.Windows.Controls.Primitives;
 using System.Windows.Data;
 using PixiEditor.Helpers.Extensions;
-using PixiEditor.Localization;
 using PixiEditor.Views;
 
 namespace PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Settings;

+ 0 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/ToolSettings/Settings/FloatSetting.cs

@@ -1,6 +1,5 @@
 using System.Windows.Controls;
 using System.Windows.Data;
-using PixiEditor.Localization;
 using PixiEditor.Views.UserControls;
 
 namespace PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Settings;

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/ToolSettings/Settings/Setting.cs

@@ -1,5 +1,5 @@
 using System.Windows.Controls;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 
 #pragma warning disable SA1402 // File may only contain a single type, Justification: "Same class with generic value"
 

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/ToolViewModel.cs

@@ -3,8 +3,8 @@ using System.Runtime.CompilerServices;
 using System.Windows.Input;
 using ChunkyImageLib.DataHolders;
 using PixiEditor.DrawingApi.Core.Numerics;
-using PixiEditor.Localization;
 using PixiEditor.Models.DataHolders;
+using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Settings;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;
 using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/BrightnessToolViewModel.cs

@@ -1,9 +1,9 @@
 using System.Windows.Input;
 using ChunkyImageLib.DataHolders;
 using PixiEditor.DrawingApi.Core.Numerics;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
 using PixiEditor.Models.Enums;
+using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Settings;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;
 using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/ColorPickerToolViewModel.cs

@@ -1,10 +1,10 @@
 using System.ComponentModel;
 using System.Windows.Input;
 using PixiEditor.DrawingApi.Core.Numerics;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
 using PixiEditor.Models.Enums;
 using PixiEditor.Models.Events;
+using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Document;
 using PixiEditor.ViewModels.SubViewModels.Document.TransformOverlays;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/EllipseToolViewModel.cs

@@ -1,8 +1,8 @@
 using System.Windows.Input;
 using ChunkyImageLib.DataHolders;
 using PixiEditor.DrawingApi.Core.Numerics;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/EraserToolViewModel.cs

@@ -1,8 +1,8 @@
 using System.Windows.Input;
 using ChunkyImageLib.DataHolders;
 using PixiEditor.DrawingApi.Core.Numerics;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;
 using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/FloodFillToolViewModel.cs

@@ -1,8 +1,8 @@
 using System.Windows.Input;
 using ChunkyImageLib.DataHolders;
 using PixiEditor.DrawingApi.Core.Numerics;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Localization;
 using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/LassoToolViewModel.cs

@@ -1,8 +1,8 @@
 using System.Windows.Input;
 using PixiEditor.ChangeableDocument.Enums;
 using PixiEditor.DrawingApi.Core.Numerics;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;
 using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/LineToolViewModel.cs

@@ -1,8 +1,8 @@
 using System.Windows.Input;
 using ChunkyImageLib.DataHolders;
 using PixiEditor.DrawingApi.Core.Numerics;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;
 
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/MagicWandToolViewModel.cs

@@ -1,9 +1,9 @@
 using System.Windows.Input;
 using PixiEditor.ChangeableDocument.Enums;
 using PixiEditor.DrawingApi.Core.Numerics;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
 using PixiEditor.Models.Enums;
+using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;
 using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/MoveToolViewModel.cs

@@ -1,8 +1,8 @@
 using System.Windows.Input;
 using ChunkyImageLib.DataHolders;
 using PixiEditor.DrawingApi.Core.Numerics;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;
 using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/MoveViewportToolViewModel.cs

@@ -1,6 +1,6 @@
 using System.Windows.Input;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Localization;
 using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/PenToolViewModel.cs

@@ -2,9 +2,9 @@
 using System.Windows.Media;
 using ChunkyImageLib.DataHolders;
 using PixiEditor.DrawingApi.Core.Numerics;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
 using PixiEditor.Models.Events;
+using PixiEditor.Models.Localization;
 using PixiEditor.Models.UserPreferences;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Settings;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/RectangleToolViewModel.cs

@@ -1,8 +1,8 @@
 using System.Windows.Input;
 using ChunkyImageLib.DataHolders;
 using PixiEditor.DrawingApi.Core.Numerics;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/RotateViewportToolViewModel.cs

@@ -4,8 +4,8 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Input;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Localization;
 using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/SelectToolViewModel.cs

@@ -2,9 +2,9 @@
 using ChunkyImageLib.DataHolders;
 using PixiEditor.ChangeableDocument.Enums;
 using PixiEditor.DrawingApi.Core.Numerics;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
 using PixiEditor.Models.Enums;
+using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Toolbars;
 using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/ZoomToolViewModel.cs

@@ -1,6 +1,6 @@
 using System.Windows.Input;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands.Attributes.Commands;
+using PixiEditor.Models.Localization;
 using PixiEditor.Views.UserControls.Overlays.BrushShapeOverlay;
 
 namespace PixiEditor.ViewModels.SubViewModels.Tools.Tools;

+ 1 - 3
src/PixiEditor/ViewModels/SubViewModels/UserPreferences/Settings/DiscordSettings.cs

@@ -1,6 +1,4 @@
-using PixiEditor.Localization;
-
-namespace PixiEditor.ViewModels.SubViewModels.UserPreferences.Settings;
+namespace PixiEditor.ViewModels.SubViewModels.UserPreferences.Settings;
 
 internal class DiscordSettings : SettingsGroup
 {

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/UserPreferences/Settings/GeneralSettings.cs

@@ -1,5 +1,5 @@
 using System.Globalization;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 using PixiEditor.Models.UserPreferences;
 
 namespace PixiEditor.ViewModels.SubViewModels.UserPreferences.Settings;

+ 1 - 1
src/PixiEditor/ViewModels/ViewModelMain.cs

@@ -4,7 +4,6 @@ using Microsoft.Extensions.DependencyInjection;
 using PixiEditor.DrawingApi.Core.ColorsImpl;
 using PixiEditor.Helpers;
 using PixiEditor.Helpers.Collections;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands;
 using PixiEditor.Models.Commands.Attributes.Commands;
 using PixiEditor.Models.Controllers;
@@ -12,6 +11,7 @@ using PixiEditor.Models.DataHolders;
 using PixiEditor.Models.Dialogs;
 using PixiEditor.Models.Enums;
 using PixiEditor.Models.Events;
+using PixiEditor.Models.Localization;
 using PixiEditor.Models.UserPreferences;
 using PixiEditor.ViewModels.SubViewModels.Document;
 using PixiEditor.ViewModels.SubViewModels.Tools;

+ 1 - 1
src/PixiEditor/Views/Dialogs/AboutPopup.xaml.cs

@@ -1,7 +1,7 @@
 using System.Windows;
 using System.Windows.Input;
 using PixiEditor.Helpers;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Views.Dialogs;
 

+ 1 - 1
src/PixiEditor/Views/Dialogs/ConfirmationPopup.xaml.cs

@@ -1,6 +1,6 @@
 using System.Windows;
 using PixiEditor.Helpers;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Views.Dialogs;
 

+ 1 - 1
src/PixiEditor/Views/Dialogs/DebugDialogs/Localization/LocalizationDataContext.cs

@@ -11,8 +11,8 @@ using System.Windows.Threading;
 using Newtonsoft.Json;
 using Newtonsoft.Json.Linq;
 using PixiEditor.Helpers;
-using PixiEditor.Localization;
 using PixiEditor.Models.Dialogs;
+using PixiEditor.Models.Localization;
 using PixiEditor.Models.UserPreferences;
 
 namespace PixiEditor.Views.Dialogs.DebugDialogs.Localization;

+ 1 - 1
src/PixiEditor/Views/Dialogs/DebugDialogs/Localization/PoeLanguage.cs

@@ -1,7 +1,7 @@
 using System.Globalization;
 using System.Windows.Media;
 using Newtonsoft.Json;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Views.Dialogs.DebugDialogs.Localization;
 

+ 0 - 1
src/PixiEditor/Views/Dialogs/DialogTitleBar.xaml.cs

@@ -1,7 +1,6 @@
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Input;
-using PixiEditor.Localization;
 
 namespace PixiEditor.Views.Dialogs;
 

+ 1 - 1
src/PixiEditor/Views/Dialogs/ExportFilePopup.xaml.cs

@@ -1,8 +1,8 @@
 using System.Windows;
 using System.Windows.Input;
 using PixiEditor.Helpers;
-using PixiEditor.Localization;
 using PixiEditor.Models.Enums;
+using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels;
 
 namespace PixiEditor.Views.Dialogs;

+ 1 - 1
src/PixiEditor/Views/Dialogs/ImportShortcutTemplatePopup.xaml.cs

@@ -1,11 +1,11 @@
 using System.Windows;
 using System.Windows.Input;
 using PixiEditor.Exceptions;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands;
 using PixiEditor.Models.Commands.Attributes.Commands;
 using PixiEditor.Models.Commands.Templates;
 using PixiEditor.Models.Dialogs;
+using PixiEditor.Models.Localization;
 using PixiEditor.Views.UserControls;
 
 namespace PixiEditor.Views.Dialogs;

+ 1 - 1
src/PixiEditor/Views/Dialogs/PalettesBrowser.xaml.cs

@@ -7,13 +7,13 @@ using System.Windows.Navigation;
 using Microsoft.Win32;
 using PixiEditor.DrawingApi.Core.ColorsImpl;
 using PixiEditor.Helpers;
-using PixiEditor.Localization;
 using PixiEditor.Models.DataHolders;
 using PixiEditor.Models.DataHolders.Palettes;
 using PixiEditor.Models.DataProviders;
 using PixiEditor.Models.Dialogs;
 using PixiEditor.Models.Enums;
 using PixiEditor.Models.IO;
+using PixiEditor.Models.Localization;
 using PixiEditor.Models.UserPreferences;
 using PixiEditor.Views.UserControls;
 using PixiEditor.Views.UserControls.Palettes;

+ 0 - 1
src/PixiEditor/Views/Dialogs/SettingsWindow.xaml

@@ -16,7 +16,6 @@
         xmlns:commands="clr-namespace:PixiEditor.Models.Commands"
         xmlns:cmds="clr-namespace:PixiEditor.Models.Commands.XAML"
         xmlns:settingGroups="clr-namespace:PixiEditor.Views.Dialogs.SettingGroups"
-        xmlns:localization="clr-namespace:PixiEditor.Localization"
         xmlns:helpers="clr-namespace:PixiEditor.Helpers"
         mc:Ignorable="d"
         Name="window" 

+ 2 - 0
src/PixiEditor/Views/MainWindow.xaml.cs

@@ -11,6 +11,7 @@ using PixiEditor.Helpers;
 using PixiEditor.Models.Controllers;
 using PixiEditor.Models.IO;
 using PixiEditor.Models.UserPreferences;
+using PixiEditor.Platform;
 using PixiEditor.ViewModels.SubViewModels.Document;
 
 namespace PixiEditor.Views;
@@ -34,6 +35,7 @@ internal partial class MainWindow : Window
         Current = this;
 
         services = new ServiceCollection()
+            .AddPlatform()
             .AddPixiEditor()
             .BuildServiceProvider();
 

+ 1 - 1
src/PixiEditor/Views/Translator.cs

@@ -3,7 +3,7 @@ using System.Windows.Controls;
 using System.Windows.Data;
 using System.Windows.Documents;
 using AvalonDock.Layout;
-using PixiEditor.Localization;
+using PixiEditor.Models.Localization;
 using PixiEditor.Views.Dialogs;
 
 namespace PixiEditor.Views;

+ 0 - 1
src/PixiEditor/Views/UserControls/DiscordRPPreview.xaml.cs

@@ -1,6 +1,5 @@
 using System.Windows;
 using System.Windows.Controls;
-using PixiEditor.Localization;
 
 namespace PixiEditor.Views.UserControls;
 

+ 1 - 1
src/PixiEditor/Views/UserControls/KeyCombinationBox.xaml.cs

@@ -3,8 +3,8 @@ using System.Windows.Controls;
 using System.Windows.Input;
 using PixiEditor.Helpers;
 using PixiEditor.Helpers.Behaviours;
-using PixiEditor.Localization;
 using PixiEditor.Models.DataHolders;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Views.UserControls;
 

+ 1 - 1
src/PixiEditor/Views/UserControls/Overlays/SymmetryOverlay/SymmetryOverlay.cs

@@ -7,8 +7,8 @@ using ChunkyImageLib.DataHolders;
 using PixiEditor;
 using PixiEditor.ChangeableDocument.Enums;
 using PixiEditor.DrawingApi.Core.Numerics;
-using PixiEditor.Localization;
 using PixiEditor.Models.Controllers;
+using PixiEditor.Models.Localization;
 using PixiEditor.Views;
 using PixiEditor.Views.UserControls;
 using PixiEditor.Views.UserControls.Overlays.SymmetryOverlay;

+ 1 - 1
src/PixiEditor/Views/UserControls/ShortcutBox.cs

@@ -1,11 +1,11 @@
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Input;
-using PixiEditor.Localization;
 using PixiEditor.Models.Commands;
 using PixiEditor.Models.Commands.Commands;
 using PixiEditor.Models.DataHolders;
 using PixiEditor.Models.Dialogs;
+using PixiEditor.Models.Localization;
 
 namespace PixiEditor.Views.UserControls;