1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-11 04:48:46 +00:00

Layer properties - Added string input

Profile editor - Run render loop on a DispatcherTimer when playing
This commit is contained in:
Robert 2022-02-01 21:02:44 +01:00
parent 9ebdaec4f1
commit ff4ec16690
34 changed files with 1003 additions and 645 deletions

3
.gitattributes vendored
View File

@ -61,3 +61,6 @@
#*.PDF diff=astextplain #*.PDF diff=astextplain
#*.rtf diff=astextplain #*.rtf diff=astextplain
#*.RTF diff=astextplain #*.RTF diff=astextplain
# Display axaml files with XML highlighting
*.axaml linguist-language=xml

View File

@ -10,12 +10,12 @@
<None Remove=".gitignore" /> <None Remove=".gitignore" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia" Version="0.10.11" /> <PackageReference Include="Avalonia" Version="0.10.12" />
<PackageReference Include="Avalonia.Desktop" Version="0.10.11" /> <PackageReference Include="Avalonia.Desktop" Version="0.10.12" />
<!--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.-->
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="0.10.11" /> <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="0.10.12" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.11" /> <PackageReference Include="Avalonia.ReactiveUI" Version="0.10.12" />
<PackageReference Include="ReactiveUI" Version="16.3.10" /> <PackageReference Include="ReactiveUI" Version="17.1.17" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\Artemis.Core\Artemis.Core.csproj" /> <ProjectReference Include="..\..\Artemis.Core\Artemis.Core.csproj" />

View File

