CPKreuz 2 anni fa
parent
commit
cf82e6129a

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

@@ -577,6 +577,8 @@
   "DISABLE_NEWS_PANEL": "Disable News panel in startup window",
   "FAILED_FETCH_NEWS": "Failed to fetch news",
   
+  "COPY_COLOR": "Copy color",
+  
   "CROP_TO_SELECTION": "Crop to selection",
   "CROP_TO_SELECTION_DESCRIPTIVE": "Crop image to selection",
   "SHOW_CONTEXT_MENU": "Show context menu",
@@ -585,24 +587,32 @@
   "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",
+  
   "COLOR": "Color",
   "GUIDES_MANAGER_TITLE": "Guides Manager",
   "SAVE_GUIDES": "Save guides",
   "OPEN_SAVED_BOOK": "Open saved guides",
   "OPEN_GUIDES_MANAGER": "Open guides manager",
   "OPEN_GUIDES_MANAGER_DESCRIPTIVE": "Open guides manager",
+  
   "LINE_GUIDE": "Line guide",
   "VERTICAL_GUIDE": "Vertical guide",
   "HORIZONTAL_GUIDE": "Horizontal guide",
   "RECTANGLE_GUIDE": "Rectangle Guide",
+  "GRID_GUIDE": "Grid Guide",
+  
   "ADD_LINE_GUIDE": "Add line guide",
   "ADD_LINE_GUIDE_DESCRIPTIVE": "Add line guide",
+  
   "ADD_VERTICAL_GUIDE": "Add vertical guide",
   "ADD_VERTICAL_GUIDE_DESCRIPTIVE": "Add vertical guide",
+  
   "ADD_HORIZONTAL_GUIDE": "Add horizontal guide",
   "ADD_HORIZONTAL_GUIDE_DESCRIPTIVE": "Add horizontal guide",
+  
   "ADD_RECTANGLE_GUIDE": "Add rectangle guide",
   "ADD_RECTANGLE_GUIDE_DESCRIPTIVE": "Add rectangle guide",
   
-  "COPY_COLOR": "Copy color"
+  "ADD_GRID_GUIDE": "Add grid guide",
+  "ADD_GRID_GUIDE_DESCRIPTIVE": "Add grid guide"
 }

BIN
src/PixiEditor/Images/Guides/GridGuide.png


+ 0 - 1
src/PixiEditor/Models/DataHolders/Guides/DirectionalGuide.cs

@@ -62,7 +62,6 @@ internal class DirectionalGuide : Guide
 
     public DirectionalGuide(DocumentViewModel document, Direction direction) : base(document)
     {
-        Color = Colors.CadetBlue;
         this.direction = direction;
         SettingsControl = new DirectionalGuideSettings(this);
     }

+ 200 - 0
src/PixiEditor/Models/DataHolders/Guides/GridGuide.cs

@@ -0,0 +1,200 @@
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Input;
+using System.Windows.Media;
+using PixiEditor.DrawingApi.Core.Numerics;
+using PixiEditor.ViewModels.SubViewModels.Document;
+using PixiEditor.Views.UserControls.Guides;
+
+namespace PixiEditor.Models.DataHolders.Guides;
+
+internal class GridGuide : Guide
+{
+    private DocumentViewModel document;
+    private double verticalOffset;
+    private double horizontalOffset;
+    private Color horizontalColor;
+    private Color verticalColor;
+    private bool isGrabbingPoint;
+    
+    public double VerticalOffset
+    {
+        get => verticalOffset;
+        set
+        {
+            if (SetProperty(ref verticalOffset, value))
+            {
+                InvalidateVisual();
+            }
+        }
+    }
+
+    public double HorizontalOffset
+    {
+        get => horizontalOffset;
+        set
+        {
+            if (SetProperty(ref horizontalOffset, value))
+            {
+                InvalidateVisual();
+            }
+        }
+    }
+
+    public Color HorizontalColor
+    {
+        get => horizontalColor;
+        set
+        {
+            if (SetProperty(ref horizontalColor, value))
+            {
+                InvalidateVisual();
+            }
+        }
+    }
+
+    public Color VerticalColor
+    {
+        get => verticalColor;
+        set
+        {
+            if (SetProperty(ref verticalColor, value))
+            {
+                InvalidateVisual();
+            }
+        }
+    }
+    
+    public GridGuide(DocumentViewModel document) : base(document)
+    {
+        SettingsControl = new GridGuideSettings(this);
+    }
+
+    public override Control SettingsControl { get; }
+    
+    public override string TypeNameKey => "GRID_GUIDE";
+    
+    public override void Draw(DrawingContext context, GuideRenderer renderer)
+    {
+        if (HorizontalOffset == 0 || VerticalOffset == 0)
+        {
+            return;
+        }
+
+        var size = Document.SizeBindable - VecI.One;
+        var verticalCount = (int)Math.Round(size.X / VerticalOffset, MidpointRounding.AwayFromZero);
+        var horizontalCount = (int)Math.Round(size.Y / HorizontalOffset, MidpointRounding.AwayFromZero);
+
+        double sizeMod = (ShowExtended, IsEditing) switch
+        {
+            (false, false) => 1,
+            (true, false) => 1.5,
+            (_, true) => 3
+        } * renderer.ScreenUnit;
+        
+        var verticalPen = new Pen(new SolidColorBrush(VerticalColor), sizeMod);
+        var horizontalPen = new Pen(new SolidColorBrush(HorizontalColor), sizeMod);
+
+        for (var x = 1; x <= verticalCount; x++)
+        {
+            double offset = x * VerticalOffset;
+            
+            if (size.X + 1 > offset)
+            {
+                context.DrawLine(verticalPen, new Point(offset, 0), new Point(offset, Document.SizeBindable.Y));
+            }
+        }
+        
+        for (var y = 1; y <= horizontalCount; y++)
+        {
+            double offset = y * HorizontalOffset;
+            if (size.Y + 1 > offset)
+            {
+                context.DrawLine(horizontalPen, new Point(0, offset), new Point(Document.SizeBindable.X, offset));
+            }
+        }
+
+        if (ShowExtended || IsEditing)
+        {
+            context.DrawEllipse(Brushes.Aqua, null, new Point(VerticalOffset, HorizontalOffset), sizeMod * 2, sizeMod * 2);
+        }
+    }
+
+    protected override void RendererAttached(GuideRenderer renderer)
+    {
+        renderer.MouseEnter += RendererOnMouseEnter;
+        renderer.MouseLeave += RendererOnMouseLeave;
+        
+        renderer.MouseLeftButtonDown += RendererOnMouseLeftButtonDown;
+        renderer.MouseMove += RendererOnMouseMove;
+        renderer.MouseLeftButtonUp += RendererOnMouseLeftButtonUp;
+    }
+
+    private void RendererOnMouseEnter(object sender, MouseEventArgs e)
+    {
+        var renderer = (GuideRenderer)sender;
+
+        if (!IsEditing || !IsInEditingPoint(renderer, e))
+        {
+            return;
+        }
+
+        renderer.Cursor = Cursors.Cross;
+        e.Handled = true;
+    }
+    
+    private void RendererOnMouseLeave(object sender, MouseEventArgs e)
+    {
+        var renderer = (GuideRenderer)sender;
+
+        renderer.Cursor = null;
+    }
+    
+    private void RendererOnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+    {
+        var renderer = (GuideRenderer)sender;
+
+        if (!IsEditing || !IsInEditingPoint(renderer, e))
+        {
+            return;
+        }
+
+        isGrabbingPoint = true;
+        Mouse.Capture(renderer);
+        e.Handled = true;
+    }
+
+    private void RendererOnMouseMove(object sender, MouseEventArgs e)
+    {
+        if (!isGrabbingPoint)
+        {
+            return;
+        }
+
+        var renderer = (GuideRenderer)sender;
+
+        e.Handled = true;
+        var point = e.GetPosition(renderer);
+
+        VerticalOffset = Math.Round(point.X);
+        HorizontalOffset = Math.Round(point.Y);
+    }
+
+    private void RendererOnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
+    {
+        if (!isGrabbingPoint)
+        {
+            return;
+        }
+
+        Mouse.Capture(null);
+        e.Handled = true;
+        isGrabbingPoint = false;
+    }
+
+    private bool IsInEditingPoint(GuideRenderer renderer, MouseEventArgs args)
+    {
+        var offset = new Point(VerticalOffset, HorizontalOffset) - args.GetPosition(renderer);
+        return offset.Length < 3 * renderer.ScreenUnit;
+    }
+}

