Browse Source

Color picker package and placeholder dock

Krzysztof Krysiński 1 year ago
parent
commit
6cc732d307

+ 1 - 1
src/Directory.Build.props

@@ -1,7 +1,7 @@
 <Project>
 <Project>
     <PropertyGroup>
     <PropertyGroup>
         <CodeAnalysisRuleSet>../Custom.ruleset</CodeAnalysisRuleSet>
         <CodeAnalysisRuleSet>../Custom.ruleset</CodeAnalysisRuleSet>
-		<AvaloniaVersion>11.0.4</AvaloniaVersion>
+		<AvaloniaVersion>11.0.5</AvaloniaVersion>
     </PropertyGroup>
     </PropertyGroup>
     <ItemGroup>
     <ItemGroup>
         <PackageReference Include="StyleCop.Analyzers" Version="1.1.118" />
         <PackageReference Include="StyleCop.Analyzers" Version="1.1.118" />

+ 2 - 0
src/PixiEditor.AvaloniaUI/App.axaml

@@ -2,6 +2,7 @@
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:themes="clr-namespace:PixiEditor.UI.Common.Themes;assembly=PixiEditor.UI.Common"
              xmlns:themes="clr-namespace:PixiEditor.UI.Common.Themes;assembly=PixiEditor.UI.Common"
              xmlns:avaloniaUi="clr-namespace:PixiEditor.AvaloniaUI"
              xmlns:avaloniaUi="clr-namespace:PixiEditor.AvaloniaUI"
+             xmlns:templates="clr-namespace:ColorPicker.AvaloniaUI.Templates;assembly=ColorPicker.AvaloniaUI"
              x:Class="PixiEditor.AvaloniaUI.App"
              x:Class="PixiEditor.AvaloniaUI.App"
              RequestedThemeVariant="Dark">
              RequestedThemeVariant="Dark">
              <!-- "Default" ThemeVariant follows system theme variant. "Dark" or "Light" are other available options. -->
              <!-- "Default" ThemeVariant follows system theme variant. "Dark" or "Light" are other available options. -->
@@ -10,6 +11,7 @@
              </Application.DataTemplates>
              </Application.DataTemplates>
     <Application.Styles>
     <Application.Styles>
         <themes:PixiEditorTheme />
         <themes:PixiEditorTheme />
+        <templates:PixiPerfectColorPickerTheme/>
         <StyleInclude Source="/Styles/PixiEditor.Controls.axaml"/>
         <StyleInclude Source="/Styles/PixiEditor.Controls.axaml"/>
         <StyleInclude Source="/Styles/PixiEditor.Animators.axaml"/>
         <StyleInclude Source="/Styles/PixiEditor.Animators.axaml"/>
         <StyleInclude Source="/Styles/PixiEditor.Handles.axaml"/>
         <StyleInclude Source="/Styles/PixiEditor.Handles.axaml"/>

+ 3 - 2
src/PixiEditor.AvaloniaUI/PixiEditor.AvaloniaUI.csproj

@@ -22,7 +22,7 @@
 
 
     <ItemGroup>
     <ItemGroup>
         <PackageReference Include="Avalonia" Version="$(AvaloniaVersion)" />
         <PackageReference Include="Avalonia" Version="$(AvaloniaVersion)" />
-        <PackageReference Include="Avalonia.Headless" Version="11.0.4" />
+        <PackageReference Include="Avalonia.Headless" Version="$(AvaloniaVersion)" />
         <PackageReference Include="Avalonia.Themes.Fluent" Version="$(AvaloniaVersion)" />
         <PackageReference Include="Avalonia.Themes.Fluent" Version="$(AvaloniaVersion)" />
         <PackageReference Include="Avalonia.Fonts.Inter" Version="$(AvaloniaVersion)" />
         <PackageReference Include="Avalonia.Fonts.Inter" Version="$(AvaloniaVersion)" />
         <!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
         <!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