@ -4,11 +4,11 @@
"net6.0": { "net6.0": {
"Avalonia": { "Avalonia": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "2PSE+dB4vGJfG+1M+y+Hwaxiqze5mbBTTG9hjwc2Z3U/9yJE/GThBEst2WwI0yBt13hsfAfbABzt1PA3mtbFdw==", "contentHash": "ftI5uGBFvWJpizGc6PT6lOb6FiO8AWcSYS9N4FWvXgOvuqWuTgmjwURPUkvajpeaQLKOOea6AbgotSyhV8NNoQ==",
"dependencies": { "dependencies": {
"Avalonia.Remote.Protocol": "0.10.11", "Avalonia.Remote.Protocol": "0.10.12",
"JetBrains.Annotations": "10.3.0", "JetBrains.Annotations": "10.3.0",
"System.ComponentModel.Annotations": "4.5.0", "System.ComponentModel.Annotations": "4.5.0",
"System.Memory": "4.5.3", "System.Memory": "4.5.3",
@ -19,48 +19,48 @@
}, },
"Avalonia.Desktop": { "Avalonia.Desktop": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "PQTl4lm7IZidzltMwC7RSNaoz7TYNznU8SKa/WaAI6ycMzC0On2DsqiL1dXr6WhYzMazyMJj6kBhiQzHIc1lIQ==", "contentHash": "wy4k1uarrmZJSJENCe1hjNpdCJWhup0gt6KA2TtZILfGG7imj+an5IuQZUSXtA7cl7A+6tF6lPQLo82gESUlXQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Native": "0.10.11", "Avalonia.Native": "0.10.12",
"Avalonia.Skia": "0.10.11", "Avalonia.Skia": "0.10.12",
"Avalonia.Win32": "0.10.11", "Avalonia.Win32": "0.10.12",
"Avalonia.X11": "0.10.11" "Avalonia.X11": "0.10.12"
} }
}, },
"Avalonia.Diagnostics": { "Avalonia.Diagnostics": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "xBvBkF2DBKjddAfQbExd660zQ5RaDEXH1JgAdMyYOdu3qFL6d+QHyZdVHVeQFilNYE03F6C8AbMWrmj6dBUNlg==", "contentHash": "Pf9DGiSwl3+gPrRSHKFzDG20I9QJ5P1g6BexLKfHQH9+Cmax+a/UEVYQq4hGn0xhrmpuLYOeGHb8wasjAT4EfQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Controls.DataGrid": "0.10.11", "Avalonia.Controls.DataGrid": "0.10.12",
"Microsoft.CodeAnalysis.CSharp.Scripting": "3.4.0", "Microsoft.CodeAnalysis.CSharp.Scripting": "3.4.0",
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
}, },
"Avalonia.ReactiveUI": { "Avalonia.ReactiveUI": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "I/++/4Halsx9HIp99nBwB2nIMrI9zw2M8wDcK1HaYVMKU+m3KFA9w+DfV7g/wEceWSMeX7yAvUjRnaUYtBO08Q==", "contentHash": "dOszpMtBKEACAFWtjwNibXMF2SBolJ3cV8ffDEOy2uuwjKBJqbSmHH+WSnui9KfbSF2igVpam4TqO6drJuEvjw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"ReactiveUI": "13.2.10", "ReactiveUI": "13.2.10",
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
}, },
"ReactiveUI": { "ReactiveUI": {
"type": "Direct", "type": "Direct",
"requested": "[16.3.10, )", "requested": "[17.1.17, )",
"resolved": "16.3.10", "resolved": "17.1.17",
"contentHash": "NH9bg8BROqRrTp6YLpPDsJrfNDzRWNmP63fQ68CBAM+i7YHi6wcPeOkxyKpoemUxKEY4QECuicaTblJnxgbWmA==", "contentHash": "0DLq44k4CVvfXcWHE4uigQa/wySOzxOTnWg50j2qZDpWzl9OP7QfIDJo39X3ffEjaVcCUFcbF9xAmm7fRX/q2g==",
"dependencies": { "dependencies": {
"DynamicData": "7.4.3", "DynamicData": "7.4.9",
"Splat": "13.1.42" "Splat": "14.1.17"
} }
}, },
"Avalonia.Angle.Windows.Natives": { "Avalonia.Angle.Windows.Natives": {
@ -70,51 +70,51 @@
}, },
"Avalonia.Controls.DataGrid": { "Avalonia.Controls.DataGrid": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "zvt6QA2uwe18gJ/XdnSMTHG6L/2usvjoaAdPC+Lgg+DmUPNTjqN+Hm1l0AjUtNNId6G+4iIkysiZ2WiHPqGsEA==", "contentHash": "i3zM3P8PUY4FNhATZoFWkto3H66FcIrnJNMyOsl1fN0FPS6meysAwCKQwuou/oapyzZEODeAmCVdqB0AgjNHVw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Remote.Protocol": "0.10.11", "Avalonia.Remote.Protocol": "0.10.12",
"JetBrains.Annotations": "10.3.0", "JetBrains.Annotations": "10.3.0",
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
}, },
"Avalonia.Controls.PanAndZoom": { "Avalonia.Controls.PanAndZoom": {
"type": "Transitive", "type": "Transitive",
"resolved": "10.11.1", "resolved": "10.12.0",
"contentHash": "XIjA3iGHMfokPXw/ov5CqKKPR8HdVrTBOMYJVOGpDQyec6RwI/w7lq530wfIMebIe9xUj5RY2Jx5heQtCuAFmg==", "contentHash": "ns+2tJTXTpNzNA9YV2mjR4EJOZl2vBFWnGUTSIl/vyOQMrrU5CbsXQxy2MFBvW0vGrRTlw80nUtBnsT759kwKQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11" "Avalonia": "0.10.12"
} }
}, },
"Avalonia.FreeDesktop": { "Avalonia.FreeDesktop": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "cj8T11WQ5/opR2IPttb1Bo89aHclkuvHYsCB7HzZU/F7l/cKXbKUOhyo60p44BdFzrCqjNXDnKQbxeRv+OSF7A==", "contentHash": "j42uWCWkAfZchYPrdRccr4mjB0kppSby3TEMCuNrp9GcQi+JhEPEbBAohU7FpR4bkv5FF2KAlDX5WiG2T+04kg==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Tmds.DBus": "0.9.0" "Tmds.DBus": "0.9.0"
} }
}, },
"Avalonia.Native": { "Avalonia.Native": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "9fBC9UArVXEmsxL2Nd0KHGoZUCqcTo06NTlOTAeM3qdEWzE8a0qRVYiR2WeYfADXpKR1D/fQz5zWUZcebFYFIA==", "contentHash": "JnZc0zF7DcLcSX+SdnKQGzFa9mcKxawhTN8S3aiN8Eh3MZAKxa45LRrHFVTcHcy2jU4kOw+yPfONUmHpRcC0gw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11" "Avalonia": "0.10.12"
} }
}, },
"Avalonia.Remote.Protocol": { "Avalonia.Remote.Protocol": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "kID2N/cXg7KCGFYFTOWCvSLt+oMFRApLfLcbLU35keC/jwDi9tFk33CEdo81hBEg15lAtTtCfvHhNPyVyIYijQ==" "contentHash": "ArrxniR8iShzMvXCS3vt5FXg9Fv3qK1UKzJwsSsY9iCuC8wKo2eevRj42qOhMCS98POTH5v8aUZBeoLlENa0vA=="
}, },
"Avalonia.Skia": { "Avalonia.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "4bP5V3BpnZ+If2/ZrZofeRsINeZ6gemLjfNyElt7vNF4HZaRfot03anO3Y+Z7mTELjuol6n/5lAL4+kQUN/O/w==", "contentHash": "3TGo8RLHaLqmU3chlyAqLkpw6vImfDMC30T18abpeYf1PIsNckRB+UFp12GDil9t/J9YB17zn4H6N+2plF4gZA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"HarfBuzzSharp": "2.8.2-preview.178", "HarfBuzzSharp": "2.8.2-preview.178",
"HarfBuzzSharp.NativeAssets.Linux": "2.8.2-preview.178", "HarfBuzzSharp.NativeAssets.Linux": "2.8.2-preview.178",
"HarfBuzzSharp.NativeAssets.WebAssembly": "2.8.2-preview.178", "HarfBuzzSharp.NativeAssets.WebAssembly": "2.8.2-preview.178",
@ -125,21 +125,21 @@
}, },
"Avalonia.Svg.Skia": { "Avalonia.Svg.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "Zw1kfOWN7ZaMqnoJsKqvU/8GxGbrv4KrkAbbLVHvhZl4sA0VZEjqdtxUAqSHlJrYtjPfaUzzDP9K3l0KCqnx/Q==", "contentHash": "qsXKdm5eWpfoVPe0xgtxhbOYlhG8QdbYNJZTTihg/c4iPFYuh1G7DldiNskuVFuGiGxLVZ0g6ebql7ZkwbO1pA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Skia": "0.10.11", "Avalonia.Skia": "0.10.12",
"SkiaSharp": "2.88.0-preview.178", "SkiaSharp": "2.88.0-preview.178",
"Svg.Skia": "0.5.11" "Svg.Skia": "0.5.12"
} }
}, },
"Avalonia.Win32": { "Avalonia.Win32": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "bckqh8rnQ4+l2kdU4njO3cBKaT4l1HQkxdVYJLAgl44uMtoCpaN7EidrBTnuM40DXa0cpvOh97A+G8jpZgte6Q==", "contentHash": "CnC65T8ScMK23BB+qJuiMicWQ5QIEiinnRzPqvAGUGyQbjIGpA5uOCKwzsOjUmzkhGqt31iDR0/Y3ZFbi5Mjog==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Angle.Windows.Natives": "2.1.0.2020091801", "Avalonia.Angle.Windows.Natives": "2.1.0.2020091801",
"System.Drawing.Common": "4.5.0", "System.Drawing.Common": "4.5.0",
"System.Numerics.Vectors": "4.5.0" "System.Numerics.Vectors": "4.5.0"
@ -147,39 +147,39 @@
}, },
"Avalonia.X11": { "Avalonia.X11": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "joPVaMmPy4bC1STSk5+fAn5zZOT3gz4m/YSv6io3p2q68kEbc+d5KaYk/KcqA/WGiBBQx4a0ViPW/IRomI94kw==", "contentHash": "mUY1cF1p86/UgLl1cbSmY3nVIatKQsSCDOH4avssL07xmKlRfB2G7Gi8jlhWNkLJTLL7iQp/u3X6bv7bs+0zNQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.FreeDesktop": "0.10.11", "Avalonia.FreeDesktop": "0.10.12",
"Avalonia.Skia": "0.10.11" "Avalonia.Skia": "0.10.12"
} }
}, },
"Avalonia.Xaml.Behaviors": { "Avalonia.Xaml.Behaviors": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11.5", "resolved": "0.10.12",
"contentHash": "XHU7/hRYWEdaJOs+weT9ml9/GYqroPrAtePjGzUzUrMoHESbqmkLXmW+fHkaAeXRMJAOAFD1LQUHQu+B6ThF3w==", "contentHash": "upv7v1gZ31tCukw/KA1bB5+z29QuEWiZJ4KnW10daHlia1ru7q4lUJ/vCYKOy5L+zyi1MQg98SNYjRp5C64ZhQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Xaml.Interactions": "0.10.11.5", "Avalonia.Xaml.Interactions": "0.10.12",
"Avalonia.Xaml.Interactivity": "0.10.11.5" "Avalonia.Xaml.Interactivity": "0.10.12"
} }
}, },
"Avalonia.Xaml.Interactions": { "Avalonia.Xaml.Interactions": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11.5", "resolved": "0.10.12",
"contentHash": "MpqS1t1zypDNEW2Pyg113W4AwmfaWai5LfA/K22sDbygXII+KuACaHt2ZPHJWnvKGHgasLEEFhEOGfF5cB9NPA==", "contentHash": "PSohbY4aQGiJVWfvLKkuUE71ZxvZ0/FuTc3Y5GJgTC41kCgeaiJTczkC2FjW5sZ8exPDabSp+ZukSsnm/z6y7A==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Xaml.Interactivity": "0.10.11.5" "Avalonia.Xaml.Interactivity": "0.10.12"
} }
}, },
"Avalonia.Xaml.Interactivity": { "Avalonia.Xaml.Interactivity": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11.5", "resolved": "0.10.12",
"contentHash": "MOM6lcPenJZu9LPhai3n67GssBUx3MjoCVLyR2GEJ6lywKQgk4MKOIAC0gLWgy7x1e540oy4lCpeX8jMsqe7mA==", "contentHash": "uey4LjyIds78igMe7AZ072RI6GpO16sd6+6XF6LG0oE07De7ei0So14oOs4wLS4WJyaKDRSUK6PuhLaY1zIZdQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11" "Avalonia": "0.10.12"
} }
}, },
"Castle.Core": { "Castle.Core": {
@ -436,10 +436,10 @@
}, },
"Microsoft.Win32.SystemEvents": { "Microsoft.Win32.SystemEvents": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "4.5.0",
"contentHash": "Bh6blKG8VAKvXiLe2L+sEsn62nc1Ij34MrNxepD2OCrS5cpCwQa9MeLyhVQPQ/R4Wlzwuy6wMK8hLb11QPDRsQ==", "contentHash": "LuI1oG+24TUj1ZRQQjM5Ew73BKnZE5NZ/7eAdh1o8ST5dPhUnJvIkiIn2re3MwnkRy6ELRnvEbBxHP8uALKhJw==",
"dependencies": { "dependencies": {
"Microsoft.NETCore.Platforms": "5.0.0" "Microsoft.NETCore.Platforms": "2.0.0"
} }
}, },
"NETStandard.Library": { "NETStandard.Library": {
@ -699,8 +699,8 @@
}, },
"ShimSkiaSharp": { "ShimSkiaSharp": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "a04YHHKRK1xY8ccSgpa6HOmOw9Kuivo2b2qejp9CK00ykdCBK3Mmc+ekBx954+zPQBksN6aLhvn1SEL7QG2s8Q==" "contentHash": "oUGM7gQHRzbGPRs3E1pe5e8VwML21YyEz9xdo+r2ov1mAqSDPyXErVQP6pN4gnfYMVf5ADR7BVkVzt4R9Iz3gQ=="
}, },
"SkiaSharp": { "SkiaSharp": {
"type": "Transitive", "type": "Transitive",
@ -760,11 +760,10 @@
}, },
"Svg.Custom": { "Svg.Custom": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "8OEW3UKx07JfEyqzzvF5+ycydusZjg6jsBjDSBrAoq62c5gNZrs6brlOKm2ywEj9hObK3sLcat5BHnE2OUHXsg==", "contentHash": "kmjLQf5U5WC7tRGBedUhtrOUCR0NaNL2auzOA2a/oMwEA0Bjrpd6qvMTpJUS3HITxi8vJazGl270K+i0JvdJog==",
"dependencies": { "dependencies": {
"Fizzler": "1.2.0", "Fizzler": "1.2.0",
"System.Drawing.Common": "5.0.0",
"System.Memory": "4.5.3", "System.Memory": "4.5.3",
"System.ObjectModel": "4.3.0", "System.ObjectModel": "4.3.0",
"System.ValueTuple": "4.5.0" "System.ValueTuple": "4.5.0"
@ -772,22 +771,22 @@
}, },
"Svg.Model": { "Svg.Model": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "5/Y+BGjgTwobA9aDfcpTGF/bm83MYrEYM8J1LpPohRR+c+B/1N+rbSXfpDZq2omBJ1O0Sa5VjAXw1oAdm1lYLg==", "contentHash": "/CPiXIugg4oVyYlQr26fB1X9iQfICALF8AJXbTWnXGoP2WZa1t6aZbAXPk3HoPApA0w5waf3XXkBiYYnWwawaQ==",
"dependencies": { "dependencies": {
"ShimSkiaSharp": "0.5.11", "ShimSkiaSharp": "0.5.12",
"Svg.Custom": "0.5.11" "Svg.Custom": "0.5.12"
} }
}, },
"Svg.Skia": { "Svg.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "AiN5rSsYBzBUkoh8YK5HoNxRxHtUekp2/6ZAol8qV8oDr6vu8hmPuWjUDwvqCFMi9Dlllc6YsFfvJ1PZCJvYew==", "contentHash": "KjKpjz0FKge+WpRzjD1bqywAW3vZhXwpR5c7Ej5OuP4xDrQjBwtFeB0iZ+yEJMzwXf/Rs4ImuN8m3bmBDJvMHg==",
"dependencies": { "dependencies": {
"SkiaSharp": "2.88.0-preview.178", "SkiaSharp": "2.88.0-preview.178",
"SkiaSharp.HarfBuzz": "2.88.0-preview.178", "SkiaSharp.HarfBuzz": "2.88.0-preview.178",
"Svg.Custom": "0.5.11", "Svg.Custom": "0.5.12",
"Svg.Model": "0.5.11" "Svg.Model": "0.5.12"
} }
}, },
"System.AppContext": { "System.AppContext": {
@ -979,10 +978,11 @@
}, },
"System.Drawing.Common": { "System.Drawing.Common": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "4.5.0",
"contentHash": "SztFwAnpfKC8+sEKXAFxCBWhKQaEd97EiOL7oZJZP56zbqnLpmxACWA8aGseaUExciuEAUuR9dY8f7HkTRAdnw==", "contentHash": "AiJFxxVPdeITstiRS5aAu8+8Dpf5NawTMoapZ53Gfirml24p7HIfhjmCRxdXnmmf3IUA3AX3CcW7G73CjWxW/Q==",
"dependencies": { "dependencies": {
"Microsoft.Win32.SystemEvents": "5.0.0" "Microsoft.NETCore.Platforms": "2.0.0",
"Microsoft.Win32.SystemEvents": "4.5.0"
} }
}, },
"System.Dynamic.Runtime": { "System.Dynamic.Runtime": {
@ -1746,12 +1746,12 @@
"dependencies": { "dependencies": {
"Artemis.Core": "1.0.0", "Artemis.Core": "1.0.0",
"Artemis.UI.Shared": "1.0.0", "Artemis.UI.Shared": "1.0.0",
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Controls.PanAndZoom": "10.11.1", "Avalonia.Controls.PanAndZoom": "10.12.0",
"Avalonia.Desktop": "0.10.11", "Avalonia.Desktop": "0.10.12",
"Avalonia.Diagnostics": "0.10.11", "Avalonia.Diagnostics": "0.10.12",
"Avalonia.ReactiveUI": "0.10.11", "Avalonia.ReactiveUI": "0.10.12",
"Avalonia.Svg.Skia": "0.10.11", "Avalonia.Svg.Skia": "0.10.12",
"DynamicData": "7.4.9", "DynamicData": "7.4.9",
"FluentAvaloniaUI": "1.1.8", "FluentAvaloniaUI": "1.1.8",
"Flurl.Http": "3.2.0", "Flurl.Http": "3.2.0",
@ -1759,7 +1759,7 @@
"Material.Icons.Avalonia": "1.0.2", "Material.Icons.Avalonia": "1.0.2",
"RGB.NET.Core": "1.0.0-prerelease7", "RGB.NET.Core": "1.0.0-prerelease7",
"RGB.NET.Layout": "1.0.0-prerelease7", "RGB.NET.Layout": "1.0.0-prerelease7",
"ReactiveUI": "16.3.10", "ReactiveUI": "17.1.17",
"ReactiveUI.Validation": "2.2.1", "ReactiveUI.Validation": "2.2.1",
"SkiaSharp": "2.88.0-preview.178", "SkiaSharp": "2.88.0-preview.178",
"Splat.Ninject": "14.1.17" "Splat.Ninject": "14.1.17"
@ -1769,17 +1769,17 @@
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Artemis.Core": "1.0.0", "Artemis.Core": "1.0.0",
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.ReactiveUI": "0.10.11", "Avalonia.ReactiveUI": "0.10.12",
"Avalonia.Svg.Skia": "0.10.11", "Avalonia.Svg.Skia": "0.10.12",
"Avalonia.Xaml.Behaviors": "0.10.11.5", "Avalonia.Xaml.Behaviors": "0.10.12",
"Avalonia.Xaml.Interactions": "0.10.11.5", "Avalonia.Xaml.Interactions": "0.10.12",
"Avalonia.Xaml.Interactivity": "0.10.11.5", "Avalonia.Xaml.Interactivity": "0.10.12",
"DynamicData": "7.4.9", "DynamicData": "7.4.9",
"FluentAvaloniaUI": "1.1.8", "FluentAvaloniaUI": "1.1.8",
"Material.Icons.Avalonia": "1.0.2", "Material.Icons.Avalonia": "1.0.2",
"RGB.NET.Core": "1.0.0-prerelease7", "RGB.NET.Core": "1.0.0-prerelease7",
"ReactiveUI": "16.3.10", "ReactiveUI": "17.1.17",
"ReactiveUI.Validation": "2.2.1", "ReactiveUI.Validation": "2.2.1",
"SkiaSharp": "2.88.0-preview.178" "SkiaSharp": "2.88.0-preview.178"
} }

View File

@ -10,12 +10,12 @@
<None Remove=".gitignore" /> <None Remove=".gitignore" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia" Version="0.10.11" /> <PackageReference Include="Avalonia" Version="0.10.12" />
<PackageReference Include="Avalonia.Desktop" Version="0.10.11" /> <PackageReference Include="Avalonia.Desktop" Version="0.10.12" />
<!--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.-->
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="0.10.11" /> <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="0.10.12" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.11" /> <PackageReference Include="Avalonia.ReactiveUI" Version="0.10.12" />
<PackageReference Include="ReactiveUI" Version="16.3.10" /> <PackageReference Include="ReactiveUI" Version="17.1.17" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\Artemis.Core\Artemis.Core.csproj" /> <ProjectReference Include="..\..\Artemis.Core\Artemis.Core.csproj" />

View File

@ -4,11 +4,11 @@
"net6.0": { "net6.0": {
"Avalonia": { "Avalonia": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "2PSE+dB4vGJfG+1M+y+Hwaxiqze5mbBTTG9hjwc2Z3U/9yJE/GThBEst2WwI0yBt13hsfAfbABzt1PA3mtbFdw==", "contentHash": "ftI5uGBFvWJpizGc6PT6lOb6FiO8AWcSYS9N4FWvXgOvuqWuTgmjwURPUkvajpeaQLKOOea6AbgotSyhV8NNoQ==",
"dependencies": { "dependencies": {
"Avalonia.Remote.Protocol": "0.10.11", "Avalonia.Remote.Protocol": "0.10.12",
"JetBrains.Annotations": "10.3.0", "JetBrains.Annotations": "10.3.0",
"System.ComponentModel.Annotations": "4.5.0", "System.ComponentModel.Annotations": "4.5.0",
"System.Memory": "4.5.3", "System.Memory": "4.5.3",
@ -19,48 +19,48 @@
}, },
"Avalonia.Desktop": { "Avalonia.Desktop": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "PQTl4lm7IZidzltMwC7RSNaoz7TYNznU8SKa/WaAI6ycMzC0On2DsqiL1dXr6WhYzMazyMJj6kBhiQzHIc1lIQ==", "contentHash": "wy4k1uarrmZJSJENCe1hjNpdCJWhup0gt6KA2TtZILfGG7imj+an5IuQZUSXtA7cl7A+6tF6lPQLo82gESUlXQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Native": "0.10.11", "Avalonia.Native": "0.10.12",
"Avalonia.Skia": "0.10.11", "Avalonia.Skia": "0.10.12",
"Avalonia.Win32": "0.10.11", "Avalonia.Win32": "0.10.12",
"Avalonia.X11": "0.10.11" "Avalonia.X11": "0.10.12"
} }
}, },
"Avalonia.Diagnostics": { "Avalonia.Diagnostics": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "xBvBkF2DBKjddAfQbExd660zQ5RaDEXH1JgAdMyYOdu3qFL6d+QHyZdVHVeQFilNYE03F6C8AbMWrmj6dBUNlg==", "contentHash": "Pf9DGiSwl3+gPrRSHKFzDG20I9QJ5P1g6BexLKfHQH9+Cmax+a/UEVYQq4hGn0xhrmpuLYOeGHb8wasjAT4EfQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Controls.DataGrid": "0.10.11", "Avalonia.Controls.DataGrid": "0.10.12",
"Microsoft.CodeAnalysis.CSharp.Scripting": "3.4.0", "Microsoft.CodeAnalysis.CSharp.Scripting": "3.4.0",
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
}, },
"Avalonia.ReactiveUI": { "Avalonia.ReactiveUI": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "I/++/4Halsx9HIp99nBwB2nIMrI9zw2M8wDcK1HaYVMKU+m3KFA9w+DfV7g/wEceWSMeX7yAvUjRnaUYtBO08Q==", "contentHash": "dOszpMtBKEACAFWtjwNibXMF2SBolJ3cV8ffDEOy2uuwjKBJqbSmHH+WSnui9KfbSF2igVpam4TqO6drJuEvjw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"ReactiveUI": "13.2.10", "ReactiveUI": "13.2.10",
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
}, },
"ReactiveUI": { "ReactiveUI": {
"type": "Direct", "type": "Direct",
"requested": "[16.3.10, )", "requested": "[17.1.17, )",
"resolved": "16.3.10", "resolved": "17.1.17",
"contentHash": "NH9bg8BROqRrTp6YLpPDsJrfNDzRWNmP63fQ68CBAM+i7YHi6wcPeOkxyKpoemUxKEY4QECuicaTblJnxgbWmA==", "contentHash": "0DLq44k4CVvfXcWHE4uigQa/wySOzxOTnWg50j2qZDpWzl9OP7QfIDJo39X3ffEjaVcCUFcbF9xAmm7fRX/q2g==",
"dependencies": { "dependencies": {
"DynamicData": "7.4.3", "DynamicData": "7.4.9",
"Splat": "13.1.42" "Splat": "14.1.17"
} }
}, },
"Avalonia.Angle.Windows.Natives": { "Avalonia.Angle.Windows.Natives": {
@ -70,51 +70,51 @@
}, },
"Avalonia.Controls.DataGrid": { "Avalonia.Controls.DataGrid": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "zvt6QA2uwe18gJ/XdnSMTHG6L/2usvjoaAdPC+Lgg+DmUPNTjqN+Hm1l0AjUtNNId6G+4iIkysiZ2WiHPqGsEA==", "contentHash": "i3zM3P8PUY4FNhATZoFWkto3H66FcIrnJNMyOsl1fN0FPS6meysAwCKQwuou/oapyzZEODeAmCVdqB0AgjNHVw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Remote.Protocol": "0.10.11", "Avalonia.Remote.Protocol": "0.10.12",
"JetBrains.Annotations": "10.3.0", "JetBrains.Annotations": "10.3.0",
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
}, },
"Avalonia.Controls.PanAndZoom": { "Avalonia.Controls.PanAndZoom": {
"type": "Transitive", "type": "Transitive",
"resolved": "10.11.1", "resolved": "10.12.0",
"contentHash": "XIjA3iGHMfokPXw/ov5CqKKPR8HdVrTBOMYJVOGpDQyec6RwI/w7lq530wfIMebIe9xUj5RY2Jx5heQtCuAFmg==", "contentHash": "ns+2tJTXTpNzNA9YV2mjR4EJOZl2vBFWnGUTSIl/vyOQMrrU5CbsXQxy2MFBvW0vGrRTlw80nUtBnsT759kwKQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11" "Avalonia": "0.10.12"
} }
}, },
"Avalonia.FreeDesktop": { "Avalonia.FreeDesktop": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "cj8T11WQ5/opR2IPttb1Bo89aHclkuvHYsCB7HzZU/F7l/cKXbKUOhyo60p44BdFzrCqjNXDnKQbxeRv+OSF7A==", "contentHash": "j42uWCWkAfZchYPrdRccr4mjB0kppSby3TEMCuNrp9GcQi+JhEPEbBAohU7FpR4bkv5FF2KAlDX5WiG2T+04kg==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Tmds.DBus": "0.9.0" "Tmds.DBus": "0.9.0"
} }
}, },
"Avalonia.Native": { "Avalonia.Native": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "9fBC9UArVXEmsxL2Nd0KHGoZUCqcTo06NTlOTAeM3qdEWzE8a0qRVYiR2WeYfADXpKR1D/fQz5zWUZcebFYFIA==", "contentHash": "JnZc0zF7DcLcSX+SdnKQGzFa9mcKxawhTN8S3aiN8Eh3MZAKxa45LRrHFVTcHcy2jU4kOw+yPfONUmHpRcC0gw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11" "Avalonia": "0.10.12"
} }
}, },
"Avalonia.Remote.Protocol": { "Avalonia.Remote.Protocol": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "kID2N/cXg7KCGFYFTOWCvSLt+oMFRApLfLcbLU35keC/jwDi9tFk33CEdo81hBEg15lAtTtCfvHhNPyVyIYijQ==" "contentHash": "ArrxniR8iShzMvXCS3vt5FXg9Fv3qK1UKzJwsSsY9iCuC8wKo2eevRj42qOhMCS98POTH5v8aUZBeoLlENa0vA=="
}, },
"Avalonia.Skia": { "Avalonia.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "4bP5V3BpnZ+If2/ZrZofeRsINeZ6gemLjfNyElt7vNF4HZaRfot03anO3Y+Z7mTELjuol6n/5lAL4+kQUN/O/w==", "contentHash": "3TGo8RLHaLqmU3chlyAqLkpw6vImfDMC30T18abpeYf1PIsNckRB+UFp12GDil9t/J9YB17zn4H6N+2plF4gZA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"HarfBuzzSharp": "2.8.2-preview.178", "HarfBuzzSharp": "2.8.2-preview.178",
"HarfBuzzSharp.NativeAssets.Linux": "2.8.2-preview.178", "HarfBuzzSharp.NativeAssets.Linux": "2.8.2-preview.178",
"HarfBuzzSharp.NativeAssets.WebAssembly": "2.8.2-preview.178", "HarfBuzzSharp.NativeAssets.WebAssembly": "2.8.2-preview.178",
@ -125,21 +125,21 @@
}, },
"Avalonia.Svg.Skia": { "Avalonia.Svg.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "Zw1kfOWN7ZaMqnoJsKqvU/8GxGbrv4KrkAbbLVHvhZl4sA0VZEjqdtxUAqSHlJrYtjPfaUzzDP9K3l0KCqnx/Q==", "contentHash": "qsXKdm5eWpfoVPe0xgtxhbOYlhG8QdbYNJZTTihg/c4iPFYuh1G7DldiNskuVFuGiGxLVZ0g6ebql7ZkwbO1pA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Skia": "0.10.11", "Avalonia.Skia": "0.10.12",
"SkiaSharp": "2.88.0-preview.178", "SkiaSharp": "2.88.0-preview.178",
"Svg.Skia": "0.5.11" "Svg.Skia": "0.5.12"
} }
}, },
"Avalonia.Win32": { "Avalonia.Win32": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "bckqh8rnQ4+l2kdU4njO3cBKaT4l1HQkxdVYJLAgl44uMtoCpaN7EidrBTnuM40DXa0cpvOh97A+G8jpZgte6Q==", "contentHash": "CnC65T8ScMK23BB+qJuiMicWQ5QIEiinnRzPqvAGUGyQbjIGpA5uOCKwzsOjUmzkhGqt31iDR0/Y3ZFbi5Mjog==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Angle.Windows.Natives": "2.1.0.2020091801", "Avalonia.Angle.Windows.Natives": "2.1.0.2020091801",
"System.Drawing.Common": "4.5.0", "System.Drawing.Common": "4.5.0",
"System.Numerics.Vectors": "4.5.0" "System.Numerics.Vectors": "4.5.0"
@ -147,39 +147,39 @@
}, },
"Avalonia.X11": { "Avalonia.X11": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "joPVaMmPy4bC1STSk5+fAn5zZOT3gz4m/YSv6io3p2q68kEbc+d5KaYk/KcqA/WGiBBQx4a0ViPW/IRomI94kw==", "contentHash": "mUY1cF1p86/UgLl1cbSmY3nVIatKQsSCDOH4avssL07xmKlRfB2G7Gi8jlhWNkLJTLL7iQp/u3X6bv7bs+0zNQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.FreeDesktop": "0.10.11", "Avalonia.FreeDesktop": "0.10.12",
"Avalonia.Skia": "0.10.11" "Avalonia.Skia": "0.10.12"
} }
}, },
"Avalonia.Xaml.Behaviors": { "Avalonia.Xaml.Behaviors": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11.5", "resolved": "0.10.12",
"contentHash": "XHU7/hRYWEdaJOs+weT9ml9/GYqroPrAtePjGzUzUrMoHESbqmkLXmW+fHkaAeXRMJAOAFD1LQUHQu+B6ThF3w==", "contentHash": "upv7v1gZ31tCukw/KA1bB5+z29QuEWiZJ4KnW10daHlia1ru7q4lUJ/vCYKOy5L+zyi1MQg98SNYjRp5C64ZhQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Xaml.Interactions": "0.10.11.5", "Avalonia.Xaml.Interactions": "0.10.12",
"Avalonia.Xaml.Interactivity": "0.10.11.5" "Avalonia.Xaml.Interactivity": "0.10.12"
} }
}, },
"Avalonia.Xaml.Interactions": { "Avalonia.Xaml.Interactions": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11.5", "resolved": "0.10.12",
"contentHash": "MpqS1t1zypDNEW2Pyg113W4AwmfaWai5LfA/K22sDbygXII+KuACaHt2ZPHJWnvKGHgasLEEFhEOGfF5cB9NPA==", "contentHash": "PSohbY4aQGiJVWfvLKkuUE71ZxvZ0/FuTc3Y5GJgTC41kCgeaiJTczkC2FjW5sZ8exPDabSp+ZukSsnm/z6y7A==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Xaml.Interactivity": "0.10.11.5" "Avalonia.Xaml.Interactivity": "0.10.12"
} }
}, },
"Avalonia.Xaml.Interactivity": { "Avalonia.Xaml.Interactivity": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11.5", "resolved": "0.10.12",
"contentHash": "MOM6lcPenJZu9LPhai3n67GssBUx3MjoCVLyR2GEJ6lywKQgk4MKOIAC0gLWgy7x1e540oy4lCpeX8jMsqe7mA==", "contentHash": "uey4LjyIds78igMe7AZ072RI6GpO16sd6+6XF6LG0oE07De7ei0So14oOs4wLS4WJyaKDRSUK6PuhLaY1zIZdQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11" "Avalonia": "0.10.12"
} }
}, },
"Castle.Core": { "Castle.Core": {
@ -436,10 +436,10 @@
}, },
"Microsoft.Win32.SystemEvents": { "Microsoft.Win32.SystemEvents": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "4.5.0",
"contentHash": "Bh6blKG8VAKvXiLe2L+sEsn62nc1Ij34MrNxepD2OCrS5cpCwQa9MeLyhVQPQ/R4Wlzwuy6wMK8hLb11QPDRsQ==", "contentHash": "LuI1oG+24TUj1ZRQQjM5Ew73BKnZE5NZ/7eAdh1o8ST5dPhUnJvIkiIn2re3MwnkRy6ELRnvEbBxHP8uALKhJw==",
"dependencies": { "dependencies": {
"Microsoft.NETCore.Platforms": "5.0.0" "Microsoft.NETCore.Platforms": "2.0.0"
} }
}, },
"NETStandard.Library": { "NETStandard.Library": {
@ -699,8 +699,8 @@
}, },
"ShimSkiaSharp": { "ShimSkiaSharp": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "a04YHHKRK1xY8ccSgpa6HOmOw9Kuivo2b2qejp9CK00ykdCBK3Mmc+ekBx954+zPQBksN6aLhvn1SEL7QG2s8Q==" "contentHash": "oUGM7gQHRzbGPRs3E1pe5e8VwML21YyEz9xdo+r2ov1mAqSDPyXErVQP6pN4gnfYMVf5ADR7BVkVzt4R9Iz3gQ=="
}, },
"SkiaSharp": { "SkiaSharp": {
"type": "Transitive", "type": "Transitive",
@ -760,11 +760,10 @@
}, },
"Svg.Custom": { "Svg.Custom": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "8OEW3UKx07JfEyqzzvF5+ycydusZjg6jsBjDSBrAoq62c5gNZrs6brlOKm2ywEj9hObK3sLcat5BHnE2OUHXsg==", "contentHash": "kmjLQf5U5WC7tRGBedUhtrOUCR0NaNL2auzOA2a/oMwEA0Bjrpd6qvMTpJUS3HITxi8vJazGl270K+i0JvdJog==",
"dependencies": { "dependencies": {
"Fizzler": "1.2.0", "Fizzler": "1.2.0",
"System.Drawing.Common": "5.0.0",
"System.Memory": "4.5.3", "System.Memory": "4.5.3",
"System.ObjectModel": "4.3.0", "System.ObjectModel": "4.3.0",
"System.ValueTuple": "4.5.0" "System.ValueTuple": "4.5.0"
@ -772,22 +771,22 @@
}, },
"Svg.Model": { "Svg.Model": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "5/Y+BGjgTwobA9aDfcpTGF/bm83MYrEYM8J1LpPohRR+c+B/1N+rbSXfpDZq2omBJ1O0Sa5VjAXw1oAdm1lYLg==", "contentHash": "/CPiXIugg4oVyYlQr26fB1X9iQfICALF8AJXbTWnXGoP2WZa1t6aZbAXPk3HoPApA0w5waf3XXkBiYYnWwawaQ==",
"dependencies": { "dependencies": {
"ShimSkiaSharp": "0.5.11", "ShimSkiaSharp": "0.5.12",
"Svg.Custom": "0.5.11" "Svg.Custom": "0.5.12"
} }
}, },
"Svg.Skia": { "Svg.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "AiN5rSsYBzBUkoh8YK5HoNxRxHtUekp2/6ZAol8qV8oDr6vu8hmPuWjUDwvqCFMi9Dlllc6YsFfvJ1PZCJvYew==", "contentHash": "KjKpjz0FKge+WpRzjD1bqywAW3vZhXwpR5c7Ej5OuP4xDrQjBwtFeB0iZ+yEJMzwXf/Rs4ImuN8m3bmBDJvMHg==",
"dependencies": { "dependencies": {
"SkiaSharp": "2.88.0-preview.178", "SkiaSharp": "2.88.0-preview.178",
"SkiaSharp.HarfBuzz": "2.88.0-preview.178", "SkiaSharp.HarfBuzz": "2.88.0-preview.178",
"Svg.Custom": "0.5.11", "Svg.Custom": "0.5.12",
"Svg.Model": "0.5.11" "Svg.Model": "0.5.12"
} }
}, },
"System.AppContext": { "System.AppContext": {
@ -979,10 +978,11 @@
}, },
"System.Drawing.Common": { "System.Drawing.Common": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "4.5.0",
"contentHash": "SztFwAnpfKC8+sEKXAFxCBWhKQaEd97EiOL7oZJZP56zbqnLpmxACWA8aGseaUExciuEAUuR9dY8f7HkTRAdnw==", "contentHash": "AiJFxxVPdeITstiRS5aAu8+8Dpf5NawTMoapZ53Gfirml24p7HIfhjmCRxdXnmmf3IUA3AX3CcW7G73CjWxW/Q==",
"dependencies": { "dependencies": {
"Microsoft.Win32.SystemEvents": "5.0.0" "Microsoft.NETCore.Platforms": "2.0.0",
"Microsoft.Win32.SystemEvents": "4.5.0"
} }
}, },
"System.Dynamic.Runtime": { "System.Dynamic.Runtime": {
@ -1746,12 +1746,12 @@
"dependencies": { "dependencies": {
"Artemis.Core": "1.0.0", "Artemis.Core": "1.0.0",
"Artemis.UI.Shared": "1.0.0", "Artemis.UI.Shared": "1.0.0",
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Controls.PanAndZoom": "10.11.1", "Avalonia.Controls.PanAndZoom": "10.12.0",
"Avalonia.Desktop": "0.10.11", "Avalonia.Desktop": "0.10.12",
"Avalonia.Diagnostics": "0.10.11", "Avalonia.Diagnostics": "0.10.12",
"Avalonia.ReactiveUI": "0.10.11", "Avalonia.ReactiveUI": "0.10.12",
"Avalonia.Svg.Skia": "0.10.11", "Avalonia.Svg.Skia": "0.10.12",
"DynamicData": "7.4.9", "DynamicData": "7.4.9",
"FluentAvaloniaUI": "1.1.8", "FluentAvaloniaUI": "1.1.8",
"Flurl.Http": "3.2.0", "Flurl.Http": "3.2.0",
@ -1759,7 +1759,7 @@
"Material.Icons.Avalonia": "1.0.2", "Material.Icons.Avalonia": "1.0.2",
"RGB.NET.Core": "1.0.0-prerelease7", "RGB.NET.Core": "1.0.0-prerelease7",
"RGB.NET.Layout": "1.0.0-prerelease7", "RGB.NET.Layout": "1.0.0-prerelease7",
"ReactiveUI": "16.3.10", "ReactiveUI": "17.1.17",
"ReactiveUI.Validation": "2.2.1", "ReactiveUI.Validation": "2.2.1",
"SkiaSharp": "2.88.0-preview.178", "SkiaSharp": "2.88.0-preview.178",
"Splat.Ninject": "14.1.17" "Splat.Ninject": "14.1.17"
@ -1769,17 +1769,17 @@
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Artemis.Core": "1.0.0", "Artemis.Core": "1.0.0",
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.ReactiveUI": "0.10.11", "Avalonia.ReactiveUI": "0.10.12",
"Avalonia.Svg.Skia": "0.10.11", "Avalonia.Svg.Skia": "0.10.12",
"Avalonia.Xaml.Behaviors": "0.10.11.5", "Avalonia.Xaml.Behaviors": "0.10.12",
"Avalonia.Xaml.Interactions": "0.10.11.5", "Avalonia.Xaml.Interactions": "0.10.12",
"Avalonia.Xaml.Interactivity": "0.10.11.5", "Avalonia.Xaml.Interactivity": "0.10.12",
"DynamicData": "7.4.9", "DynamicData": "7.4.9",
"FluentAvaloniaUI": "1.1.8", "FluentAvaloniaUI": "1.1.8",
"Material.Icons.Avalonia": "1.0.2", "Material.Icons.Avalonia": "1.0.2",
"RGB.NET.Core": "1.0.0-prerelease7", "RGB.NET.Core": "1.0.0-prerelease7",
"ReactiveUI": "16.3.10", "ReactiveUI": "17.1.17",
"ReactiveUI.Validation": "2.2.1", "ReactiveUI.Validation": "2.2.1",
"SkiaSharp": "2.88.0-preview.178" "SkiaSharp": "2.88.0-preview.178"
} }

View File

@ -17,16 +17,16 @@
<None Remove="DefaultTypes\DataModel\Display\DefaultDataModelDisplayView.xaml" /> <None Remove="DefaultTypes\DataModel\Display\DefaultDataModelDisplayView.xaml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia" Version="0.10.11" /> <PackageReference Include="Avalonia" Version="0.10.12" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.11" /> <PackageReference Include="Avalonia.ReactiveUI" Version="0.10.12" />
<PackageReference Include="Avalonia.Svg.Skia" Version="0.10.11" /> <PackageReference Include="Avalonia.Svg.Skia" Version="0.10.12" />
<PackageReference Include="Avalonia.Xaml.Behaviors" Version="0.10.11.5" /> <PackageReference Include="Avalonia.Xaml.Behaviors" Version="0.10.12" />
<PackageReference Include="Avalonia.Xaml.Interactions" Version="0.10.11.5" /> <PackageReference Include="Avalonia.Xaml.Interactions" Version="0.10.12" />
<PackageReference Include="Avalonia.Xaml.Interactivity" Version="0.10.11.5" /> <PackageReference Include="Avalonia.Xaml.Interactivity" Version="0.10.12" />
<PackageReference Include="DynamicData" Version="7.4.9" /> <PackageReference Include="DynamicData" Version="7.4.9" />
<PackageReference Include="FluentAvaloniaUI" Version="1.1.8" /> <PackageReference Include="FluentAvaloniaUI" Version="1.1.8" />
<PackageReference Include="Material.Icons.Avalonia" Version="1.0.2" /> <PackageReference Include="Material.Icons.Avalonia" Version="1.0.2" />
<PackageReference Include="ReactiveUI" Version="16.3.10" /> <PackageReference Include="ReactiveUI" Version="17.1.17" />
<PackageReference Include="ReactiveUI.Validation" Version="2.2.1" /> <PackageReference Include="ReactiveUI.Validation" Version="2.2.1" />
<PackageReference Include="RGB.NET.Core" Version="1.0.0-prerelease7" /> <PackageReference Include="RGB.NET.Core" Version="1.0.0-prerelease7" />
<PackageReference Include="SkiaSharp" Version="2.88.0-preview.178" /> <PackageReference Include="SkiaSharp" Version="2.88.0-preview.178" />

View File

@ -0,0 +1,19 @@
using Avalonia;
using SkiaSharp;
namespace Artemis.UI.Shared.Extensions;
public static class SKMatrixExtensions
{
public static Matrix ToMatrix(this SKMatrix matrix)
{
return new Matrix(
matrix.ScaleX,
matrix.SkewY,
matrix.SkewX,
matrix.ScaleY,
matrix.TransX,
matrix.TransY
);
}
}

View File

@ -0,0 +1,17 @@
using Avalonia;
using SkiaSharp;
namespace Artemis.UI.Shared.Extensions;
public static class SKRectExtensions
{
public static Rect ToRect(this SKRect rect)
{
return new Rect(rect.Left, rect.Top, rect.Width, rect.Height);
}
public static Rect ToRect(this SKRectI rect)
{
return new Rect(rect.Left, rect.Top, rect.Width, rect.Height);
}
}

View File

@ -1,4 +1,5 @@
using Artemis.Core; using System;
using Artemis.Core;
namespace Artemis.UI.Shared.Services.ProfileEditor.Commands; namespace Artemis.UI.Shared.Services.ProfileEditor.Commands;
@ -9,15 +10,18 @@ namespace Artemis.UI.Shared.Services.ProfileEditor.Commands;
public class ToggleLayerPropertyKeyframes<T> : IProfileEditorCommand public class ToggleLayerPropertyKeyframes<T> : IProfileEditorCommand
{ {
private readonly bool _enable; private readonly bool _enable;
private readonly TimeSpan _time;
private readonly LayerProperty<T> _layerProperty; private readonly LayerProperty<T> _layerProperty;
private LayerPropertyKeyframe<T>? _keyframe;
/// <summary> /// <summary>
/// Creates a new instance of the <see cref="ToggleLayerPropertyKeyframes{T}"/> class. /// Creates a new instance of the <see cref="ToggleLayerPropertyKeyframes{T}"/> class.
/// </summary> /// </summary>
public ToggleLayerPropertyKeyframes(LayerProperty<T> layerProperty, bool enable) public ToggleLayerPropertyKeyframes(LayerProperty<T> layerProperty, bool enable, TimeSpan time)
{ {
_layerProperty = layerProperty; _layerProperty = layerProperty;
_enable = enable; _enable = enable;
_time = time;
} }
#region Implementation of IProfileEditorCommand #region Implementation of IProfileEditorCommand
@ -28,12 +32,15 @@ public class ToggleLayerPropertyKeyframes<T> : IProfileEditorCommand
/// <inheritdoc /> /// <inheritdoc />
public void Execute() public void Execute()
{ {
_keyframe ??= new LayerPropertyKeyframe<T>(_layerProperty.CurrentValue, _time, Easings.Functions.Linear, _layerProperty);
_layerProperty.KeyframesEnabled = _enable; _layerProperty.KeyframesEnabled = _enable;
_layerProperty.AddKeyframe(_keyframe);
} }
/// <inheritdoc /> /// <inheritdoc />
public void Undo() public void Undo()
{ {
_layerProperty.RemoveKeyframe(_keyframe!);
_layerProperty.KeyframesEnabled = !_enable; _layerProperty.KeyframesEnabled = !_enable;
} }

View File

@ -1,6 +1,5 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using System.Reactive.Linq; using System.Reactive.Linq;
using System.Reactive.Subjects; using System.Reactive.Subjects;
@ -16,18 +15,17 @@ namespace Artemis.UI.Shared.Services.ProfileEditor;
internal class ProfileEditorService : IProfileEditorService internal class ProfileEditorService : IProfileEditorService
{ {
private readonly ILogger _logger;
private readonly IModuleService _moduleService;
private readonly BehaviorSubject<int> _pixelsPerSecondSubject = new(120);
private readonly BehaviorSubject<bool> _playingSubject = new(false);
private readonly BehaviorSubject<ProfileConfiguration?> _profileConfigurationSubject = new(null); private readonly BehaviorSubject<ProfileConfiguration?> _profileConfigurationSubject = new(null);
private readonly Dictionary<ProfileConfiguration, ProfileEditorHistory> _profileEditorHistories = new(); private readonly Dictionary<ProfileConfiguration, ProfileEditorHistory> _profileEditorHistories = new();
private readonly BehaviorSubject<RenderProfileElement?> _profileElementSubject = new(null); private readonly BehaviorSubject<RenderProfileElement?> _profileElementSubject = new(null);
private readonly BehaviorSubject<TimeSpan> _timeSubject = new(TimeSpan.Zero);
private readonly BehaviorSubject<bool> _playingSubject = new(false);
private readonly BehaviorSubject<bool> _suspendedEditingSubject = new(false);
private readonly BehaviorSubject<int> _pixelsPerSecondSubject = new(120);
private readonly SourceList<ILayerPropertyKeyframe> _selectedKeyframes = new();
private readonly ILogger _logger;
private readonly IProfileService _profileService; private readonly IProfileService _profileService;
private readonly IModuleService _moduleService; private readonly SourceList<ILayerPropertyKeyframe> _selectedKeyframes = new();
private readonly BehaviorSubject<bool> _suspendedEditingSubject = new(false);
private readonly BehaviorSubject<TimeSpan> _timeSubject = new(TimeSpan.Zero);
private readonly IWindowService _windowService; private readonly IWindowService _windowService;
private ProfileEditorCommandScope? _profileEditorHistoryScope; private ProfileEditorCommandScope? _profileEditorHistoryScope;
@ -47,6 +45,8 @@ internal class ProfileEditorService : IProfileEditorService
PixelsPerSecond = _pixelsPerSecondSubject.AsObservable(); PixelsPerSecond = _pixelsPerSecondSubject.AsObservable();
} }
public IObservable<bool> SuspendedEditing { get; }
private ProfileEditorHistory? GetHistory(ProfileConfiguration? profileConfiguration) private ProfileEditorHistory? GetHistory(ProfileConfiguration? profileConfiguration)
{ {
if (profileConfiguration == null) if (profileConfiguration == null)
@ -59,14 +59,47 @@ internal class ProfileEditorService : IProfileEditorService
return newHistory; return newHistory;
} }
private void Tick(TimeSpan time)
{
if (_profileConfigurationSubject.Value?.Profile == null || _suspendedEditingSubject.Value)
return;
TickProfileElement(_profileConfigurationSubject.Value.Profile.GetRootFolder(), time);
}
private void TickProfileElement(ProfileElement profileElement, TimeSpan time)
{
if (profileElement is not RenderProfileElement renderElement)
return;
if (renderElement.Suspended)
{
renderElement.Disable();
}
else
{
renderElement.Enable();
renderElement.Timeline.Override(
time,
(renderElement != _profileElementSubject.Value || renderElement.Timeline.Length < time) && renderElement.Timeline.PlayMode == TimelinePlayMode.Repeat
);
foreach (ProfileElement child in renderElement.Children)
TickProfileElement(child, time);
}
}
public IObservable<ProfileConfiguration?> ProfileConfiguration { get; } public IObservable<ProfileConfiguration?> ProfileConfiguration { get; }
public IObservable<RenderProfileElement?> ProfileElement { get; } public IObservable<RenderProfileElement?> ProfileElement { get; }
public IObservable<ProfileEditorHistory?> History { get; } public IObservable<ProfileEditorHistory?> History { get; }
public IObservable<TimeSpan> Time { get; } public IObservable<TimeSpan> Time { get; }
public IObservable<bool> Playing { get; } public IObservable<bool> Playing { get; }
public IObservable<bool> SuspendedEditing { get; }
public IObservable<int> PixelsPerSecond { get; } public IObservable<int> PixelsPerSecond { get; }
public IObservable<IChangeSet<ILayerPropertyKeyframe>> ConnectToKeyframes() => _selectedKeyframes.Connect();
public IObservable<IChangeSet<ILayerPropertyKeyframe>> ConnectToKeyframes()
{
return _selectedKeyframes.Connect();
}
public void ChangeCurrentProfileConfiguration(ProfileConfiguration? profileConfiguration) public void ChangeCurrentProfileConfiguration(ProfileConfiguration? profileConfiguration)
{ {
@ -143,11 +176,8 @@ internal class ProfileEditorService : IProfileEditorService
else else
{ {
if (expand) if (expand)
{
_selectedKeyframes.Add(keyframe); _selectedKeyframes.Add(keyframe);
}
else else
{
_selectedKeyframes.Edit(l => _selectedKeyframes.Edit(l =>
{ {
l.Clear(); l.Clear();
@ -155,7 +185,6 @@ internal class ProfileEditorService : IProfileEditorService
}); });
} }
} }
}
public void SelectKeyframes(IEnumerable<ILayerPropertyKeyframe> keyframes, bool expand) public void SelectKeyframes(IEnumerable<ILayerPropertyKeyframe> keyframes, bool expand)
{ {
@ -194,10 +223,8 @@ internal class ProfileEditorService : IProfileEditorService
// Snap to the current time // Snap to the current time
if (snapToCurrentTime) if (snapToCurrentTime)
{
if (Math.Abs(time.TotalMilliseconds - _timeSubject.Value.TotalMilliseconds) < tolerance.TotalMilliseconds) if (Math.Abs(time.TotalMilliseconds - _timeSubject.Value.TotalMilliseconds) < tolerance.TotalMilliseconds)
return _timeSubject.Value; return _timeSubject.Value;
}
if (snapTimes != null) if (snapTimes != null)
{ {
@ -229,6 +256,37 @@ internal class ProfileEditorService : IProfileEditorService
_pixelsPerSecondSubject.OnNext(pixelsPerSecond); _pixelsPerSecondSubject.OnNext(pixelsPerSecond);
} }
/// <inheritdoc />
public void SaveProfile()
{
Profile? profile = _profileConfigurationSubject.Value?.Profile;
if (profile == null)
return;
_profileService.SaveProfile(profile, true);
}
/// <inheritdoc />
public async Task SaveProfileAsync()
{
await Task.Run(SaveProfile);
}
/// <inheritdoc />
public void Play()
{
if (!_playingSubject.Value)
_playingSubject.OnNext(true);
}
/// <inheritdoc />
public void Pause()
{
if (_playingSubject.Value)
_playingSubject.OnNext(false);
}
#region Commands #region Commands
public void ExecuteCommand(IProfileEditorCommand command) public void ExecuteCommand(IProfileEditorCommand command)
@ -282,66 +340,4 @@ internal class ProfileEditorService : IProfileEditorService
} }
#endregion #endregion
/// <inheritdoc />
public void SaveProfile()
{
Profile? profile = _profileConfigurationSubject.Value?.Profile;
if (profile == null)
return;
_profileService.SaveProfile(profile, true);
}
/// <inheritdoc />
public async Task SaveProfileAsync()
{
await Task.Run(SaveProfile);
}
/// <inheritdoc />
public void Play()
{
if (!_playingSubject.Value)
_playingSubject.OnNext(true);
}
/// <inheritdoc />
public void Pause()
{
if (_playingSubject.Value)
_playingSubject.OnNext(false);
}
private void Tick(TimeSpan time)
{
if (_profileConfigurationSubject.Value?.Profile == null || _suspendedEditingSubject.Value)
return;
TickProfileElement(_profileConfigurationSubject.Value.Profile.GetRootFolder(), time);
}
private void TickProfileElement(ProfileElement profileElement, TimeSpan time)
{
if (profileElement is not RenderProfileElement renderElement)
return;
if (renderElement.Suspended)
{
renderElement.Disable();
}
else
{
renderElement.Enable();
renderElement.Timeline.Override(
time,
(renderElement != _profileElementSubject.Value || renderElement.Timeline.Length < time) && renderElement.Timeline.PlayMode == TimelinePlayMode.Repeat
);
foreach (ProfileElement child in renderElement.Children)
TickProfileElement(child, time);
}
}
} }

View File

@ -5,6 +5,7 @@ using Artemis.Core;
using Artemis.UI.Shared.Services.ProfileEditor; using Artemis.UI.Shared.Services.ProfileEditor;
using Artemis.UI.Shared.Services.ProfileEditor.Commands; using Artemis.UI.Shared.Services.ProfileEditor.Commands;
using Avalonia.Controls.Mixins; using Avalonia.Controls.Mixins;
using Avalonia.Threading;
using ReactiveUI; using ReactiveUI;
using ReactiveUI.Validation.Helpers; using ReactiveUI.Validation.Helpers;
@ -54,6 +55,8 @@ public abstract class PropertyInputViewModel<T> : PropertyInputViewModel
.Subscribe(_ => UpdateDataBinding()) .Subscribe(_ => UpdateDataBinding())
.DisposeWith(d); .DisposeWith(d);
}); });
ValidationContext.ValidationStatusChange.Subscribe(s => Console.WriteLine(s));
} }
/// <summary> /// <summary>
@ -177,6 +180,8 @@ public abstract class PropertyInputViewModel<T> : PropertyInputViewModel
} }
private void UpdateInputValue() private void UpdateInputValue()
{
Dispatcher.UIThread.Post(() =>
{ {
try try
{ {
@ -196,6 +201,8 @@ public abstract class PropertyInputViewModel<T> : PropertyInputViewModel
{ {
_updating = false; _updating = false;
} }
});
} }
private void UpdateDataBinding() private void UpdateDataBinding()

View File

@ -1,7 +1,8 @@
<Styles xmlns="https://github.com/avaloniaui" <Styles xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" xmlns:controls="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
xmlns:attachedProperties="clr-namespace:Artemis.UI.Shared.AttachedProperties"> xmlns:attachedProperties="clr-namespace:Artemis.UI.Shared.AttachedProperties"
xmlns:system="clr-namespace:System;assembly=System.Runtime">
<Design.PreviewWith> <Design.PreviewWith>
<Border Padding="20"> <Border Padding="20">
<StackPanel Spacing="20"> <StackPanel Spacing="20">
@ -12,7 +13,11 @@
<controls:NumberBox Classes="condensed" <controls:NumberBox Classes="condensed"
Value="9999999" Value="9999999"
attachedProperties:NumberBoxAssist.PrefixText="%" attachedProperties:NumberBoxAssist.PrefixText="%"
attachedProperties:NumberBoxAssist.SuffixText="%"/> attachedProperties:NumberBoxAssist.SuffixText="%">
<DataValidationErrors.Error>
<system:Exception/>
</DataValidationErrors.Error>
</controls:NumberBox>
</StackPanel> </StackPanel>
</Border> </Border>
@ -117,4 +122,8 @@
<Setter Property="attachedProperties:TextBoxAssist.PrefixText" Value="{TemplateBinding attachedProperties:NumberBoxAssist.PrefixText}"></Setter> <Setter Property="attachedProperties:TextBoxAssist.PrefixText" Value="{TemplateBinding attachedProperties:NumberBoxAssist.PrefixText}"></Setter>
<Setter Property="attachedProperties:TextBoxAssist.SuffixText" Value="{TemplateBinding attachedProperties:NumberBoxAssist.SuffixText}"></Setter> <Setter Property="attachedProperties:TextBoxAssist.SuffixText" Value="{TemplateBinding attachedProperties:NumberBoxAssist.SuffixText}"></Setter>
</Style> </Style>
<Style Selector="controls|NumberBox /template/ TextBox.NumberBoxTextBoxStyle">
<Setter Property="DataValidationErrors.Errors" Value="{TemplateBinding DataValidationErrors.Errors}" />
</Style>
</Styles> </Styles>

View File

@ -4,11 +4,11 @@
"net6.0": { "net6.0": {
"Avalonia": { "Avalonia": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "2PSE+dB4vGJfG+1M+y+Hwaxiqze5mbBTTG9hjwc2Z3U/9yJE/GThBEst2WwI0yBt13hsfAfbABzt1PA3mtbFdw==", "contentHash": "ftI5uGBFvWJpizGc6PT6lOb6FiO8AWcSYS9N4FWvXgOvuqWuTgmjwURPUkvajpeaQLKOOea6AbgotSyhV8NNoQ==",
"dependencies": { "dependencies": {
"Avalonia.Remote.Protocol": "0.10.11", "Avalonia.Remote.Protocol": "0.10.12",
"JetBrains.Annotations": "10.3.0", "JetBrains.Annotations": "10.3.0",
"System.ComponentModel.Annotations": "4.5.0", "System.ComponentModel.Annotations": "4.5.0",
"System.Memory": "4.5.3", "System.Memory": "4.5.3",
@ -19,55 +19,55 @@
}, },
"Avalonia.ReactiveUI": { "Avalonia.ReactiveUI": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "I/++/4Halsx9HIp99nBwB2nIMrI9zw2M8wDcK1HaYVMKU+m3KFA9w+DfV7g/wEceWSMeX7yAvUjRnaUYtBO08Q==", "contentHash": "dOszpMtBKEACAFWtjwNibXMF2SBolJ3cV8ffDEOy2uuwjKBJqbSmHH+WSnui9KfbSF2igVpam4TqO6drJuEvjw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"ReactiveUI": "13.2.10", "ReactiveUI": "13.2.10",
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
}, },
"Avalonia.Svg.Skia": { "Avalonia.Svg.Skia": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "Zw1kfOWN7ZaMqnoJsKqvU/8GxGbrv4KrkAbbLVHvhZl4sA0VZEjqdtxUAqSHlJrYtjPfaUzzDP9K3l0KCqnx/Q==", "contentHash": "qsXKdm5eWpfoVPe0xgtxhbOYlhG8QdbYNJZTTihg/c4iPFYuh1G7DldiNskuVFuGiGxLVZ0g6ebql7ZkwbO1pA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Skia": "0.10.11", "Avalonia.Skia": "0.10.12",
"SkiaSharp": "2.88.0-preview.178", "SkiaSharp": "2.88.0-preview.178",
"Svg.Skia": "0.5.11" "Svg.Skia": "0.5.12"
} }
}, },
"Avalonia.Xaml.Behaviors": { "Avalonia.Xaml.Behaviors": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11.5, )", "requested": "[0.10.12, )",
"resolved": "0.10.11.5", "resolved": "0.10.12",
"contentHash": "XHU7/hRYWEdaJOs+weT9ml9/GYqroPrAtePjGzUzUrMoHESbqmkLXmW+fHkaAeXRMJAOAFD1LQUHQu+B6ThF3w==", "contentHash": "upv7v1gZ31tCukw/KA1bB5+z29QuEWiZJ4KnW10daHlia1ru7q4lUJ/vCYKOy5L+zyi1MQg98SNYjRp5C64ZhQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Xaml.Interactions": "0.10.11.5", "Avalonia.Xaml.Interactions": "0.10.12",
"Avalonia.Xaml.Interactivity": "0.10.11.5" "Avalonia.Xaml.Interactivity": "0.10.12"
} }
}, },
"Avalonia.Xaml.Interactions": { "Avalonia.Xaml.Interactions": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11.5, )", "requested": "[0.10.12, )",
"resolved": "0.10.11.5", "resolved": "0.10.12",
"contentHash": "MpqS1t1zypDNEW2Pyg113W4AwmfaWai5LfA/K22sDbygXII+KuACaHt2ZPHJWnvKGHgasLEEFhEOGfF5cB9NPA==", "contentHash": "PSohbY4aQGiJVWfvLKkuUE71ZxvZ0/FuTc3Y5GJgTC41kCgeaiJTczkC2FjW5sZ8exPDabSp+ZukSsnm/z6y7A==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Xaml.Interactivity": "0.10.11.5" "Avalonia.Xaml.Interactivity": "0.10.12"
} }
}, },
"Avalonia.Xaml.Interactivity": { "Avalonia.Xaml.Interactivity": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11.5, )", "requested": "[0.10.12, )",
"resolved": "0.10.11.5", "resolved": "0.10.12",
"contentHash": "MOM6lcPenJZu9LPhai3n67GssBUx3MjoCVLyR2GEJ6lywKQgk4MKOIAC0gLWgy7x1e540oy4lCpeX8jMsqe7mA==", "contentHash": "uey4LjyIds78igMe7AZ072RI6GpO16sd6+6XF6LG0oE07De7ei0So14oOs4wLS4WJyaKDRSUK6PuhLaY1zIZdQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11" "Avalonia": "0.10.12"
} }
}, },
"DynamicData": { "DynamicData": {
@ -102,12 +102,12 @@
}, },
"ReactiveUI": { "ReactiveUI": {
"type": "Direct", "type": "Direct",
"requested": "[16.3.10, )", "requested": "[17.1.17, )",
"resolved": "16.3.10", "resolved": "17.1.17",
"contentHash": "NH9bg8BROqRrTp6YLpPDsJrfNDzRWNmP63fQ68CBAM+i7YHi6wcPeOkxyKpoemUxKEY4QECuicaTblJnxgbWmA==", "contentHash": "0DLq44k4CVvfXcWHE4uigQa/wySOzxOTnWg50j2qZDpWzl9OP7QfIDJo39X3ffEjaVcCUFcbF9xAmm7fRX/q2g==",
"dependencies": { "dependencies": {
"DynamicData": "7.4.3", "DynamicData": "7.4.9",
"Splat": "13.1.42" "Splat": "14.1.17"
} }
}, },
"ReactiveUI.Validation": { "ReactiveUI.Validation": {
@ -194,15 +194,15 @@
}, },
"Avalonia.Remote.Protocol": { "Avalonia.Remote.Protocol": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "kID2N/cXg7KCGFYFTOWCvSLt+oMFRApLfLcbLU35keC/jwDi9tFk33CEdo81hBEg15lAtTtCfvHhNPyVyIYijQ==" "contentHash": "ArrxniR8iShzMvXCS3vt5FXg9Fv3qK1UKzJwsSsY9iCuC8wKo2eevRj42qOhMCS98POTH5v8aUZBeoLlENa0vA=="
}, },
"Avalonia.Skia": { "Avalonia.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "4bP5V3BpnZ+If2/ZrZofeRsINeZ6gemLjfNyElt7vNF4HZaRfot03anO3Y+Z7mTELjuol6n/5lAL4+kQUN/O/w==", "contentHash": "3TGo8RLHaLqmU3chlyAqLkpw6vImfDMC30T18abpeYf1PIsNckRB+UFp12GDil9t/J9YB17zn4H6N+2plF4gZA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"HarfBuzzSharp": "2.8.2-preview.178", "HarfBuzzSharp": "2.8.2-preview.178",
"HarfBuzzSharp.NativeAssets.Linux": "2.8.2-preview.178", "HarfBuzzSharp.NativeAssets.Linux": "2.8.2-preview.178",
"HarfBuzzSharp.NativeAssets.WebAssembly": "2.8.2-preview.178", "HarfBuzzSharp.NativeAssets.WebAssembly": "2.8.2-preview.178",
@ -436,10 +436,10 @@
}, },
"Microsoft.Win32.SystemEvents": { "Microsoft.Win32.SystemEvents": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "4.5.0",
"contentHash": "Bh6blKG8VAKvXiLe2L+sEsn62nc1Ij34MrNxepD2OCrS5cpCwQa9MeLyhVQPQ/R4Wlzwuy6wMK8hLb11QPDRsQ==", "contentHash": "LuI1oG+24TUj1ZRQQjM5Ew73BKnZE5NZ/7eAdh1o8ST5dPhUnJvIkiIn2re3MwnkRy6ELRnvEbBxHP8uALKhJw==",
"dependencies": { "dependencies": {
"Microsoft.NETCore.Platforms": "5.0.0" "Microsoft.NETCore.Platforms": "2.0.0"
} }
}, },
"NETStandard.Library": { "NETStandard.Library": {
@ -686,8 +686,8 @@
}, },
"ShimSkiaSharp": { "ShimSkiaSharp": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "a04YHHKRK1xY8ccSgpa6HOmOw9Kuivo2b2qejp9CK00ykdCBK3Mmc+ekBx954+zPQBksN6aLhvn1SEL7QG2s8Q==" "contentHash": "oUGM7gQHRzbGPRs3E1pe5e8VwML21YyEz9xdo+r2ov1mAqSDPyXErVQP6pN4gnfYMVf5ADR7BVkVzt4R9Iz3gQ=="
}, },
"SkiaSharp.HarfBuzz": { "SkiaSharp.HarfBuzz": {
"type": "Transitive", "type": "Transitive",
@ -723,16 +723,15 @@
}, },
"Splat": { "Splat": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.1.42", "resolved": "14.1.17",
"contentHash": "a/NkGyoSsmvH2YZGgjFxt0dsXkRTgQRMgoUDN8WpBhTUr3wnPTdeQTOLLr2Jc/BCAdOA7cK2+E4Io8I1/q3f3Q==" "contentHash": "orBlJcQS4b1VZUlT+sJIensH0MsTYyCJlStT6bRwt71OFqNYD6V1SpkoIt6vKSf8YXgDT7QH/LuwWdLfTyHPrw=="
}, },
"Svg.Custom": { "Svg.Custom": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "8OEW3UKx07JfEyqzzvF5+ycydusZjg6jsBjDSBrAoq62c5gNZrs6brlOKm2ywEj9hObK3sLcat5BHnE2OUHXsg==", "contentHash": "kmjLQf5U5WC7tRGBedUhtrOUCR0NaNL2auzOA2a/oMwEA0Bjrpd6qvMTpJUS3HITxi8vJazGl270K+i0JvdJog==",
"dependencies": { "dependencies": {
"Fizzler": "1.2.0", "Fizzler": "1.2.0",
"System.Drawing.Common": "5.0.0",
"System.Memory": "4.5.3", "System.Memory": "4.5.3",
"System.ObjectModel": "4.3.0", "System.ObjectModel": "4.3.0",
"System.ValueTuple": "4.5.0" "System.ValueTuple": "4.5.0"
@ -740,22 +739,22 @@
}, },
"Svg.Model": { "Svg.Model": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "5/Y+BGjgTwobA9aDfcpTGF/bm83MYrEYM8J1LpPohRR+c+B/1N+rbSXfpDZq2omBJ1O0Sa5VjAXw1oAdm1lYLg==", "contentHash": "/CPiXIugg4oVyYlQr26fB1X9iQfICALF8AJXbTWnXGoP2WZa1t6aZbAXPk3HoPApA0w5waf3XXkBiYYnWwawaQ==",
"dependencies": { "dependencies": {
"ShimSkiaSharp": "0.5.11", "ShimSkiaSharp": "0.5.12",
"Svg.Custom": "0.5.11" "Svg.Custom": "0.5.12"
} }
}, },
"Svg.Skia": { "Svg.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "AiN5rSsYBzBUkoh8YK5HoNxRxHtUekp2/6ZAol8qV8oDr6vu8hmPuWjUDwvqCFMi9Dlllc6YsFfvJ1PZCJvYew==", "contentHash": "KjKpjz0FKge+WpRzjD1bqywAW3vZhXwpR5c7Ej5OuP4xDrQjBwtFeB0iZ+yEJMzwXf/Rs4ImuN8m3bmBDJvMHg==",
"dependencies": { "dependencies": {
"SkiaSharp": "2.88.0-preview.178", "SkiaSharp": "2.88.0-preview.178",
"SkiaSharp.HarfBuzz": "2.88.0-preview.178", "SkiaSharp.HarfBuzz": "2.88.0-preview.178",
"Svg.Custom": "0.5.11", "Svg.Custom": "0.5.12",
"Svg.Model": "0.5.11" "Svg.Model": "0.5.12"
} }
}, },
"System.AppContext": { "System.AppContext": {
@ -947,10 +946,11 @@
}, },
"System.Drawing.Common": { "System.Drawing.Common": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "4.5.0",
"contentHash": "SztFwAnpfKC8+sEKXAFxCBWhKQaEd97EiOL7oZJZP56zbqnLpmxACWA8aGseaUExciuEAUuR9dY8f7HkTRAdnw==", "contentHash": "AiJFxxVPdeITstiRS5aAu8+8Dpf5NawTMoapZ53Gfirml24p7HIfhjmCRxdXnmmf3IUA3AX3CcW7G73CjWxW/Q==",
"dependencies": { "dependencies": {
"Microsoft.Win32.SystemEvents": "5.0.0" "Microsoft.NETCore.Platforms": "2.0.0",
"Microsoft.Win32.SystemEvents": "4.5.0"
} }
}, },
"System.Dynamic.Runtime": { "System.Dynamic.Runtime": {

View File

@ -10,15 +10,15 @@
<None Remove=".gitignore" /> <None Remove=".gitignore" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia" Version="0.10.11" /> <PackageReference Include="Avalonia" Version="0.10.12" />
<PackageReference Include="Avalonia.Desktop" Version="0.10.11" /> <PackageReference Include="Avalonia.Desktop" Version="0.10.12" />
<!--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.-->
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="0.10.11" /> <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="0.10.12" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.11" /> <PackageReference Include="Avalonia.ReactiveUI" Version="0.10.12" />
<PackageReference Include="Avalonia.Win32" Version="0.10.11" /> <PackageReference Include="Avalonia.Win32" Version="0.10.12" />
<PackageReference Include="Microsoft.Win32" Version="2.0.1" /> <PackageReference Include="Microsoft.Win32" Version="2.0.1" />
<PackageReference Include="RawInput.Sharp" Version="0.0.4" /> <PackageReference Include="RawInput.Sharp" Version="0.0.4" />
<PackageReference Include="ReactiveUI" Version="16.3.10" /> <PackageReference Include="ReactiveUI" Version="17.1.17" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\Artemis.Core\Artemis.Core.csproj" /> <ProjectReference Include="..\..\Artemis.Core\Artemis.Core.csproj" />

View File

@ -4,11 +4,11 @@
"net6.0-windows7.0": { "net6.0-windows7.0": {
"Avalonia": { "Avalonia": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "2PSE+dB4vGJfG+1M+y+Hwaxiqze5mbBTTG9hjwc2Z3U/9yJE/GThBEst2WwI0yBt13hsfAfbABzt1PA3mtbFdw==", "contentHash": "ftI5uGBFvWJpizGc6PT6lOb6FiO8AWcSYS9N4FWvXgOvuqWuTgmjwURPUkvajpeaQLKOOea6AbgotSyhV8NNoQ==",
"dependencies": { "dependencies": {
"Avalonia.Remote.Protocol": "0.10.11", "Avalonia.Remote.Protocol": "0.10.12",
"JetBrains.Annotations": "10.3.0", "JetBrains.Annotations": "10.3.0",
"System.ComponentModel.Annotations": "4.5.0", "System.ComponentModel.Annotations": "4.5.0",
"System.Memory": "4.5.3", "System.Memory": "4.5.3",
@ -19,47 +19,47 @@
}, },
"Avalonia.Desktop": { "Avalonia.Desktop": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "PQTl4lm7IZidzltMwC7RSNaoz7TYNznU8SKa/WaAI6ycMzC0On2DsqiL1dXr6WhYzMazyMJj6kBhiQzHIc1lIQ==", "contentHash": "wy4k1uarrmZJSJENCe1hjNpdCJWhup0gt6KA2TtZILfGG7imj+an5IuQZUSXtA7cl7A+6tF6lPQLo82gESUlXQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Native": "0.10.11", "Avalonia.Native": "0.10.12",
"Avalonia.Skia": "0.10.11", "Avalonia.Skia": "0.10.12",
"Avalonia.Win32": "0.10.11", "Avalonia.Win32": "0.10.12",
"Avalonia.X11": "0.10.11" "Avalonia.X11": "0.10.12"
} }
}, },
"Avalonia.Diagnostics": { "Avalonia.Diagnostics": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "xBvBkF2DBKjddAfQbExd660zQ5RaDEXH1JgAdMyYOdu3qFL6d+QHyZdVHVeQFilNYE03F6C8AbMWrmj6dBUNlg==", "contentHash": "Pf9DGiSwl3+gPrRSHKFzDG20I9QJ5P1g6BexLKfHQH9+Cmax+a/UEVYQq4hGn0xhrmpuLYOeGHb8wasjAT4EfQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Controls.DataGrid": "0.10.11", "Avalonia.Controls.DataGrid": "0.10.12",
"Microsoft.CodeAnalysis.CSharp.Scripting": "3.4.0", "Microsoft.CodeAnalysis.CSharp.Scripting": "3.4.0",
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
}, },
"Avalonia.ReactiveUI": { "Avalonia.ReactiveUI": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "I/++/4Halsx9HIp99nBwB2nIMrI9zw2M8wDcK1HaYVMKU+m3KFA9w+DfV7g/wEceWSMeX7yAvUjRnaUYtBO08Q==", "contentHash": "dOszpMtBKEACAFWtjwNibXMF2SBolJ3cV8ffDEOy2uuwjKBJqbSmHH+WSnui9KfbSF2igVpam4TqO6drJuEvjw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"ReactiveUI": "13.2.10", "ReactiveUI": "13.2.10",
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
}, },
"Avalonia.Win32": { "Avalonia.Win32": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "bckqh8rnQ4+l2kdU4njO3cBKaT4l1HQkxdVYJLAgl44uMtoCpaN7EidrBTnuM40DXa0cpvOh97A+G8jpZgte6Q==", "contentHash": "CnC65T8ScMK23BB+qJuiMicWQ5QIEiinnRzPqvAGUGyQbjIGpA5uOCKwzsOjUmzkhGqt31iDR0/Y3ZFbi5Mjog==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Angle.Windows.Natives": "2.1.0.2020091801", "Avalonia.Angle.Windows.Natives": "2.1.0.2020091801",
"System.Drawing.Common": "4.5.0", "System.Drawing.Common": "4.5.0",
"System.Numerics.Vectors": "4.5.0" "System.Numerics.Vectors": "4.5.0"
@ -82,12 +82,12 @@
}, },
"ReactiveUI": { "ReactiveUI": {
"type": "Direct", "type": "Direct",
"requested": "[16.3.10, )", "requested": "[17.1.17, )",
"resolved": "16.3.10", "resolved": "17.1.17",
"contentHash": "NH9bg8BROqRrTp6YLpPDsJrfNDzRWNmP63fQ68CBAM+i7YHi6wcPeOkxyKpoemUxKEY4QECuicaTblJnxgbWmA==", "contentHash": "0DLq44k4CVvfXcWHE4uigQa/wySOzxOTnWg50j2qZDpWzl9OP7QfIDJo39X3ffEjaVcCUFcbF9xAmm7fRX/q2g==",
"dependencies": { "dependencies": {
"DynamicData": "7.4.3", "DynamicData": "7.4.9",
"Splat": "13.1.42" "Splat": "14.1.17"
} }
}, },
"Avalonia.Angle.Windows.Natives": { "Avalonia.Angle.Windows.Natives": {
@ -97,51 +97,51 @@
}, },
"Avalonia.Controls.DataGrid": { "Avalonia.Controls.DataGrid": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "zvt6QA2uwe18gJ/XdnSMTHG6L/2usvjoaAdPC+Lgg+DmUPNTjqN+Hm1l0AjUtNNId6G+4iIkysiZ2WiHPqGsEA==", "contentHash": "i3zM3P8PUY4FNhATZoFWkto3H66FcIrnJNMyOsl1fN0FPS6meysAwCKQwuou/oapyzZEODeAmCVdqB0AgjNHVw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Remote.Protocol": "0.10.11", "Avalonia.Remote.Protocol": "0.10.12",
"JetBrains.Annotations": "10.3.0", "JetBrains.Annotations": "10.3.0",
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
}, },
"Avalonia.Controls.PanAndZoom": { "Avalonia.Controls.PanAndZoom": {
"type": "Transitive", "type": "Transitive",
"resolved": "10.11.1", "resolved": "10.12.0",
"contentHash": "XIjA3iGHMfokPXw/ov5CqKKPR8HdVrTBOMYJVOGpDQyec6RwI/w7lq530wfIMebIe9xUj5RY2Jx5heQtCuAFmg==", "contentHash": "ns+2tJTXTpNzNA9YV2mjR4EJOZl2vBFWnGUTSIl/vyOQMrrU5CbsXQxy2MFBvW0vGrRTlw80nUtBnsT759kwKQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11" "Avalonia": "0.10.12"
} }
}, },
"Avalonia.FreeDesktop": { "Avalonia.FreeDesktop": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "cj8T11WQ5/opR2IPttb1Bo89aHclkuvHYsCB7HzZU/F7l/cKXbKUOhyo60p44BdFzrCqjNXDnKQbxeRv+OSF7A==", "contentHash": "j42uWCWkAfZchYPrdRccr4mjB0kppSby3TEMCuNrp9GcQi+JhEPEbBAohU7FpR4bkv5FF2KAlDX5WiG2T+04kg==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Tmds.DBus": "0.9.0" "Tmds.DBus": "0.9.0"
} }
}, },
"Avalonia.Native": { "Avalonia.Native": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "9fBC9UArVXEmsxL2Nd0KHGoZUCqcTo06NTlOTAeM3qdEWzE8a0qRVYiR2WeYfADXpKR1D/fQz5zWUZcebFYFIA==", "contentHash": "JnZc0zF7DcLcSX+SdnKQGzFa9mcKxawhTN8S3aiN8Eh3MZAKxa45LRrHFVTcHcy2jU4kOw+yPfONUmHpRcC0gw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11" "Avalonia": "0.10.12"
} }
}, },
"Avalonia.Remote.Protocol": { "Avalonia.Remote.Protocol": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "kID2N/cXg7KCGFYFTOWCvSLt+oMFRApLfLcbLU35keC/jwDi9tFk33CEdo81hBEg15lAtTtCfvHhNPyVyIYijQ==" "contentHash": "ArrxniR8iShzMvXCS3vt5FXg9Fv3qK1UKzJwsSsY9iCuC8wKo2eevRj42qOhMCS98POTH5v8aUZBeoLlENa0vA=="
}, },
"Avalonia.Skia": { "Avalonia.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "4bP5V3BpnZ+If2/ZrZofeRsINeZ6gemLjfNyElt7vNF4HZaRfot03anO3Y+Z7mTELjuol6n/5lAL4+kQUN/O/w==", "contentHash": "3TGo8RLHaLqmU3chlyAqLkpw6vImfDMC30T18abpeYf1PIsNckRB+UFp12GDil9t/J9YB17zn4H6N+2plF4gZA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"HarfBuzzSharp": "2.8.2-preview.178", "HarfBuzzSharp": "2.8.2-preview.178",
"HarfBuzzSharp.NativeAssets.Linux": "2.8.2-preview.178", "HarfBuzzSharp.NativeAssets.Linux": "2.8.2-preview.178",
"HarfBuzzSharp.NativeAssets.WebAssembly": "2.8.2-preview.178", "HarfBuzzSharp.NativeAssets.WebAssembly": "2.8.2-preview.178",
@ -152,50 +152,50 @@
}, },
"Avalonia.Svg.Skia": { "Avalonia.Svg.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "Zw1kfOWN7ZaMqnoJsKqvU/8GxGbrv4KrkAbbLVHvhZl4sA0VZEjqdtxUAqSHlJrYtjPfaUzzDP9K3l0KCqnx/Q==", "contentHash": "qsXKdm5eWpfoVPe0xgtxhbOYlhG8QdbYNJZTTihg/c4iPFYuh1G7DldiNskuVFuGiGxLVZ0g6ebql7ZkwbO1pA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Skia": "0.10.11", "Avalonia.Skia": "0.10.12",
"SkiaSharp": "2.88.0-preview.178", "SkiaSharp": "2.88.0-preview.178",
"Svg.Skia": "0.5.11" "Svg.Skia": "0.5.12"
} }
}, },
"Avalonia.X11": { "Avalonia.X11": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "joPVaMmPy4bC1STSk5+fAn5zZOT3gz4m/YSv6io3p2q68kEbc+d5KaYk/KcqA/WGiBBQx4a0ViPW/IRomI94kw==", "contentHash": "mUY1cF1p86/UgLl1cbSmY3nVIatKQsSCDOH4avssL07xmKlRfB2G7Gi8jlhWNkLJTLL7iQp/u3X6bv7bs+0zNQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.FreeDesktop": "0.10.11", "Avalonia.FreeDesktop": "0.10.12",
"Avalonia.Skia": "0.10.11" "Avalonia.Skia": "0.10.12"
} }
}, },
"Avalonia.Xaml.Behaviors": { "Avalonia.Xaml.Behaviors": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11.5", "resolved": "0.10.12",
"contentHash": "XHU7/hRYWEdaJOs+weT9ml9/GYqroPrAtePjGzUzUrMoHESbqmkLXmW+fHkaAeXRMJAOAFD1LQUHQu+B6ThF3w==", "contentHash": "upv7v1gZ31tCukw/KA1bB5+z29QuEWiZJ4KnW10daHlia1ru7q4lUJ/vCYKOy5L+zyi1MQg98SNYjRp5C64ZhQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Xaml.Interactions": "0.10.11.5", "Avalonia.Xaml.Interactions": "0.10.12",
"Avalonia.Xaml.Interactivity": "0.10.11.5" "Avalonia.Xaml.Interactivity": "0.10.12"
} }
}, },
"Avalonia.Xaml.Interactions": { "Avalonia.Xaml.Interactions": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11.5", "resolved": "0.10.12",
"contentHash": "MpqS1t1zypDNEW2Pyg113W4AwmfaWai5LfA/K22sDbygXII+KuACaHt2ZPHJWnvKGHgasLEEFhEOGfF5cB9NPA==", "contentHash": "PSohbY4aQGiJVWfvLKkuUE71ZxvZ0/FuTc3Y5GJgTC41kCgeaiJTczkC2FjW5sZ8exPDabSp+ZukSsnm/z6y7A==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Xaml.Interactivity": "0.10.11.5" "Avalonia.Xaml.Interactivity": "0.10.12"
} }
}, },
"Avalonia.Xaml.Interactivity": { "Avalonia.Xaml.Interactivity": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11.5", "resolved": "0.10.12",
"contentHash": "MOM6lcPenJZu9LPhai3n67GssBUx3MjoCVLyR2GEJ6lywKQgk4MKOIAC0gLWgy7x1e540oy4lCpeX8jMsqe7mA==", "contentHash": "uey4LjyIds78igMe7AZ072RI6GpO16sd6+6XF6LG0oE07De7ei0So14oOs4wLS4WJyaKDRSUK6PuhLaY1zIZdQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11" "Avalonia": "0.10.12"
} }
}, },
"Castle.Core": { "Castle.Core": {
@ -452,10 +452,10 @@
}, },
"Microsoft.Win32.SystemEvents": { "Microsoft.Win32.SystemEvents": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "4.5.0",
"contentHash": "Bh6blKG8VAKvXiLe2L+sEsn62nc1Ij34MrNxepD2OCrS5cpCwQa9MeLyhVQPQ/R4Wlzwuy6wMK8hLb11QPDRsQ==", "contentHash": "LuI1oG+24TUj1ZRQQjM5Ew73BKnZE5NZ/7eAdh1o8ST5dPhUnJvIkiIn2re3MwnkRy6ELRnvEbBxHP8uALKhJw==",
"dependencies": { "dependencies": {
"Microsoft.NETCore.Platforms": "5.0.0" "Microsoft.NETCore.Platforms": "2.0.0"
} }
}, },
"NETStandard.Library": { "NETStandard.Library": {
@ -715,8 +715,8 @@
}, },
"ShimSkiaSharp": { "ShimSkiaSharp": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "a04YHHKRK1xY8ccSgpa6HOmOw9Kuivo2b2qejp9CK00ykdCBK3Mmc+ekBx954+zPQBksN6aLhvn1SEL7QG2s8Q==" "contentHash": "oUGM7gQHRzbGPRs3E1pe5e8VwML21YyEz9xdo+r2ov1mAqSDPyXErVQP6pN4gnfYMVf5ADR7BVkVzt4R9Iz3gQ=="
}, },
"SkiaSharp": { "SkiaSharp": {
"type": "Transitive", "type": "Transitive",
@ -776,11 +776,10 @@
}, },
"Svg.Custom": { "Svg.Custom": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "8OEW3UKx07JfEyqzzvF5+ycydusZjg6jsBjDSBrAoq62c5gNZrs6brlOKm2ywEj9hObK3sLcat5BHnE2OUHXsg==", "contentHash": "kmjLQf5U5WC7tRGBedUhtrOUCR0NaNL2auzOA2a/oMwEA0Bjrpd6qvMTpJUS3HITxi8vJazGl270K+i0JvdJog==",
"dependencies": { "dependencies": {
"Fizzler": "1.2.0", "Fizzler": "1.2.0",
"System.Drawing.Common": "5.0.0",
"System.Memory": "4.5.3", "System.Memory": "4.5.3",
"System.ObjectModel": "4.3.0", "System.ObjectModel": "4.3.0",
"System.ValueTuple": "4.5.0" "System.ValueTuple": "4.5.0"
@ -788,22 +787,22 @@
}, },
"Svg.Model": { "Svg.Model": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "5/Y+BGjgTwobA9aDfcpTGF/bm83MYrEYM8J1LpPohRR+c+B/1N+rbSXfpDZq2omBJ1O0Sa5VjAXw1oAdm1lYLg==", "contentHash": "/CPiXIugg4oVyYlQr26fB1X9iQfICALF8AJXbTWnXGoP2WZa1t6aZbAXPk3HoPApA0w5waf3XXkBiYYnWwawaQ==",
"dependencies": { "dependencies": {
"ShimSkiaSharp": "0.5.11", "ShimSkiaSharp": "0.5.12",
"Svg.Custom": "0.5.11" "Svg.Custom": "0.5.12"
} }
}, },
"Svg.Skia": { "Svg.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "AiN5rSsYBzBUkoh8YK5HoNxRxHtUekp2/6ZAol8qV8oDr6vu8hmPuWjUDwvqCFMi9Dlllc6YsFfvJ1PZCJvYew==", "contentHash": "KjKpjz0FKge+WpRzjD1bqywAW3vZhXwpR5c7Ej5OuP4xDrQjBwtFeB0iZ+yEJMzwXf/Rs4ImuN8m3bmBDJvMHg==",
"dependencies": { "dependencies": {
"SkiaSharp": "2.88.0-preview.178", "SkiaSharp": "2.88.0-preview.178",
"SkiaSharp.HarfBuzz": "2.88.0-preview.178", "SkiaSharp.HarfBuzz": "2.88.0-preview.178",
"Svg.Custom": "0.5.11", "Svg.Custom": "0.5.12",
"Svg.Model": "0.5.11" "Svg.Model": "0.5.12"
} }
}, },
"System.AppContext": { "System.AppContext": {
@ -995,10 +994,11 @@
}, },
"System.Drawing.Common": { "System.Drawing.Common": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "4.5.0",
"contentHash": "SztFwAnpfKC8+sEKXAFxCBWhKQaEd97EiOL7oZJZP56zbqnLpmxACWA8aGseaUExciuEAUuR9dY8f7HkTRAdnw==", "contentHash": "AiJFxxVPdeITstiRS5aAu8+8Dpf5NawTMoapZ53Gfirml24p7HIfhjmCRxdXnmmf3IUA3AX3CcW7G73CjWxW/Q==",
"dependencies": { "dependencies": {
"Microsoft.Win32.SystemEvents": "5.0.0" "Microsoft.NETCore.Platforms": "2.0.0",
"Microsoft.Win32.SystemEvents": "4.5.0"
} }
}, },
"System.Dynamic.Runtime": { "System.Dynamic.Runtime": {
@ -1762,12 +1762,12 @@
"dependencies": { "dependencies": {
"Artemis.Core": "1.0.0", "Artemis.Core": "1.0.0",
"Artemis.UI.Shared": "1.0.0", "Artemis.UI.Shared": "1.0.0",
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Controls.PanAndZoom": "10.11.1", "Avalonia.Controls.PanAndZoom": "10.12.0",
"Avalonia.Desktop": "0.10.11", "Avalonia.Desktop": "0.10.12",
"Avalonia.Diagnostics": "0.10.11", "Avalonia.Diagnostics": "0.10.12",
"Avalonia.ReactiveUI": "0.10.11", "Avalonia.ReactiveUI": "0.10.12",
"Avalonia.Svg.Skia": "0.10.11", "Avalonia.Svg.Skia": "0.10.12",
"DynamicData": "7.4.9", "DynamicData": "7.4.9",
"FluentAvaloniaUI": "1.1.8", "FluentAvaloniaUI": "1.1.8",
"Flurl.Http": "3.2.0", "Flurl.Http": "3.2.0",
@ -1775,7 +1775,7 @@
"Material.Icons.Avalonia": "1.0.2", "Material.Icons.Avalonia": "1.0.2",
"RGB.NET.Core": "1.0.0-prerelease7", "RGB.NET.Core": "1.0.0-prerelease7",
"RGB.NET.Layout": "1.0.0-prerelease7", "RGB.NET.Layout": "1.0.0-prerelease7",
"ReactiveUI": "16.3.10", "ReactiveUI": "17.1.17",
"ReactiveUI.Validation": "2.2.1", "ReactiveUI.Validation": "2.2.1",
"SkiaSharp": "2.88.0-preview.178", "SkiaSharp": "2.88.0-preview.178",
"Splat.Ninject": "14.1.17" "Splat.Ninject": "14.1.17"
@ -1785,17 +1785,17 @@
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Artemis.Core": "1.0.0", "Artemis.Core": "1.0.0",
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.ReactiveUI": "0.10.11", "Avalonia.ReactiveUI": "0.10.12",
"Avalonia.Svg.Skia": "0.10.11", "Avalonia.Svg.Skia": "0.10.12",
"Avalonia.Xaml.Behaviors": "0.10.11.5", "Avalonia.Xaml.Behaviors": "0.10.12",
"Avalonia.Xaml.Interactions": "0.10.11.5", "Avalonia.Xaml.Interactions": "0.10.12",
"Avalonia.Xaml.Interactivity": "0.10.11.5", "Avalonia.Xaml.Interactivity": "0.10.12",
"DynamicData": "7.4.9", "DynamicData": "7.4.9",
"FluentAvaloniaUI": "1.1.8", "FluentAvaloniaUI": "1.1.8",
"Material.Icons.Avalonia": "1.0.2", "Material.Icons.Avalonia": "1.0.2",
"RGB.NET.Core": "1.0.0-prerelease7", "RGB.NET.Core": "1.0.0-prerelease7",
"ReactiveUI": "16.3.10", "ReactiveUI": "17.1.17",
"ReactiveUI.Validation": "2.2.1", "ReactiveUI.Validation": "2.2.1",
"SkiaSharp": "2.88.0-preview.178" "SkiaSharp": "2.88.0-preview.178"
} }

View File

@ -15,18 +15,18 @@
<None Remove="Assets\Images\Logo\application.ico" /> <None Remove="Assets\Images\Logo\application.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia" Version="0.10.11" /> <PackageReference Include="Avalonia" Version="0.10.12" />
<PackageReference Include="Avalonia.Controls.PanAndZoom" Version="10.11.1" /> <PackageReference Include="Avalonia.Controls.PanAndZoom" Version="10.12.0" />
<PackageReference Include="Avalonia.Desktop" Version="0.10.11" /> <PackageReference Include="Avalonia.Desktop" Version="0.10.12" />
<PackageReference Include="Avalonia.Diagnostics" Version="0.10.11" /> <PackageReference Include="Avalonia.Diagnostics" Version="0.10.12" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.11" /> <PackageReference Include="Avalonia.ReactiveUI" Version="0.10.12" />
<PackageReference Include="Avalonia.Svg.Skia" Version="0.10.11" /> <PackageReference Include="Avalonia.Svg.Skia" Version="0.10.12" />
<PackageReference Include="DynamicData" Version="7.4.9" /> <PackageReference Include="DynamicData" Version="7.4.9" />
<PackageReference Include="FluentAvaloniaUI" Version="1.1.8" /> <PackageReference Include="FluentAvaloniaUI" Version="1.1.8" />
<PackageReference Include="Flurl.Http" Version="3.2.0" /> <PackageReference Include="Flurl.Http" Version="3.2.0" />
<PackageReference Include="Live.Avalonia" Version="1.3.1" /> <PackageReference Include="Live.Avalonia" Version="1.3.1" />
<PackageReference Include="Material.Icons.Avalonia" Version="1.0.2" /> <PackageReference Include="Material.Icons.Avalonia" Version="1.0.2" />
<PackageReference Include="ReactiveUI" Version="16.3.10" /> <PackageReference Include="ReactiveUI" Version="17.1.17" />
<PackageReference Include="ReactiveUI.Validation" Version="2.2.1" /> <PackageReference Include="ReactiveUI.Validation" Version="2.2.1" />
<PackageReference Include="RGB.NET.Core" Version="1.0.0-prerelease7" /> <PackageReference Include="RGB.NET.Core" Version="1.0.0-prerelease7" />
<PackageReference Include="RGB.NET.Layout" Version="1.0.0-prerelease7" /> <PackageReference Include="RGB.NET.Layout" Version="1.0.0-prerelease7" />
@ -50,6 +50,9 @@
<Resource Include="Assets\Images\Logo\bow.svg" /> <Resource Include="Assets\Images\Logo\bow.svg" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Update="DefaultTypes\PropertyInput\StringPropertyInputView.axaml.cs">
<DependentUpon>StringPropertyInputView.xaml</DependentUpon>
</Compile>
<Compile Update="Screens\ProfileEditor\Panels\Properties\PropertiesView.axaml.cs"> <Compile Update="Screens\ProfileEditor\Panels\Properties\PropertiesView.axaml.cs">
<DependentUpon>PropertiesView.axaml</DependentUpon> <DependentUpon>PropertiesView.axaml</DependentUpon>
</Compile> </Compile>
@ -57,4 +60,9 @@
<ItemGroup> <ItemGroup>
<Folder Include="DefaultTypes\DataModel\Display\" /> <Folder Include="DefaultTypes\DataModel\Display\" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<AvaloniaXaml Update="DefaultTypes\PropertyInput\StringPropertyInputView.axaml">
<Generator>MSBuild:Compile</Generator>
</AvaloniaXaml>
</ItemGroup>
</Project> </Project>

View File

@ -8,7 +8,10 @@
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Artemis.UI.DefaultTypes.PropertyInput.FloatPropertyInputView" x:Class="Artemis.UI.DefaultTypes.PropertyInput.FloatPropertyInputView"
x:DataType="propertyInput:FloatPropertyInputViewModel"> x:DataType="propertyInput:FloatPropertyInputViewModel">
<controls:NumberBox Classes="condensed" <UserControl.Styles>
<StyleInclude Source="/DefaultTypes/PropertyInput/PropertyInputStyles.axaml" />
</UserControl.Styles>
<controls:NumberBox Classes="condensed tooltip-validation-left"
MinWidth="80" MinWidth="80"
Value="{CompiledBinding InputValue}" Value="{CompiledBinding InputValue}"
SmallChange="{Binding LayerProperty.PropertyDescription.InputStepSize}" SmallChange="{Binding LayerProperty.PropertyDescription.InputStepSize}"
@ -16,5 +19,5 @@
SimpleNumberFormat="F3" SimpleNumberFormat="F3"
VerticalAlignment="Center" VerticalAlignment="Center"
shared:NumberBoxAssist.PrefixText="{CompiledBinding Prefix}" shared:NumberBoxAssist.PrefixText="{CompiledBinding Prefix}"
shared:NumberBoxAssist.SuffixText="{CompiledBinding Affix}"/> shared:NumberBoxAssist.SuffixText="{CompiledBinding Affix}" />
</UserControl> </UserControl>

View File

@ -14,7 +14,7 @@ public class FloatPropertyInputViewModel : PropertyInputViewModel<float>
this.ValidationRule(vm => vm.InputValue, i => i >= (float) LayerProperty.PropertyDescription.MinInputValue, this.ValidationRule(vm => vm.InputValue, i => i >= (float) LayerProperty.PropertyDescription.MinInputValue,
$"Value must be equal to or greater than {LayerProperty.PropertyDescription.MinInputValue}."); $"Value must be equal to or greater than {LayerProperty.PropertyDescription.MinInputValue}.");
if (LayerProperty.PropertyDescription.MaxInputValue.IsNumber()) if (LayerProperty.PropertyDescription.MaxInputValue.IsNumber())
this.ValidationRule(vm => vm.InputValue, i => i < (float) LayerProperty.PropertyDescription.MaxInputValue, this.ValidationRule(vm => vm.InputValue, i => i <= (float) LayerProperty.PropertyDescription.MaxInputValue,
$"Value must be smaller than {LayerProperty.PropertyDescription.MaxInputValue}."); $"Value must be smaller than {LayerProperty.PropertyDescription.MaxInputValue}.");
} }
} }