+ 0 - 1
src/PixiEditor/Models/DataHolders/Guides/LineGuide.cs

@@ -86,7 +86,6 @@ namespace PixiEditor.Models.DataHolders.Guides
 
         public LineGuide(DocumentViewModel document) : base(document)
         {
-            Color = Colors.CadetBlue;
             SettingsControl = new LineGuideSettings(this);
         }
 

+ 0 - 1
src/PixiEditor/Models/DataHolders/Guides/RectangleGuide.cs

@@ -89,7 +89,6 @@ internal class RectangleGuide : Guide
 
     public RectangleGuide(DocumentViewModel document) : base(document)
     {
-        Color = Colors.CadetBlue;
         SettingsControl = new RectangleGuideSettings(this);
     }
 

+ 1 - 1
src/PixiEditor/Models/IO/PaletteParsers/ClsFileParser.cs

@@ -8,7 +8,7 @@ namespace PixiEditor.Models.IO.PaletteParsers;
 
 internal class ClsFileParser : PaletteFileParser
 {
-    public override string FileName { get; } = "Clip Studio Paint Color Set";
+    public override string FileName { get; } = "Clip Studio Paint HorizontalColor Set";
 
     public override string[] SupportedFileExtensions { get; } = { ".cls" };
 

+ 1 - 1
src/PixiEditor/Models/IO/PaletteParsers/PaintNetTxtParser.cs

@@ -36,7 +36,7 @@ internal class PaintNetTxtParser : PaletteFileParser
         List<PaletteColor> colors = new();
         for (int i = 0; i < lines.Length; i++)
         {
-            // Color format aarrggbb
+            // HorizontalColor format aarrggbb
             string colorLine = lines[i];
             if(colorLine.Length < 8)
                 continue;

+ 2 - 0
src/PixiEditor/PixiEditor.csproj

@@ -465,6 +465,8 @@
 		<Resource Include="Images\News\OfficialAnnouncement.png" />
 		<None Remove="Images\Chevron-right.png" />
 		<Resource Include="Images\Chevron-right.png" />
+		<None Remove="Images\Guides\GridGuide.png" />
+		<Resource Include="Images\Guides\GridGuide.png" />
 	</ItemGroup>
 	<ItemGroup>
 		<None Include="..\LICENSE">

+ 693 - 0
src/PixiEditor/PixiEditor_ianhpwww_wpftmp.csproj

@@ -0,0 +1,693 @@
+<Project>
+  <PropertyGroup>
+    <AssemblyName>PixiEditor</AssemblyName>
+    <IntermediateOutputPath>obj\Debug\</IntermediateOutputPath>
+    <BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
+    <MSBuildProjectExtensionsPath>C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\</MSBuildProjectExtensionsPath>
+    <_TargetAssemblyProjectName>PixiEditor</_TargetAssemblyProjectName>
+  </PropertyGroup>
+  <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
+  <PropertyGroup>
+    <OutputType>WinExe</OutputType>
+    <TargetFramework>net7.0-windows</TargetFramework>
+    <UseWPF>true</UseWPF>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
+    <AssemblyName>PixiEditor</AssemblyName>
+    <RootNamespace>PixiEditor</RootNamespace>
+    <RepositoryUrl>https://github.com/PixiEditor/PixiEditor</RepositoryUrl>
+    <PackageLicenseFile>LICENSE</PackageLicenseFile>
+    <PackageIcon>icon.ico</PackageIcon>
+    <ApplicationIcon>..\icon.ico</ApplicationIcon>
+    <Authors>Krzysztof Krysiński, Egor Mozgovoy, CPK</Authors>
+    <Configurations>Debug;Release;MSIX;MSIX Debug;Steam;DevRelease</Configurations>
+    <Platforms>AnyCPU;x64;x86</Platforms>
+    <RuntimeIdentifiers>win-x86;win-x64</RuntimeIdentifiers>
+    <ImplicitUsings>true</ImplicitUsings>
+    <AssemblyVersion>
+    </AssemblyVersion>
+    <LangVersion>11</LangVersion>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+  </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>
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MSIX|x64'">
+    <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>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x86'">
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DefineConstants>TRACE;UPDATE</DefineConstants>
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DefineConstants>TRACE;UPDATE</DefineConstants>
+    <PlatformTarget>x64</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DebugType>full</DebugType>
+    <DebugSymbols>true</DebugSymbols>
+    <WarningLevel>0</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'">
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DebugType>full</DebugType>
+    <DebugSymbols>true</DebugSymbols>
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DebugType>full</DebugType>
+    <DebugSymbols>true</DebugSymbols>
+    <PlatformTarget>x64</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Steam|x86'">
+    <DefineConstants>TRACE;RELEASE;STEAM</DefineConstants>
+    <Optimize>True</Optimize>
+    <OutputPath>bin\x86\Steam\</OutputPath>
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Steam|x64' ">
+    <DefineConstants>TRACE;RELEASE;STEAM</DefineConstants>
+    <Optimize>True</Optimize>
+    <PlatformTarget>x64</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)' == 'Steam' ">
+    <DefineConstants>TRACE;RELEASE;STEAM</DefineConstants>
+    <Optimize>True</Optimize>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)' == 'DevRelease' ">
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DefineConstants>TRACE;UPDATE;RELEASE</DefineConstants>
+    <Optimize>True</Optimize>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DevRelease|x64' ">
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DefineConstants>TRACE;UPDATE;RELEASE</DefineConstants>
+    <PlatformTarget>x64</PlatformTarget>
+    <Optimize>True</Optimize>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DevRelease|x86' ">
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DefineConstants>TRACE;UPDATE;RELEASE</DefineConstants>
+    <PlatformTarget>x86</PlatformTarget>
+    <Optimize>True</Optimize>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Remove="Styles\AvalonDock\Images\**" />
+    <EmbeddedResource Remove="Styles\AvalonDock\Images\**" />
+    <EmbeddedResource Include="OfficialExtensions\supporter-pack.snk" />
+    <None Remove="Styles\AvalonDock\Images\**" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Remove="Images\Add-reference.png" />
+    <None Remove="Images\AnchorDot.png" />
+    <None Remove="Images\Arrow-right.png" />
+    <None Remove="Images\book.png" />
+    <None Remove="Images\Check-square.png" />
+    <None Remove="Images\CheckerTile.png" />
+    <None Remove="Images\ChevronDown.png" />
+    <None Remove="Images\Commands\PixiEditor\Clipboard\Copy.png" />
+    <None Remove="Images\Commands\PixiEditor\Clipboard\Cut.png" />
+    <None Remove="Images\Commands\PixiEditor\Clipboard\Paste.png" />
+    <None Remove="Images\Commands\PixiEditor\Colors\Swap.png" />
+    <None Remove="Images\Commands\PixiEditor\Document\CenterContent.png" />
+    <None Remove="Images\Commands\PixiEditor\Document\ResizeCanvas.png" />
+    <None Remove="Images\Commands\PixiEditor\Document\ResizeDocument.png" />
+    <None Remove="Images\ChevronsDown.png" />
+    <None Remove="Images\CopyAdd.png" />
+    <None Remove="Images\Database.png" />
+    <None Remove="Images\DiagonalRed.png" />
+    <None Remove="Images\Download.png" />
+    <None Remove="Images\Edit.png" />
+    <None Remove="Images\Eye-off.png" />
+    <None Remove="Images\Eye.png" />
+    <None Remove="Images\FlipVertical.png" />
+    <None Remove="Images\Folder-add.png" />
+    <None Remove="Images\Folder.png" />
+    <None Remove="Images\Globe.png" />
+    <None Remove="Images\Guides\HorizontalGuide.png" />
+    <None Remove="Images\Guides\LineGuide.png" />
+    <None Remove="Images\Guides\RectangleGuide.png" />
+    <None Remove="Images\Guides\VerticalGuide.png" />
+    <None Remove="Images\hard-drive.png" />
+    <None Remove="Images\Layer-add.png" />
+    <None Remove="Images\Lock-alpha.png" />
+    <None Remove="Images\Merge-downwards.png" />
+    <None Remove="Images\MoveImage.png" />
+    <None Remove="Images\MoveViewportImage.png" />
+    <None Remove="Images\penMode.png" />
+    <None Remove="Images\PixiBotLogo.png" />
+    <None Remove="Images\PixiEditorLogo.png" />
+    <None Remove="Images\PixiParserLogo.png" />
+    <None Remove="Images\Placeholder.png" />
+    <None Remove="Images\Processing.gif" />
+    <None Remove="Images\Replace.png" />
+    <None Remove="Images\Search.png" />
+    <None Remove="Images\SelectImage.png" />
+    <None Remove="Images\SocialMedia\DiscordIcon.png" />
+    <None Remove="Images\SocialMedia\DonateIcon.png" />
+    <None Remove="Images\SocialMedia\GitHubIcon.png" />
+    <None Remove="Images\SocialMedia\RedditIcon.png" />
+    <None Remove="Images\SocialMedia\SteamIcon.png" />
+    <None Remove="Images\SocialMedia\WebsiteIcon.png" />
+    <None Remove="Images\SocialMedia\YouTubeIcon.png" />
+    <None Remove="Images\SymmetryHorizontal.png" />
+    <None Remove="Images\Tools\BrightnessImage.png" />
+    <None Remove="Images\Tools\ColorPickerImage.png" />
+    <None Remove="Images\Tools\EllipseImage.png" />
+    <None Remove="Images\Tools\EraserImage.png" />
+    <None Remove="Images\Tools\FloodFillImage.png" />
+    <None Remove="Images\Tools\LineImage.png" />
+    <None Remove="Images\Tools\MagicWandImage.png" />
+    <None Remove="Images\Tools\MoveImage.png" />
+    <None Remove="Images\Tools\MoveViewportImage.png" />
+    <None Remove="Images\Tools\PenImage.png" />
+    <None Remove="Images\Tools\RectangleImage.png" />
+    <None Remove="Images\Tools\RotateViewportImage.png" />
+    <None Remove="Images\Tools\SelectImage.png" />
+    <None Remove="Images\Tools\ZoomImage.png" />
+    <None Remove="Images\Trash.png" />
+    <None Remove="Images\UnknownFile.png" />
+    <None Remove="Images\ZoomImage.png" />
+    <None Include="..\icon.ico">
+      <Pack>True</Pack>
+      <PackagePath>
+      </PackagePath>
+    </None>
+    <None Include="..\LICENSE">
+      <Pack>True</Pack>
+      <PackagePath>
+      </PackagePath>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <PackageReference Include="CLSEncoderDecoder" Version="1.0.0" />
+    <PackageReference Include="Dirkster.AvalonDock" Version="4.72.0" />
+    <PackageReference Include="ByteSize" Version="2.1.1" />
+    <PackageReference Include="DiscordRichPresence" Version="1.1.3.18" />
+    <PackageReference Include="Hardware.Info" Version="11.0.0" />
+    <PackageReference Include="MessagePack" Version="2.5.108" />
+    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="OneOf" Version="3.0.243" />
+    <PackageReference Include="PixiEditor.ColorPicker" Version="3.3.1" />
+    <PackageReference Include="PixiEditor.Parser" Version="3.3.0" />
+    <PackageReference Include="PixiEditor.Parser.Skia" Version="3.0.0" />
+    <PackageReference Include="System.Drawing.Common" Version="7.0.0" />
+    <PackageReference Include="WpfAnimatedGif" Version="2.0.2" />
+    <PackageReference Update="StyleCop.Analyzers" Version="1.2.0-beta.435">
+      <PrivateAssets>all</PrivateAssets>
+      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+    </PackageReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Remove="Images\Commands\PixiEditor\Window\OpenSettingsWindow.png" />
+    <None Remove="Images\Commands\PixiEditor\Window\OpenStartupWindow.png" />
+    <None Remove="Images\Commands\PixiEditor\Window\OpenNavigationWindow.png" />
+    <None Remove="Images\Commands\PixiEditor\File\New.png" />
+    <None Remove="Images\Commands\PixiEditor\Document\NewDocument.png" />
+    <None Remove="Images\Commands\PixiEditor\Selection\Clear.png" />
+    <None Remove="Images\Commands\PixiEditor\Selection\SelectAll.png" />
+    <None Remove="Images\Commands\PixiEditor\Search\Toggle.png" />
+    <None Remove="Images\Commands\PixiEditor\Links\OpenDocumentation.png" />
+    <None Remove="Images\Commands\PixiEditor\Links\OpenRepository.png" />
+    <None Remove="Images\Commands\PixiEditor\File\Export.png" />
+    <None Remove="Images\Commands\PixiEditor\View\ToggleGrid.png" />
+    <None Remove="Images\Commands\PixiEditor\View\ZoomIn.png" />
+    <None Remove="Images\Commands\PixiEditor\View\ZoomOut.png" />
+    <None Remove="Images\Commands\PixiEditor\Document\ClipCanvas.png" />
+    <None Remove="Fonts\feather.ttf" />
+    <None Remove="Images\Load.png" />
+    <None Remove="Images\Plus-square.png" />
+    <None Remove="Images\Save.png" />
+    <None Remove="Images\Star.png" />
+    <None Remove="Images\Star-filled.png" />
+    <None Remove="Images\Shuffle.png" />
+    <None Remove="Images\Layout.png" />
+    <None Remove="Images\SymmetryVertical.png" />
+    <None Remove="Images\Settings.png" />
+    <None Remove="Images\Tools\LassoImage.png" />
+    <None Remove="Images\TemplateLogos\Aseprite.png" />
+    <None Remove="Images\TemplateLogos\Aseprite-Hover.png" />
+    <None Remove="Images\SocialMedia\flabbet.png" />
+    <None Remove="Images\SocialMedia\Avatars\Equbuxu.png" />
+    <None Remove="Images\SocialMedia\Avatars\CPK.png" />
+    <None Remove="Images\Create-mask.png" />
+    <None Remove="Images\FlipHorizontal.png" />
+    <None Remove="Images\Commands\PixiEditor\Layer\ToggleMask.png" />
+    <None Remove="Images\Commands\PixiEditor\Layer\ToggleVisible.png" />
+    <None Remove="Images\Commands\PixiEditor\Document\Rotate90Deg.png" />
+    <None Remove="Images\Commands\PixiEditor\Document\Rotate180Deg.png" />
+    <None Remove="Images\Commands\PixiEditor\Document\Rotate270Deg.png" />
+    <None Remove="Images\Commands\PixiEditor\Document\Rotate90DegLayers.png" />
+    <None Remove="Images\Commands\PixiEditor\Document\Rotate180DegLayers.png" />
+    <None Remove="Images\Commands\PixiEditor\Document\Rotate270DegLayers.png" />
+    <None Remove="Images\Crop.png" />
+    <None Remove="Images\ReferenceLayerAbove.png" />
+    <None Remove="Images\ReferenceLayerBelow.png" />
+    <None Remove="Images\Commands\PixiEditor\Selection\SubtractFromMask.png" />
+    <None Remove="Images\Commands\PixiEditor\Selection\IntersectSelectionMask.png" />
+    <None Remove="Images\Commands\PixiEditor\Selection\AddToMask.png" />
+    <None Remove="Images\Commands\PixiEditor\Selection\NewToMask.png" />
+    <None Remove="Images\LanguageFlags\en.png" />
+    <None Remove="Images\LanguageFlags\pl.png" />
+    <None Remove="Images\LanguageFlags\ar.png" />
+    <None Remove="Images\LanguageFlags\cz.png" />
+    <None Remove="Images\LanguageFlags\de.png" />
+    <None Remove="Images\LanguageFlags\es.png" />
+    <None Remove="Images\LanguageFlags\ru.png" />
+    <None Remove="Images\LanguageFlags\cs.png" />
+    <None Remove="Images\Commands\PixiEditor\Clipboard\PasteReferenceLayer.png" />
+    <None Remove="Images\Commands\PixiEditor\Clipboard\PasteAsNewLayer.png" />
+    <None Remove="Images\Commands\PixiEditor\File\OpenFileFromClipboard.png" />
+    <None Remove="Images\Commands\PixiEditor\Window\OpenShortcutWindow.png" />
+    <None Remove="Images\Commands\PixiEditor\Window\OpenAboutWindow.png" />
+    <None Remove="Images\Commands\PixiEditor\Layer\DuplicateSelectedLayer.png" />
+    <None Remove="Images\Commands\PixiEditor\Selection\InvertSelection.png" />
+    <None Remove="Images\LanguageFlags\zh.png" />
+    <None Remove="Images\Commands\PixiEditor\Selection\CropToSelection.png" />
+    <None Remove="Images\LanguageFlags\hu.png" />
+    <None Remove="Images\LanguageFlags\pt-br.png" />
+    <None Remove="OfficialExtensions\supporter-pack.snk" />
+    <None Remove="Images\News\YouTube.png" />
+    <None Remove="Images\News\Misc.png" />
+    <None Remove="Images\News\NewVersion.png" />
+    <None Remove="Images\News\OfficialAnnouncement.png" />
+    <None Remove="Images\Chevron-right.png" />
+    <None Remove="Images\Guides\GridGuide.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\LICENSE">
+      <Pack>True</Pack>
+      <PackagePath>
+      </PackagePath>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\PixiEditor.ChangeableDocument\PixiEditor.ChangeableDocument.csproj" />
+    <ProjectReference Include="..\PixiEditor.DrawingApi.Skia\PixiEditor.DrawingApi.Skia.csproj" />
+    <ProjectReference Include="..\PixiEditor.Extensions\PixiEditor.Extensions.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" />
+  </ItemGroup>
+  <ItemGroup>
+  </ItemGroup>
+  <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 Update="Properties\Settings.Designer.cs">
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Update="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="Data\*">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Data\ShortcutActionMaps\*">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Data\Localization\*">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Data\Localization\Languages\*">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Models\Colors" />
+  </ItemGroup>
+  <ItemGroup>
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\Accessibility.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\dirkster.avalondock\4.72.0\lib\net5.0-windows7.0\AvalonDock.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\bytesize\2.1.1\lib\net5.0\ByteSize.dll" />
+    <ReferencePath Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\ChunkyImageLib\bin\Debug\net7.0\ChunkyImageLib.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\clsencoderdecoder\1.0.0\lib\netstandard2.0\CLSEncoderDecoder.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\pixieditor.colorpicker\3.3.1\lib\net6.0-windows7.0\ColorPicker.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\discordrichpresence\1.1.3.18\lib\netstandard2.0\DiscordRPC.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\hardware.info\11.0.0\lib\netstandard2.0\Hardware.Info.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\messagepack.annotations\2.5.108\lib\netstandard2.0\MessagePack.Annotations.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\messagepack\2.5.108\lib\net6.0\MessagePack.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\Microsoft.CSharp.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\microsoft.extensions.dependencyinjection.abstractions\7.0.0\lib\net7.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\microsoft.extensions.dependencyinjection\7.0.0\lib\net7.0\Microsoft.Extensions.DependencyInjection.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\Microsoft.VisualBasic.Core.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\Microsoft.VisualBasic.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\Microsoft.Win32.Primitives.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\Microsoft.Win32.Registry.AccessControl.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\Microsoft.Win32.Registry.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\Microsoft.Win32.SystemEvents.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\microsoft.xaml.behaviors.wpf\1.1.31\lib\net5.0-windows7.0\Microsoft.Xaml.Behaviors.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\mscorlib.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\netstandard.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\newtonsoft.json\13.0.3\lib\net6.0\Newtonsoft.Json.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\oneof\3.0.243\lib\netstandard2.0\OneOf.dll" />
+    <ReferencePath Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor.ChangeableDocument\bin\Debug\net7.0\PixiEditor.ChangeableDocument.dll" />
+    <ReferencePath Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor.DrawingApi.Core\bin\Debug\netstandard2.1\PixiEditor.DrawingApi.Core.dll" />
+    <ReferencePath Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor.DrawingApi.Skia\bin\Debug\netstandard2.1\PixiEditor.DrawingApi.Skia.dll" />
+    <ReferencePath Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor.Extensions\bin\Debug\net7.0-windows\PixiEditor.Extensions.dll" />
+    <ReferencePath Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor.Platform\bin\Debug\net7.0\PixiEditor.Platform.dll" />
+    <ReferencePath Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor.Platform.Standalone\bin\Debug\net7.0\PixiEditor.Platform.Standalone.dll" />
+    <ReferencePath Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor.UpdateModule\bin\Debug\net7.0\PixiEditor.UpdateModule.dll" />
+    <ReferencePath Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor.Zoombox\bin\Debug\net7.0-windows\PixiEditor.Zoombox.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\pixieditor.parser\3.3.0\lib\net7.0\PixiParser.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\pixieditor.parser.skia\3.0.0\lib\net6.0\PixiParser.Skia.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\PresentationCore.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\PresentationFramework.Aero.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\PresentationFramework.Aero2.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\PresentationFramework.AeroLite.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\PresentationFramework.Classic.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\PresentationFramework.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\PresentationFramework.Luna.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\PresentationFramework.Royale.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\PresentationUI.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\ReachFramework.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\skiasharp\2.80.3\lib\netstandard2.0\SkiaSharp.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.AppContext.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Buffers.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.CodeDom.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Collections.Concurrent.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Collections.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Collections.Immutable.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Collections.NonGeneric.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Collections.Specialized.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.ComponentModel.Annotations.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.ComponentModel.DataAnnotations.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.ComponentModel.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.ComponentModel.EventBasedAsync.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.ComponentModel.Primitives.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.ComponentModel.TypeConverter.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.Configuration.ConfigurationManager.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Configuration.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Console.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Core.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Data.Common.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Data.DataSetExtensions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Data.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Diagnostics.Contracts.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Diagnostics.Debug.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Diagnostics.DiagnosticSource.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.Diagnostics.EventLog.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Diagnostics.FileVersionInfo.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.Diagnostics.PerformanceCounter.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Diagnostics.Process.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Diagnostics.StackTrace.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Diagnostics.TextWriterTraceListener.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Diagnostics.Tools.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Diagnostics.TraceSource.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Diagnostics.Tracing.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.DirectoryServices.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\system.drawing.common\7.0.0\lib\net7.0\System.Drawing.Common.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Drawing.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Drawing.Primitives.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Dynamic.Runtime.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Formats.Asn1.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Formats.Tar.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Globalization.Calendars.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Globalization.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Globalization.Extensions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.IO.Compression.Brotli.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.IO.Compression.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.IO.Compression.FileSystem.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.IO.Compression.ZipFile.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.IO.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.IO.FileSystem.AccessControl.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.IO.FileSystem.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.IO.FileSystem.DriveInfo.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.IO.FileSystem.Primitives.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.IO.FileSystem.Watcher.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.IO.IsolatedStorage.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.IO.MemoryMappedFiles.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.IO.Packaging.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.IO.Pipes.AccessControl.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.IO.Pipes.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.IO.UnmanagedMemoryStream.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Linq.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Linq.Expressions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Linq.Parallel.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Linq.Queryable.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\system.management\7.0.0\lib\net7.0\System.Management.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Memory.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.Http.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.Http.Json.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.HttpListener.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.Mail.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.NameResolution.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.NetworkInformation.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.Ping.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.Primitives.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.Quic.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.Requests.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.Security.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.ServicePoint.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.Sockets.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.WebClient.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.WebHeaderCollection.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.WebProxy.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.WebSockets.Client.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Net.WebSockets.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Numerics.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Numerics.Vectors.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.ObjectModel.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.Printing.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Reflection.DispatchProxy.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Reflection.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Reflection.Emit.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Reflection.Emit.ILGeneration.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Reflection.Emit.Lightweight.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Reflection.Extensions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Reflection.Metadata.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Reflection.Primitives.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Reflection.TypeExtensions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.Resources.Extensions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Resources.Reader.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Resources.ResourceManager.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Resources.Writer.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Runtime.CompilerServices.Unsafe.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Runtime.CompilerServices.VisualC.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Runtime.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Runtime.Extensions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Runtime.Handles.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Runtime.InteropServices.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Runtime.InteropServices.JavaScript.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Runtime.InteropServices.RuntimeInformation.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Runtime.Intrinsics.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Runtime.Loader.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Runtime.Numerics.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Runtime.Serialization.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Runtime.Serialization.Formatters.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Runtime.Serialization.Json.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Runtime.Serialization.Primitives.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Runtime.Serialization.Xml.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Security.AccessControl.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Security.Claims.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Security.Cryptography.Algorithms.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Security.Cryptography.Cng.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Security.Cryptography.Csp.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Security.Cryptography.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Security.Cryptography.Encoding.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Security.Cryptography.OpenSsl.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.Security.Cryptography.Pkcs.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Security.Cryptography.Primitives.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.Security.Cryptography.ProtectedData.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Security.Cryptography.X509Certificates.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.Security.Cryptography.Xml.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Security.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.Security.Permissions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Security.Principal.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Security.Principal.Windows.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Security.SecureString.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.ServiceModel.Web.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.ServiceProcess.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Text.Encoding.CodePages.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Text.Encoding.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Text.Encoding.Extensions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Text.Encodings.Web.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Text.Json.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Text.RegularExpressions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.Threading.AccessControl.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Threading.Channels.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Threading.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Threading.Overlapped.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Threading.Tasks.Dataflow.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Threading.Tasks.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Threading.Tasks.Extensions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Threading.Tasks.Parallel.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Threading.Thread.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Threading.ThreadPool.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Threading.Timer.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Transactions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Transactions.Local.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.ValueTuple.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Web.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Web.HttpUtility.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.Windows.Controls.Ribbon.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Windows.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.Windows.Extensions.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.Windows.Input.Manipulations.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.Windows.Presentation.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\System.Xaml.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Xml.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Xml.Linq.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Xml.ReaderWriter.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Xml.Serialization.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Xml.XDocument.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Xml.XmlDocument.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Xml.XmlSerializer.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Xml.XPath.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\ref\net7.0\System.Xml.XPath.XDocument.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\UIAutomationClient.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\UIAutomationClientSideProviders.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\UIAutomationProvider.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\UIAutomationTypes.dll" />
+    <ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\7.0.5\ref\net7.0\WindowsBase.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\wpfanimatedgif\2.0.2\lib\netcoreapp3.0\WpfAnimatedGif.dll" />
+    <ReferencePath Include="C:\Users\phili\.nuget\packages\writeablebitmapex\1.6.8\lib\netcoreapp3.0\WriteableBitmapEx.Wpf.dll" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\AboutPopup.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\BasicPopup.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\ConfirmationPopup.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\CrashReportDialog.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\DebugDialogs\CommandDebugPopup.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\DebugDialogs\Localization\LocalizationDebugWindow.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\DialogTitleBar.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\ExportFilePopup.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\Guides\GuidesManager.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\HelloTherePopup.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\ImportShortcutTemplatePopup.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\NewFilePopup.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\NoticePopup.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\OptionsPopup.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\PalettesBrowser.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\ResizeCanvasPopup.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\ResizeDocumentPopup.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\SendCrashReportWindow.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\SettingGroups\ShortcutsBinder.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\SettingsWindow.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\Dialogs\ShortcutPopup.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\MainWindow.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\TogglableFlyout.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\AnchorPointPicker.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\Chip.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\CommandSearch\CommandSearchControl.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\DiscordRPPreview.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\EditableTextBlock.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\FixedViewport.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\Guides\DirectionalGuideSettings.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\Guides\GridGuideSettings.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\Guides\LineGuideSettings.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\Guides\RectangleGuideSettings.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\KeyCombinationBox.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\Layers\FolderControl.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\Layers\LayerControl.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\Layers\LayersManager.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\Layers\ReferenceLayer.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\NewsFeed\NewsItem.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\NumberInput.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\Palettes\ColorReplacer.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\Palettes\CompactPaletteViewer.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\Palettes\PaletteColorAdder.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\Palettes\PaletteColorControl.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\Palettes\PaletteItem.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\Palettes\PaletteViewer.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\PrependTextBlock.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\PreviewWindow.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\ReferenceLayerView.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\ShortcutsTemplateCard.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\SizeInput.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\SizePicker.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\SmallColorPicker.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\SwatchesView.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\ToolSettingColorPicker.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\Views\UserControls\Viewport.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\App.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\PixiEditor_Content.g.cs" />
+    <Compile Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditor\obj\Debug\net7.0-windows\GeneratedInternalTypeHelper.g.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Analyzer Include="C:\Program Files\dotnet\sdk\7.0.302\Sdks\Microsoft.NET.Sdk\targets\..\analyzers\Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll" />
+    <Analyzer Include="C:\Program Files\dotnet\sdk\7.0.302\Sdks\Microsoft.NET.Sdk\targets\..\analyzers\Microsoft.CodeAnalysis.NetAnalyzers.dll" />
+    <Analyzer Include="C:\Users\phili\.nuget\packages\stylecop.analyzers.unstable\1.2.0.435\analyzers\dotnet\cs\StyleCop.Analyzers.CodeFixes.dll" />
+    <Analyzer Include="C:\Users\phili\.nuget\packages\stylecop.analyzers.unstable\1.2.0.435\analyzers\dotnet\cs\StyleCop.Analyzers.dll" />
+    <Analyzer Include="C:\Users\phili\source\csharp\Pixi\PixiEditor\src\PixiEditorGen\bin\Debug\netstandard2.0\PixiEditorGen.dll" />
+    <Analyzer Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\analyzers/dotnet/cs/Microsoft.Interop.JavaScript.JSImportGenerator.dll" />
+    <Analyzer Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\analyzers/dotnet/cs/Microsoft.Interop.LibraryImportGenerator.dll" />
+    <Analyzer Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\analyzers/dotnet/cs/Microsoft.Interop.SourceGeneration.dll" />
+    <Analyzer Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\analyzers/dotnet/cs/System.Text.Json.SourceGeneration.dll" />
+    <Analyzer Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.5\analyzers/dotnet/cs/System.Text.RegularExpressions.Generator.dll" />
+  </ItemGroup>
+  <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
+</Project>

