Browse Source

Toggle gridlines

Krzysztof Krysiński 1 year ago
parent
commit
4920f8856f

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

@@ -120,7 +120,8 @@ internal static class ServiceCollectionHelpers
             .AddSingleton<MenuItemBuilder, RecentFilesMenuBuilder>()
             .AddSingleton<MenuItemBuilder, RecentFilesMenuBuilder>()
             .AddSingleton<MenuItemBuilder, FileExitMenuBuilder>()
             .AddSingleton<MenuItemBuilder, FileExitMenuBuilder>()
             .AddSingleton<MenuItemBuilder, SymmetryMenuBuilder>()
             .AddSingleton<MenuItemBuilder, SymmetryMenuBuilder>()
-            .AddSingleton<MenuItemBuilder, OpenDockablesMenuBuilder>();
+            .AddSingleton<MenuItemBuilder, OpenDockablesMenuBuilder>()
+            .AddSingleton<MenuItemBuilder, ToggleGridLinesMenuBuilder>();
     }
     }
 
 
     public static IServiceCollection AddExtensionServices(this IServiceCollection collection, ExtensionLoader loader) =>
     public static IServiceCollection AddExtensionServices(this IServiceCollection collection, ExtensionLoader loader) =>

+ 46 - 0
src/PixiEditor.AvaloniaUI/ViewModels/Menu/MenuBuilders/ToggleGridLinesMenuBuilder.cs

@@ -0,0 +1,46 @@
+using System.Collections.Generic;
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Data;
+using Avalonia.Input;
+using PixiEditor.AvaloniaUI.Helpers.Converters;
+using PixiEditor.AvaloniaUI.Views.Input;
+using PixiEditor.Extensions.UI;
+
+namespace PixiEditor.AvaloniaUI.ViewModels.Menu.MenuBuilders;
+
+internal class ToggleGridLinesMenuBuilder : MenuItemBuilder
+{
+    public override void ModifyMenuTree(ICollection<MenuItem> tree)
+    {
+        if (TryFindMenuItem(tree, "VIEW", out MenuItem? viewItem))
+        {
+            viewItem!.Items.Add(new Separator());
+            ToggleableMenuItem gridLinesItem = new ToggleableMenuItem();
+            Translator.SetKey(gridLinesItem, "TOGGLE_GRIDLINES");
+            gridLinesItem.Icon = new Image()
+            {
+                Source = ImagePathToBitmapConverter.LoadBitmapFromRelativePath("/Images/Commands/PixiEditor/View/ToggleGrid.png"),
+                Width = Models.Commands.XAML.Menu.IconDimensions,
+                Height = Models.Commands.XAML.Menu.IconDimensions
+            };
+
+            BindItem(gridLinesItem);
+            viewItem.Items.Add(gridLinesItem);
+        }
+    }
+
+    private void BindItem(ToggleableMenuItem gridLinesItem)
+    {
+        gridLinesItem.Bind(ToggleableMenuItem.IsCheckedProperty, new Binding("ViewportSubViewModel.GridLinesEnabled")
+        {
+            Source = ViewModelMain.Current,
+            Mode = BindingMode.TwoWay
+        });
+
+        gridLinesItem.Bind(InputElement.IsEnabledProperty, new Binding("!!DocumentManagerSubViewModel.ActiveDocument")
+        {
+            Source = ViewModelMain.Current
+        });
+    }
+}