View File

@ -0,0 +1,52 @@
<Styles xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=System.Runtime"
xmlns:controls="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia">
<Design.PreviewWith>
<Border Padding="20" Width="600" Height="200">
<StackPanel Spacing="10">
<TextBox Classes="tooltip-validation-left" Text="Sample" VerticalAlignment="Top">
<DataValidationErrors.Error>
<system:Exception/>
</DataValidationErrors.Error>
</TextBox>
<controls:NumberBox Classes="tooltip-validation-left" Text="Sample" VerticalAlignment="Top">
<DataValidationErrors.Error>
<system:Exception/>
</DataValidationErrors.Error>
</controls:NumberBox>
</StackPanel>
</Border>
</Design.PreviewWith>
<Style Selector="DataValidationErrors">
<Style.Resources>
<ControlTemplate x:Key="TooltipDataValidationLeftContentTemplate" TargetType="DataValidationErrors">
<DockPanel LastChildFill="True">
<ContentControl Content="{Binding (DataValidationErrors.Errors)}"
ContentTemplate="{TemplateBinding ErrorTemplate}"
DataContext="{TemplateBinding Owner}"
DockPanel.Dock="Left"
IsVisible="{Binding (DataValidationErrors.HasErrors)}" />
<ContentPresenter Name="PART_ContentPresenter"
Padding="{TemplateBinding Padding}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}" />
</DockPanel>
</ControlTemplate>
</Style.Resources>
</Style>
<Style Selector="TextBox.tooltip-validation-left DataValidationErrors">
<Setter Property="Template" Value="{DynamicResource TooltipDataValidationLeftContentTemplate}" />
<Setter Property="ErrorTemplate" Value="{DynamicResource TooltipDataValidationErrorTemplate}" />
</Style>
<Style Selector="controls|NumberBox.tooltip-validation-left /template/ TextBox DataValidationErrors">
<Setter Property="Template" Value="{DynamicResource TooltipDataValidationLeftContentTemplate}" />
<Setter Property="ErrorTemplate" Value="{DynamicResource TooltipDataValidationErrorTemplate}" />
</Style>
</Styles>