+ 3 - 3
src/PixiEditor/Styles/AvalonDock/Themes/ResourceKeys.cs

@@ -11,14 +11,14 @@ internal static class ResourceKeys
     #region Accent Keys
 
     /// <summary>
-    /// Accent Color Key - This Color key is used to accent elements in the UI
-    /// (e.g.: Color of Activated Normal Window Frame, ResizeGrip, Focus or MouseOver input elements)
+    /// Accent HorizontalColor Key - This HorizontalColor key is used to accent elements in the UI
+    /// (e.g.: HorizontalColor of Activated Normal Window Frame, ResizeGrip, Focus or MouseOver input elements)
     /// </summary>
     public static readonly ComponentResourceKey ControlAccentColorKey = new ComponentResourceKey(typeof(ResourceKeys), "ControlAccentColorKey");
 
     /// <summary>
     /// Accent Brush Key - This Brush key is used to accent elements in the UI
-    /// (e.g.: Color of Activated Normal Window Frame, ResizeGrip, Focus or MouseOver input elements)
+    /// (e.g.: HorizontalColor of Activated Normal Window Frame, ResizeGrip, Focus or MouseOver input elements)
     /// </summary>
     public static readonly ComponentResourceKey ControlAccentBrushKey = new ComponentResourceKey(typeof(ResourceKeys), "ControlAccentBrushKey");
     #endregion Accent Keys

