Browse Source

Merge pull request #555 from PixiEditor/improvements-06_2023

Added copy color filter and other improvements
Krzysztof Krysiński 2 years ago
parent
commit
1e68c7678c

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

@@ -584,5 +584,7 @@
   "USE_SECONDARY_COLOR": "Use secondary color",
   "RIGHT_CLICK_MODE": "Right click mode",
   "ADD_PRIMARY_COLOR_TO_PALETTE": "Add primary color to palette",
-  "ADD_PRIMARY_COLOR_TO_PALETTE_DESCRIPTIVE": "Add primary color to current palette"
+  "ADD_PRIMARY_COLOR_TO_PALETTE_DESCRIPTIVE": "Add primary color to current palette",
+  
+  "COPY_COLOR": "Copy color"
 }

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

@@ -144,8 +144,8 @@ internal partial class DocumentViewModel : NotifyableObject
     private VectorPath selectionPath = new VectorPath();
     public VectorPath SelectionPathBindable => selectionPath;
 
-    public WpfObservableRangeCollection<PaletteColor> Swatches { get; set; } = new WpfObservableRangeCollection<PaletteColor>();
-    public WpfObservableRangeCollection<PaletteColor> Palette { get; set; } = new WpfObservableRangeCollection<PaletteColor>();
+    public WpfObservableRangeCollection<PaletteColor> Swatches { get; set; } = new();
+    public WpfObservableRangeCollection<PaletteColor> Palette { get; set; } = new();
 
     public DocumentTransformViewModel TransformViewModel { get; }
     public ReferenceLayerViewModel ReferenceLayerViewModel { get; }

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

@@ -103,6 +103,7 @@ internal class ClipboardViewModel : SubViewModel<ViewModelMain>
     [Command.Basic("PixiEditor.Clipboard.CopyPrimaryColorAsRgb", CopyColor.PrimaryRGB, "COPY_COLOR_RGB", "COPY_COLOR_RGB_DESCRIPTIVE", IconEvaluator = "PixiEditor.Clipboard.CopyColorIcon")]
     [Command.Basic("PixiEditor.Clipboard.CopySecondaryColorAsHex", CopyColor.SecondaryHEX, "COPY_COLOR_SECONDARY_HEX", "COPY_COLOR_SECONDARY_HEX_DESCRIPTIVE", IconEvaluator = "PixiEditor.Clipboard.CopyColorIcon")]
     [Command.Basic("PixiEditor.Clipboard.CopySecondaryColorAsRgb", CopyColor.SecondardRGB, "COPY_COLOR_SECONDARY_RGB", "COPY_COLOR_SECONDARY_RGB_DESCRIPTIVE", IconEvaluator = "PixiEditor.Clipboard.CopyColorIcon")]
+    [Command.Filter("PixiEditor.Clipboard.CopyColorToClipboard", "COPY_COLOR_TO_CLIPBOARD", "COPY_COLOR", Key = Key.C, Modifiers = ModifierKeys.Shift)]
     public void CopyColorAsHex(CopyColor color)
     {
         var targetColor = color switch

+ 2 - 7
src/PixiEditor/ViewModels/SubViewModels/Main/ColorsViewModel.cs

@@ -218,16 +218,11 @@ internal class ColorsViewModel : SubViewModel<ViewModelMain>
     public void ImportPalette(List<PaletteColor> palette)
     {
         var doc = Owner.DocumentManagerSubViewModel.ActiveDocument;
-        if (doc is null)
+        if (doc is null || doc.Palette.SequenceEqual(palette))
             return;
 
-        if (ConfirmationDialog.Show(new LocalizedString("REPLACE_PALETTE_CONSENT"), new LocalizedString("REPLACE_PALETTE")) == ConfirmationType.Yes)
+        if (doc.Palette.Count == 0 || ConfirmationDialog.Show(new LocalizedString("REPLACE_PALETTE_CONSENT"), new LocalizedString("REPLACE_PALETTE")) == ConfirmationType.Yes)
         {
-            if (doc.Palette is null)
-            {
-                doc.Palette = new WpfObservableRangeCollection<PaletteColor>();
-            }
-
             doc.Palette.ReplaceRange(palette.Select(x => new PaletteColor(x.R, x.G, x.B)));
         }
     }

+ 2 - 3
src/PixiEditor/Views/Dialogs/PalettesBrowser.xaml

@@ -19,9 +19,8 @@
     xmlns:xaml="clr-namespace:PixiEditor.Models.Commands.XAML"
     x:Class="PixiEditor.Views.Dialogs.PalettesBrowser"
     mc:Ignorable="d"
-    WindowStartupLocation="CenterScreen" 
-    MinWidth="200" 
-    Height="600" Width="850" 
+    WindowStartupLocation="CenterScreen"
+    Height="600" Width="850"
     WindowStyle="None"
     x:Name="palettesBrowser"
     FlowDirection="{helpers:Localization FlowDirection}"

+ 20 - 0
src/PixiEditor/Views/Dialogs/PalettesBrowser.xaml.cs

@@ -172,10 +172,16 @@ internal partial class PalettesBrowser : Window, IPopupWindow
 
     private LocalPalettesFetcher localPalettesFetcher;
 
+    private ILocalizationProvider localizationProvider;
+
     private double _lastScrolledOffset = -1;
 
     public PalettesBrowser(PaletteProvider provider)
     {
+        localizationProvider = ViewModelMain.Current.LocalizationProvider;
+        localizationProvider.OnLanguageChanged += LocalizationProviderOnOnLanguageChanged;
+        MinWidth = DetermineWidth();
+        
         PaletteProvider = provider;
         InitializeComponent();
         Title = new LocalizedString("PALETTE_BROWSER");
@@ -198,6 +204,20 @@ internal partial class PalettesBrowser : Window, IPopupWindow
         IPreferences.Current.AddCallback(PreferencesConstants.FavouritePalettes, OnFavouritePalettesChanged);
     }
 
+    private void LocalizationProviderOnOnLanguageChanged(Language obj)
+    {
+        MinWidth = DetermineWidth();
+    }
+
+    private double DetermineWidth()
+    {
+        return localizationProvider.CurrentLanguage.LanguageData.Code switch
+        {
+            "ru" or "uk" => 900,
+            _ => 850
+        };
+    } 
+
     private bool CanAddFromPalette(object param)
     {
         return CurrentEditingPalette != null;

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

@@ -53,7 +53,7 @@
             TitleKey="SETTINGS" CloseCommand="{x:Static SystemCommands.CloseWindowCommand}"/>
 
         <ListBox DockPanel.Dock="Left" x:Name="pages" ItemsSource="{Binding Pages}"
-                 Background="Transparent" BorderThickness="0" Width="180" ItemContainerStyle="{StaticResource PixiListBoxItemStyle}"
+                 Background="Transparent" BorderThickness="0" MinWidth="165" Width="Auto" ItemContainerStyle="{StaticResource PixiListBoxItemStyle}"
                  SelectedIndex="{Binding CurrentPage}">
             <ListBox.ItemTemplate>
                 <DataTemplate>