View File

@ -0,0 +1,19 @@
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:shared="clr-namespace:Artemis.UI.Shared.AttachedProperties;assembly=Artemis.UI.Shared"
xmlns:propertyInput="clr-namespace:Artemis.UI.DefaultTypes.PropertyInput"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Artemis.UI.DefaultTypes.PropertyInput.StringPropertyInputView"
x:DataType="propertyInput:StringPropertyInputViewModel">
<UserControl.Styles>
<StyleInclude Source="/DefaultTypes/PropertyInput/PropertyInputStyles.axaml" />
</UserControl.Styles>
<TextBox Classes="condensed tooltip-validation-left"
MinWidth="80"
Text="{CompiledBinding InputValue}"
VerticalAlignment="Center"
shared:TextBoxAssist.PrefixText="{CompiledBinding Prefix}"
shared:TextBoxAssist.SuffixText="{CompiledBinding Affix}" />
</UserControl>

View File

@ -0,0 +1,25 @@
using Avalonia.Input;
using Avalonia.Markup.Xaml;
using Avalonia.ReactiveUI;
namespace Artemis.UI.DefaultTypes.PropertyInput;
public class StringPropertyInputView : ReactiveUserControl<FloatPropertyInputViewModel>
{
public StringPropertyInputView()
{
InitializeComponent();
AddHandler(KeyUpEvent, OnRoutedKeyUp, handledEventsToo: true);
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
private void OnRoutedKeyUp(object? sender, KeyEventArgs e)
{
if (e.Key == Key.Enter || e.Key == Key.Escape)
FocusManager.Instance!.Focus(null);
}
}

View File

@ -0,0 +1,13 @@
using Artemis.Core;
using Artemis.UI.Shared.Services.ProfileEditor;
using Artemis.UI.Shared.Services.PropertyInput;
namespace Artemis.UI.DefaultTypes.PropertyInput;
public class StringPropertyInputViewModel : PropertyInputViewModel<string>
{
public StringPropertyInputViewModel(LayerProperty<string> layerProperty, IProfileEditorService profileEditorService, IPropertyInputService propertyInputService)
: base(layerProperty, profileEditorService, propertyInputService)
{
}
}

View File

@ -10,6 +10,7 @@ using Artemis.UI.Screens.ProfileEditor.Properties;
using Artemis.UI.Screens.ProfileEditor.Properties.Timeline; using Artemis.UI.Screens.ProfileEditor.Properties.Timeline;
using Artemis.UI.Screens.ProfileEditor.Properties.Timeline.Segments; using Artemis.UI.Screens.ProfileEditor.Properties.Timeline.Segments;
using Artemis.UI.Screens.ProfileEditor.Properties.Tree; using Artemis.UI.Screens.ProfileEditor.Properties.Tree;
using Artemis.UI.Screens.ProfileEditor.VisualEditor.Visualizers;
using Artemis.UI.Screens.Settings; using Artemis.UI.Screens.Settings;
using Artemis.UI.Screens.Sidebar; using Artemis.UI.Screens.Sidebar;
using Artemis.UI.Screens.SurfaceEditor; using Artemis.UI.Screens.SurfaceEditor;
@ -64,6 +65,7 @@ namespace Artemis.UI.Ninject.Factories
ProfileEditorViewModel ProfileEditorViewModel(IScreen hostScreen); ProfileEditorViewModel ProfileEditorViewModel(IScreen hostScreen);
FolderTreeItemViewModel FolderTreeItemViewModel(TreeItemViewModel? parent, Folder folder); FolderTreeItemViewModel FolderTreeItemViewModel(TreeItemViewModel? parent, Folder folder);
LayerTreeItemViewModel LayerTreeItemViewModel(TreeItemViewModel? parent, Layer layer); LayerTreeItemViewModel LayerTreeItemViewModel(TreeItemViewModel? parent, Layer layer);
LayerVisualizerViewModel LayerVisualizerViewModel(Layer layer);
} }
public interface ILayerPropertyVmFactory : IVmFactory public interface ILayerPropertyVmFactory : IVmFactory