@@ -37,7 +37,8 @@
         <PackageReference Include="Microsoft.CodeAnalysis.Common" Version="4.2.0" />
         <PackageReference Include="Microsoft.CodeAnalysis.Common" Version="4.2.0" />
         <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
         <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
         <PackageReference Include="PixiEditor.Parser" Version="3.3.0" />
         <PackageReference Include="PixiEditor.Parser" Version="3.3.0" />
-        <PackageReference Include="PixiEditor.Parser.Skia" Version="3.0.0" />
+      <PackageReference Include="PixiEditor.Parser.Skia" Version="3.0.0" />
+      <PackageReference Include="PixiEditor.ColorPicker.AvaloniaUI" Version="1.0.1" />
     </ItemGroup>
     </ItemGroup>
 
 
     <ItemGroup>
     <ItemGroup>

+ 2 - 0
src/PixiEditor.AvaloniaUI/ViewLocator.cs

@@ -1,6 +1,7 @@
 using System.Collections.Generic;
 using System.Collections.Generic;
 using Avalonia.Controls;
 using Avalonia.Controls;
 using Avalonia.Controls.Templates;
 using Avalonia.Controls.Templates;
+using ColorPicker;
 using CommunityToolkit.Mvvm.ComponentModel;
 using CommunityToolkit.Mvvm.ComponentModel;
 using Dock.Model.Core;
 using Dock.Model.Core;
 using PixiEditor.AvaloniaUI.ViewModels.Dock;
 using PixiEditor.AvaloniaUI.ViewModels.Dock;
@@ -16,6 +17,7 @@ public class ViewLocator : IDataTemplate
     {
     {
         [typeof(DockDocumentViewModel)] = typeof(DocumentTemplate),
         [typeof(DockDocumentViewModel)] = typeof(DocumentTemplate),
         [typeof(LayersDockViewModel)] = typeof(LayersManager),
         [typeof(LayersDockViewModel)] = typeof(LayersManager),
+        [typeof(ColorPickerDockViewModel)] = typeof(StandardColorPicker),
     };
     };
 
 
     public Control Build(object? data)
     public Control Build(object? data)

+ 13 - 0
src/PixiEditor.AvaloniaUI/ViewModels/Dock/ColorPickerDockViewModel.cs

@@ -0,0 +1,13 @@
+using Dock.Model.Avalonia.Controls;
+using PixiEditor.AvaloniaUI.ViewModels.SubViewModels;
+
+namespace PixiEditor.AvaloniaUI.ViewModels.Dock;
+
+internal class ColorPickerDockViewModel : Tool
+{
+    private ColorsViewModel colorsViewModel;
+    public ColorPickerDockViewModel(ColorsViewModel colorsVm)
+    {
+        colorsViewModel = colorsVm;
+    }
+}

+ 34 - 8
src/PixiEditor.AvaloniaUI/ViewModels/Dock/DockFactory.cs

@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
 using Dock.Avalonia.Controls;
 using Dock.Avalonia.Controls;
 using Dock.Model.Avalonia;
 using Dock.Model.Avalonia;
 using Dock.Model.Avalonia.Controls;
 using Dock.Model.Avalonia.Controls;
@@ -14,15 +15,18 @@ internal class DockFactory : Factory
     private DocumentDock documentDock;
     private DocumentDock documentDock;
     private ToolDock toolDock;
     private ToolDock toolDock;
     private ToolDock layersDock;
     private ToolDock layersDock;
+    private ToolDock colorPickerDock;
 
 
-    private FileViewModel manager;
+    private FileViewModel fileVm;
+    private ColorsViewModel colorsVm;
 
 
-    public DockFactory(FileViewModel fileViewModel)
+    public DockFactory(FileViewModel fileViewModel, ColorsViewModel colorsViewModel)
     {
     {
-        manager = fileViewModel;
+        fileVm = fileViewModel;
+        colorsVm = colorsViewModel;
     }
     }
 
 
