Browse Source

Extension accessible preferences

Krzysztof Krysiński 2 years ago
parent
commit
59ba4127c3
25 changed files with 45 additions and 32 deletions
  1. 8 5
      src/PixiEditor.Extensions/Common/UserPreferences/IPreferences.cs
  2. 2 2
      src/PixiEditor.Extensions/Common/UserPreferences/PreferencesConstants.cs
  3. 3 1
      src/PixiEditor/Data/Localization/Languages/en.json
  4. 2 1
      src/PixiEditor/Helpers/Extensions/ServiceCollectionHelpers.cs
  5. 1 1
      src/PixiEditor/Models/DataProviders/LocalPalettesFetcher.cs
  6. 1 1
      src/PixiEditor/Models/Dialogs/NewFileDialog.cs
  7. 1 1
      src/PixiEditor/Models/Localization/LocalizationProvider.cs
  8. 3 2
      src/PixiEditor/Models/Preferences/PreferencesSettings.cs
  9. 2 1
      src/PixiEditor/ViewModels/SettingsWindowViewModel.cs
  10. 4 0
      src/PixiEditor/ViewModels/SubViewModels/AdditionalContent/AdditionalContentViewModel.cs
  11. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Main/DebugViewModel.cs
  12. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Main/DiscordViewModel.cs
  13. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Main/FileViewModel.cs
  14. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Main/StylusViewModel.cs
  15. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Main/ToolsViewModel.cs
  16. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Main/UpdateViewModel.cs
  17. 1 1
      src/PixiEditor/ViewModels/SubViewModels/Tools/Tools/PenToolViewModel.cs
  18. 2 2
      src/PixiEditor/ViewModels/SubViewModels/UserPreferences/Settings/FileSettings.cs
  19. 1 1
      src/PixiEditor/ViewModels/SubViewModels/UserPreferences/Settings/GeneralSettings.cs
  20. 1 1
      src/PixiEditor/ViewModels/SubViewModels/UserPreferences/SettingsGroup.cs
  21. 1 1
      src/PixiEditor/ViewModels/ViewModelMain.cs
  22. 2 1
      src/PixiEditor/Views/Dialogs/DebugDialogs/Localization/LocalizationDataContext.cs
  23. 1 1
      src/PixiEditor/Views/Dialogs/PalettesBrowser.xaml.cs
  24. 2 2
      src/PixiEditor/Views/MainWindow.xaml
  25. 1 1
      src/PixiEditor/Views/MainWindow.xaml.cs

+ 8 - 5
src/PixiEditor/Models/UserPreferences/IPreferences.cs → src/PixiEditor.Extensions/Common/UserPreferences/IPreferences.cs

@@ -1,10 +1,8 @@
-using PixiEditor.ViewModels;
+namespace PixiEditor.Extensions.Common.UserPreferences;
 
-namespace PixiEditor.Models.UserPreferences;
-
-internal interface IPreferences
+public interface IPreferences
 {
-    public static IPreferences Current => ViewModelMain.Current.Preferences;
+    public static IPreferences Current { get; private set; }
 
     /// <summary>
     /// Saves the preferences to be stored permanently.
@@ -88,4 +86,9 @@ internal interface IPreferences
     /// <param name="name">The name of the setting</param>
     /// <returns>The editor setting or the <paramref name="fallbackValue"/> if it has not been set yet</returns>
     public T? GetLocalPreference<T>(string name, T? fallbackValue);
+
+    protected static void SetAsCurrent(IPreferences provider)
+    {
+        Current = provider;
+    }
 }

+ 2 - 2
src/PixiEditor/Models/UserPreferences/PreferencesConstants.cs → src/PixiEditor.Extensions/Common/UserPreferences/PreferencesConstants.cs

@@ -1,6 +1,6 @@
-namespace PixiEditor.Models.UserPreferences;
+namespace PixiEditor.Extensions.Common.UserPreferences;
 
-internal static class PreferencesConstants
+public static class PreferencesConstants
 {
     public const string FavouritePalettes = "FavouritePalettes";
     public const string RecentlyOpened = "RecentlyOpened";

+ 3 - 1
src/PixiEditor/Data/Localization/Languages/en.json

@@ -567,5 +567,7 @@
   "ERROR_FORBIDDEN_UNIQUE_NAME": "Extension unique name cannot start with 'pixieditor'.",
   "ERROR_MISSING_METADATA": "Extension metadata key '{0}' is missing.",
   "ERROR_NO_CLASS_ENTRY": "Extension class entry is missing on path '{0}'.",
-  "ERROR_NO_ENTRY_ASSEMBLY": "Extension entry assembly is missing on path '{0}'."
+  "ERROR_NO_ENTRY_ASSEMBLY": "Extension entry assembly is missing on path '{0}'.",
+
+  "AWESOME_SUPPORTER": "Awesome Supporter"
 }

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

@@ -1,6 +1,7 @@
 using Microsoft.Extensions.DependencyInjection;
 using PixiEditor.Extensions;
 using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.Extensions.Common.UserPreferences;
 using PixiEditor.Extensions.Palettes;
 using PixiEditor.Extensions.Palettes.Parsers;
 using PixiEditor.Extensions.Windowing;