View File

@ -5,13 +5,13 @@ using Artemis.Core;
using Artemis.Core.Services; using Artemis.Core.Services;
using Artemis.UI.Shared; using Artemis.UI.Shared;
using Artemis.UI.Shared.Services.ProfileEditor; using Artemis.UI.Shared.Services.ProfileEditor;
using Avalonia.Threading;
using ReactiveUI; using ReactiveUI;
namespace Artemis.UI.Screens.ProfileEditor.Playback; namespace Artemis.UI.Screens.ProfileEditor.Playback;
public class PlaybackViewModel : ActivatableViewModelBase public class PlaybackViewModel : ActivatableViewModelBase
{ {
private readonly ICoreService _coreService;
private readonly IProfileEditorService _profileEditorService; private readonly IProfileEditorService _profileEditorService;
private readonly ISettingsService _settingsService; private readonly ISettingsService _settingsService;
private RenderProfileElement? _profileElement; private RenderProfileElement? _profileElement;
@ -21,10 +21,10 @@ public class PlaybackViewModel : ActivatableViewModelBase
private bool _repeating; private bool _repeating;
private bool _repeatTimeline; private bool _repeatTimeline;
private bool _repeatSegment; private bool _repeatSegment;
private DateTime _lastUpdate;
public PlaybackViewModel(ICoreService coreService, IProfileEditorService profileEditorService, ISettingsService settingsService) public PlaybackViewModel(IProfileEditorService profileEditorService, ISettingsService settingsService)
{ {
_coreService = coreService;
_profileEditorService = profileEditorService; _profileEditorService = profileEditorService;
_settingsService = settingsService; _settingsService = settingsService;
@ -35,12 +35,14 @@ public class PlaybackViewModel : ActivatableViewModelBase
_formattedCurrentTime = _profileEditorService.Time.Select(t => $"{Math.Floor(t.TotalSeconds):00}.{t.Milliseconds:000}").ToProperty(this, vm => vm.FormattedCurrentTime).DisposeWith(d); _formattedCurrentTime = _profileEditorService.Time.Select(t => $"{Math.Floor(t.TotalSeconds):00}.{t.Milliseconds:000}").ToProperty(this, vm => vm.FormattedCurrentTime).DisposeWith(d);
_playing = _profileEditorService.Playing.ToProperty(this, vm => vm.Playing).DisposeWith(d); _playing = _profileEditorService.Playing.ToProperty(this, vm => vm.Playing).DisposeWith(d);
Observable.FromEventPattern<FrameRenderingEventArgs>(x => coreService.FrameRendering += x, x => coreService.FrameRendering -= x) _lastUpdate = DateTime.MinValue;
.Subscribe(e => CoreServiceOnFrameRendering(e.EventArgs)) DispatcherTimer updateTimer = new(TimeSpan.FromMilliseconds(60.0 / 1000), DispatcherPriority.Render, Update);
.DisposeWith(d); updateTimer.Start();
Disposable.Create(() => updateTimer.Stop());
}); });
} }
public TimeSpan CurrentTime => _currentTime?.Value ?? TimeSpan.Zero; public TimeSpan CurrentTime => _currentTime?.Value ?? TimeSpan.Zero;
public string? FormattedCurrentTime => _formattedCurrentTime?.Value; public string? FormattedCurrentTime => _formattedCurrentTime?.Value;
public bool Playing => _playing?.Value ?? false; public bool Playing => _playing?.Value ?? false;
@ -163,12 +165,17 @@ public class PlaybackViewModel : ActivatableViewModelBase
return TimeSpan.Zero; return TimeSpan.Zero;
} }
private void CoreServiceOnFrameRendering(FrameRenderingEventArgs e) private void Update(object? sender, EventArgs e)
{
try
{ {
if (!Playing) if (!Playing)
return; return;
TimeSpan newTime = CurrentTime.Add(TimeSpan.FromSeconds(e.DeltaTime)); if (_lastUpdate == DateTime.MinValue)
_lastUpdate = DateTime.Now;
TimeSpan newTime = CurrentTime.Add(DateTime.Now - _lastUpdate);
if (_profileElement != null) if (_profileElement != null)
{ {
if (Repeating && RepeatTimeline) if (Repeating && RepeatTimeline)
@ -190,4 +197,9 @@ public class PlaybackViewModel : ActivatableViewModelBase
_profileEditorService.ChangeTime(newTime); _profileEditorService.ChangeTime(newTime);
} }
finally
{
_lastUpdate = DateTime.Now;
}
}
} }