+ 28 - 6
src/PixiEditor/ViewModels/SubViewModels/Main/GuidesViewModel.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Windows.Media;
 using PixiEditor.Models.Commands.Attributes.Commands;
 using PixiEditor.Models.DataHolders.Guides;
 using PixiEditor.Views.Dialogs.Guides;
@@ -33,14 +34,15 @@ internal class GuidesViewModel : SubViewModel<ViewModelMain>
     [Command.Basic("PixiEditor.Guides.AddLineGuide", "ADD_LINE_GUIDE", "ADD_LINE_GUIDE_DESCRIPTIVE", CanExecute = "PixiEditor.HasDocument", IconPath = "Guides/LineGuide.png")]
     public void AddLineGuide()
     {
-        var document = Owner.DocumentManagerSubViewModel.ActiveDocument;
+        var document = Owner.DocumentManagerSubViewModel.ActiveDocument!;
 
         var position = document.SizeBindable / 2;
         var guide = new LineGuide(document)
         {
             X = position.X,
             Y = position.Y,
-            Rotation = 45
+            Rotation = 45,
+            Color = Colors.CadetBlue
         };
 
         document.Guides.Add(guide);
@@ -51,12 +53,13 @@ internal class GuidesViewModel : SubViewModel<ViewModelMain>
     [Command.Basic("PixiEditor.Guides.AddHorizontalGuide", Direction.Horizontal, "ADD_HORIZONTAL_GUIDE", "ADD_HORIZONTAL_GUIDE_DESCRIPTIVE", CanExecute = "PixiEditor.HasDocument", IconPath = "Guides/HorizontalGuide.png")]
     public void AddDirectionalGuide(Direction direction)
     {
-        var document = Owner.DocumentManagerSubViewModel.ActiveDocument;
+        var document = Owner.DocumentManagerSubViewModel.ActiveDocument!;
 
         var documentSize = direction == Direction.Vertical ? document.SizeBindable.X : document.SizeBindable.Y;
         var guide = new DirectionalGuide(document, direction)
         {
-            Offset = documentSize / 2
+            Offset = documentSize / 2,
+            Color = Colors.CadetBlue,
         };
 
         document.Guides.Add(guide);
@@ -66,7 +69,7 @@ internal class GuidesViewModel : SubViewModel<ViewModelMain>
     [Command.Basic("PixiEditor.Guides.AddRectangleGuide", "ADD_RECTANGLE_GUIDE", "ADD_RECTANGLE_GUIDE_DESCRIPTIVE", CanExecute = "PixiEditor.HasDocument", IconPath = "Guides/RectangleGuide.png")]
     public void AddRectangleGuide()
     {
-        var document = Owner.DocumentManagerSubViewModel.ActiveDocument;
+        var document = Owner.DocumentManagerSubViewModel.ActiveDocument!;
 
         var margin = document.SizeBindable * 0.25;
         var guide = new RectangleGuide(document)
@@ -74,13 +77,32 @@ internal class GuidesViewModel : SubViewModel<ViewModelMain>
             Left = margin.X,
             Top = margin.Y,
             Height = document.SizeBindable.X - margin.X * 2,
-            Width = document.SizeBindable.Y - margin.Y * 2
+            Width = document.SizeBindable.Y - margin.Y * 2,
+            Color = Colors.CadetBlue,
         };
 
         document.Guides.Add(guide);
         OpenGuideManager(^0);
     }
 
+    [Command.Basic("PixiEditor.Guides.AddGridGuide", "ADD_GRID_GUIDE", "ADD_GRID_GUIDE_DESCRIPTIVE", CanExecute = "PixiEditor.HasDocument", IconPath = "Guides/GridGuide.png")]
+    public void AddGridGuide()
+    {
+        var document = Owner.DocumentManagerSubViewModel.ActiveDocument!;
+
+        var size = document.SizeBindable * 0.25;
+        var guide = new GridGuide(document) 
+        {
+            VerticalOffset = size.X,
+            HorizontalOffset = size.Y,
+            VerticalColor = Colors.CadetBlue,
+            HorizontalColor = Colors.CadetBlue
+        };
+        
+        document.Guides.Add(guide);
+        OpenGuideManager(^0);
+    }
+
     [Command.Internal("PixiEditor.Guides.RemoveGuide", CanExecute = "PixiEditor.HasDocument")]
     public void RemoveGuide(Guide guide)
     {

+ 8 - 3
src/PixiEditor/Views/Dialogs/Guides/GuidesManager.xaml

@@ -10,8 +10,8 @@
         xmlns:ui="clr-namespace:PixiEditor.Extensions.UI;assembly=PixiEditor.Extensions"
         mc:Ignorable="d"
         ui:Translator.Key="GUIDES_MANAGER_TITLE"
-        Width="500" Height="450"
-        MinWidth="250" MinHeight="450"
+        Width="630" Height="450"
+        MinWidth="280" MinHeight="450"
         Background="{StaticResource AccentColor}"
         Foreground="White">
 
@@ -63,7 +63,7 @@
         <dialogs:DialogTitleBar TitleKey="GUIDES_MANAGER_TITLE" CloseCommand="{x:Static SystemCommands.CloseWindowCommand}"/>
         <Grid Grid.Row="1">
             <Grid.ColumnDefinitions>
-                <ColumnDefinition Width="250"/>
+                <ColumnDefinition Width="280"/>
                 <ColumnDefinition/>
             </Grid.ColumnDefinitions>
 
@@ -176,6 +176,11 @@
                                     ui:Translator.TooltipKey="RECTANGLE_GUIDE">
                                 <Image Source="/Images/Guides/RectangleGuide.png"/>
                             </Button>
+                            <Button DockPanel.Dock="Left"
+                                    Command="{cmds:Command PixiEditor.Guides.AddGridGuide}"
+                                    ui:Translator.TooltipKey="GRID_GUIDE">
+                                <Image Source="/Images/Guides/GridGuide.png"/>
+                            </Button>
                             
                             <Button DockPanel.Dock="Right" Tag="0,0,4.5,0"
                                     ui:Translator.TooltipKey="SAVE_GUIDES">

+ 1 - 1
src/PixiEditor/Views/Dialogs/Guides/GuidesManager.xaml.cs

@@ -139,6 +139,6 @@ public partial class GuidesManager : Window
 
     private void ListViewItem_DoubleClick(object sender, MouseButtonEventArgs e)
     {
-        Width = Math.Abs(Width - 250) < 10 ? 630 : 250;
+        Width = Math.Abs(Width - 250) < 10 ? 630 : 280;
     }
 }

+ 66 - 0
src/PixiEditor/Views/UserControls/Guides/GridGuideSettings.xaml

@@ -0,0 +1,66 @@
+<UserControl x:Class="PixiEditor.Views.UserControls.Guides.GridGuideSettings"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+             xmlns:local="clr-namespace:PixiEditor.Views.UserControls.Guides"
+             xmlns:ui="clr-namespace:PixiEditor.Extensions.UI;assembly=PixiEditor.Extensions"
+             xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
+             xmlns:behaviours="clr-namespace:PixiEditor.Helpers.Behaviours"
+             xmlns:colorPicker="clr-namespace:ColorPicker;assembly=ColorPicker"
+             xmlns:userControls="clr-namespace:PixiEditor.Views.UserControls"
+             mc:Ignorable="d"
+             d:DesignHeight="300" d:DesignWidth="300">
+    <StackPanel Grid.IsSharedSizeScope="true">
+        <StackPanel.Resources>
+            <Style TargetType="Grid" x:Key="Child">
+                <Setter Property="Margin" Value="0,0,0,10"/>
+            </Style>
+        </StackPanel.Resources>
+        
+        <Grid Style="{StaticResource Child}">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="Auto" SharedSizeGroup="width" MinWidth="70"/>
+                <ColumnDefinition Width="Auto" MinWidth="200"/>
+            </Grid.ColumnDefinitions>
+            <TextBlock ui:Translator.Key="NAME" Margin="0,0,10,0" TextAlignment="Right"/>
+            <TextBox Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
+                     Style="{StaticResource PlaceholderTextBox}" Tag="{Binding TypeNameKey}" Grid.Column="1">
+                <b:Interaction.Behaviors>
+                    <behaviours:GlobalShortcutFocusBehavior/>
+                    <behaviours:TextBoxFocusBehavior 
+                        SelectOnMouseClick="{Binding BehaveLikeSmallEmbeddedField, ElementName=uc}" 
+                        ConfirmOnEnter="{Binding BehaveLikeSmallEmbeddedField, ElementName=uc}"
+                        DeselectOnFocusLoss="True"/>
+                </b:Interaction.Behaviors>
+            </TextBox>
+        </Grid>
+
+        <Grid Style="{StaticResource Child}">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="Auto" SharedSizeGroup="width"/>
+                <ColumnDefinition Width="Auto" SharedSizeGroup="value"/>
+                <ColumnDefinition Width="Auto" SharedSizeGroup="y"/>
+                <ColumnDefinition Width="Auto" SharedSizeGroup="value"/>
+            </Grid.ColumnDefinitions>
+            <TextBlock Text="X" Margin="0,0,10,0" TextAlignment="Right"/>
+            <colorPicker:PortableColorPicker Grid.Column="1" SelectedColor="{Binding VerticalColor, Mode=TwoWay}" Width="30" HorizontalAlignment="Left"/>
+
+            <TextBlock Grid.Column="2" Text="Y" Margin="0,0,10,0"/>
+            <colorPicker:PortableColorPicker Grid.Column="3" SelectedColor="{Binding HorizontalColor, Mode=TwoWay}" Width="30" HorizontalAlignment="Left"/>
+        </Grid>
+        
+        <Grid Style="{StaticResource Child}">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="Auto" SharedSizeGroup="width"/>
+                <ColumnDefinition Width="Auto" SharedSizeGroup="value"/>
+                <ColumnDefinition Width="Auto" SharedSizeGroup="y"/>
+                <ColumnDefinition Width="Auto" SharedSizeGroup="value"/>
+            </Grid.ColumnDefinitions>
+            <userControls:NumberInput Margin="0,0,10,0" Grid.Column="1" Value="{Binding VerticalOffset, Mode=TwoWay}" Width="50" HorizontalAlignment="Left"/>
+
+            <userControls:NumberInput Grid.Column="3" Value="{Binding HorizontalOffset, Mode=TwoWay}" Width="50" HorizontalAlignment="Left"/>
+        </Grid>
+
+    </StackPanel>
+</UserControl>

+ 14 - 0
src/PixiEditor/Views/UserControls/Guides/GridGuideSettings.xaml.cs

@@ -0,0 +1,14 @@
+using System.Windows.Controls;
+using PixiEditor.Models.DataHolders.Guides;
+
+namespace PixiEditor.Views.UserControls.Guides;
+
+public partial class GridGuideSettings : UserControl
+{
+    internal GridGuideSettings(GridGuide guide)
+    {
+        DataContext = guide;
+        InitializeComponent();
+    }
+}
+