@@ -13,7 +14,7 @@ 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.Models.Preferences;
 using PixiEditor.ViewModels;
 using PixiEditor.ViewModels.SubViewModels.AdditionalContent;
 using PixiEditor.ViewModels.SubViewModels.Document;

+ 1 - 1
src/PixiEditor/Models/DataProviders/LocalPalettesFetcher.cs

@@ -1,13 +1,13 @@
 using System.IO;
 using PixiEditor.DrawingApi.Core.ColorsImpl;
 using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.Extensions.Common.UserPreferences;
 using PixiEditor.Extensions.Palettes;
 using PixiEditor.Extensions.Palettes.Parsers;
 using PixiEditor.Models.DataHolders;
 using PixiEditor.Models.DataHolders.Palettes;
 using PixiEditor.Models.IO;
 using PixiEditor.Models.IO.PaletteParsers.JascPalFile;
-using PixiEditor.Models.UserPreferences;
 
 namespace PixiEditor.Models.DataProviders;
 

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

@@ -1,4 +1,4 @@
-using PixiEditor.Models.UserPreferences;
+using PixiEditor.Extensions.Common.UserPreferences;
 using PixiEditor.Views;
 using PixiEditor.Views.Dialogs;
 

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

@@ -3,9 +3,9 @@ using System.IO;
 using Newtonsoft.Json;
 using PixiEditor.Extensions;
 using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.Extensions.Common.UserPreferences;
 using PixiEditor.Models.AppExtensions;
 using PixiEditor.Models.IO;
-using PixiEditor.Models.UserPreferences;
 
 namespace PixiEditor.Models.Localization;
 

+ 3 - 2
src/PixiEditor/Models/UserPreferences/PreferencesSettings.cs → src/PixiEditor/Models/Preferences/PreferencesSettings.cs

@@ -2,9 +2,9 @@
 using System.IO;
 using Newtonsoft.Json;
 using Newtonsoft.Json.Linq;
-using PixiEditor.ViewModels;
+using PixiEditor.Extensions.Common.UserPreferences;
 
-namespace PixiEditor.Models.UserPreferences;
+namespace PixiEditor.Models.Preferences;
 
 [DebuggerDisplay("{Preferences.Count + LocalPreferences.Count} Preference(s)")]
 internal class PreferencesSettings : IPreferences
@@ -23,6 +23,7 @@ internal class PreferencesSettings : IPreferences
 
     public void Init()
     {
+        IPreferences.SetAsCurrent(this);
         Init(PathToRoamingUserPreferences, PathToLocalPreferences);
     }
 

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

@@ -9,11 +9,12 @@ using System.Windows.Input;
 using Microsoft.Win32;
 using PixiEditor.Models.Commands.Attributes.Commands;
 using PixiEditor.Models.Commands.Templates;
-using PixiEditor.Models.UserPreferences;
 using PixiEditor.Views.Dialogs;
 using PixiEditor.Exceptions;
 using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.Extensions.Common.UserPreferences;
 using PixiEditor.Models.Localization;
+using PixiEditor.Models.Preferences;
 
 namespace PixiEditor.ViewModels;
 

+ 4 - 0
src/PixiEditor/ViewModels/SubViewModels/AdditionalContent/AdditionalContentViewModel.cs

@@ -12,5 +12,9 @@ internal class AdditionalContentViewModel : ViewModelBase
     }
 
     public bool IsSupporterPackAvailable =>
+#if DEBUG
+        true;
+#else
         AdditionalContentProvider != null && AdditionalContentProvider.IsContentAvailable(AdditionalContentProduct.SupporterPack);
+#endif
 }

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

@@ -6,13 +6,13 @@ using System.Windows.Input;
 using Microsoft.Win32;
 using Newtonsoft.Json;
 using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.Extensions.Common.UserPreferences;
 using PixiEditor.Helpers;
 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;
 

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

@@ -1,8 +1,8 @@
 using System.ComponentModel;
 using DiscordRPC;
+using PixiEditor.Extensions.Common.UserPreferences;
 using PixiEditor.Models.Controllers;
 using PixiEditor.Models.Events;
-using PixiEditor.Models.UserPreferences;
 using PixiEditor.ViewModels.SubViewModels.Document;
 
 namespace PixiEditor.ViewModels.SubViewModels.Main;

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

@@ -11,6 +11,7 @@ using PixiEditor.ChangeableDocument.Enums;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.Exceptions;
 using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.Extensions.Common.UserPreferences;
 using PixiEditor.Helpers;
 using PixiEditor.Models.Commands.Attributes.Commands;
 using PixiEditor.Models.Controllers;
@@ -18,7 +19,6 @@ 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;
 using PixiEditor.Views.Dialogs;

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

@@ -1,7 +1,7 @@
 using System.Windows.Input;
+using PixiEditor.Extensions.Common.UserPreferences;
 using PixiEditor.Models.Commands.Attributes;
 using PixiEditor.Models.Commands.Attributes.Commands;