View File

@ -37,8 +37,7 @@
<ContentControl Grid.Column="2" <ContentControl Grid.Column="2"
Margin="5 0" Margin="5 0"
Content="{Binding PropertyInputViewModel}" Content="{Binding PropertyInputViewModel}"/>
ToolTip.Tip="{Binding LayerProperty.PropertyDescription.Description}" />
<Button Grid.Column="3" <Button Grid.Column="3"
Margin="0 0 2 0" Margin="0 0 2 0"

View File

@ -12,9 +12,9 @@ namespace Artemis.UI.Screens.ProfileEditor.Properties.Tree;
internal class TreePropertyViewModel<T> : ActivatableViewModelBase, ITreePropertyViewModel internal class TreePropertyViewModel<T> : ActivatableViewModelBase, ITreePropertyViewModel
{ {
private readonly IProfileEditorService _profileEditorService; private readonly IProfileEditorService _profileEditorService;
private TimeSpan _time;
public TreePropertyViewModel(LayerProperty<T> layerProperty, PropertyViewModel propertyViewModel, IProfileEditorService profileEditorService, public TreePropertyViewModel(LayerProperty<T> layerProperty, PropertyViewModel propertyViewModel, IProfileEditorService profileEditorService, IPropertyInputService propertyInputService)
IPropertyInputService propertyInputService)
{ {
_profileEditorService = profileEditorService; _profileEditorService = profileEditorService;
@ -22,7 +22,11 @@ internal class TreePropertyViewModel<T> : ActivatableViewModelBase, ITreePropert
PropertyViewModel = propertyViewModel; PropertyViewModel = propertyViewModel;
PropertyInputViewModel = propertyInputService.CreatePropertyInputViewModel(LayerProperty); PropertyInputViewModel = propertyInputService.CreatePropertyInputViewModel(LayerProperty);
this.WhenActivated(d => this.WhenAnyValue(vm => vm.LayerProperty.KeyframesEnabled).Subscribe(_ => this.RaisePropertyChanged(nameof(KeyframesEnabled))).DisposeWith(d)); this.WhenActivated(d =>
{
_profileEditorService.Time.Subscribe(t => _time = t).DisposeWith(d);
this.WhenAnyValue(vm => vm.LayerProperty.KeyframesEnabled).Subscribe(_ => this.RaisePropertyChanged(nameof(KeyframesEnabled))).DisposeWith(d);
});
} }
public LayerProperty<T> LayerProperty { get; } public LayerProperty<T> LayerProperty { get; }
@ -40,7 +44,7 @@ internal class TreePropertyViewModel<T> : ActivatableViewModelBase, ITreePropert
if (value == LayerProperty.KeyframesEnabled) if (value == LayerProperty.KeyframesEnabled)
return; return;
_profileEditorService.ExecuteCommand(new ToggleLayerPropertyKeyframes<T>(LayerProperty, value)); _profileEditorService.ExecuteCommand(new ToggleLayerPropertyKeyframes<T>(LayerProperty, value, _time));
} }
public ILayerProperty BaseLayerProperty => LayerProperty; public ILayerProperty BaseLayerProperty => LayerProperty;