-    public override IDocumentDock CreateDocumentDock() => new PixiEditorDocumentDock(manager);
+    public override IDocumentDock CreateDocumentDock() => new PixiEditorDocumentDock(fileVm);
 
 
     public override IRootDock CreateLayout()
     public override IRootDock CreateLayout()
     {
     {
@@ -87,7 +91,7 @@ internal class DockFactory : Factory
 
 
     private IDockable BuildDocumentDock()
     private IDockable BuildDocumentDock()
     {
     {
-        documentDock = new PixiEditorDocumentDock(manager)
+        documentDock = new PixiEditorDocumentDock(fileVm)
         {
         {
             Id = "DocumentsPane",
             Id = "DocumentsPane",
             Title = "DocumentsPane",
             Title = "DocumentsPane",
@@ -100,20 +104,42 @@ internal class DockFactory : Factory
     private IDockable BuildPropertiesDock()
     private IDockable BuildPropertiesDock()
     {
     {
         layersDock = BuildLayersDock();
         layersDock = BuildLayersDock();
+        colorPickerDock = BuildColorPickerDock();
         return new ProportionalDock()
         return new ProportionalDock()
         {
         {
             Proportion = 0.15,
             Proportion = 0.15,
+            Orientation = Orientation.Vertical,
             VisibleDockables = new List<IDockable>()
             VisibleDockables = new List<IDockable>()
             {
             {
-                layersDock,
+                colorPickerDock,
+                layersDock
             },
             },
             ActiveDockable = layersDock,
             ActiveDockable = layersDock,
         };
         };
     }
     }
 
 
+    private ToolDock BuildColorPickerDock()
+    {
+        ColorPickerDockViewModel colorPickerVm = new(colorsVm)
+        {
+            Id = "ColorPickerPane",
+            Title = "ColorPickerPane",
+        };
+
+        ToolDock colorPicker = new()
+        {
+            Id = "ColorPickerPane",
+            Title = "ColorPickerPane",
+            VisibleDockables = new List<IDockable>() { colorPickerVm },
+            ActiveDockable = colorPickerVm,
+        };
+
+        return colorPicker;
+    }
+
     private ToolDock BuildLayersDock()
     private ToolDock BuildLayersDock()
     {
     {
-        LayersDockViewModel layersVm = new(manager.Owner.DocumentManagerSubViewModel)
+        LayersDockViewModel layersVm = new(fileVm.Owner.DocumentManagerSubViewModel)
         {
         {
             Id = "LayersPane",
             Id = "LayersPane",
             Title = "LayersPane",
             Title = "LayersPane",

+ 2 - 0
src/PixiEditor.UI.Common/Accents/Base.axaml

@@ -35,6 +35,8 @@
 
 
             <system:Double x:Key="ThemeDisabledOpacity">0.4</system:Double>
             <system:Double x:Key="ThemeDisabledOpacity">0.4</system:Double>
 
 
+            <SolidColorBrush x:Key="ThemeForegroundLowBrush" Color="gray"></SolidColorBrush>
+
             <SolidColorBrush x:Key="ThemeBackgroundBrush" Color="{StaticResource ThemeBackgroundColor}" />
             <SolidColorBrush x:Key="ThemeBackgroundBrush" Color="{StaticResource ThemeBackgroundColor}" />
             <SolidColorBrush x:Key="ThemeBackgroundBrush1" Color="{StaticResource ThemeBackgroundColor1}" />
             <SolidColorBrush x:Key="ThemeBackgroundBrush1" Color="{StaticResource ThemeBackgroundColor1}" />
             <SolidColorBrush x:Key="ThemeBackgroundBrush2" Color="{StaticResource ThemeBackgroundColor2}" />
             <SolidColorBrush x:Key="ThemeBackgroundBrush2" Color="{StaticResource ThemeBackgroundColor2}" />