-using PixiEditor.Models.UserPreferences;
 using PixiEditor.ViewModels.SubViewModels.Tools;
 using PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 

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

@@ -2,10 +2,10 @@
 using ChunkyImageLib.DataHolders;
 using Microsoft.Extensions.DependencyInjection;
 using PixiEditor.DrawingApi.Core.Numerics;
+using PixiEditor.Extensions.Common.UserPreferences;
 using PixiEditor.Models.Commands.Attributes.Commands;
 using PixiEditor.Models.Controllers;
 using PixiEditor.Models.Events;
-using PixiEditor.Models.UserPreferences;
 using PixiEditor.ViewModels.SubViewModels.Document;
 using PixiEditor.ViewModels.SubViewModels.Tools;
 using PixiEditor.ViewModels.SubViewModels.Tools.Tools;

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

@@ -6,12 +6,12 @@ using System.Linq;
 using System.Threading.Tasks;
 using System.Windows;
 using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.Extensions.Common.UserPreferences;
 using PixiEditor.Helpers;
 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.Platform;
 using PixiEditor.UpdateModule;
 

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

@@ -3,10 +3,10 @@ using System.Windows.Media;
 using ChunkyImageLib.DataHolders;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.Extensions.Common.UserPreferences;
 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;
 using PixiEditor.Views.UserControls;

+ 2 - 2
src/PixiEditor/ViewModels/SubViewModels/UserPreferences/Settings/FileSettings.cs

@@ -1,5 +1,5 @@
-using PixiEditor.Models;
-using PixiEditor.Models.UserPreferences;
+using PixiEditor.Extensions.Common.UserPreferences;
+using PixiEditor.Models;
 
 namespace PixiEditor.ViewModels.SubViewModels.UserPreferences.Settings;
 

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

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

+ 1 - 1
src/PixiEditor/ViewModels/SubViewModels/UserPreferences/SettingsGroup.cs

@@ -1,6 +1,6 @@
 using System.Runtime.CompilerServices;
+using PixiEditor.Extensions.Common.UserPreferences;
 using PixiEditor.Helpers;
-using PixiEditor.Models.UserPreferences;
 
 namespace PixiEditor.ViewModels.SubViewModels.UserPreferences;
 

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

@@ -3,6 +3,7 @@ using System.Windows;
 using Microsoft.Extensions.DependencyInjection;
 using PixiEditor.DrawingApi.Core.ColorsImpl;
 using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.Extensions.Common.UserPreferences;
 using PixiEditor.Helpers;
 using PixiEditor.Helpers.Collections;
 using PixiEditor.Models.Commands;
@@ -13,7 +14,6 @@ using PixiEditor.Models.Dialogs;
 using PixiEditor.Models.Enums;
 using PixiEditor.Models.Events;
 using PixiEditor.Models.Localization;
-using PixiEditor.Models.UserPreferences;
 using PixiEditor.ViewModels.SubViewModels.AdditionalContent;
 using PixiEditor.ViewModels.SubViewModels.Document;
 using PixiEditor.ViewModels.SubViewModels.Tools;

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

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

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

@@ -9,6 +9,7 @@ using System.Windows.Navigation;
 using Microsoft.Win32;
 using PixiEditor.DrawingApi.Core.ColorsImpl;
 using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.Extensions.Common.UserPreferences;
 using PixiEditor.Extensions.Palettes;
 using PixiEditor.Extensions.Palettes.Parsers;
 using PixiEditor.Helpers;
@@ -20,7 +21,6 @@ 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;
 using PaletteColor = PixiEditor.Extensions.Palettes.PaletteColor;

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

@@ -469,8 +469,8 @@
                     Margin="0,-5,-5,0"
                     HorizontalAlignment="Right"
                     WindowChrome.IsHitTestVisibleInChrome="True">
-                    <Image Source="../Images/Star-filled.png" Width="24"
-                           Visibility="{Binding Path=AdditionalContentSubViewModel.IsSupporterPackAvailable,
+                    <usercontrols:Chip ui1:Translator.Key="AWESOME_SUPPORTER" OutlineColor="Gold"
+                                       Visibility="{Binding Path=AdditionalContentSubViewModel.IsSupporterPackAvailable,
                            Converter={converters:BoolToVisibilityConverter}}"/>
                     <Button
                         Style="{StaticResource MinimizeButtonStyle}"

+ 1 - 1
src/PixiEditor/Views/MainWindow.xaml.cs

@@ -10,12 +10,12 @@ using Microsoft.Extensions.DependencyInjection;
 using PixiEditor.DrawingApi.Core.Bridge;
 using PixiEditor.DrawingApi.Skia;
 using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.Extensions.Common.UserPreferences;
 using PixiEditor.Extensions.UI;
 using PixiEditor.Helpers;
 using PixiEditor.Models.AppExtensions;
 using PixiEditor.Models.Controllers;
 using PixiEditor.Models.IO;
-using PixiEditor.Models.UserPreferences;
 using PixiEditor.Platform;
 using PixiEditor.ViewModels.SubViewModels.Document;