View File

@ -0,0 +1,6 @@
namespace Artemis.UI.Screens.ProfileEditor.VisualEditor.Tools
{
public interface IToolViewModel
{
}
}

View File

@ -25,6 +25,8 @@
<TransformOperationsTransition Property="RenderTransform" Duration="0:0:0.2" Easing="CubicEaseOut"/> <TransformOperationsTransition Property="RenderTransform" Duration="0:0:0.2" Easing="CubicEaseOut"/>
</Transitions> </Transitions>
</Grid.Transitions> </Grid.Transitions>
<!-- The bottom layer consists of devices -->
<ItemsControl Items="{CompiledBinding Devices}" ClipToBounds="False"> <ItemsControl Items="{CompiledBinding Devices}" ClipToBounds="False">
<ItemsControl.Styles> <ItemsControl.Styles>
<Style Selector="ContentPresenter"> <Style Selector="ContentPresenter">
@ -42,6 +44,24 @@
<controls:DeviceVisualizer Device="{Binding}" ShowColors="True" /> <controls:DeviceVisualizer Device="{Binding}" ShowColors="True" />
</DataTemplate> </DataTemplate>
</ItemsControl.ItemTemplate> </ItemsControl.ItemTemplate>
</ItemsControl>
<!-- The middle layer contains visualizers -->
<ItemsControl Items="{CompiledBinding Visualizers}" ClipToBounds="False">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<!-- The top layer contains tools -->
<ItemsControl Items="{CompiledBinding Tools}" ClipToBounds="False">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl> </ItemsControl>
</Grid> </Grid>
</paz:ZoomBorder> </paz:ZoomBorder>

View File

@ -3,28 +3,52 @@ using System.Collections.ObjectModel;
using System.Reactive.Disposables; using System.Reactive.Disposables;
using Artemis.Core; using Artemis.Core;
using Artemis.Core.Services; using Artemis.Core.Services;
using Artemis.UI.Ninject.Factories;
using Artemis.UI.Screens.ProfileEditor.VisualEditor.Tools;
using Artemis.UI.Screens.ProfileEditor.VisualEditor.Visualizers;
using Artemis.UI.Shared; using Artemis.UI.Shared;
using Artemis.UI.Shared.Services.ProfileEditor; using Artemis.UI.Shared.Services.ProfileEditor;
using ReactiveUI; using ReactiveUI;
namespace Artemis.UI.Screens.ProfileEditor.VisualEditor namespace Artemis.UI.Screens.ProfileEditor.VisualEditor;
public class VisualEditorViewModel : ActivatableViewModelBase
{ {
public class VisualEditorViewModel : ActivatableViewModelBase private readonly IProfileEditorVmFactory _vmFactory;
{ private ObservableAsPropertyHelper<ProfileConfiguration?>? _profileConfiguration;
private ProfileConfiguration? _profileConfiguration;
public VisualEditorViewModel(IProfileEditorService profileEditorService, IRgbService rgbService) public VisualEditorViewModel(IProfileEditorService profileEditorService, IRgbService rgbService, IProfileEditorVmFactory vmFactory)
{ {
_vmFactory = vmFactory;
Devices = new ObservableCollection<ArtemisDevice>(rgbService.EnabledDevices); Devices = new ObservableCollection<ArtemisDevice>(rgbService.EnabledDevices);
this.WhenActivated(d => profileEditorService.ProfileConfiguration.Subscribe(configuration => ProfileConfiguration = configuration).DisposeWith(d)); Visualizers = new ObservableCollection<IVisualizerViewModel>();
Tools = new ObservableCollection<IToolViewModel>();
this.WhenActivated(d =>
{
_profileConfiguration = profileEditorService.ProfileConfiguration.ToProperty(this, vm => vm.ProfileConfiguration).DisposeWith(d);
profileEditorService.ProfileConfiguration.Subscribe(CreateVisualizers).DisposeWith(d);
});
} }
public ProfileConfiguration? ProfileConfiguration public ProfileConfiguration? ProfileConfiguration => _profileConfiguration?.Value;
{
get => _profileConfiguration;
set => this.RaiseAndSetIfChanged(ref _profileConfiguration, value);
}
public ObservableCollection<ArtemisDevice> Devices { get; } public ObservableCollection<ArtemisDevice> Devices { get; }
public ObservableCollection<IVisualizerViewModel> Visualizers { get; set; }
public ObservableCollection<IToolViewModel> Tools { get; set; }
private void CreateVisualizers(ProfileConfiguration? profileConfiguration)
{
Visualizers.Clear();
if (profileConfiguration?.Profile == null)
return;
foreach (Layer layer in profileConfiguration.Profile.GetAllLayers())
CreateVisualizer(layer);
}
private void CreateVisualizer(Layer layer)
{
Visualizers.Add(_vmFactory.LayerVisualizerViewModel(layer));
} }
} }

View File

@ -0,0 +1,5 @@
namespace Artemis.UI.Screens.ProfileEditor.VisualEditor.Visualizers;
public interface IVisualizerViewModel
{
}

View File

@ -0,0 +1,23 @@
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:visualizers="clr-namespace:Artemis.UI.Screens.ProfileEditor.VisualEditor.Visualizers"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Artemis.UI.Screens.ProfileEditor.VisualEditor.Visualizers.LayerVisualizerView"
x:DataType="visualizers:LayerVisualizerViewModel">
<UserControl.Styles>
<Style Selector="Path.layer-visualizer">
<Setter Property="Stroke" Value="{StaticResource ButtonBorderBrushDisabled}" />
</Style>
<Style Selector="Path.layer-visualizer-selected">
<Setter Property="Stroke" Value="{StaticResource SystemAccentColorLight1}" />
</Style>
</UserControl.Styles>
<Path Classes="layer-visualizer"
Classes.layer-visualizer-selected="{CompiledBinding Selected}"
Data="{CompiledBinding ShapeGeometry, Mode=OneWay}"
StrokeThickness="2"
Margin="0 0 2 2">
</Path>
</UserControl>

View File

@ -0,0 +1,18 @@
using Avalonia.Markup.Xaml;
using Avalonia.ReactiveUI;
namespace Artemis.UI.Screens.ProfileEditor.VisualEditor.Visualizers
{
public partial class LayerVisualizerView : ReactiveUserControl<LayerVisualizerViewModel>
{
public LayerVisualizerView()
{
InitializeComponent();
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
}
}

View File

@ -0,0 +1,67 @@
using System;
using System.Reactive.Linq;
using Artemis.Core;
using Artemis.UI.Shared;
using Artemis.UI.Shared.Extensions;
using Artemis.UI.Shared.Services.ProfileEditor;
using Avalonia.Controls.Mixins;
using Avalonia.Media;
using ReactiveUI;
namespace Artemis.UI.Screens.ProfileEditor.VisualEditor.Visualizers;
public class LayerVisualizerViewModel : ActivatableViewModelBase, IVisualizerViewModel
{
private Geometry? _shapeGeometry;
private ObservableAsPropertyHelper<bool>? _selected;
public LayerVisualizerViewModel(Layer layer, IProfileEditorService profileEditorService)
{
Layer = layer;
this.WhenActivated(d =>
{
Observable.FromEventPattern(x => Layer.RenderPropertiesUpdated += x, x => Layer.RenderPropertiesUpdated -= x).Subscribe(_ => UpdateShape()).DisposeWith(d);
Observable.FromEventPattern<LayerPropertyEventArgs>(x => Layer.Transform.Position.CurrentValueSet += x, x => Layer.Transform.Position.CurrentValueSet -= x)
.Subscribe(_ => UpdateTransform())
.DisposeWith(d);
Observable.FromEventPattern<LayerPropertyEventArgs>(x => Layer.Transform.Rotation.CurrentValueSet += x, x => Layer.Transform.Rotation.CurrentValueSet -= x)
.Subscribe(_ => UpdateTransform())
.DisposeWith(d);
Observable.FromEventPattern<LayerPropertyEventArgs>(x => Layer.Transform.Scale.CurrentValueSet += x, x => Layer.Transform.Scale.CurrentValueSet -= x)
.Subscribe(_ => UpdateTransform())
.DisposeWith(d);
Observable.FromEventPattern<LayerPropertyEventArgs>(x => Layer.Transform.AnchorPoint.CurrentValueSet += x, x => Layer.Transform.AnchorPoint.CurrentValueSet -= x)
.Subscribe(_ => UpdateTransform())
.DisposeWith(d);
_selected = profileEditorService.ProfileElement.Select(p => p == Layer).ToProperty(this, vm => vm.Selected).DisposeWith(d);
profileEditorService.Time.Subscribe(_ => UpdateTransform()).DisposeWith(d);
UpdateShape();
});
}
public Layer Layer { get; }
public bool Selected => _selected?.Value ?? false;
public Geometry? ShapeGeometry
{
get => _shapeGeometry;
set => this.RaiseAndSetIfChanged(ref _shapeGeometry, value);
}
private void UpdateShape()
{
if (Layer.General.ShapeType.CurrentValue == LayerShapeType.Rectangle)
ShapeGeometry = new RectangleGeometry(Layer.Bounds.ToRect());
else
ShapeGeometry = new EllipseGeometry(Layer.Bounds.ToRect());
}
private void UpdateTransform()
{
if (ShapeGeometry != null)
ShapeGeometry.Transform = new MatrixTransform(Layer.GetTransformMatrix(false, true, true, true).ToMatrix());
}
}

View File

@ -4,11 +4,11 @@
"net6.0": { "net6.0": {
"Avalonia": { "Avalonia": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "2PSE+dB4vGJfG+1M+y+Hwaxiqze5mbBTTG9hjwc2Z3U/9yJE/GThBEst2WwI0yBt13hsfAfbABzt1PA3mtbFdw==", "contentHash": "ftI5uGBFvWJpizGc6PT6lOb6FiO8AWcSYS9N4FWvXgOvuqWuTgmjwURPUkvajpeaQLKOOea6AbgotSyhV8NNoQ==",
"dependencies": { "dependencies": {
"Avalonia.Remote.Protocol": "0.10.11", "Avalonia.Remote.Protocol": "0.10.12",
"JetBrains.Annotations": "10.3.0", "JetBrains.Annotations": "10.3.0",
"System.ComponentModel.Annotations": "4.5.0", "System.ComponentModel.Annotations": "4.5.0",
"System.Memory": "4.5.3", "System.Memory": "4.5.3",
@ -19,59 +19,59 @@
}, },
"Avalonia.Controls.PanAndZoom": { "Avalonia.Controls.PanAndZoom": {
"type": "Direct", "type": "Direct",
"requested": "[10.11.1, )", "requested": "[10.12.0, )",
"resolved": "10.11.1", "resolved": "10.12.0",
"contentHash": "XIjA3iGHMfokPXw/ov5CqKKPR8HdVrTBOMYJVOGpDQyec6RwI/w7lq530wfIMebIe9xUj5RY2Jx5heQtCuAFmg==", "contentHash": "ns+2tJTXTpNzNA9YV2mjR4EJOZl2vBFWnGUTSIl/vyOQMrrU5CbsXQxy2MFBvW0vGrRTlw80nUtBnsT759kwKQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11" "Avalonia": "0.10.12"
} }
}, },
"Avalonia.Desktop": { "Avalonia.Desktop": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "PQTl4lm7IZidzltMwC7RSNaoz7TYNznU8SKa/WaAI6ycMzC0On2DsqiL1dXr6WhYzMazyMJj6kBhiQzHIc1lIQ==", "contentHash": "wy4k1uarrmZJSJENCe1hjNpdCJWhup0gt6KA2TtZILfGG7imj+an5IuQZUSXtA7cl7A+6tF6lPQLo82gESUlXQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Native": "0.10.11", "Avalonia.Native": "0.10.12",
"Avalonia.Skia": "0.10.11", "Avalonia.Skia": "0.10.12",
"Avalonia.Win32": "0.10.11", "Avalonia.Win32": "0.10.12",
"Avalonia.X11": "0.10.11" "Avalonia.X11": "0.10.12"
} }
}, },
"Avalonia.Diagnostics": { "Avalonia.Diagnostics": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "xBvBkF2DBKjddAfQbExd660zQ5RaDEXH1JgAdMyYOdu3qFL6d+QHyZdVHVeQFilNYE03F6C8AbMWrmj6dBUNlg==", "contentHash": "Pf9DGiSwl3+gPrRSHKFzDG20I9QJ5P1g6BexLKfHQH9+Cmax+a/UEVYQq4hGn0xhrmpuLYOeGHb8wasjAT4EfQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Controls.DataGrid": "0.10.11", "Avalonia.Controls.DataGrid": "0.10.12",
"Microsoft.CodeAnalysis.CSharp.Scripting": "3.4.0", "Microsoft.CodeAnalysis.CSharp.Scripting": "3.4.0",
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
}, },
"Avalonia.ReactiveUI": { "Avalonia.ReactiveUI": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "I/++/4Halsx9HIp99nBwB2nIMrI9zw2M8wDcK1HaYVMKU+m3KFA9w+DfV7g/wEceWSMeX7yAvUjRnaUYtBO08Q==", "contentHash": "dOszpMtBKEACAFWtjwNibXMF2SBolJ3cV8ffDEOy2uuwjKBJqbSmHH+WSnui9KfbSF2igVpam4TqO6drJuEvjw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"ReactiveUI": "13.2.10", "ReactiveUI": "13.2.10",
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
}, },
"Avalonia.Svg.Skia": { "Avalonia.Svg.Skia": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.11, )", "requested": "[0.10.12, )",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "Zw1kfOWN7ZaMqnoJsKqvU/8GxGbrv4KrkAbbLVHvhZl4sA0VZEjqdtxUAqSHlJrYtjPfaUzzDP9K3l0KCqnx/Q==", "contentHash": "qsXKdm5eWpfoVPe0xgtxhbOYlhG8QdbYNJZTTihg/c4iPFYuh1G7DldiNskuVFuGiGxLVZ0g6ebql7ZkwbO1pA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Skia": "0.10.11", "Avalonia.Skia": "0.10.12",
"SkiaSharp": "2.88.0-preview.178", "SkiaSharp": "2.88.0-preview.178",
"Svg.Skia": "0.5.11" "Svg.Skia": "0.5.12"
} }
}, },
"DynamicData": { "DynamicData": {
@ -126,12 +126,12 @@
}, },
"ReactiveUI": { "ReactiveUI": {
"type": "Direct", "type": "Direct",
"requested": "[16.3.10, )", "requested": "[17.1.17, )",
"resolved": "16.3.10", "resolved": "17.1.17",
"contentHash": "NH9bg8BROqRrTp6YLpPDsJrfNDzRWNmP63fQ68CBAM+i7YHi6wcPeOkxyKpoemUxKEY4QECuicaTblJnxgbWmA==", "contentHash": "0DLq44k4CVvfXcWHE4uigQa/wySOzxOTnWg50j2qZDpWzl9OP7QfIDJo39X3ffEjaVcCUFcbF9xAmm7fRX/q2g==",
"dependencies": { "dependencies": {
"DynamicData": "7.4.3", "DynamicData": "7.4.9",
"Splat": "13.1.42" "Splat": "14.1.17"
} }
}, },
"ReactiveUI.Validation": { "ReactiveUI.Validation": {
@ -186,43 +186,43 @@
}, },
"Avalonia.Controls.DataGrid": { "Avalonia.Controls.DataGrid": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "zvt6QA2uwe18gJ/XdnSMTHG6L/2usvjoaAdPC+Lgg+DmUPNTjqN+Hm1l0AjUtNNId6G+4iIkysiZ2WiHPqGsEA==", "contentHash": "i3zM3P8PUY4FNhATZoFWkto3H66FcIrnJNMyOsl1fN0FPS6meysAwCKQwuou/oapyzZEODeAmCVdqB0AgjNHVw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Remote.Protocol": "0.10.11", "Avalonia.Remote.Protocol": "0.10.12",
"JetBrains.Annotations": "10.3.0", "JetBrains.Annotations": "10.3.0",
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
}, },
"Avalonia.FreeDesktop": { "Avalonia.FreeDesktop": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "cj8T11WQ5/opR2IPttb1Bo89aHclkuvHYsCB7HzZU/F7l/cKXbKUOhyo60p44BdFzrCqjNXDnKQbxeRv+OSF7A==", "contentHash": "j42uWCWkAfZchYPrdRccr4mjB0kppSby3TEMCuNrp9GcQi+JhEPEbBAohU7FpR4bkv5FF2KAlDX5WiG2T+04kg==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Tmds.DBus": "0.9.0" "Tmds.DBus": "0.9.0"
} }
}, },
"Avalonia.Native": { "Avalonia.Native": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "9fBC9UArVXEmsxL2Nd0KHGoZUCqcTo06NTlOTAeM3qdEWzE8a0qRVYiR2WeYfADXpKR1D/fQz5zWUZcebFYFIA==", "contentHash": "JnZc0zF7DcLcSX+SdnKQGzFa9mcKxawhTN8S3aiN8Eh3MZAKxa45LRrHFVTcHcy2jU4kOw+yPfONUmHpRcC0gw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11" "Avalonia": "0.10.12"
} }
}, },
"Avalonia.Remote.Protocol": { "Avalonia.Remote.Protocol": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "kID2N/cXg7KCGFYFTOWCvSLt+oMFRApLfLcbLU35keC/jwDi9tFk33CEdo81hBEg15lAtTtCfvHhNPyVyIYijQ==" "contentHash": "ArrxniR8iShzMvXCS3vt5FXg9Fv3qK1UKzJwsSsY9iCuC8wKo2eevRj42qOhMCS98POTH5v8aUZBeoLlENa0vA=="
}, },
"Avalonia.Skia": { "Avalonia.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "4bP5V3BpnZ+If2/ZrZofeRsINeZ6gemLjfNyElt7vNF4HZaRfot03anO3Y+Z7mTELjuol6n/5lAL4+kQUN/O/w==", "contentHash": "3TGo8RLHaLqmU3chlyAqLkpw6vImfDMC30T18abpeYf1PIsNckRB+UFp12GDil9t/J9YB17zn4H6N+2plF4gZA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"HarfBuzzSharp": "2.8.2-preview.178", "HarfBuzzSharp": "2.8.2-preview.178",
"HarfBuzzSharp.NativeAssets.Linux": "2.8.2-preview.178", "HarfBuzzSharp.NativeAssets.Linux": "2.8.2-preview.178",
"HarfBuzzSharp.NativeAssets.WebAssembly": "2.8.2-preview.178", "HarfBuzzSharp.NativeAssets.WebAssembly": "2.8.2-preview.178",
@ -233,10 +233,10 @@
}, },
"Avalonia.Win32": { "Avalonia.Win32": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "bckqh8rnQ4+l2kdU4njO3cBKaT4l1HQkxdVYJLAgl44uMtoCpaN7EidrBTnuM40DXa0cpvOh97A+G8jpZgte6Q==", "contentHash": "CnC65T8ScMK23BB+qJuiMicWQ5QIEiinnRzPqvAGUGyQbjIGpA5uOCKwzsOjUmzkhGqt31iDR0/Y3ZFbi5Mjog==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Angle.Windows.Natives": "2.1.0.2020091801", "Avalonia.Angle.Windows.Natives": "2.1.0.2020091801",
"System.Drawing.Common": "4.5.0", "System.Drawing.Common": "4.5.0",
"System.Numerics.Vectors": "4.5.0" "System.Numerics.Vectors": "4.5.0"
@ -244,39 +244,39 @@
}, },
"Avalonia.X11": { "Avalonia.X11": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11", "resolved": "0.10.12",
"contentHash": "joPVaMmPy4bC1STSk5+fAn5zZOT3gz4m/YSv6io3p2q68kEbc+d5KaYk/KcqA/WGiBBQx4a0ViPW/IRomI94kw==", "contentHash": "mUY1cF1p86/UgLl1cbSmY3nVIatKQsSCDOH4avssL07xmKlRfB2G7Gi8jlhWNkLJTLL7iQp/u3X6bv7bs+0zNQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.FreeDesktop": "0.10.11", "Avalonia.FreeDesktop": "0.10.12",
"Avalonia.Skia": "0.10.11" "Avalonia.Skia": "0.10.12"
} }
}, },
"Avalonia.Xaml.Behaviors": { "Avalonia.Xaml.Behaviors": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11.5", "resolved": "0.10.12",
"contentHash": "XHU7/hRYWEdaJOs+weT9ml9/GYqroPrAtePjGzUzUrMoHESbqmkLXmW+fHkaAeXRMJAOAFD1LQUHQu+B6ThF3w==", "contentHash": "upv7v1gZ31tCukw/KA1bB5+z29QuEWiZJ4KnW10daHlia1ru7q4lUJ/vCYKOy5L+zyi1MQg98SNYjRp5C64ZhQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Xaml.Interactions": "0.10.11.5", "Avalonia.Xaml.Interactions": "0.10.12",
"Avalonia.Xaml.Interactivity": "0.10.11.5" "Avalonia.Xaml.Interactivity": "0.10.12"
} }
}, },
"Avalonia.Xaml.Interactions": { "Avalonia.Xaml.Interactions": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11.5", "resolved": "0.10.12",
"contentHash": "MpqS1t1zypDNEW2Pyg113W4AwmfaWai5LfA/K22sDbygXII+KuACaHt2ZPHJWnvKGHgasLEEFhEOGfF5cB9NPA==", "contentHash": "PSohbY4aQGiJVWfvLKkuUE71ZxvZ0/FuTc3Y5GJgTC41kCgeaiJTczkC2FjW5sZ8exPDabSp+ZukSsnm/z6y7A==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.Xaml.Interactivity": "0.10.11.5" "Avalonia.Xaml.Interactivity": "0.10.12"
} }
}, },
"Avalonia.Xaml.Interactivity": { "Avalonia.Xaml.Interactivity": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.11.5", "resolved": "0.10.12",
"contentHash": "MOM6lcPenJZu9LPhai3n67GssBUx3MjoCVLyR2GEJ6lywKQgk4MKOIAC0gLWgy7x1e540oy4lCpeX8jMsqe7mA==", "contentHash": "uey4LjyIds78igMe7AZ072RI6GpO16sd6+6XF6LG0oE07De7ei0So14oOs4wLS4WJyaKDRSUK6PuhLaY1zIZdQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.11" "Avalonia": "0.10.12"
} }
}, },
"Castle.Core": { "Castle.Core": {
@ -488,10 +488,10 @@
}, },
"Microsoft.Win32.SystemEvents": { "Microsoft.Win32.SystemEvents": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "4.5.0",
"contentHash": "Bh6blKG8VAKvXiLe2L+sEsn62nc1Ij34MrNxepD2OCrS5cpCwQa9MeLyhVQPQ/R4Wlzwuy6wMK8hLb11QPDRsQ==", "contentHash": "LuI1oG+24TUj1ZRQQjM5Ew73BKnZE5NZ/7eAdh1o8ST5dPhUnJvIkiIn2re3MwnkRy6ELRnvEbBxHP8uALKhJw==",
"dependencies": { "dependencies": {
"Microsoft.NETCore.Platforms": "5.0.0" "Microsoft.NETCore.Platforms": "2.0.0"
} }
}, },
"NETStandard.Library": { "NETStandard.Library": {
@ -730,8 +730,8 @@
}, },
"ShimSkiaSharp": { "ShimSkiaSharp": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "a04YHHKRK1xY8ccSgpa6HOmOw9Kuivo2b2qejp9CK00ykdCBK3Mmc+ekBx954+zPQBksN6aLhvn1SEL7QG2s8Q==" "contentHash": "oUGM7gQHRzbGPRs3E1pe5e8VwML21YyEz9xdo+r2ov1mAqSDPyXErVQP6pN4gnfYMVf5ADR7BVkVzt4R9Iz3gQ=="
}, },
"SkiaSharp.HarfBuzz": { "SkiaSharp.HarfBuzz": {
"type": "Transitive", "type": "Transitive",
@ -772,11 +772,10 @@
}, },
"Svg.Custom": { "Svg.Custom": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "8OEW3UKx07JfEyqzzvF5+ycydusZjg6jsBjDSBrAoq62c5gNZrs6brlOKm2ywEj9hObK3sLcat5BHnE2OUHXsg==", "contentHash": "kmjLQf5U5WC7tRGBedUhtrOUCR0NaNL2auzOA2a/oMwEA0Bjrpd6qvMTpJUS3HITxi8vJazGl270K+i0JvdJog==",
"dependencies": { "dependencies": {
"Fizzler": "1.2.0", "Fizzler": "1.2.0",
"System.Drawing.Common": "5.0.0",
"System.Memory": "4.5.3", "System.Memory": "4.5.3",
"System.ObjectModel": "4.3.0", "System.ObjectModel": "4.3.0",
"System.ValueTuple": "4.5.0" "System.ValueTuple": "4.5.0"
@ -784,22 +783,22 @@
}, },
"Svg.Model": { "Svg.Model": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "5/Y+BGjgTwobA9aDfcpTGF/bm83MYrEYM8J1LpPohRR+c+B/1N+rbSXfpDZq2omBJ1O0Sa5VjAXw1oAdm1lYLg==", "contentHash": "/CPiXIugg4oVyYlQr26fB1X9iQfICALF8AJXbTWnXGoP2WZa1t6aZbAXPk3HoPApA0w5waf3XXkBiYYnWwawaQ==",
"dependencies": { "dependencies": {
"ShimSkiaSharp": "0.5.11", "ShimSkiaSharp": "0.5.12",
"Svg.Custom": "0.5.11" "Svg.Custom": "0.5.12"
} }
}, },
"Svg.Skia": { "Svg.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.11", "resolved": "0.5.12",
"contentHash": "AiN5rSsYBzBUkoh8YK5HoNxRxHtUekp2/6ZAol8qV8oDr6vu8hmPuWjUDwvqCFMi9Dlllc6YsFfvJ1PZCJvYew==", "contentHash": "KjKpjz0FKge+WpRzjD1bqywAW3vZhXwpR5c7Ej5OuP4xDrQjBwtFeB0iZ+yEJMzwXf/Rs4ImuN8m3bmBDJvMHg==",
"dependencies": { "dependencies": {
"SkiaSharp": "2.88.0-preview.178", "SkiaSharp": "2.88.0-preview.178",
"SkiaSharp.HarfBuzz": "2.88.0-preview.178", "SkiaSharp.HarfBuzz": "2.88.0-preview.178",
"Svg.Custom": "0.5.11", "Svg.Custom": "0.5.12",
"Svg.Model": "0.5.11" "Svg.Model": "0.5.12"
} }
}, },
"System.AppContext": { "System.AppContext": {
@ -991,10 +990,11 @@
}, },
"System.Drawing.Common": { "System.Drawing.Common": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "4.5.0",
"contentHash": "SztFwAnpfKC8+sEKXAFxCBWhKQaEd97EiOL7oZJZP56zbqnLpmxACWA8aGseaUExciuEAUuR9dY8f7HkTRAdnw==", "contentHash": "AiJFxxVPdeITstiRS5aAu8+8Dpf5NawTMoapZ53Gfirml24p7HIfhjmCRxdXnmmf3IUA3AX3CcW7G73CjWxW/Q==",
"dependencies": { "dependencies": {
"Microsoft.Win32.SystemEvents": "5.0.0" "Microsoft.NETCore.Platforms": "2.0.0",
"Microsoft.Win32.SystemEvents": "4.5.0"
} }
}, },
"System.Dynamic.Runtime": { "System.Dynamic.Runtime": {
@ -1757,17 +1757,17 @@
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Artemis.Core": "1.0.0", "Artemis.Core": "1.0.0",
"Avalonia": "0.10.11", "Avalonia": "0.10.12",
"Avalonia.ReactiveUI": "0.10.11", "Avalonia.ReactiveUI": "0.10.12",
"Avalonia.Svg.Skia": "0.10.11", "Avalonia.Svg.Skia": "0.10.12",
"Avalonia.Xaml.Behaviors": "0.10.11.5", "Avalonia.Xaml.Behaviors": "0.10.12",
"Avalonia.Xaml.Interactions": "0.10.11.5", "Avalonia.Xaml.Interactions": "0.10.12",
"Avalonia.Xaml.Interactivity": "0.10.11.5", "Avalonia.Xaml.Interactivity": "0.10.12",
"DynamicData": "7.4.9", "DynamicData": "7.4.9",
"FluentAvaloniaUI": "1.1.8", "FluentAvaloniaUI": "1.1.8",
"Material.Icons.Avalonia": "1.0.2", "Material.Icons.Avalonia": "1.0.2",
"RGB.NET.Core": "1.0.0-prerelease7", "RGB.NET.Core": "1.0.0-prerelease7",
"ReactiveUI": "16.3.10", "ReactiveUI": "17.1.17",
"ReactiveUI.Validation": "2.2.1", "ReactiveUI.Validation": "2.2.1",
"SkiaSharp": "2.88.0-preview.178" "SkiaSharp": "2.88.0-preview.178"
} }