1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00

Meta - Updated Nuget packages

Settings - Changed where panels start scrolling
Home - Clip cards to bounds
Sidebar - Added category creation/renaming
Debugger - Fixed existing window focus
Tray icon - Implemented all functionality
This commit is contained in:
Robert 2021-11-27 23:02:02 +01:00
parent 955b223b35
commit 4c5c785aa6
41 changed files with 1144 additions and 836 deletions

View File

@ -89,8 +89,8 @@
}, },
"LiteDB": { "LiteDB": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.10", "resolved": "5.0.11",
"contentHash": "x70WuqMDuP75dajqSLvO+AnI/BbwS6da+ukTO7rueV7VoXoQ5CRA9FV4r7cOS4OUr2NS1Up7LDIutjCxQycRvg==" "contentHash": "6cL4bOmVCUB0gIK+6qIr68HeqjjHZicPDGQjvJ87mIOvkFsEsJWkIps3yoKNeLpHhJQur++yoQ9Q8gxsdos0xQ=="
}, },
"McMaster.NETCore.Plugins": { "McMaster.NETCore.Plugins": {
"type": "Transitive", "type": "Transitive",
@ -1217,7 +1217,7 @@
"EmbedIO": "3.4.3", "EmbedIO": "3.4.3",
"HidSharp": "2.1.0", "HidSharp": "2.1.0",
"Humanizer.Core": "2.11.10", "Humanizer.Core": "2.11.10",
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"McMaster.NETCore.Plugins": "1.4.0", "McMaster.NETCore.Plugins": "1.4.0",
"Newtonsoft.Json": "13.0.1", "Newtonsoft.Json": "13.0.1",
"Ninject": "3.3.4", "Ninject": "3.3.4",
@ -1238,7 +1238,7 @@
"artemis.storage": { "artemis.storage": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"Serilog": "2.10.0" "Serilog": "2.10.0"
} }
} }

View File

@ -41,7 +41,7 @@
<PackageReference Include="EmbedIO" Version="3.4.3" /> <PackageReference Include="EmbedIO" Version="3.4.3" />
<PackageReference Include="HidSharp" Version="2.1.0" /> <PackageReference Include="HidSharp" Version="2.1.0" />
<PackageReference Include="Humanizer.Core" Version="2.11.10" /> <PackageReference Include="Humanizer.Core" Version="2.11.10" />
<PackageReference Include="LiteDB" Version="5.0.10" /> <PackageReference Include="LiteDB" Version="5.0.11" />
<PackageReference Include="McMaster.NETCore.Plugins" Version="1.4.0" /> <PackageReference Include="McMaster.NETCore.Plugins" Version="1.4.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="Ninject" Version="3.3.4" /> <PackageReference Include="Ninject" Version="3.3.4" />

View File

@ -25,9 +25,9 @@
}, },
"LiteDB": { "LiteDB": {
"type": "Direct", "type": "Direct",
"requested": "[5.0.10, )", "requested": "[5.0.11, )",
"resolved": "5.0.10", "resolved": "5.0.11",
"contentHash": "x70WuqMDuP75dajqSLvO+AnI/BbwS6da+ukTO7rueV7VoXoQ5CRA9FV4r7cOS4OUr2NS1Up7LDIutjCxQycRvg==" "contentHash": "6cL4bOmVCUB0gIK+6qIr68HeqjjHZicPDGQjvJ87mIOvkFsEsJWkIps3yoKNeLpHhJQur++yoQ9Q8gxsdos0xQ=="
}, },
"McMaster.NETCore.Plugins": { "McMaster.NETCore.Plugins": {
"type": "Direct", "type": "Direct",
@ -1225,7 +1225,7 @@
"artemis.storage": { "artemis.storage": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"Serilog": "2.10.0" "Serilog": "2.10.0"
} }
} }

View File

@ -9,7 +9,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="LiteDB" Version="5.0.10" /> <PackageReference Include="LiteDB" Version="5.0.11" />
<PackageReference Include="Serilog" Version="2.10.0" /> <PackageReference Include="Serilog" Version="2.10.0" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -4,9 +4,9 @@
".NETCoreApp,Version=v5.0": { ".NETCoreApp,Version=v5.0": {
"LiteDB": { "LiteDB": {
"type": "Direct", "type": "Direct",
"requested": "[5.0.10, )", "requested": "[5.0.11, )",
"resolved": "5.0.10", "resolved": "5.0.11",
"contentHash": "x70WuqMDuP75dajqSLvO+AnI/BbwS6da+ukTO7rueV7VoXoQ5CRA9FV4r7cOS4OUr2NS1Up7LDIutjCxQycRvg==" "contentHash": "6cL4bOmVCUB0gIK+6qIr68HeqjjHZicPDGQjvJ87mIOvkFsEsJWkIps3yoKNeLpHhJQur++yoQ9Q8gxsdos0xQ=="
}, },
"Serilog": { "Serilog": {
"type": "Direct", "type": "Direct",

View File

@ -689,6 +689,17 @@
Represents errors that occur within the Artemis Shared UI library Represents errors that occur within the Artemis Shared UI library
</summary> </summary>
</member> </member>
<member name="T:Artemis.UI.Shared.Extensions.ControlExtensions">
<summary>
Provides extension methods for Avalonia's <see cref="T:Avalonia.Controls.Control" /> type
</summary>
</member>
<member name="M:Artemis.UI.Shared.Extensions.ControlExtensions.ClearAllDataValidationErrors(Avalonia.Controls.Control)">
<summary>
Clears all data validation errors on the given control and any of it's logical siblings
</summary>
<param name="target">The target control</param>
</member>
<member name="T:Artemis.UI.Shared.Ninject.SharedUIModule"> <member name="T:Artemis.UI.Shared.Ninject.SharedUIModule">
<summary> <summary>
The main <see cref="T:Ninject.Modules.NinjectModule" /> of the Artemis Shared UI toolkit that binds all services The main <see cref="T:Ninject.Modules.NinjectModule" /> of the Artemis Shared UI toolkit that binds all services
@ -1070,6 +1081,41 @@
Occurs when the main window has been closed Occurs when the main window has been closed
</summary> </summary>
</member> </member>
<member name="T:Artemis.UI.Shared.ContentDialogViewModelBase">
<summary>
Represents the base class for Artemis view models
</summary>
</member>
<member name="P:Artemis.UI.Shared.ContentDialogViewModelBase.ContentDialog">
<summary>
Gets the content dialog that hosts the view model
</summary>
</member>
<member name="P:Artemis.UI.Shared.ContentDialogViewModelBase.Activator">
<inheritdoc />
</member>
<member name="M:Artemis.UI.Shared.ContentDialogViewModelBase.Dispose(System.Boolean)">
<summary>
Releases the unmanaged resources used by the object and optionally releases the managed resources.
</summary>
<param name="disposing">
<see langword="true" /> to release both managed and unmanaged resources;
<see langword="false" /> to release only unmanaged resources.
</param>
</member>
<member name="M:Artemis.UI.Shared.ContentDialogViewModelBase.Dispose">
<inheritdoc />
</member>
<member name="T:Artemis.UI.Shared.ViewModelValidationBase">
<summary>
Represents the base class for Artemis view models
</summary>
</member>
<member name="P:Artemis.UI.Shared.ViewModelValidationBase.DisplayName">
<summary>
Gets or sets the display name of the view model
</summary>
</member>
<member name="T:Artemis.UI.Shared.ViewModelBase"> <member name="T:Artemis.UI.Shared.ViewModelBase">
<summary> <summary>
Represents the base class for Artemis view models Represents the base class for Artemis view models

View File

@ -136,8 +136,8 @@
}, },
"LiteDB": { "LiteDB": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.10", "resolved": "5.0.11",
"contentHash": "x70WuqMDuP75dajqSLvO+AnI/BbwS6da+ukTO7rueV7VoXoQ5CRA9FV4r7cOS4OUr2NS1Up7LDIutjCxQycRvg==" "contentHash": "6cL4bOmVCUB0gIK+6qIr68HeqjjHZicPDGQjvJ87mIOvkFsEsJWkIps3yoKNeLpHhJQur++yoQ9Q8gxsdos0xQ=="
}, },
"MaterialDesignColors": { "MaterialDesignColors": {
"type": "Transitive", "type": "Transitive",
@ -1297,7 +1297,7 @@
"EmbedIO": "3.4.3", "EmbedIO": "3.4.3",
"HidSharp": "2.1.0", "HidSharp": "2.1.0",
"Humanizer.Core": "2.11.10", "Humanizer.Core": "2.11.10",
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"McMaster.NETCore.Plugins": "1.4.0", "McMaster.NETCore.Plugins": "1.4.0",
"Newtonsoft.Json": "13.0.1", "Newtonsoft.Json": "13.0.1",
"Ninject": "3.3.4", "Ninject": "3.3.4",
@ -1318,7 +1318,7 @@
"artemis.storage": { "artemis.storage": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"Serilog": "2.10.0" "Serilog": "2.10.0"
} }
} }

View File

@ -254,8 +254,8 @@
}, },
"LiteDB": { "LiteDB": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.10", "resolved": "5.0.11",
"contentHash": "x70WuqMDuP75dajqSLvO+AnI/BbwS6da+ukTO7rueV7VoXoQ5CRA9FV4r7cOS4OUr2NS1Up7LDIutjCxQycRvg==" "contentHash": "6cL4bOmVCUB0gIK+6qIr68HeqjjHZicPDGQjvJ87mIOvkFsEsJWkIps3yoKNeLpHhJQur++yoQ9Q8gxsdos0xQ=="
}, },
"MaterialDesignColors": { "MaterialDesignColors": {
"type": "Transitive", "type": "Transitive",
@ -1443,7 +1443,7 @@
"EmbedIO": "3.4.3", "EmbedIO": "3.4.3",
"HidSharp": "2.1.0", "HidSharp": "2.1.0",
"Humanizer.Core": "2.11.10", "Humanizer.Core": "2.11.10",
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"McMaster.NETCore.Plugins": "1.4.0", "McMaster.NETCore.Plugins": "1.4.0",
"Newtonsoft.Json": "13.0.1", "Newtonsoft.Json": "13.0.1",
"Ninject": "3.3.4", "Ninject": "3.3.4",
@ -1464,7 +1464,7 @@
"artemis.storage": { "artemis.storage": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"Serilog": "2.10.0" "Serilog": "2.10.0"
} }
}, },

View File

@ -91,8 +91,8 @@
}, },
"LiteDB": { "LiteDB": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.10", "resolved": "5.0.11",
"contentHash": "x70WuqMDuP75dajqSLvO+AnI/BbwS6da+ukTO7rueV7VoXoQ5CRA9FV4r7cOS4OUr2NS1Up7LDIutjCxQycRvg==" "contentHash": "6cL4bOmVCUB0gIK+6qIr68HeqjjHZicPDGQjvJ87mIOvkFsEsJWkIps3yoKNeLpHhJQur++yoQ9Q8gxsdos0xQ=="
}, },
"MaterialDesignColors": { "MaterialDesignColors": {
"type": "Transitive", "type": "Transitive",
@ -1303,7 +1303,7 @@
"EmbedIO": "3.4.3", "EmbedIO": "3.4.3",
"HidSharp": "2.1.0", "HidSharp": "2.1.0",
"Humanizer.Core": "2.11.10", "Humanizer.Core": "2.11.10",
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"McMaster.NETCore.Plugins": "1.4.0", "McMaster.NETCore.Plugins": "1.4.0",
"Newtonsoft.Json": "13.0.1", "Newtonsoft.Json": "13.0.1",
"Ninject": "3.3.4", "Ninject": "3.3.4",
@ -1324,7 +1324,7 @@
"artemis.storage": { "artemis.storage": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"Serilog": "2.10.0" "Serilog": "2.10.0"
} }
}, },

View File

@ -71,10 +71,10 @@
}, },
"Avalonia.Controls.PanAndZoom": { "Avalonia.Controls.PanAndZoom": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.2.0", "resolved": "4.3.0",
"contentHash": "zIQhp86CdV7xmFXFkaQBDNDr0WSyumEdJvqvIrywG5SEQK3HzACt0gR85KX19DHTlkJlnUVjmfkTEiPjwvgGtA==", "contentHash": "oUpQm2frhjWll5QWLx8Uzc2VWDNXgPqONlNBLu2gFBis1lkce1jjZvu423U7RNfvg1rOMeZoeiodZq7xZ02STA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8" "Avalonia": "0.10.10"
} }
}, },
"Avalonia.FreeDesktop": { "Avalonia.FreeDesktop": {
@ -113,13 +113,13 @@
}, },
"Avalonia.Svg.Skia": { "Avalonia.Svg.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.8.3", "resolved": "0.10.10",
"contentHash": "w7RYf+8+gOI3uVZZJ59S0EP49LVsyr1jpnZQzVFQqKa3y/c/i2jT/EUoKOeaqPMhFIsQZyEF4iluqoo6aZ05Tw==", "contentHash": "7xQkg3b/djGjGQe6ODxCY+LxMeZ0MtSFUOeEu8IMMUG89gueptuS84GZMRY27xG8lvjP3Mu8B1p3/YY5u7UiDg==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"Avalonia.Skia": "0.10.8", "Avalonia.Skia": "0.10.10",
"SkiaSharp": "2.80.2", "SkiaSharp": "2.80.2",
"Svg.Skia": "0.5.8.3" "Svg.Skia": "0.5.10"
} }
}, },
"Avalonia.Win32": { "Avalonia.Win32": {
@ -145,27 +145,27 @@
}, },
"Avalonia.Xaml.Behaviors": { "Avalonia.Xaml.Behaviors": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.10", "resolved": "0.10.10.4",
"contentHash": "rHDkieWZDTjG+PVGQzronzknmH24r2VDtzbNfC3O8FLZGqREsBoCRDrqW4R4bmtD6CqpDPBey5soBYnnDE1m3Q==", "contentHash": "iSVOObfXch8vFzhYFvwGntRt4l4kg+dxXYc4C4RDhnoyPh60BCMUzdk2gYUYySv9UVSGAhqH4dQPWZ0l9USmYA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.10", "Avalonia": "0.10.10",
"Avalonia.Xaml.Interactions": "0.10.10", "Avalonia.Xaml.Interactions": "0.10.10.4",
"Avalonia.Xaml.Interactivity": "0.10.10" "Avalonia.Xaml.Interactivity": "0.10.10.4"
} }
}, },
"Avalonia.Xaml.Interactions": { "Avalonia.Xaml.Interactions": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.10", "resolved": "0.10.10.4",
"contentHash": "bOJvciyk6kUjPx+mg6n+bwHQqRqgNiTDzTBkpokfkcWl9pMAlKvqqUe6YXWVCpKIDBjbzvkAbYa29S0ajqwFxw==", "contentHash": "OAwrl0tzsz+iX2z3T5wdsEG/JkbnlylfXUjCfbgQlQqODUBO0kk02RpCHJMnV86apkVXjeLV+S5+yA1yX+DT6g==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.10", "Avalonia": "0.10.10",
"Avalonia.Xaml.Interactivity": "0.10.10" "Avalonia.Xaml.Interactivity": "0.10.10.4"
} }
}, },
"Avalonia.Xaml.Interactivity": { "Avalonia.Xaml.Interactivity": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.10", "resolved": "0.10.10.4",
"contentHash": "xxWrpi0HsySczpU3Zl6c2ugbkTOs9qwqbvClfi/AKncoVbWpXv7W6J3kfQcfRlnKFwkTPjLyTYKVERIkb7kNCQ==", "contentHash": "RH33/HboQikon64SCfu1qFpuy4+mox2SEGYbXrrw9mnw3Ogw8PeYTJLtZw8/mNYs6dZAU3NusRBaLIG+0PGisw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.10" "Avalonia": "0.10.10"
} }
@ -189,8 +189,8 @@
}, },
"DynamicData": { "DynamicData": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.1.1", "resolved": "7.3.1",
"contentHash": "Pc6J5bFnSxEa64PV2V67FMcLlDdpv6m+zTBKSnRN3aLon/WtWWy8kuDpHFbJlgXHtqc6Nxloj9ItuvDlvKC/8w==", "contentHash": "E9oTvWlAgzct0MuWt6k+0s+nSDA3LkFVvDwkMUTklIZZnva314KZAEF2vG4XX9I98ia+EpMqjte67jWEBJlsRw==",
"dependencies": { "dependencies": {
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
@ -210,12 +210,12 @@
}, },
"FluentAvaloniaUI": { "FluentAvaloniaUI": {
"type": "Transitive", "type": "Transitive",
"resolved": "1.1.5", "resolved": "1.1.6",
"contentHash": "1W1VZQaCeH4/kzNM2c9yPHAVVs9lW9/09bzz1lqu7Tvu79u9JCOjwkZmR8rGC0KbyOA7twwVr2/VvB84zDZYvA==", "contentHash": "EJukyiTmEVhaYlHdntFMyQKI4+u772rSClKYQqJRfkTb1NoJXLqiIVqMjx8ZQ0pxnfih+6CZ7+x82lfrGHIPUw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.9", "Avalonia": "0.10.10",
"Avalonia.Desktop": "0.10.9", "Avalonia.Desktop": "0.10.10",
"Avalonia.Diagnostics": "0.10.9" "Avalonia.Diagnostics": "0.10.10"
} }
}, },
"Flurl": { "Flurl": {
@ -269,8 +269,8 @@
}, },
"LiteDB": { "LiteDB": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.10", "resolved": "5.0.11",
"contentHash": "x70WuqMDuP75dajqSLvO+AnI/BbwS6da+ukTO7rueV7VoXoQ5CRA9FV4r7cOS4OUr2NS1Up7LDIutjCxQycRvg==" "contentHash": "6cL4bOmVCUB0gIK+6qIr68HeqjjHZicPDGQjvJ87mIOvkFsEsJWkIps3yoKNeLpHhJQur++yoQ9Q8gxsdos0xQ=="
}, },
"Live.Avalonia": { "Live.Avalonia": {
"type": "Transitive", "type": "Transitive",
@ -505,13 +505,19 @@
}, },
"ReactiveUI": { "ReactiveUI": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.2.10", "resolved": "16.2.6",
"contentHash": "fOCbEZ+RsO2Jhv6vB8VX+ZEvczYJaC95atcSG7oXohJeL/sEwbbqvv9k+tbj2l4bRSj2j5CQvhwA3HNLaxlCAg==", "contentHash": "jf1RvD8HxHuA6CGQtheGHUCHzRrhpvo0z593Npsz7g8KJWXfGR45Dc9bILJHoymBxhdDD1L1WjUfh0fcucIPPg==",
"dependencies": { "dependencies": {
"DynamicData": "7.1.1", "DynamicData": "7.3.1",
"Splat": "10.0.1", "Splat": "13.1.1"
"System.Reactive": "5.0.0", }
"System.Runtime.Serialization.Primitives": "4.3.0" },
"ReactiveUI.Validation": {
"type": "Transitive",
"resolved": "2.2.1",
"contentHash": "rhEphZ4ErbGfNtbBQ/tYMsLJYHyLVyqidU+sgZ3kXKbS7QrNoM4j6PPxCwLMKsJUuvVL8JN45xgmB9tSwm7+lg==",
"dependencies": {
"ReactiveUI": "16.2.6"
} }
}, },
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
@ -652,8 +658,8 @@
}, },
"ShimSkiaSharp": { "ShimSkiaSharp": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "BWwwsIlYUFF0DUc8Pa9xONIXVDvEL9pOYc9YmWilpHrWC37dcK+H4+tfuxztZxtfJx559HGn+6iZmMDjfFoOxA==" "contentHash": "G1ltdwS5+eMhMCoMx31hHjFIznGAjdUK7xAg8raFMFbN09p2tuxzvK7cKbveWm8SEAGIW7NgDyEqGGJzrPrMrg=="
}, },
"SkiaSharp": { "SkiaSharp": {
"type": "Transitive", "type": "Transitive",
@ -682,22 +688,22 @@
}, },
"Splat": { "Splat": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.1.30", "resolved": "13.1.63",
"contentHash": "yaj3r8CvHQwtvhfTi+dp5LpIb3c4svqe/tL6LdAS8wWP+dXAp3fTCLjYx21TrW1QBFTBJcg9lrJqDPbheSzHbA==" "contentHash": "7iW45RA7AbSlQPCgdokmysva5PGd6iBUhuNkC0XD73LF9dxfTkKeo3wZkohU7nvspDhJ7PJsYHvDtxIt5bMQ8Q=="
}, },
"Splat.Ninject": { "Splat.Ninject": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.1.30", "resolved": "13.1.63",
"contentHash": "hYgyD12Syt2l8U/KccMzNUj4nmrdULjoRTF4g5Q9XtVWPrcdTYmLEdcX/prZEWaFT7vGNP6x9uFXvOlM7Jc+gg==", "contentHash": "rTF0HSa6p8nxrXj2hwVgkutcTDJUXY34sY+zYK4ky65b7a0ROL8kdiYyxVVLE4Lq31N5Rcd4bBbqlPkgwZguww==",
"dependencies": { "dependencies": {
"Ninject": "3.3.4", "Ninject": "3.3.4",
"Splat": "13.1.30" "Splat": "13.1.63"
} }
}, },
"Svg.Custom": { "Svg.Custom": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "6FnbI4T3uCNN7DYJpfPFa4caTTJzp4YbhU3J4c/syX7wQNSeQ/1u7JZZ+dGgrRUauiWP8VsiCLKP8qinc5xI5w==", "contentHash": "Ypi/4NxDxjM24vsK+4Uit08aJUFHcZZpB5Ctb7FLMVevMq0hYeDqzKp6OVLFO5UCX/TxUfRiL1u9F7fvUDA0tQ==",
"dependencies": { "dependencies": {
"Fizzler": "1.2.0", "Fizzler": "1.2.0",
"System.Drawing.Common": "5.0.0", "System.Drawing.Common": "5.0.0",
@ -708,22 +714,22 @@
}, },
"Svg.Model": { "Svg.Model": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "F/rimPwV5KF64P8oofXGMwOZ0T7b3z1A9OiC4mv5OdSpLpMpUxpSwGLAOkJ5DFqQgXqVjKKLhPdjIjQBwy0AjA==", "contentHash": "sh5W7VpghtFjDnPOMa+CEiIKpJPmkb7FxNuHnB2sLZwJR2qzyVlZaBWM95VaRAXlOU8c0qbtA5ZNVREOpzLQRw==",
"dependencies": { "dependencies": {
"ShimSkiaSharp": "0.5.8.3", "ShimSkiaSharp": "0.5.10",
"Svg.Custom": "0.5.8.3" "Svg.Custom": "0.5.10"
} }
}, },
"Svg.Skia": { "Svg.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "ajQ0aINQtEzWkqEXyJjnwqOFNusWNMHJVGrKa1ISbP21nrWJh+tApydLFVFGGjs91d7K3YOUbWDKlEzzdDQaOg==", "contentHash": "Xz/nd+5dNJAh7IbfjyduWIJAtpHNqMopX+ORg6ZNnW6l1I7lK20KHlSdMNy9c18vALrA95eU8WFo00nloLVUkQ==",
"dependencies": { "dependencies": {
"SkiaSharp": "2.80.2", "SkiaSharp": "2.80.2",
"SkiaSharp.HarfBuzz": "2.80.2", "SkiaSharp.HarfBuzz": "2.80.2",
"Svg.Custom": "0.5.8.3", "Svg.Custom": "0.5.10",
"Svg.Model": "0.5.8.3" "Svg.Model": "0.5.10"
} }
}, },
"System.AppContext": { "System.AppContext": {
@ -1335,15 +1341,6 @@
"System.Runtime.Extensions": "4.3.0" "System.Runtime.Extensions": "4.3.0"
} }
}, },
"System.Runtime.Serialization.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "Wz+0KOukJGAlXjtKr+5Xpuxf8+c8739RI1C+A2BoQZT+wMCCoMDDdO8/4IRHfaVINqL78GO8dW8G2lW/e45Mcw==",
"dependencies": {
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Security.AccessControl": { "System.Security.AccessControl": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "5.0.0",
@ -1658,7 +1655,7 @@
"EmbedIO": "3.4.3", "EmbedIO": "3.4.3",
"HidSharp": "2.1.0", "HidSharp": "2.1.0",
"Humanizer.Core": "2.11.10", "Humanizer.Core": "2.11.10",
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"McMaster.NETCore.Plugins": "1.4.0", "McMaster.NETCore.Plugins": "1.4.0",
"Newtonsoft.Json": "13.0.1", "Newtonsoft.Json": "13.0.1",
"Ninject": "3.3.4", "Ninject": "3.3.4",
@ -1679,7 +1676,7 @@
"artemis.storage": { "artemis.storage": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"Serilog": "2.10.0" "Serilog": "2.10.0"
} }
}, },
@ -1689,16 +1686,17 @@
"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.10", "Avalonia": "0.10.10",
"Avalonia.Controls.PanAndZoom": "4.2.0", "Avalonia.Controls.PanAndZoom": "4.3.0",
"Avalonia.Desktop": "0.10.10", "Avalonia.Desktop": "0.10.10",
"Avalonia.Diagnostics": "0.10.10", "Avalonia.Diagnostics": "0.10.10",
"Avalonia.ReactiveUI": "0.10.10", "Avalonia.ReactiveUI": "0.10.10",
"Avalonia.Svg.Skia": "0.10.8.3", "Avalonia.Svg.Skia": "0.10.10",
"FluentAvaloniaUI": "1.1.5", "FluentAvaloniaUI": "1.1.6",
"Flurl.Http": "3.2.0", "Flurl.Http": "3.2.0",
"Live.Avalonia": "1.3.1", "Live.Avalonia": "1.3.1",
"Material.Icons.Avalonia": "1.0.2", "Material.Icons.Avalonia": "1.0.2",
"Splat.Ninject": "13.1.30" "ReactiveUI.Validation": "2.2.1",
"Splat.Ninject": "13.1.63"
} }
}, },
"artemis.ui.shared": { "artemis.ui.shared": {
@ -1707,12 +1705,13 @@
"Artemis.Core": "1.0.0", "Artemis.Core": "1.0.0",
"Avalonia": "0.10.10", "Avalonia": "0.10.10",
"Avalonia.ReactiveUI": "0.10.10", "Avalonia.ReactiveUI": "0.10.10",
"Avalonia.Svg.Skia": "0.10.8.3", "Avalonia.Svg.Skia": "0.10.10",
"Avalonia.Xaml.Behaviors": "0.10.10", "Avalonia.Xaml.Behaviors": "0.10.10.4",
"Avalonia.Xaml.Interactions": "0.10.10", "Avalonia.Xaml.Interactions": "0.10.10.4",
"Avalonia.Xaml.Interactivity": "0.10.10", "Avalonia.Xaml.Interactivity": "0.10.10.4",
"FluentAvaloniaUI": "1.1.5", "FluentAvaloniaUI": "1.1.6",
"Material.Icons.Avalonia": "1.0.2" "Material.Icons.Avalonia": "1.0.2",
"ReactiveUI.Validation": "2.2.1"
} }
} }
} }

View File

@ -71,10 +71,10 @@
}, },
"Avalonia.Controls.PanAndZoom": { "Avalonia.Controls.PanAndZoom": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.2.0", "resolved": "4.3.0",
"contentHash": "zIQhp86CdV7xmFXFkaQBDNDr0WSyumEdJvqvIrywG5SEQK3HzACt0gR85KX19DHTlkJlnUVjmfkTEiPjwvgGtA==", "contentHash": "oUpQm2frhjWll5QWLx8Uzc2VWDNXgPqONlNBLu2gFBis1lkce1jjZvu423U7RNfvg1rOMeZoeiodZq7xZ02STA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8" "Avalonia": "0.10.10"
} }
}, },
"Avalonia.FreeDesktop": { "Avalonia.FreeDesktop": {
@ -113,13 +113,13 @@
}, },
"Avalonia.Svg.Skia": { "Avalonia.Svg.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.8.3", "resolved": "0.10.10",
"contentHash": "w7RYf+8+gOI3uVZZJ59S0EP49LVsyr1jpnZQzVFQqKa3y/c/i2jT/EUoKOeaqPMhFIsQZyEF4iluqoo6aZ05Tw==", "contentHash": "7xQkg3b/djGjGQe6ODxCY+LxMeZ0MtSFUOeEu8IMMUG89gueptuS84GZMRY27xG8lvjP3Mu8B1p3/YY5u7UiDg==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"Avalonia.Skia": "0.10.8", "Avalonia.Skia": "0.10.10",
"SkiaSharp": "2.80.2", "SkiaSharp": "2.80.2",
"Svg.Skia": "0.5.8.3" "Svg.Skia": "0.5.10"
} }
}, },
"Avalonia.Win32": { "Avalonia.Win32": {
@ -145,27 +145,27 @@
}, },
"Avalonia.Xaml.Behaviors": { "Avalonia.Xaml.Behaviors": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.10", "resolved": "0.10.10.4",
"contentHash": "rHDkieWZDTjG+PVGQzronzknmH24r2VDtzbNfC3O8FLZGqREsBoCRDrqW4R4bmtD6CqpDPBey5soBYnnDE1m3Q==", "contentHash": "iSVOObfXch8vFzhYFvwGntRt4l4kg+dxXYc4C4RDhnoyPh60BCMUzdk2gYUYySv9UVSGAhqH4dQPWZ0l9USmYA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.10", "Avalonia": "0.10.10",
"Avalonia.Xaml.Interactions": "0.10.10", "Avalonia.Xaml.Interactions": "0.10.10.4",
"Avalonia.Xaml.Interactivity": "0.10.10" "Avalonia.Xaml.Interactivity": "0.10.10.4"
} }
}, },
"Avalonia.Xaml.Interactions": { "Avalonia.Xaml.Interactions": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.10", "resolved": "0.10.10.4",
"contentHash": "bOJvciyk6kUjPx+mg6n+bwHQqRqgNiTDzTBkpokfkcWl9pMAlKvqqUe6YXWVCpKIDBjbzvkAbYa29S0ajqwFxw==", "contentHash": "OAwrl0tzsz+iX2z3T5wdsEG/JkbnlylfXUjCfbgQlQqODUBO0kk02RpCHJMnV86apkVXjeLV+S5+yA1yX+DT6g==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.10", "Avalonia": "0.10.10",
"Avalonia.Xaml.Interactivity": "0.10.10" "Avalonia.Xaml.Interactivity": "0.10.10.4"
} }
}, },
"Avalonia.Xaml.Interactivity": { "Avalonia.Xaml.Interactivity": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.10", "resolved": "0.10.10.4",
"contentHash": "xxWrpi0HsySczpU3Zl6c2ugbkTOs9qwqbvClfi/AKncoVbWpXv7W6J3kfQcfRlnKFwkTPjLyTYKVERIkb7kNCQ==", "contentHash": "RH33/HboQikon64SCfu1qFpuy4+mox2SEGYbXrrw9mnw3Ogw8PeYTJLtZw8/mNYs6dZAU3NusRBaLIG+0PGisw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.10" "Avalonia": "0.10.10"
} }
@ -189,8 +189,8 @@
}, },
"DynamicData": { "DynamicData": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.1.1", "resolved": "7.3.1",
"contentHash": "Pc6J5bFnSxEa64PV2V67FMcLlDdpv6m+zTBKSnRN3aLon/WtWWy8kuDpHFbJlgXHtqc6Nxloj9ItuvDlvKC/8w==", "contentHash": "E9oTvWlAgzct0MuWt6k+0s+nSDA3LkFVvDwkMUTklIZZnva314KZAEF2vG4XX9I98ia+EpMqjte67jWEBJlsRw==",
"dependencies": { "dependencies": {
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
@ -210,12 +210,12 @@
}, },
"FluentAvaloniaUI": { "FluentAvaloniaUI": {
"type": "Transitive", "type": "Transitive",
"resolved": "1.1.5", "resolved": "1.1.6",
"contentHash": "1W1VZQaCeH4/kzNM2c9yPHAVVs9lW9/09bzz1lqu7Tvu79u9JCOjwkZmR8rGC0KbyOA7twwVr2/VvB84zDZYvA==", "contentHash": "EJukyiTmEVhaYlHdntFMyQKI4+u772rSClKYQqJRfkTb1NoJXLqiIVqMjx8ZQ0pxnfih+6CZ7+x82lfrGHIPUw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.9", "Avalonia": "0.10.10",
"Avalonia.Desktop": "0.10.9", "Avalonia.Desktop": "0.10.10",
"Avalonia.Diagnostics": "0.10.9" "Avalonia.Diagnostics": "0.10.10"
} }
}, },
"Flurl": { "Flurl": {
@ -269,8 +269,8 @@
}, },
"LiteDB": { "LiteDB": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.10", "resolved": "5.0.11",
"contentHash": "x70WuqMDuP75dajqSLvO+AnI/BbwS6da+ukTO7rueV7VoXoQ5CRA9FV4r7cOS4OUr2NS1Up7LDIutjCxQycRvg==" "contentHash": "6cL4bOmVCUB0gIK+6qIr68HeqjjHZicPDGQjvJ87mIOvkFsEsJWkIps3yoKNeLpHhJQur++yoQ9Q8gxsdos0xQ=="
}, },
"Live.Avalonia": { "Live.Avalonia": {
"type": "Transitive", "type": "Transitive",
@ -505,13 +505,19 @@
}, },
"ReactiveUI": { "ReactiveUI": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.2.10", "resolved": "16.2.6",
"contentHash": "fOCbEZ+RsO2Jhv6vB8VX+ZEvczYJaC95atcSG7oXohJeL/sEwbbqvv9k+tbj2l4bRSj2j5CQvhwA3HNLaxlCAg==", "contentHash": "jf1RvD8HxHuA6CGQtheGHUCHzRrhpvo0z593Npsz7g8KJWXfGR45Dc9bILJHoymBxhdDD1L1WjUfh0fcucIPPg==",
"dependencies": { "dependencies": {
"DynamicData": "7.1.1", "DynamicData": "7.3.1",
"Splat": "10.0.1", "Splat": "13.1.1"
"System.Reactive": "5.0.0", }
"System.Runtime.Serialization.Primitives": "4.3.0" },
"ReactiveUI.Validation": {
"type": "Transitive",
"resolved": "2.2.1",
"contentHash": "rhEphZ4ErbGfNtbBQ/tYMsLJYHyLVyqidU+sgZ3kXKbS7QrNoM4j6PPxCwLMKsJUuvVL8JN45xgmB9tSwm7+lg==",
"dependencies": {
"ReactiveUI": "16.2.6"
} }
}, },
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
@ -652,8 +658,8 @@
}, },
"ShimSkiaSharp": { "ShimSkiaSharp": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "BWwwsIlYUFF0DUc8Pa9xONIXVDvEL9pOYc9YmWilpHrWC37dcK+H4+tfuxztZxtfJx559HGn+6iZmMDjfFoOxA==" "contentHash": "G1ltdwS5+eMhMCoMx31hHjFIznGAjdUK7xAg8raFMFbN09p2tuxzvK7cKbveWm8SEAGIW7NgDyEqGGJzrPrMrg=="
}, },
"SkiaSharp": { "SkiaSharp": {
"type": "Transitive", "type": "Transitive",
@ -682,22 +688,22 @@
}, },
"Splat": { "Splat": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.1.30", "resolved": "13.1.63",
"contentHash": "yaj3r8CvHQwtvhfTi+dp5LpIb3c4svqe/tL6LdAS8wWP+dXAp3fTCLjYx21TrW1QBFTBJcg9lrJqDPbheSzHbA==" "contentHash": "7iW45RA7AbSlQPCgdokmysva5PGd6iBUhuNkC0XD73LF9dxfTkKeo3wZkohU7nvspDhJ7PJsYHvDtxIt5bMQ8Q=="
}, },
"Splat.Ninject": { "Splat.Ninject": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.1.30", "resolved": "13.1.63",
"contentHash": "hYgyD12Syt2l8U/KccMzNUj4nmrdULjoRTF4g5Q9XtVWPrcdTYmLEdcX/prZEWaFT7vGNP6x9uFXvOlM7Jc+gg==", "contentHash": "rTF0HSa6p8nxrXj2hwVgkutcTDJUXY34sY+zYK4ky65b7a0ROL8kdiYyxVVLE4Lq31N5Rcd4bBbqlPkgwZguww==",
"dependencies": { "dependencies": {
"Ninject": "3.3.4", "Ninject": "3.3.4",
"Splat": "13.1.30" "Splat": "13.1.63"
} }
}, },
"Svg.Custom": { "Svg.Custom": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "6FnbI4T3uCNN7DYJpfPFa4caTTJzp4YbhU3J4c/syX7wQNSeQ/1u7JZZ+dGgrRUauiWP8VsiCLKP8qinc5xI5w==", "contentHash": "Ypi/4NxDxjM24vsK+4Uit08aJUFHcZZpB5Ctb7FLMVevMq0hYeDqzKp6OVLFO5UCX/TxUfRiL1u9F7fvUDA0tQ==",
"dependencies": { "dependencies": {
"Fizzler": "1.2.0", "Fizzler": "1.2.0",
"System.Drawing.Common": "5.0.0", "System.Drawing.Common": "5.0.0",
@ -708,22 +714,22 @@
}, },
"Svg.Model": { "Svg.Model": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "F/rimPwV5KF64P8oofXGMwOZ0T7b3z1A9OiC4mv5OdSpLpMpUxpSwGLAOkJ5DFqQgXqVjKKLhPdjIjQBwy0AjA==", "contentHash": "sh5W7VpghtFjDnPOMa+CEiIKpJPmkb7FxNuHnB2sLZwJR2qzyVlZaBWM95VaRAXlOU8c0qbtA5ZNVREOpzLQRw==",
"dependencies": { "dependencies": {
"ShimSkiaSharp": "0.5.8.3", "ShimSkiaSharp": "0.5.10",
"Svg.Custom": "0.5.8.3" "Svg.Custom": "0.5.10"
} }
}, },
"Svg.Skia": { "Svg.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "ajQ0aINQtEzWkqEXyJjnwqOFNusWNMHJVGrKa1ISbP21nrWJh+tApydLFVFGGjs91d7K3YOUbWDKlEzzdDQaOg==", "contentHash": "Xz/nd+5dNJAh7IbfjyduWIJAtpHNqMopX+ORg6ZNnW6l1I7lK20KHlSdMNy9c18vALrA95eU8WFo00nloLVUkQ==",
"dependencies": { "dependencies": {
"SkiaSharp": "2.80.2", "SkiaSharp": "2.80.2",
"SkiaSharp.HarfBuzz": "2.80.2", "SkiaSharp.HarfBuzz": "2.80.2",
"Svg.Custom": "0.5.8.3", "Svg.Custom": "0.5.10",
"Svg.Model": "0.5.8.3" "Svg.Model": "0.5.10"
} }
}, },
"System.AppContext": { "System.AppContext": {
@ -1335,15 +1341,6 @@
"System.Runtime.Extensions": "4.3.0" "System.Runtime.Extensions": "4.3.0"
} }
}, },
"System.Runtime.Serialization.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "Wz+0KOukJGAlXjtKr+5Xpuxf8+c8739RI1C+A2BoQZT+wMCCoMDDdO8/4IRHfaVINqL78GO8dW8G2lW/e45Mcw==",
"dependencies": {
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Security.AccessControl": { "System.Security.AccessControl": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "5.0.0",
@ -1658,7 +1655,7 @@
"EmbedIO": "3.4.3", "EmbedIO": "3.4.3",
"HidSharp": "2.1.0", "HidSharp": "2.1.0",
"Humanizer.Core": "2.11.10", "Humanizer.Core": "2.11.10",
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"McMaster.NETCore.Plugins": "1.4.0", "McMaster.NETCore.Plugins": "1.4.0",
"Newtonsoft.Json": "13.0.1", "Newtonsoft.Json": "13.0.1",
"Ninject": "3.3.4", "Ninject": "3.3.4",
@ -1679,7 +1676,7 @@
"artemis.storage": { "artemis.storage": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"Serilog": "2.10.0" "Serilog": "2.10.0"
} }
}, },
@ -1689,16 +1686,17 @@
"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.10", "Avalonia": "0.10.10",
"Avalonia.Controls.PanAndZoom": "4.2.0", "Avalonia.Controls.PanAndZoom": "4.3.0",
"Avalonia.Desktop": "0.10.10", "Avalonia.Desktop": "0.10.10",
"Avalonia.Diagnostics": "0.10.10", "Avalonia.Diagnostics": "0.10.10",
"Avalonia.ReactiveUI": "0.10.10", "Avalonia.ReactiveUI": "0.10.10",
"Avalonia.Svg.Skia": "0.10.8.3", "Avalonia.Svg.Skia": "0.10.10",
"FluentAvaloniaUI": "1.1.5", "FluentAvaloniaUI": "1.1.6",
"Flurl.Http": "3.2.0", "Flurl.Http": "3.2.0",
"Live.Avalonia": "1.3.1", "Live.Avalonia": "1.3.1",
"Material.Icons.Avalonia": "1.0.2", "Material.Icons.Avalonia": "1.0.2",
"Splat.Ninject": "13.1.30" "ReactiveUI.Validation": "2.2.1",
"Splat.Ninject": "13.1.63"
} }
}, },
"artemis.ui.shared": { "artemis.ui.shared": {
@ -1707,12 +1705,13 @@
"Artemis.Core": "1.0.0", "Artemis.Core": "1.0.0",
"Avalonia": "0.10.10", "Avalonia": "0.10.10",
"Avalonia.ReactiveUI": "0.10.10", "Avalonia.ReactiveUI": "0.10.10",
"Avalonia.Svg.Skia": "0.10.8.3", "Avalonia.Svg.Skia": "0.10.10",
"Avalonia.Xaml.Behaviors": "0.10.10", "Avalonia.Xaml.Behaviors": "0.10.10.4",
"Avalonia.Xaml.Interactions": "0.10.10", "Avalonia.Xaml.Interactions": "0.10.10.4",
"Avalonia.Xaml.Interactivity": "0.10.10", "Avalonia.Xaml.Interactivity": "0.10.10.4",
"FluentAvaloniaUI": "1.1.5", "FluentAvaloniaUI": "1.1.6",
"Material.Icons.Avalonia": "1.0.2" "Material.Icons.Avalonia": "1.0.2",
"ReactiveUI.Validation": "2.2.1"
} }
} }
} }

View File

@ -18,12 +18,13 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia" Version="0.10.10" /> <PackageReference Include="Avalonia" Version="0.10.10" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.10" /> <PackageReference Include="Avalonia.ReactiveUI" Version="0.10.10" />
<PackageReference Include="Avalonia.Svg.Skia" Version="0.10.8.3" /> <PackageReference Include="Avalonia.Svg.Skia" Version="0.10.10" />
<PackageReference Include="Avalonia.Xaml.Behaviors" Version="0.10.10" /> <PackageReference Include="Avalonia.Xaml.Behaviors" Version="0.10.10.4" />
<PackageReference Include="Avalonia.Xaml.Interactions" Version="0.10.10" /> <PackageReference Include="Avalonia.Xaml.Interactions" Version="0.10.10.4" />
<PackageReference Include="Avalonia.Xaml.Interactivity" Version="0.10.10" /> <PackageReference Include="Avalonia.Xaml.Interactivity" Version="0.10.10.4" />
<PackageReference Include="FluentAvaloniaUI" Version="1.1.5" /> <PackageReference Include="FluentAvaloniaUI" Version="1.1.6" />
<PackageReference Include="Material.Icons.Avalonia" Version="1.0.2" /> <PackageReference Include="Material.Icons.Avalonia" Version="1.0.2" />
<PackageReference Include="ReactiveUI.Validation" Version="2.2.1" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Page Include="DefaultTypes\DataModel\Display\DefaultDataModelDisplayView.xaml"> <Page Include="DefaultTypes\DataModel\Display\DefaultDataModelDisplayView.xaml">

View File

@ -0,0 +1,25 @@
using Avalonia.Controls;
using Avalonia.LogicalTree;
namespace Artemis.UI.Shared.Extensions
{
/// <summary>
/// Provides extension methods for Avalonia's <see cref="Control" /> type
/// </summary>
public static class ControlExtensions
{
/// <summary>
/// Clears all data validation errors on the given control and any of it's logical siblings
/// </summary>
/// <param name="target">The target control</param>
public static void ClearAllDataValidationErrors(this Control target)
{
DataValidationErrors.ClearErrors(target);
foreach (ILogical logicalChild in target.GetLogicalChildren())
{
if (logicalChild is Control childControl)
childControl.ClearAllDataValidationErrors();
}
}
}
}

View File

@ -6,6 +6,7 @@ using Avalonia.Controls;
using FluentAvalonia.UI.Controls; using FluentAvalonia.UI.Controls;
using Ninject; using Ninject;
using Ninject.Parameters; using Ninject.Parameters;
using ReactiveUI;
namespace Artemis.UI.Shared.Services.Builders namespace Artemis.UI.Shared.Services.Builders
{ {
@ -14,6 +15,7 @@ namespace Artemis.UI.Shared.Services.Builders
private readonly ContentDialog _contentDialog; private readonly ContentDialog _contentDialog;
private readonly IKernel _kernel; private readonly IKernel _kernel;
private readonly Window _parent; private readonly Window _parent;
private ContentDialogViewModelBase? _viewModel;
internal ContentDialogBuilder(IKernel kernel, Window parent) internal ContentDialogBuilder(IKernel kernel, Window parent)
{ {
@ -53,6 +55,13 @@ namespace Artemis.UI.Shared.Services.Builders
_contentDialog.PrimaryButtonCommand = builder.Command; _contentDialog.PrimaryButtonCommand = builder.Command;
_contentDialog.PrimaryButtonCommandParameter = builder.CommandParameter; _contentDialog.PrimaryButtonCommandParameter = builder.CommandParameter;
// I feel like this isn't my responsibility...
if (builder.Command != null)
{
_contentDialog.IsPrimaryButtonEnabled = builder.Command.CanExecute(builder.CommandParameter);
builder.Command.CanExecuteChanged += (_, _) => _contentDialog.IsPrimaryButtonEnabled = builder.Command.CanExecute(builder.CommandParameter);
}
return this; return this;
} }
@ -66,6 +75,13 @@ namespace Artemis.UI.Shared.Services.Builders
_contentDialog.SecondaryButtonCommand = builder.Command; _contentDialog.SecondaryButtonCommand = builder.Command;
_contentDialog.SecondaryButtonCommandParameter = builder.CommandParameter; _contentDialog.SecondaryButtonCommandParameter = builder.CommandParameter;
// I feel like this isn't my responsibility...
if (builder.Command != null)
{
_contentDialog.IsSecondaryButtonEnabled = builder.Command.CanExecute(builder.CommandParameter);
builder.Command.CanExecuteChanged += (_, _) => _contentDialog.IsSecondaryButtonEnabled = builder.Command.CanExecute(builder.CommandParameter);
}
return this; return this;
} }
@ -75,24 +91,32 @@ namespace Artemis.UI.Shared.Services.Builders
return this; return this;
} }
public ContentDialogBuilder WithViewModel<T>(out T viewModel, params (string name, object value)[] parameters) where T : ViewModelBase public ContentDialogBuilder WithViewModel<T>(out T viewModel, params (string name, object? value)[] parameters) where T : ContentDialogViewModelBase
{ {
IParameter[] paramsArray = parameters.Select(kv => new ConstructorArgument(kv.name, kv.value)).Cast<IParameter>().ToArray(); IParameter[] paramsArray = parameters.Select(kv => new ConstructorArgument(kv.name, kv.value)).Cast<IParameter>().ToArray();
viewModel = _kernel.Get<T>(paramsArray); viewModel = _kernel.Get<T>(paramsArray);
viewModel.ContentDialog = _contentDialog;
_contentDialog.Content = viewModel; _contentDialog.Content = viewModel;
_viewModel = viewModel;
return this; return this;
} }
public async Task<ContentDialogResult> ShowAsync() public async Task<ContentDialogResult> ShowAsync()
{ {
if (_parent.Content is not Panel panel) if (_parent.Content is not Panel panel)
return ContentDialogResult.None; throw new ArtemisSharedUIException($"The parent window {_parent.GetType().FullName} should contain a panel at its root");
try try
{ {
panel.Children.Add(_contentDialog); panel.Children.Add(_contentDialog);
return await _contentDialog.ShowAsync(); ContentDialogResult result = await _contentDialog.ShowAsync();
// Take the dialog away from the VM in case it's going to try to hide it again or whatever...
if (_viewModel != null)
_viewModel.ContentDialog = null;
return result;
} }
finally finally
{ {

View File

@ -142,7 +142,7 @@ namespace Artemis.UI.Shared.Services
throw new ArtemisSharedUIException("Can't show a dialog when application lifetime is not IClassicDesktopStyleApplicationLifetime."); throw new ArtemisSharedUIException("Can't show a dialog when application lifetime is not IClassicDesktopStyleApplicationLifetime.");
} }
Window? parent = classic.Windows.FirstOrDefault(w => w.IsActive) ?? classic.MainWindow; Window? parent = classic.Windows.FirstOrDefault(w => w.IsActive && w.ShowInTaskbar) ?? classic.MainWindow;
return parent; return parent;
} }
} }

View File

@ -1,10 +1,69 @@
using System; using System;
using System.Reactive.Disposables; using System.Reactive.Disposables;
using Artemis.UI.Shared.Events; using Artemis.UI.Shared.Events;
using FluentAvalonia.UI.Controls;
using ReactiveUI; using ReactiveUI;
using ReactiveUI.Validation.Helpers;
namespace Artemis.UI.Shared namespace Artemis.UI.Shared
{ {
/// <summary>
/// Represents the base class for Artemis view models
/// </summary>
public abstract class ContentDialogViewModelBase : ReactiveValidationObject, IActivatableViewModel, IDisposable
{
/// <summary>
/// Gets the content dialog that hosts the view model
/// </summary>
public ContentDialog? ContentDialog { get; internal set; }
#region Implementation of IActivatableViewModel
/// <inheritdoc />
public ViewModelActivator Activator { get; } = new();
#endregion
#region IDisposable
/// <summary>
/// Releases the unmanaged resources used by the object and optionally releases the managed resources.
/// </summary>
/// <param name="disposing">
/// <see langword="true" /> to release both managed and unmanaged resources;
/// <see langword="false" /> to release only unmanaged resources.
/// </param>
protected virtual void Dispose(bool disposing)
{
}
/// <inheritdoc />
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
#endregion
}
/// <summary>
/// Represents the base class for Artemis view models
/// </summary>
public abstract class ViewModelValidationBase : ReactiveValidationObject
{
private string? _displayName;
/// <summary>
/// Gets or sets the display name of the view model
/// </summary>
public string? DisplayName
{
get => _displayName;
set => this.RaiseAndSetIfChanged(ref _displayName, value);
}
}
/// <summary> /// <summary>
/// Represents the base class for Artemis view models /// Represents the base class for Artemis view models
/// </summary> /// </summary>

View File

@ -30,55 +30,55 @@
}, },
"Avalonia.Svg.Skia": { "Avalonia.Svg.Skia": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.8.3, )", "requested": "[0.10.10, )",
"resolved": "0.10.8.3", "resolved": "0.10.10",
"contentHash": "w7RYf+8+gOI3uVZZJ59S0EP49LVsyr1jpnZQzVFQqKa3y/c/i2jT/EUoKOeaqPMhFIsQZyEF4iluqoo6aZ05Tw==", "contentHash": "7xQkg3b/djGjGQe6ODxCY+LxMeZ0MtSFUOeEu8IMMUG89gueptuS84GZMRY27xG8lvjP3Mu8B1p3/YY5u7UiDg==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"Avalonia.Skia": "0.10.8", "Avalonia.Skia": "0.10.10",
"SkiaSharp": "2.80.2", "SkiaSharp": "2.80.2",
"Svg.Skia": "0.5.8.3" "Svg.Skia": "0.5.10"
} }
}, },
"Avalonia.Xaml.Behaviors": { "Avalonia.Xaml.Behaviors": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.10, )", "requested": "[0.10.10.4, )",
"resolved": "0.10.10", "resolved": "0.10.10.4",
"contentHash": "rHDkieWZDTjG+PVGQzronzknmH24r2VDtzbNfC3O8FLZGqREsBoCRDrqW4R4bmtD6CqpDPBey5soBYnnDE1m3Q==", "contentHash": "iSVOObfXch8vFzhYFvwGntRt4l4kg+dxXYc4C4RDhnoyPh60BCMUzdk2gYUYySv9UVSGAhqH4dQPWZ0l9USmYA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.10", "Avalonia": "0.10.10",
"Avalonia.Xaml.Interactions": "0.10.10", "Avalonia.Xaml.Interactions": "0.10.10.4",
"Avalonia.Xaml.Interactivity": "0.10.10" "Avalonia.Xaml.Interactivity": "0.10.10.4"
} }
}, },
"Avalonia.Xaml.Interactions": { "Avalonia.Xaml.Interactions": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.10, )", "requested": "[0.10.10.4, )",
"resolved": "0.10.10", "resolved": "0.10.10.4",
"contentHash": "bOJvciyk6kUjPx+mg6n+bwHQqRqgNiTDzTBkpokfkcWl9pMAlKvqqUe6YXWVCpKIDBjbzvkAbYa29S0ajqwFxw==", "contentHash": "OAwrl0tzsz+iX2z3T5wdsEG/JkbnlylfXUjCfbgQlQqODUBO0kk02RpCHJMnV86apkVXjeLV+S5+yA1yX+DT6g==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.10", "Avalonia": "0.10.10",
"Avalonia.Xaml.Interactivity": "0.10.10" "Avalonia.Xaml.Interactivity": "0.10.10.4"
} }
}, },
"Avalonia.Xaml.Interactivity": { "Avalonia.Xaml.Interactivity": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.10, )", "requested": "[0.10.10.4, )",
"resolved": "0.10.10", "resolved": "0.10.10.4",
"contentHash": "xxWrpi0HsySczpU3Zl6c2ugbkTOs9qwqbvClfi/AKncoVbWpXv7W6J3kfQcfRlnKFwkTPjLyTYKVERIkb7kNCQ==", "contentHash": "RH33/HboQikon64SCfu1qFpuy4+mox2SEGYbXrrw9mnw3Ogw8PeYTJLtZw8/mNYs6dZAU3NusRBaLIG+0PGisw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.10" "Avalonia": "0.10.10"
} }
}, },
"FluentAvaloniaUI": { "FluentAvaloniaUI": {
"type": "Direct", "type": "Direct",
"requested": "[1.1.5, )", "requested": "[1.1.6, )",
"resolved": "1.1.5", "resolved": "1.1.6",
"contentHash": "1W1VZQaCeH4/kzNM2c9yPHAVVs9lW9/09bzz1lqu7Tvu79u9JCOjwkZmR8rGC0KbyOA7twwVr2/VvB84zDZYvA==", "contentHash": "EJukyiTmEVhaYlHdntFMyQKI4+u772rSClKYQqJRfkTb1NoJXLqiIVqMjx8ZQ0pxnfih+6CZ7+x82lfrGHIPUw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.9", "Avalonia": "0.10.10",
"Avalonia.Desktop": "0.10.9", "Avalonia.Desktop": "0.10.10",
"Avalonia.Diagnostics": "0.10.9" "Avalonia.Diagnostics": "0.10.10"
} }
}, },
"Material.Icons.Avalonia": { "Material.Icons.Avalonia": {
@ -91,6 +91,15 @@
"Material.Icons": "1.0.2" "Material.Icons": "1.0.2"
} }
}, },
"ReactiveUI.Validation": {
"type": "Direct",
"requested": "[2.2.1, )",
"resolved": "2.2.1",
"contentHash": "rhEphZ4ErbGfNtbBQ/tYMsLJYHyLVyqidU+sgZ3kXKbS7QrNoM4j6PPxCwLMKsJUuvVL8JN45xgmB9tSwm7+lg==",
"dependencies": {
"ReactiveUI": "16.2.6"
}
},
"Avalonia.Angle.Windows.Natives": { "Avalonia.Angle.Windows.Natives": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.1.0.2020091801", "resolved": "2.1.0.2020091801",
@ -98,53 +107,53 @@
}, },
"Avalonia.Controls.DataGrid": { "Avalonia.Controls.DataGrid": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.9", "resolved": "0.10.10",
"contentHash": "AiBcvRi6Dbu0q45l2rQYa0uh05VsM2NYtjrAi2KKjDlu7c9molsZ2hFAKzhf0ugxgRT5tLMHAUA2urCWCzDzFw==", "contentHash": "AsKm4xBJuCnIdUibNnsU5mNd6+kivhO5gEmpzO9+kNvVZCXxJkKZfmqS+9ghqXnF5c4BDYF5BPvPjZ1cP/jn7Q==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.9", "Avalonia": "0.10.10",
"Avalonia.Remote.Protocol": "0.10.9", "Avalonia.Remote.Protocol": "0.10.10",
"JetBrains.Annotations": "10.3.0", "JetBrains.Annotations": "10.3.0",
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
}, },
"Avalonia.Desktop": { "Avalonia.Desktop": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.9", "resolved": "0.10.10",
"contentHash": "RWWfnBpslILJEqrdVySJP4leZfINXNiTIsNVEs/pKM5cBM/rwlCAKnfKASKgkbAfBByknUpmJd4PgLoavabz3w==", "contentHash": "K23aC2UxplUqbKvSehgcwLRU0dACRLSQGLs3bXKKW1n6ICXtWhwqSmx8a1Ju0PbbQISRfoc0IjHoAXlGRNZ1dA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.9", "Avalonia": "0.10.10",
"Avalonia.Native": "0.10.9", "Avalonia.Native": "0.10.10",
"Avalonia.Skia": "0.10.9", "Avalonia.Skia": "0.10.10",
"Avalonia.Win32": "0.10.9", "Avalonia.Win32": "0.10.10",
"Avalonia.X11": "0.10.9" "Avalonia.X11": "0.10.10"
} }
}, },
"Avalonia.Diagnostics": { "Avalonia.Diagnostics": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.9", "resolved": "0.10.10",
"contentHash": "Zc6iMO1TLRMvEi7pwRnpq/jlPyHvz0HotrJelyQs3VYzbrLxNy4YvLfiuWeIT9b3DCozD7V8blzgN7NSBU2mPg==", "contentHash": "k4VA+uch7Xtd6kqp+A6XEpsVuARseIh6PQtarI3lxcTFFrNbxDZhD1nXUILXrnp44uQ7JPGpKYGlJ0EElfxhbA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.9", "Avalonia": "0.10.10",
"Avalonia.Controls.DataGrid": "0.10.9", "Avalonia.Controls.DataGrid": "0.10.10",
"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.FreeDesktop": { "Avalonia.FreeDesktop": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.9", "resolved": "0.10.10",
"contentHash": "SG1hwJNktnCrDK4COtL+IArd2CbAlHBDAYP8wnTEVfnmrAsGvSijvICN8jrNRQnomYRNgA5TjsEFq5Vz8Z9PPQ==", "contentHash": "pflbsb3CQkZH6T7NCG16Cu/LhA0kJD2ZvRprjzueIWonuS4pxF231Z2T3xv5LGaXpN44ufBjpMvlczCmb6sieQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.9", "Avalonia": "0.10.10",
"Tmds.DBus": "0.9.0" "Tmds.DBus": "0.9.0"
} }
}, },
"Avalonia.Native": { "Avalonia.Native": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.9", "resolved": "0.10.10",
"contentHash": "IOZ7S7o2F2STZAj2uTve4nnnF008CK4/nGSqvYxXyM0X3jK4yCkhydbBN7jmItDfD7hR0h+CQfRUS7qekTNlEQ==", "contentHash": "pJ8mlzjtlhPA7ueHnCN4FjBmXZMXJ+hKG+6uLnz+3A879oGLei6yacYRVel80sVoIML1ir8A5InWL52ra1Qdag==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.9" "Avalonia": "0.10.10"
} }
}, },
"Avalonia.Remote.Protocol": { "Avalonia.Remote.Protocol": {
@ -154,10 +163,10 @@
}, },
"Avalonia.Skia": { "Avalonia.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.9", "resolved": "0.10.10",
"contentHash": "NMnwpHg98IgBG334GOD/lOiXZhXnKEuwCV3ztFwURg3IDKdL+erSW7VM/2rpKm6d914j627UvRaAkvMWht2K6g==", "contentHash": "8KtlObMQ+8pDMch6SMdPNpIWk9J0OaPjA7lbALEsDkRNb+XLDdIZXWbKle5Y6ASUEQhQGIX4DCP/8UYp7Us5zg==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.9", "Avalonia": "0.10.10",
"HarfBuzzSharp": "2.6.1.7", "HarfBuzzSharp": "2.6.1.7",
"HarfBuzzSharp.NativeAssets.Linux": "2.6.1.7", "HarfBuzzSharp.NativeAssets.Linux": "2.6.1.7",
"SkiaSharp": "2.80.2", "SkiaSharp": "2.80.2",
@ -166,10 +175,10 @@
}, },
"Avalonia.Win32": { "Avalonia.Win32": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.9", "resolved": "0.10.10",
"contentHash": "hZtdaEyqynFCCoYT/NCZxeE4KajJodLZCzUThv9/diZFqxYsasEQjguDVeTvLaNBVjqxsZXt35C3D72fjDzPww==", "contentHash": "6AS6yIB+OS8+g96mj+ShJihjxqhVH6v7jfdqLwjQfGAsqqqN7zBNsFdvoVVCnutuVx0g/9FhCnBTIZyZDlwqkA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.9", "Avalonia": "0.10.10",
"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"
@ -177,12 +186,12 @@
}, },
"Avalonia.X11": { "Avalonia.X11": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.9", "resolved": "0.10.10",
"contentHash": "+PoPHSmAhIcxQ1qmxc2kfbBr7Dxddaqi8FNrbCk2dqvEdQAeaxBswYupSoIARtpDE0wqtrXXneWeAnHxl/YgMw==", "contentHash": "XsWWNYlKy3XJ8HFzCvv/2Ym8Ku72tN+JxbPX8lLBZSYzQEtvfKQ+DcKb8us1AWjXQhQQSrZQylrtVZ043a4SsQ==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.9", "Avalonia": "0.10.10",
"Avalonia.FreeDesktop": "0.10.9", "Avalonia.FreeDesktop": "0.10.10",
"Avalonia.Skia": "0.10.9" "Avalonia.Skia": "0.10.10"
} }
}, },
"Castle.Core": { "Castle.Core": {
@ -204,8 +213,8 @@
}, },
"DynamicData": { "DynamicData": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.1.1", "resolved": "7.3.1",
"contentHash": "Pc6J5bFnSxEa64PV2V67FMcLlDdpv6m+zTBKSnRN3aLon/WtWWy8kuDpHFbJlgXHtqc6Nxloj9ItuvDlvKC/8w==", "contentHash": "E9oTvWlAgzct0MuWt6k+0s+nSDA3LkFVvDwkMUTklIZZnva314KZAEF2vG4XX9I98ia+EpMqjte67jWEBJlsRw==",
"dependencies": { "dependencies": {
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
@ -259,8 +268,8 @@
}, },
"LiteDB": { "LiteDB": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.10", "resolved": "5.0.11",
"contentHash": "x70WuqMDuP75dajqSLvO+AnI/BbwS6da+ukTO7rueV7VoXoQ5CRA9FV4r7cOS4OUr2NS1Up7LDIutjCxQycRvg==" "contentHash": "6cL4bOmVCUB0gIK+6qIr68HeqjjHZicPDGQjvJ87mIOvkFsEsJWkIps3yoKNeLpHhJQur++yoQ9Q8gxsdos0xQ=="
}, },
"Material.Icons": { "Material.Icons": {
"type": "Transitive", "type": "Transitive",
@ -478,13 +487,11 @@
}, },
"ReactiveUI": { "ReactiveUI": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.2.10", "resolved": "16.2.6",
"contentHash": "fOCbEZ+RsO2Jhv6vB8VX+ZEvczYJaC95atcSG7oXohJeL/sEwbbqvv9k+tbj2l4bRSj2j5CQvhwA3HNLaxlCAg==", "contentHash": "jf1RvD8HxHuA6CGQtheGHUCHzRrhpvo0z593Npsz7g8KJWXfGR45Dc9bILJHoymBxhdDD1L1WjUfh0fcucIPPg==",
"dependencies": { "dependencies": {
"DynamicData": "7.1.1", "DynamicData": "7.3.1",
"Splat": "10.0.1", "Splat": "13.1.1"
"System.Reactive": "5.0.0",
"System.Runtime.Serialization.Primitives": "4.3.0"
} }
}, },
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
@ -625,8 +632,8 @@
}, },
"ShimSkiaSharp": { "ShimSkiaSharp": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "BWwwsIlYUFF0DUc8Pa9xONIXVDvEL9pOYc9YmWilpHrWC37dcK+H4+tfuxztZxtfJx559HGn+6iZmMDjfFoOxA==" "contentHash": "G1ltdwS5+eMhMCoMx31hHjFIznGAjdUK7xAg8raFMFbN09p2tuxzvK7cKbveWm8SEAGIW7NgDyEqGGJzrPrMrg=="
}, },
"SkiaSharp": { "SkiaSharp": {
"type": "Transitive", "type": "Transitive",
@ -655,13 +662,13 @@
}, },
"Splat": { "Splat": {
"type": "Transitive", "type": "Transitive",
"resolved": "10.0.1", "resolved": "13.1.1",
"contentHash": "N8BMGVuUBnVLAHSVbna/st8XiLd8ulF3BfkKUSGCPqYpDCis3ELvM+aFaZQLBUIBEcweCYVLq3HFEBqHkCKFyA==" "contentHash": "Hv41NNJwYEoxjpCrUw0BdzN17YLZrduhrnHgJyXatSgT6Dq/N/viVkPLfohCeoXf7MqA6ppB/AxtUGU3vJ7YEA=="
}, },
"Svg.Custom": { "Svg.Custom": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "6FnbI4T3uCNN7DYJpfPFa4caTTJzp4YbhU3J4c/syX7wQNSeQ/1u7JZZ+dGgrRUauiWP8VsiCLKP8qinc5xI5w==", "contentHash": "Ypi/4NxDxjM24vsK+4Uit08aJUFHcZZpB5Ctb7FLMVevMq0hYeDqzKp6OVLFO5UCX/TxUfRiL1u9F7fvUDA0tQ==",
"dependencies": { "dependencies": {
"Fizzler": "1.2.0", "Fizzler": "1.2.0",
"System.Drawing.Common": "5.0.0", "System.Drawing.Common": "5.0.0",
@ -672,22 +679,22 @@
}, },
"Svg.Model": { "Svg.Model": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "F/rimPwV5KF64P8oofXGMwOZ0T7b3z1A9OiC4mv5OdSpLpMpUxpSwGLAOkJ5DFqQgXqVjKKLhPdjIjQBwy0AjA==", "contentHash": "sh5W7VpghtFjDnPOMa+CEiIKpJPmkb7FxNuHnB2sLZwJR2qzyVlZaBWM95VaRAXlOU8c0qbtA5ZNVREOpzLQRw==",
"dependencies": { "dependencies": {
"ShimSkiaSharp": "0.5.8.3", "ShimSkiaSharp": "0.5.10",
"Svg.Custom": "0.5.8.3" "Svg.Custom": "0.5.10"
} }
}, },
"Svg.Skia": { "Svg.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "ajQ0aINQtEzWkqEXyJjnwqOFNusWNMHJVGrKa1ISbP21nrWJh+tApydLFVFGGjs91d7K3YOUbWDKlEzzdDQaOg==", "contentHash": "Xz/nd+5dNJAh7IbfjyduWIJAtpHNqMopX+ORg6ZNnW6l1I7lK20KHlSdMNy9c18vALrA95eU8WFo00nloLVUkQ==",
"dependencies": { "dependencies": {
"SkiaSharp": "2.80.2", "SkiaSharp": "2.80.2",
"SkiaSharp.HarfBuzz": "2.80.2", "SkiaSharp.HarfBuzz": "2.80.2",
"Svg.Custom": "0.5.8.3", "Svg.Custom": "0.5.10",
"Svg.Model": "0.5.8.3" "Svg.Model": "0.5.10"
} }
}, },
"System.AppContext": { "System.AppContext": {
@ -1299,15 +1306,6 @@
"System.Runtime.Extensions": "4.3.0" "System.Runtime.Extensions": "4.3.0"
} }
}, },
"System.Runtime.Serialization.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "Wz+0KOukJGAlXjtKr+5Xpuxf8+c8739RI1C+A2BoQZT+wMCCoMDDdO8/4IRHfaVINqL78GO8dW8G2lW/e45Mcw==",
"dependencies": {
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Security.AccessControl": { "System.Security.AccessControl": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "5.0.0",
@ -1622,7 +1620,7 @@
"EmbedIO": "3.4.3", "EmbedIO": "3.4.3",
"HidSharp": "2.1.0", "HidSharp": "2.1.0",
"Humanizer.Core": "2.11.10", "Humanizer.Core": "2.11.10",
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"McMaster.NETCore.Plugins": "1.4.0", "McMaster.NETCore.Plugins": "1.4.0",
"Newtonsoft.Json": "13.0.1", "Newtonsoft.Json": "13.0.1",
"Ninject": "3.3.4", "Ninject": "3.3.4",
@ -1643,7 +1641,7 @@
"artemis.storage": { "artemis.storage": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"Serilog": "2.10.0" "Serilog": "2.10.0"
} }
} }

View File

@ -71,10 +71,10 @@
}, },
"Avalonia.Controls.PanAndZoom": { "Avalonia.Controls.PanAndZoom": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.2.0", "resolved": "4.3.0",
"contentHash": "zIQhp86CdV7xmFXFkaQBDNDr0WSyumEdJvqvIrywG5SEQK3HzACt0gR85KX19DHTlkJlnUVjmfkTEiPjwvgGtA==", "contentHash": "oUpQm2frhjWll5QWLx8Uzc2VWDNXgPqONlNBLu2gFBis1lkce1jjZvu423U7RNfvg1rOMeZoeiodZq7xZ02STA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8" "Avalonia": "0.10.10"
} }
}, },
"Avalonia.FreeDesktop": { "Avalonia.FreeDesktop": {
@ -113,13 +113,13 @@
}, },
"Avalonia.Svg.Skia": { "Avalonia.Svg.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.8.3", "resolved": "0.10.10",
"contentHash": "w7RYf+8+gOI3uVZZJ59S0EP49LVsyr1jpnZQzVFQqKa3y/c/i2jT/EUoKOeaqPMhFIsQZyEF4iluqoo6aZ05Tw==", "contentHash": "7xQkg3b/djGjGQe6ODxCY+LxMeZ0MtSFUOeEu8IMMUG89gueptuS84GZMRY27xG8lvjP3Mu8B1p3/YY5u7UiDg==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"Avalonia.Skia": "0.10.8", "Avalonia.Skia": "0.10.10",
"SkiaSharp": "2.80.2", "SkiaSharp": "2.80.2",
"Svg.Skia": "0.5.8.3" "Svg.Skia": "0.5.10"
} }
}, },
"Avalonia.Win32": { "Avalonia.Win32": {
@ -145,27 +145,27 @@
}, },
"Avalonia.Xaml.Behaviors": { "Avalonia.Xaml.Behaviors": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.10", "resolved": "0.10.10.4",
"contentHash": "rHDkieWZDTjG+PVGQzronzknmH24r2VDtzbNfC3O8FLZGqREsBoCRDrqW4R4bmtD6CqpDPBey5soBYnnDE1m3Q==", "contentHash": "iSVOObfXch8vFzhYFvwGntRt4l4kg+dxXYc4C4RDhnoyPh60BCMUzdk2gYUYySv9UVSGAhqH4dQPWZ0l9USmYA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.10", "Avalonia": "0.10.10",
"Avalonia.Xaml.Interactions": "0.10.10", "Avalonia.Xaml.Interactions": "0.10.10.4",
"Avalonia.Xaml.Interactivity": "0.10.10" "Avalonia.Xaml.Interactivity": "0.10.10.4"
} }
}, },
"Avalonia.Xaml.Interactions": { "Avalonia.Xaml.Interactions": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.10", "resolved": "0.10.10.4",
"contentHash": "bOJvciyk6kUjPx+mg6n+bwHQqRqgNiTDzTBkpokfkcWl9pMAlKvqqUe6YXWVCpKIDBjbzvkAbYa29S0ajqwFxw==", "contentHash": "OAwrl0tzsz+iX2z3T5wdsEG/JkbnlylfXUjCfbgQlQqODUBO0kk02RpCHJMnV86apkVXjeLV+S5+yA1yX+DT6g==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.10", "Avalonia": "0.10.10",
"Avalonia.Xaml.Interactivity": "0.10.10" "Avalonia.Xaml.Interactivity": "0.10.10.4"
} }
}, },
"Avalonia.Xaml.Interactivity": { "Avalonia.Xaml.Interactivity": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.10", "resolved": "0.10.10.4",
"contentHash": "xxWrpi0HsySczpU3Zl6c2ugbkTOs9qwqbvClfi/AKncoVbWpXv7W6J3kfQcfRlnKFwkTPjLyTYKVERIkb7kNCQ==", "contentHash": "RH33/HboQikon64SCfu1qFpuy4+mox2SEGYbXrrw9mnw3Ogw8PeYTJLtZw8/mNYs6dZAU3NusRBaLIG+0PGisw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.10" "Avalonia": "0.10.10"
} }
@ -189,8 +189,8 @@
}, },
"DynamicData": { "DynamicData": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.1.1", "resolved": "7.3.1",
"contentHash": "Pc6J5bFnSxEa64PV2V67FMcLlDdpv6m+zTBKSnRN3aLon/WtWWy8kuDpHFbJlgXHtqc6Nxloj9ItuvDlvKC/8w==", "contentHash": "E9oTvWlAgzct0MuWt6k+0s+nSDA3LkFVvDwkMUTklIZZnva314KZAEF2vG4XX9I98ia+EpMqjte67jWEBJlsRw==",
"dependencies": { "dependencies": {
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
@ -210,12 +210,12 @@
}, },
"FluentAvaloniaUI": { "FluentAvaloniaUI": {
"type": "Transitive", "type": "Transitive",
"resolved": "1.1.5", "resolved": "1.1.6",
"contentHash": "1W1VZQaCeH4/kzNM2c9yPHAVVs9lW9/09bzz1lqu7Tvu79u9JCOjwkZmR8rGC0KbyOA7twwVr2/VvB84zDZYvA==", "contentHash": "EJukyiTmEVhaYlHdntFMyQKI4+u772rSClKYQqJRfkTb1NoJXLqiIVqMjx8ZQ0pxnfih+6CZ7+x82lfrGHIPUw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.9", "Avalonia": "0.10.10",
"Avalonia.Desktop": "0.10.9", "Avalonia.Desktop": "0.10.10",
"Avalonia.Diagnostics": "0.10.9" "Avalonia.Diagnostics": "0.10.10"
} }
}, },
"Flurl": { "Flurl": {
@ -269,8 +269,8 @@
}, },
"LiteDB": { "LiteDB": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.10", "resolved": "5.0.11",
"contentHash": "x70WuqMDuP75dajqSLvO+AnI/BbwS6da+ukTO7rueV7VoXoQ5CRA9FV4r7cOS4OUr2NS1Up7LDIutjCxQycRvg==" "contentHash": "6cL4bOmVCUB0gIK+6qIr68HeqjjHZicPDGQjvJ87mIOvkFsEsJWkIps3yoKNeLpHhJQur++yoQ9Q8gxsdos0xQ=="
}, },
"Live.Avalonia": { "Live.Avalonia": {
"type": "Transitive", "type": "Transitive",
@ -505,13 +505,19 @@
}, },
"ReactiveUI": { "ReactiveUI": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.2.10", "resolved": "16.2.6",
"contentHash": "fOCbEZ+RsO2Jhv6vB8VX+ZEvczYJaC95atcSG7oXohJeL/sEwbbqvv9k+tbj2l4bRSj2j5CQvhwA3HNLaxlCAg==", "contentHash": "jf1RvD8HxHuA6CGQtheGHUCHzRrhpvo0z593Npsz7g8KJWXfGR45Dc9bILJHoymBxhdDD1L1WjUfh0fcucIPPg==",
"dependencies": { "dependencies": {
"DynamicData": "7.1.1", "DynamicData": "7.3.1",
"Splat": "10.0.1", "Splat": "13.1.1"
"System.Reactive": "5.0.0", }
"System.Runtime.Serialization.Primitives": "4.3.0" },
"ReactiveUI.Validation": {
"type": "Transitive",
"resolved": "2.2.1",
"contentHash": "rhEphZ4ErbGfNtbBQ/tYMsLJYHyLVyqidU+sgZ3kXKbS7QrNoM4j6PPxCwLMKsJUuvVL8JN45xgmB9tSwm7+lg==",
"dependencies": {
"ReactiveUI": "16.2.6"
} }
}, },
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
@ -652,8 +658,8 @@
}, },
"ShimSkiaSharp": { "ShimSkiaSharp": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "BWwwsIlYUFF0DUc8Pa9xONIXVDvEL9pOYc9YmWilpHrWC37dcK+H4+tfuxztZxtfJx559HGn+6iZmMDjfFoOxA==" "contentHash": "G1ltdwS5+eMhMCoMx31hHjFIznGAjdUK7xAg8raFMFbN09p2tuxzvK7cKbveWm8SEAGIW7NgDyEqGGJzrPrMrg=="
}, },
"SkiaSharp": { "SkiaSharp": {
"type": "Transitive", "type": "Transitive",
@ -682,22 +688,22 @@
}, },
"Splat": { "Splat": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.1.30", "resolved": "13.1.63",
"contentHash": "yaj3r8CvHQwtvhfTi+dp5LpIb3c4svqe/tL6LdAS8wWP+dXAp3fTCLjYx21TrW1QBFTBJcg9lrJqDPbheSzHbA==" "contentHash": "7iW45RA7AbSlQPCgdokmysva5PGd6iBUhuNkC0XD73LF9dxfTkKeo3wZkohU7nvspDhJ7PJsYHvDtxIt5bMQ8Q=="
}, },
"Splat.Ninject": { "Splat.Ninject": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.1.30", "resolved": "13.1.63",
"contentHash": "hYgyD12Syt2l8U/KccMzNUj4nmrdULjoRTF4g5Q9XtVWPrcdTYmLEdcX/prZEWaFT7vGNP6x9uFXvOlM7Jc+gg==", "contentHash": "rTF0HSa6p8nxrXj2hwVgkutcTDJUXY34sY+zYK4ky65b7a0ROL8kdiYyxVVLE4Lq31N5Rcd4bBbqlPkgwZguww==",
"dependencies": { "dependencies": {
"Ninject": "3.3.4", "Ninject": "3.3.4",
"Splat": "13.1.30" "Splat": "13.1.63"
} }
}, },
"Svg.Custom": { "Svg.Custom": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "6FnbI4T3uCNN7DYJpfPFa4caTTJzp4YbhU3J4c/syX7wQNSeQ/1u7JZZ+dGgrRUauiWP8VsiCLKP8qinc5xI5w==", "contentHash": "Ypi/4NxDxjM24vsK+4Uit08aJUFHcZZpB5Ctb7FLMVevMq0hYeDqzKp6OVLFO5UCX/TxUfRiL1u9F7fvUDA0tQ==",
"dependencies": { "dependencies": {
"Fizzler": "1.2.0", "Fizzler": "1.2.0",
"System.Drawing.Common": "5.0.0", "System.Drawing.Common": "5.0.0",
@ -708,22 +714,22 @@
}, },
"Svg.Model": { "Svg.Model": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "F/rimPwV5KF64P8oofXGMwOZ0T7b3z1A9OiC4mv5OdSpLpMpUxpSwGLAOkJ5DFqQgXqVjKKLhPdjIjQBwy0AjA==", "contentHash": "sh5W7VpghtFjDnPOMa+CEiIKpJPmkb7FxNuHnB2sLZwJR2qzyVlZaBWM95VaRAXlOU8c0qbtA5ZNVREOpzLQRw==",
"dependencies": { "dependencies": {
"ShimSkiaSharp": "0.5.8.3", "ShimSkiaSharp": "0.5.10",
"Svg.Custom": "0.5.8.3" "Svg.Custom": "0.5.10"
} }
}, },
"Svg.Skia": { "Svg.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "ajQ0aINQtEzWkqEXyJjnwqOFNusWNMHJVGrKa1ISbP21nrWJh+tApydLFVFGGjs91d7K3YOUbWDKlEzzdDQaOg==", "contentHash": "Xz/nd+5dNJAh7IbfjyduWIJAtpHNqMopX+ORg6ZNnW6l1I7lK20KHlSdMNy9c18vALrA95eU8WFo00nloLVUkQ==",
"dependencies": { "dependencies": {
"SkiaSharp": "2.80.2", "SkiaSharp": "2.80.2",
"SkiaSharp.HarfBuzz": "2.80.2", "SkiaSharp.HarfBuzz": "2.80.2",
"Svg.Custom": "0.5.8.3", "Svg.Custom": "0.5.10",
"Svg.Model": "0.5.8.3" "Svg.Model": "0.5.10"
} }
}, },
"System.AppContext": { "System.AppContext": {
@ -1335,15 +1341,6 @@
"System.Runtime.Extensions": "4.3.0" "System.Runtime.Extensions": "4.3.0"
} }
}, },
"System.Runtime.Serialization.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "Wz+0KOukJGAlXjtKr+5Xpuxf8+c8739RI1C+A2BoQZT+wMCCoMDDdO8/4IRHfaVINqL78GO8dW8G2lW/e45Mcw==",
"dependencies": {
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Security.AccessControl": { "System.Security.AccessControl": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "5.0.0",
@ -1658,7 +1655,7 @@
"EmbedIO": "3.4.3", "EmbedIO": "3.4.3",
"HidSharp": "2.1.0", "HidSharp": "2.1.0",
"Humanizer.Core": "2.11.10", "Humanizer.Core": "2.11.10",
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"McMaster.NETCore.Plugins": "1.4.0", "McMaster.NETCore.Plugins": "1.4.0",
"Newtonsoft.Json": "13.0.1", "Newtonsoft.Json": "13.0.1",
"Ninject": "3.3.4", "Ninject": "3.3.4",
@ -1679,7 +1676,7 @@
"artemis.storage": { "artemis.storage": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"Serilog": "2.10.0" "Serilog": "2.10.0"
} }
}, },
@ -1689,16 +1686,17 @@
"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.10", "Avalonia": "0.10.10",
"Avalonia.Controls.PanAndZoom": "4.2.0", "Avalonia.Controls.PanAndZoom": "4.3.0",
"Avalonia.Desktop": "0.10.10", "Avalonia.Desktop": "0.10.10",
"Avalonia.Diagnostics": "0.10.10", "Avalonia.Diagnostics": "0.10.10",
"Avalonia.ReactiveUI": "0.10.10", "Avalonia.ReactiveUI": "0.10.10",
"Avalonia.Svg.Skia": "0.10.8.3", "Avalonia.Svg.Skia": "0.10.10",
"FluentAvaloniaUI": "1.1.5", "FluentAvaloniaUI": "1.1.6",
"Flurl.Http": "3.2.0", "Flurl.Http": "3.2.0",
"Live.Avalonia": "1.3.1", "Live.Avalonia": "1.3.1",
"Material.Icons.Avalonia": "1.0.2", "Material.Icons.Avalonia": "1.0.2",
"Splat.Ninject": "13.1.30" "ReactiveUI.Validation": "2.2.1",
"Splat.Ninject": "13.1.63"
} }
}, },
"artemis.ui.shared": { "artemis.ui.shared": {
@ -1707,12 +1705,13 @@
"Artemis.Core": "1.0.0", "Artemis.Core": "1.0.0",
"Avalonia": "0.10.10", "Avalonia": "0.10.10",
"Avalonia.ReactiveUI": "0.10.10", "Avalonia.ReactiveUI": "0.10.10",
"Avalonia.Svg.Skia": "0.10.8.3", "Avalonia.Svg.Skia": "0.10.10",
"Avalonia.Xaml.Behaviors": "0.10.10", "Avalonia.Xaml.Behaviors": "0.10.10.4",
"Avalonia.Xaml.Interactions": "0.10.10", "Avalonia.Xaml.Interactions": "0.10.10.4",
"Avalonia.Xaml.Interactivity": "0.10.10", "Avalonia.Xaml.Interactivity": "0.10.10.4",
"FluentAvaloniaUI": "1.1.5", "FluentAvaloniaUI": "1.1.6",
"Material.Icons.Avalonia": "1.0.2" "Material.Icons.Avalonia": "1.0.2",
"ReactiveUI.Validation": "2.2.1"
} }
} }
} }

View File

@ -14,16 +14,17 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia" Version="0.10.10" /> <PackageReference Include="Avalonia" Version="0.10.10" />
<PackageReference Include="Avalonia.Controls.PanAndZoom" Version="4.2.0" /> <PackageReference Include="Avalonia.Controls.PanAndZoom" Version="4.3.0" />
<PackageReference Include="Avalonia.Desktop" Version="0.10.10" /> <PackageReference Include="Avalonia.Desktop" Version="0.10.10" />
<PackageReference Include="Avalonia.Diagnostics" Version="0.10.10" /> <PackageReference Include="Avalonia.Diagnostics" Version="0.10.10" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.10" /> <PackageReference Include="Avalonia.ReactiveUI" Version="0.10.10" />
<PackageReference Include="Avalonia.Svg.Skia" Version="0.10.8.3" /> <PackageReference Include="Avalonia.Svg.Skia" Version="0.10.10" />
<PackageReference Include="FluentAvaloniaUI" Version="1.1.5" /> <PackageReference Include="FluentAvaloniaUI" Version="1.1.6" />
<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="Splat.Ninject" Version="13.1.30" /> <PackageReference Include="ReactiveUI.Validation" Version="2.2.1" />
<PackageReference Include="Splat.Ninject" Version="13.1.63" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\Artemis.Core\Artemis.Core.csproj" /> <ProjectReference Include="..\..\Artemis.Core\Artemis.Core.csproj" />

View File

@ -3,7 +3,7 @@
<NativeMenu x:Key="TrayIconMenu"> <NativeMenu x:Key="TrayIconMenu">
<NativeMenuItem Header="Home" Command="{Binding OpenScreen}" CommandParameter="Home" /> <NativeMenuItem Header="Home" Command="{Binding OpenScreen}" CommandParameter="Home" />
<NativeMenuItem Header="Workshop" Command="{Binding OpenScreen}" CommandParameter="Workshop" /> <NativeMenuItem Header="Workshop" Command="{Binding OpenScreen}" CommandParameter="Workshop" />
<NativeMenuItem Header="Surface Editor" Command="{Binding OpenScreen}" CommandParameter="SurfaceEditor" /> <NativeMenuItem Header="Surface Editor" Command="{Binding OpenScreen}" CommandParameter="Surface Editor" />
<NativeMenuItem Header="Settings" Command="{Binding OpenScreen}" CommandParameter="Settings" /> <NativeMenuItem Header="Settings" Command="{Binding OpenScreen}" CommandParameter="Settings" />
<NativeMenuItemSeparator /> <NativeMenuItemSeparator />
<NativeMenuItem Header="Debugger" Command="{Binding OpenDebugger}" /> <NativeMenuItem Header="Debugger" Command="{Binding OpenDebugger}" />

View File

@ -6,5 +6,8 @@
x:Class="Artemis.UI.MainWindow" x:Class="Artemis.UI.MainWindow"
Icon="/Assets/Images/Logo/bow.ico" Icon="/Assets/Images/Logo/bow.ico"
Title="Artemis 2.0"> Title="Artemis 2.0">
<ContentControl Content="{Binding}" /> <!-- Use a panel here so the main window can host ContentDialogs -->
<Panel>
<ContentControl Content="{Binding}" />
</Panel>
</Window> </Window>

View File

@ -35,7 +35,7 @@ namespace Artemis.UI.Ninject.Factories
public interface ISidebarVmFactory : IVmFactory public interface ISidebarVmFactory : IVmFactory
{ {
SidebarViewModel? SidebarViewModel(IScreen hostScreen); SidebarViewModel? SidebarViewModel(IScreen hostScreen);
SidebarCategoryViewModel SidebarCategoryViewModel(ProfileCategory profileCategory); SidebarCategoryViewModel SidebarCategoryViewModel(SidebarViewModel sidebarViewModel, ProfileCategory profileCategory);
SidebarProfileConfigurationViewModel SidebarProfileConfigurationViewModel(ProfileConfiguration profileConfiguration); SidebarProfileConfigurationViewModel SidebarProfileConfigurationViewModel(ProfileConfiguration profileConfiguration);
} }

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Reactive.Disposables; using System.Reactive.Disposables;
using System.Reactive.Linq;
using Artemis.UI.Shared.Events; using Artemis.UI.Shared.Events;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
@ -12,19 +13,20 @@ namespace Artemis.UI.Screens.Debugger
{ {
public class DebugView : ReactiveWindow<DebugViewModel> public class DebugView : ReactiveWindow<DebugViewModel>
{ {
private readonly NavigationView _navigation;
public DebugView() public DebugView()
{ {
Activated += OnActivated;
Deactivated += OnDeactivated;
InitializeComponent(); InitializeComponent();
NavigationView navigation = this.Get<NavigationView>("Navigation");
_navigation = this.Get<NavigationView>("Navigation");
this.WhenActivated(d => this.WhenActivated(d =>
{ {
ViewModel!.WhenAnyValue(vm => vm!.IsActive).Subscribe(_ => Activate()).DisposeWith(d); Observable.FromEventPattern(x => ViewModel!.ActivationRequested += x, x => ViewModel!.ActivationRequested -= x).Subscribe(_ =>
ViewModel!.SelectedItem = (NavigationViewItem) _navigation.MenuItems.ElementAt(0); {
WindowState = WindowState.Normal;
Activate();
}).DisposeWith(d);
ViewModel!.SelectedItem = (NavigationViewItem) navigation.MenuItems.ElementAt(0);
}); });
} }
@ -33,21 +35,8 @@ namespace Artemis.UI.Screens.Debugger
AvaloniaXamlLoader.Load(this); AvaloniaXamlLoader.Load(this);
} }
private void OnDeactivated(object? sender, EventArgs e)
{
if (ViewModel != null)
ViewModel.IsActive = false;
}
private void OnActivated(object? sender, EventArgs e)
{
if (ViewModel != null)
ViewModel.IsActive = true;
}
private void DeviceVisualizer_OnLedClicked(object? sender, LedClickedEventArgs e) private void DeviceVisualizer_OnLedClicked(object? sender, LedClickedEventArgs e)
{ {
} }
} }
} }

View File

@ -18,7 +18,6 @@ namespace Artemis.UI.Screens.Debugger
{ {
private readonly IKernel _kernel; private readonly IKernel _kernel;
private readonly IDebugService _debugService; private readonly IDebugService _debugService;
private bool _isActive;
private NavigationViewItem? _selectedItem; private NavigationViewItem? _selectedItem;
public DebugViewModel(IKernel kernel, IDebugService debugService) public DebugViewModel(IKernel kernel, IDebugService debugService)
@ -35,11 +34,6 @@ namespace Artemis.UI.Screens.Debugger
}); });
} }
public bool IsActive
{
get => _isActive;
set => this.RaiseAndSetIfChanged(ref _isActive, value);
}
public NavigationViewItem? SelectedItem public NavigationViewItem? SelectedItem
{ {
@ -77,5 +71,17 @@ namespace Artemis.UI.Screens.Debugger
} }
public RoutingState Router { get; } = new(); public RoutingState Router { get; } = new();
public void Activate()
{
OnActivationRequested();
}
public event EventHandler? ActivationRequested;
protected virtual void OnActivationRequested()
{
ActivationRequested?.Invoke(this, EventArgs.Empty);
}
} }
} }

View File

@ -12,7 +12,7 @@ using RGB.NET.Core;
namespace Artemis.UI.Screens.Device namespace Artemis.UI.Screens.Device
{ {
public class DeviceDetectInputViewModel : ActivatableViewModelBase public class DeviceDetectInputViewModel : ContentDialogViewModelBase
{ {
private readonly IInputService _inputService; private readonly IInputService _inputService;
private readonly INotificationService _notificationService; private readonly INotificationService _notificationService;

View File

@ -2,7 +2,6 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:svg="clr-namespace:Avalonia.Svg.Skia;assembly=Avalonia.Svg.Skia"
xmlns:avalonia="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia" xmlns:avalonia="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia"
xmlns:controls="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" xmlns:controls="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
mc:Ignorable="d" d:DesignWidth="1200" d:DesignHeight="900" mc:Ignorable="d" d:DesignWidth="1200" d:DesignHeight="900"
@ -29,7 +28,7 @@
Text=" Welcome to Artemis, the unified RGB platform." /> Text=" Welcome to Artemis, the unified RGB platform." />
<Grid Grid.Row="1" MaxWidth="840" Margin="30" VerticalAlignment="Bottom" ColumnDefinitions="*,*" RowDefinitions="*,*"> <Grid Grid.Row="1" MaxWidth="840" Margin="30" VerticalAlignment="Bottom" ColumnDefinitions="*,*" RowDefinitions="*,*">
<Border Classes="card" Margin="8" Grid.ColumnSpan="2"> <Border Classes="card" Margin="8" Grid.ColumnSpan="2" ClipToBounds="True">
<Grid VerticalAlignment="Stretch" RowDefinitions="Auto,Auto" ColumnDefinitions="150,*"> <Grid VerticalAlignment="Stretch" RowDefinitions="Auto,Auto" ColumnDefinitions="150,*">
<avalonia:MaterialIcon Kind="Plug" Width="100" Height="100" HorizontalAlignment="Center" VerticalAlignment="Center"/> <avalonia:MaterialIcon Kind="Plug" Width="100" Height="100" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<StackPanel Grid.Row="0" Grid.Column="1"> <StackPanel Grid.Row="0" Grid.Column="1">
@ -55,7 +54,7 @@
</Grid> </Grid>
</Border> </Border>
<Border Classes="card" Margin="8" Grid.Row="1" Grid.Column="0"> <Border Classes="card" Margin="8" Grid.Row="1" Grid.Column="0" ClipToBounds="True">
<Grid VerticalAlignment="Stretch" RowDefinitions="150,95" ColumnDefinitions="150,*"> <Grid VerticalAlignment="Stretch" RowDefinitions="150,95" ColumnDefinitions="150,*">
<avalonia:MaterialIcon Kind="Discord" Width="100" Height="100" HorizontalAlignment="Center" VerticalAlignment="Center" /> <avalonia:MaterialIcon Kind="Discord" Width="100" Height="100" HorizontalAlignment="Center" VerticalAlignment="Center" />
<StackPanel Grid.Row="0" Grid.Column="1"> <StackPanel Grid.Row="0" Grid.Column="1">
@ -95,7 +94,7 @@
</DockPanel> </DockPanel>
</Grid> </Grid>
</Border> </Border>
<Border Classes="card" Margin="8" Grid.Row="1" Grid.Column="1"> <Border Classes="card" Margin="8" Grid.Row="1" Grid.Column="1" ClipToBounds="True">
<Grid VerticalAlignment="Stretch" RowDefinitions="150,95" ColumnDefinitions="150,*"> <Grid VerticalAlignment="Stretch" RowDefinitions="150,95" ColumnDefinitions="150,*">
<avalonia:MaterialIcon Kind="Github" Width="100" Height="100" HorizontalAlignment="Center" VerticalAlignment="Center" /> <avalonia:MaterialIcon Kind="Github" Width="100" Height="100" HorizontalAlignment="Center" VerticalAlignment="Center" />
<StackPanel Grid.Row="0" Grid.Column="1"> <StackPanel Grid.Row="0" Grid.Column="1">

View File

@ -4,7 +4,11 @@ using System.Threading.Tasks;
using Artemis.Core; using Artemis.Core;
using Artemis.Core.Services; using Artemis.Core.Services;
using Artemis.UI.Ninject.Factories; using Artemis.UI.Ninject.Factories;
using Artemis.UI.Screens.Home;
using Artemis.UI.Screens.Root.Sidebar; using Artemis.UI.Screens.Root.Sidebar;
using Artemis.UI.Screens.Settings;
using Artemis.UI.Screens.SurfaceEditor;
using Artemis.UI.Screens.Workshop;
using Artemis.UI.Services.Interfaces; using Artemis.UI.Services.Interfaces;
using Artemis.UI.Shared; using Artemis.UI.Shared;
using Artemis.UI.Shared.Services.Interfaces; using Artemis.UI.Shared.Services.Interfaces;
@ -14,6 +18,8 @@ using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Platform; using Avalonia.Platform;
using Avalonia.Threading; using Avalonia.Threading;
using Ninject;
using Ninject.Parameters;
using ReactiveUI; using ReactiveUI;
namespace Artemis.UI.Screens.Root namespace Artemis.UI.Screens.Root
@ -24,6 +30,7 @@ namespace Artemis.UI.Screens.Root
private readonly ICoreService _coreService; private readonly ICoreService _coreService;
private readonly ISettingsService _settingsService; private readonly ISettingsService _settingsService;
private readonly IWindowService _windowService; private readonly IWindowService _windowService;
private readonly IDebugService _debugService;
private readonly IAssetLoader _assetLoader; private readonly IAssetLoader _assetLoader;
private readonly ISidebarVmFactory _sidebarVmFactory; private readonly ISidebarVmFactory _sidebarVmFactory;
private SidebarViewModel? _sidebarViewModel; private SidebarViewModel? _sidebarViewModel;
@ -35,6 +42,7 @@ namespace Artemis.UI.Screens.Root
IRegistrationService registrationService, IRegistrationService registrationService,
IWindowService windowService, IWindowService windowService,
IMainWindowService mainWindowService, IMainWindowService mainWindowService,
IDebugService debugService,
IAssetLoader assetLoader, IAssetLoader assetLoader,
ISidebarVmFactory sidebarVmFactory) ISidebarVmFactory sidebarVmFactory)
{ {
@ -43,6 +51,7 @@ namespace Artemis.UI.Screens.Root
_coreService = coreService; _coreService = coreService;
_settingsService = settingsService; _settingsService = settingsService;
_windowService = windowService; _windowService = windowService;
_debugService = debugService;
_assetLoader = assetLoader; _assetLoader = assetLoader;
_sidebarVmFactory = sidebarVmFactory; _sidebarVmFactory = sidebarVmFactory;
_lifeTime = (IClassicDesktopStyleApplicationLifetime) Application.Current.ApplicationLifetime; _lifeTime = (IClassicDesktopStyleApplicationLifetime) Application.Current.ApplicationLifetime;
@ -64,13 +73,6 @@ namespace Artemis.UI.Screens.Root
/// <inheritdoc /> /// <inheritdoc />
public RoutingState Router { get; } public RoutingState Router { get; }
public async Task Exit()
{
// Don't freeze the UI right after clicking
await Task.Delay(200);
Utilities.Shutdown();
}
private void CurrentMainWindowOnClosed(object? sender, EventArgs e) private void CurrentMainWindowOnClosed(object? sender, EventArgs e)
{ {
_lifeTime.MainWindow = null; _lifeTime.MainWindow = null;
@ -109,7 +111,11 @@ namespace Artemis.UI.Screens.Root
private void ShowTrayIcon() private void ShowTrayIcon()
{ {
_trayIcon = new TrayIcon {Icon = new WindowIcon(_assetLoader.Open(new Uri("avares://Artemis.UI/Assets/Images/Logo/bow.ico")))}; _trayIcon = new TrayIcon
{
Icon = new WindowIcon(_assetLoader.Open(new Uri("avares://Artemis.UI/Assets/Images/Logo/bow.ico"))),
Command = ReactiveCommand.Create(OpenMainWindow)
};
_trayIcon.Menu = (NativeMenu?) Application.Current.FindResource("TrayIconMenu"); _trayIcon.Menu = (NativeMenu?) Application.Current.FindResource("TrayIconMenu");
_trayIcons = new TrayIcons {_trayIcon}; _trayIcons = new TrayIcons {_trayIcon};
TrayIcon.SetIcons(Application.Current, _trayIcons); TrayIcon.SetIcons(Application.Current, _trayIcons);
@ -124,6 +130,30 @@ namespace Artemis.UI.Screens.Root
_trayIcons = null; _trayIcons = null;
} }
#region Tray commands
public void OpenScreen(string displayName)
{
OpenMainWindow();
// At this point there is a sidebar VM because the main window was opened
SidebarViewModel!.SelectedSidebarScreen = SidebarViewModel.SidebarScreens.FirstOrDefault(s => s.DisplayName == displayName);
}
public async Task OpenDebugger()
{
await Dispatcher.UIThread.InvokeAsync(() => _debugService.ShowDebugger());
}
public async Task Exit()
{
// Don't freeze the UI right after clicking
await Task.Delay(200);
Utilities.Shutdown();
}
#endregion
#region Implementation of IMainWindowProvider #region Implementation of IMainWindowProvider
/// <inheritdoc /> /// <inheritdoc />
@ -140,8 +170,8 @@ namespace Artemis.UI.Screens.Root
_lifeTime.MainWindow.Closed += CurrentMainWindowOnClosed; _lifeTime.MainWindow.Closed += CurrentMainWindowOnClosed;
} }
_lifeTime.MainWindow.WindowState = WindowState.Normal;
_lifeTime.MainWindow.Activate(); _lifeTime.MainWindow.Activate();
OnMainWindowOpened(); OnMainWindowOpened();
} }

View File

@ -0,0 +1,13 @@
<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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Artemis.UI.Screens.Root.Sidebar.Dialogs.SidebarCategoryCreateView">
<StackPanel>
<StackPanel.KeyBindings>
<KeyBinding Gesture="Enter" Command="{Binding Confirm}" />
</StackPanel.KeyBindings>
<TextBox Text="{Binding CategoryName}" Watermark="Category name"/>
</StackPanel>
</UserControl>

View File

@ -0,0 +1,21 @@
using Artemis.UI.Shared.Extensions;
using Avalonia.Markup.Xaml;
using Avalonia.ReactiveUI;
using ReactiveUI;
namespace Artemis.UI.Screens.Root.Sidebar.Dialogs
{
public class SidebarCategoryCreateView : ReactiveUserControl<SidebarCategoryCreateViewModel>
{
public SidebarCategoryCreateView()
{
InitializeComponent();
this.WhenActivated(_ => this.ClearAllDataValidationErrors());
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
}
}

View File

@ -0,0 +1,60 @@
using System.Reactive;
using Artemis.Core;
using Artemis.Core.Services;
using Artemis.UI.Shared;
using FluentAvalonia.UI.Controls;
using ReactiveUI;
using ReactiveUI.Validation.Extensions;
namespace Artemis.UI.Screens.Root.Sidebar.Dialogs
{
public class SidebarCategoryCreateViewModel : ContentDialogViewModelBase
{
private readonly IProfileService _profileService;
private readonly ProfileCategory? _category;
private string? _categoryName;
public SidebarCategoryCreateViewModel(IProfileService profileService, ProfileCategory? category)
{
_profileService = profileService;
_category = category;
if (_category != null)
_categoryName = _category.Name;
Confirm = ReactiveCommand.Create(ExecuteConfirm, ValidationContext.Valid);
Delete = ReactiveCommand.Create(ExecuteDelete);
this.ValidationRule(vm => vm.CategoryName, categoryName => !string.IsNullOrWhiteSpace(categoryName), "You must specify a valid name");
}
public ReactiveCommand<Unit, Unit> Delete { get; set; }
public string? CategoryName
{
get => _categoryName;
set => this.RaiseAndSetIfChanged(ref _categoryName, value);
}
public ReactiveCommand<Unit, Unit> Confirm { get; }
private void ExecuteConfirm()
{
if (_category != null)
{
_category.Name = CategoryName!;
_profileService.SaveProfileCategory(_category);
}
else
_profileService.CreateProfileCategory(CategoryName!);
ContentDialog?.Hide(ContentDialogResult.Primary);
}
private void ExecuteDelete()
{
if (_category != null)
_profileService.DeleteProfileCategory(_category);
}
}
}

View File

@ -4,6 +4,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:avalonia="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia" xmlns:avalonia="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia"
xmlns:local="clr-namespace:Artemis.UI.Screens.Root.Sidebar" xmlns:local="clr-namespace:Artemis.UI.Screens.Root.Sidebar"
xmlns:controls="clr-namespace:Artemis.UI.Shared.Controls;assembly=Artemis.UI.Shared"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Artemis.UI.Screens.Root.Sidebar.SidebarCategoryView"> x:Class="Artemis.UI.Screens.Root.Sidebar.SidebarCategoryView">
<UserControl.Styles> <UserControl.Styles>
@ -27,19 +28,8 @@
<Setter Property="Opacity" Value="1" /> <Setter Property="Opacity" Value="1" />
</Style> </Style>
</UserControl.Styles> </UserControl.Styles>
<Grid x:Name="ContainerGrid" Margin="0 8 0 0"> <Grid x:Name="ContainerGrid" Margin="0 8 0 0" RowDefinitions="Auto,*">
<Grid.RowDefinitions> <Grid Grid.Row="0" Background="Transparent" ColumnDefinitions="Auto,Auto,*,Auto,Auto">
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Grid.Row="0" Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<avalonia:MaterialIcon Classes.chevron-collapsed="{Binding ShowItems}" <avalonia:MaterialIcon Classes.chevron-collapsed="{Binding ShowItems}"
Kind="ChevronUp" Kind="ChevronUp"
@ -87,7 +77,8 @@
<Button Classes="category-button icon-button icon-button-small" <Button Classes="category-button icon-button icon-button-small"
Grid.Column="2" Grid.Column="2"
ToolTip.Tip="Edit category" ToolTip.Tip="Edit category"
HorizontalAlignment="Right"> HorizontalAlignment="Right"
Command="{Binding EditCategory}">
<avalonia:MaterialIcon Kind="Cog" /> <avalonia:MaterialIcon Kind="Cog" />
</Button> </Button>
<ToggleButton Classes="category-button icon-button icon-button-small" <ToggleButton Classes="category-button icon-button icon-button-small"
@ -105,12 +96,11 @@
<DataTemplate x:Key="ProfileDragTemplate" DataType="{x:Type local:SidebarProfileConfigurationViewModel}"> <DataTemplate x:Key="ProfileDragTemplate" DataType="{x:Type local:SidebarProfileConfigurationViewModel}">
<Border Background="{DynamicResource MaterialDesignDivider}" Padding="10" CornerRadius="4"> <Border Background="{DynamicResource MaterialDesignDivider}" Padding="10" CornerRadius="4">
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<!-- <shared:ProfileConfigurationIcon ConfigurationIcon="{Binding ProfileConfiguration.Icon}" --> <controls:ProfileConfigurationIcon ConfigurationIcon="{Binding ProfileConfiguration.Icon}"
<!-- Width="20" --> Width="20"
<!-- Height="20" --> Height="20"
<!-- Margin="0 0 10 0" --> Margin="0 0 10 0" />
<!-- Foreground="{DynamicResource MaterialDesignBody}" /> --> <TextBlock Text="{Binding ProfileConfiguration.Name}" VerticalAlignment="Center" />
<TextBlock Text="{Binding ProfileConfiguration.Name}" VerticalAlignment="Center" Foreground="{DynamicResource MaterialDesignBody}" />
</StackPanel> </StackPanel>
</Border> </Border>
</DataTemplate> </DataTemplate>

View File

@ -1,22 +1,30 @@
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using System.Threading.Tasks;
using Artemis.Core; using Artemis.Core;
using Artemis.Core.Services; using Artemis.Core.Services;
using Artemis.UI.Ninject.Factories; using Artemis.UI.Ninject.Factories;
using Artemis.UI.Screens.Root.Sidebar.Dialogs;
using Artemis.UI.Shared; using Artemis.UI.Shared;
using Artemis.UI.Shared.Services.Interfaces;
using FluentAvalonia.UI.Controls;
using ReactiveUI; using ReactiveUI;
namespace Artemis.UI.Screens.Root.Sidebar namespace Artemis.UI.Screens.Root.Sidebar
{ {
public class SidebarCategoryViewModel : ViewModelBase public class SidebarCategoryViewModel : ViewModelBase
{ {
private readonly SidebarViewModel _sidebarViewModel;
private readonly IProfileService _profileService; private readonly IProfileService _profileService;
private readonly IWindowService _windowService;
private readonly ISidebarVmFactory _vmFactory; private readonly ISidebarVmFactory _vmFactory;
private SidebarProfileConfigurationViewModel? _selectedProfileConfiguration; private SidebarProfileConfigurationViewModel? _selectedProfileConfiguration;
public SidebarCategoryViewModel(ProfileCategory profileCategory, IProfileService profileService, ISidebarVmFactory vmFactory) public SidebarCategoryViewModel(SidebarViewModel sidebarViewModel, ProfileCategory profileCategory, IProfileService profileService, IWindowService windowService, ISidebarVmFactory vmFactory)
{ {
_sidebarViewModel = sidebarViewModel;
_profileService = profileService; _profileService = profileService;
_windowService = windowService;
_vmFactory = vmFactory; _vmFactory = vmFactory;
ProfileCategory = profileCategory; ProfileCategory = profileCategory;
@ -62,6 +70,19 @@ namespace Artemis.UI.Screens.Root.Sidebar
} }
} }
public async Task EditCategory()
{
await _windowService.CreateContentDialog()
.WithTitle("Edit category")
.WithViewModel<SidebarCategoryCreateViewModel>(out var vm, ("category", ProfileCategory))
.HavingPrimaryButton(b => b.WithText("Confirm").WithCommand(vm.Confirm))
.HavingSecondaryButton(b => b.WithText("Delete").WithCommand(vm.Delete))
.WithDefaultButton(ContentDialogButton.Primary)
.ShowAsync();
_sidebarViewModel.UpdateProfileCategories();
}
private void CreateProfileViewModels() private void CreateProfileViewModels()
{ {
ProfileConfigurations.Clear(); ProfileConfigurations.Clear();

View File

@ -48,7 +48,10 @@
<ScrollViewer Grid.Row="3" VerticalScrollBarVisibility="Auto"> <ScrollViewer Grid.Row="3" VerticalScrollBarVisibility="Auto">
<StackPanel> <StackPanel>
<ItemsControl Margin="10 2" Items="{Binding SidebarCategories}" /> <ItemsControl Margin="10 2" Items="{Binding SidebarCategories}" />
<Button Content="ADD NEW CATEGORY" Margin="10 10 10 0" /> <Button Content="Add new category"
Margin="10"
HorizontalAlignment="Stretch"
Command="{Binding AddCategory}" />
</StackPanel> </StackPanel>
</ScrollViewer> </ScrollViewer>

View File

@ -2,14 +2,18 @@
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using System.Reactive.Disposables; using System.Reactive.Disposables;
using System.Threading.Tasks;
using Artemis.Core; using Artemis.Core;
using Artemis.Core.Services; using Artemis.Core.Services;
using Artemis.UI.Ninject.Factories; using Artemis.UI.Ninject.Factories;
using Artemis.UI.Screens.Home; using Artemis.UI.Screens.Home;
using Artemis.UI.Screens.Root.Sidebar.Dialogs;
using Artemis.UI.Screens.Settings; using Artemis.UI.Screens.Settings;
using Artemis.UI.Screens.SurfaceEditor; using Artemis.UI.Screens.SurfaceEditor;
using Artemis.UI.Screens.Workshop; using Artemis.UI.Screens.Workshop;
using Artemis.UI.Shared; using Artemis.UI.Shared;
using Artemis.UI.Shared.Services.Interfaces;
using FluentAvalonia.UI.Controls;
using Material.Icons; using Material.Icons;
using Ninject; using Ninject;
using ReactiveUI; using ReactiveUI;
@ -23,16 +27,18 @@ namespace Artemis.UI.Screens.Root.Sidebar
private readonly IProfileService _profileService; private readonly IProfileService _profileService;
private readonly IRgbService _rgbService; private readonly IRgbService _rgbService;
private readonly ISidebarVmFactory _sidebarVmFactory; private readonly ISidebarVmFactory _sidebarVmFactory;
private readonly IWindowService _windowService;
private ArtemisDevice? _headerDevice; private ArtemisDevice? _headerDevice;
private SidebarScreenViewModel? _selectedSidebarScreen; private SidebarScreenViewModel? _selectedSidebarScreen;
public SidebarViewModel(IScreen hostScreen, IKernel kernel, IProfileService profileService, IRgbService rgbService, ISidebarVmFactory sidebarVmFactory) public SidebarViewModel(IScreen hostScreen, IKernel kernel, IProfileService profileService, IRgbService rgbService, ISidebarVmFactory sidebarVmFactory, IWindowService windowService)
{ {
_hostScreen = hostScreen; _hostScreen = hostScreen;
_profileService = profileService; _profileService = profileService;
_rgbService = rgbService; _rgbService = rgbService;
_sidebarVmFactory = sidebarVmFactory; _sidebarVmFactory = sidebarVmFactory;
_windowService = windowService;
SidebarScreens = new ObservableCollection<SidebarScreenViewModel> SidebarScreens = new ObservableCollection<SidebarScreenViewModel>
{ {
@ -75,12 +81,24 @@ namespace Artemis.UI.Screens.Root.Sidebar
public SidebarCategoryViewModel AddProfileCategoryViewModel(ProfileCategory profileCategory) public SidebarCategoryViewModel AddProfileCategoryViewModel(ProfileCategory profileCategory)
{ {
SidebarCategoryViewModel viewModel = _sidebarVmFactory.SidebarCategoryViewModel(profileCategory); SidebarCategoryViewModel viewModel = _sidebarVmFactory.SidebarCategoryViewModel(this, profileCategory);
SidebarCategories.Add(viewModel); SidebarCategories.Add(viewModel);
return viewModel; return viewModel;
} }
private void UpdateProfileCategories() public async Task AddCategory()
{
await _windowService.CreateContentDialog()
.WithTitle("Add new category")
.WithViewModel<SidebarCategoryCreateViewModel>(out var vm, ("category", null))
.HavingPrimaryButton(b => b.WithText("Confirm").WithCommand(vm.Confirm))
.WithDefaultButton(ContentDialogButton.Primary)
.ShowAsync();
UpdateProfileCategories();
}
public void UpdateProfileCategories()
{ {
SidebarCategories.Clear(); SidebarCategories.Clear();
foreach (ProfileCategory profileCategory in _profileService.ProfileCategories.OrderBy(p => p.Order)) foreach (ProfileCategory profileCategory in _profileService.ProfileCategories.OrderBy(p => p.Order))

View File

@ -10,12 +10,5 @@
<TextBlock Text="{Binding DisplayName}" /> <TextBlock Text="{Binding DisplayName}" />
</DataTemplate> </DataTemplate>
</TabControl.ItemTemplate> </TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<ContentControl Content="{Binding}" />
</ScrollViewer>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl> </TabControl>
</UserControl> </UserControl>

View File

@ -4,22 +4,30 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Artemis.UI.Screens.Settings.Tabs.DevicesTabView"> x:Class="Artemis.UI.Screens.Settings.Tabs.DevicesTabView">
<StackPanel MaxWidth="1050"> <Grid MaxWidth="1050">
<TextBlock Classes="h4">Device management</TextBlock> <Grid.RowDefinitions>
<TextBlock> <RowDefinition Height="Auto"/>
Below you view and manage the devices that were detected by Artemis. <RowDefinition Height="*"/>
</TextBlock> </Grid.RowDefinitions>
<TextBlock> <StackPanel>
Disabling a device will cause it to stop updating. Some SDKs will even go back to using manufacturer lighting (Artemis restart may be required). <TextBlock Classes="h4">Device management</TextBlock>
</TextBlock> <TextBlock>
Below you view and manage the devices that were detected by Artemis.
</TextBlock>
<TextBlock>
Disabling a device will cause it to stop updating. Some SDKs will even go back to using manufacturer lighting (Artemis restart may be required).
</TextBlock>
</StackPanel>
<ItemsControl Items="{Binding Devices}" Margin="-5 0"> <ScrollViewer Grid.Row="1" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<ItemsControl.ItemsPanel> <ItemsControl Items="{Binding Devices}" Margin="-5 0">
<ItemsPanelTemplate> <ItemsControl.ItemsPanel>
<WrapPanel /> <ItemsPanelTemplate>
</ItemsPanelTemplate> <WrapPanel />
</ItemsControl.ItemsPanel> </ItemsPanelTemplate>
</ItemsControl> </ItemsControl.ItemsPanel>
</StackPanel> </ItemsControl>
</ScrollViewer>
</Grid>
</UserControl> </UserControl>

View File

@ -2,355 +2,357 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:system="clr-namespace:System;assembly=System.Runtime"
xmlns:layerBrushes="clr-namespace:Artemis.Core.LayerBrushes;assembly=Artemis.Core" xmlns:layerBrushes="clr-namespace:Artemis.Core.LayerBrushes;assembly=Artemis.Core"
xmlns:avalonia="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia" xmlns:avalonia="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia"
xmlns:controls="clr-namespace:Artemis.UI.Shared.Controls;assembly=Artemis.UI.Shared" xmlns:controls="clr-namespace:Artemis.UI.Shared.Controls;assembly=Artemis.UI.Shared"
mc:Ignorable="d" d:DesignWidth="1000" d:DesignHeight="2400" mc:Ignorable="d" d:DesignWidth="1000" d:DesignHeight="2400"
x:Class="Artemis.UI.Screens.Settings.Tabs.GeneralTabView"> x:Class="Artemis.UI.Screens.Settings.Tabs.GeneralTabView">
<StackPanel Margin="15" MaxWidth="1000"> <ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<!-- General settings --> <StackPanel Margin="15" MaxWidth="1000">
<TextBlock Classes="h4" Margin="0 15"> <!-- General settings -->
General <TextBlock Classes="h4" Margin="0 15">
</TextBlock> General
<Border Classes="card" VerticalAlignment="Stretch" Margin="0,0,5,0"> </TextBlock>
<StackPanel> <Border Classes="card" VerticalAlignment="Stretch" Margin="0,0,5,0">
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto"> <StackPanel>
<StackPanel Grid.Column="0"> <Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<TextBlock>Auto-run on startup</TextBlock> <StackPanel Grid.Column="0">
</StackPanel> <TextBlock>Auto-run on startup</TextBlock>
<ToggleSwitch Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" IsChecked="{Binding UIAutoRun.Value}" MinWidth="0" Margin="0 -10"/> </StackPanel>
</Grid> <ToggleSwitch Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" IsChecked="{Binding UIAutoRun.Value}" MinWidth="0" Margin="0 -10"/>
<Separator Classes="card-separator" /> </Grid>
<Separator Classes="card-separator" />
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto"> <Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0"> <StackPanel Grid.Column="0">
<TextBlock>Hide window on auto-run</TextBlock> <TextBlock>Hide window on auto-run</TextBlock>
</StackPanel> </StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"> <StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
<ToggleSwitch IsChecked="{Binding !UIShowOnStartup.Value}" IsEnabled="{Binding UIAutoRun.Value}" MinWidth="0" Margin="0 -10"/> <ToggleSwitch IsChecked="{Binding !UIShowOnStartup.Value}" IsEnabled="{Binding UIAutoRun.Value}" MinWidth="0" Margin="0 -10"/>
</StackPanel> </StackPanel>
</Grid> </Grid>
<Separator Classes="card-separator" /> <Separator Classes="card-separator" />
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto"> <Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0"> <StackPanel Grid.Column="0">
<TextBlock>Startup delay</TextBlock> <TextBlock>Startup delay</TextBlock>
<TextBlock Classes="subtitle" TextWrapping="Wrap"> <TextBlock Classes="subtitle" TextWrapping="Wrap">
Set the amount of seconds to wait before auto-running Artemis. Set the amount of seconds to wait before auto-running Artemis.
</TextBlock> </TextBlock>
<TextBlock Classes="subtitle" TextWrapping="Wrap"> <TextBlock Classes="subtitle" TextWrapping="Wrap">
If some devices don't work because Artemis starts before the manufacturer's software, try increasing this value. If some devices don't work because Artemis starts before the manufacturer's software, try increasing this value.
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" Orientation="Horizontal"> <StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" Orientation="Horizontal">
<TextBox Text="{Binding UIAutoRunDelay.Value}" IsEnabled="{Binding UIAutoRun.Value}" Width="120" /> <TextBox Text="{Binding UIAutoRunDelay.Value}" IsEnabled="{Binding UIAutoRun.Value}" Width="120" />
<TextBlock VerticalAlignment="Center" TextAlignment="Right" Width="30">sec</TextBlock> <TextBlock VerticalAlignment="Center" TextAlignment="Right" Width="30">sec</TextBlock>
</StackPanel> </StackPanel>
</Grid> </Grid>
<Separator Classes="card-separator" /> <Separator Classes="card-separator" />
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto"> <Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0"> <StackPanel Grid.Column="0">
<TextBlock>Color scheme</TextBlock> <TextBlock>Color scheme</TextBlock>
<TextBlock Classes="subtitle" TextWrapping="Wrap"> <TextBlock Classes="subtitle" TextWrapping="Wrap">
Pick between a light and dark color scheme, the automatic option copies your system settings. Pick between a light and dark color scheme, the automatic option copies your system settings.
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"> <StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
<controls:EnumComboBox Width="150" Value="{Binding UIColorScheme.Value}" /> <controls:EnumComboBox Width="150" Value="{Binding UIColorScheme.Value}" />
</StackPanel> </StackPanel>
</Grid> </Grid>
<Separator Classes="card-separator" /> <Separator Classes="card-separator" />
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto"> <Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0"> <StackPanel Grid.Column="0">
<TextBlock> <TextBlock>
Log level Log level
</TextBlock> </TextBlock>
<TextBlock Classes="subtitle" TextWrapping="Wrap"> <TextBlock Classes="subtitle" TextWrapping="Wrap">
Sets the logging level, a higher logging level will result in more log files. Sets the logging level, a higher logging level will result in more log files.
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"> <StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
<controls:EnumComboBox Width="150" Value="{Binding CoreLoggingLevel.Value}" /> <controls:EnumComboBox Width="150" Value="{Binding CoreLoggingLevel.Value}" />
</StackPanel> </StackPanel>
</Grid> </Grid>
<Separator Classes="card-separator" /> <Separator Classes="card-separator" />
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto"> <Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0" VerticalAlignment="Center"> <StackPanel Grid.Column="0" VerticalAlignment="Center">
<TextBlock> <TextBlock>
Logs Logs
</TextBlock> </TextBlock>
<TextBlock Classes="subtitle"> <TextBlock Classes="subtitle">
Opens the directory where logs are stored. Opens the directory where logs are stored.
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"> <StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
<Button Command="{Binding ShowLogs}" Width="150" Content="Show logs" /> <Button Command="{Binding ShowLogs}" Width="150" Content="Show logs" />
</StackPanel> </StackPanel>
</Grid> </Grid>
</StackPanel> </StackPanel>
</Border> </Border>
<!-- Web server settings --> <!-- Web server settings -->
<TextBlock Classes="h4" Margin="0 15"> <TextBlock Classes="h4" Margin="0 15">
Web server Web server
</TextBlock> </TextBlock>
<Border Classes="card" VerticalAlignment="Stretch" Margin="0,0,5,0"> <Border Classes="card" VerticalAlignment="Stretch" Margin="0,0,5,0">
<StackPanel> <StackPanel>
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto"> <Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0"> <StackPanel Grid.Column="0">
<TextBlock> <TextBlock>
Web server port Web server port
</TextBlock> </TextBlock>
<TextBlock Classes="subtitle" TextWrapping="Wrap"> <TextBlock Classes="subtitle" TextWrapping="Wrap">
Artemis runs a local web server that can be used to externally interact with the application. Artemis runs a local web server that can be used to externally interact with the application.
</TextBlock> </TextBlock>
<TextBlock Classes="subtitle" TextWrapping="Wrap"> <TextBlock Classes="subtitle" TextWrapping="Wrap">
This web server can only be accessed by applications running on your own computer, e.g. supported games. This web server can only be accessed by applications running on your own computer, e.g. supported games.
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"> <StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
<TextBox Text="{Binding WebServerPort.Value}" Width="150" /> <TextBox Text="{Binding WebServerPort.Value}" Width="150" />
</StackPanel> </StackPanel>
</Grid> </Grid>
</StackPanel> </StackPanel>
</Border> </Border>
<!-- Update settings --> <!-- Update settings -->
<TextBlock Classes="h4" Margin="0 15"> <TextBlock Classes="h4" Margin="0 15">
Updating Updating
</TextBlock> </TextBlock>
<Border Classes="card" VerticalAlignment="Stretch" Margin="0,0,5,0"> <Border Classes="card" VerticalAlignment="Stretch" Margin="0,0,5,0">
<StackPanel> <StackPanel>
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto"> <Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0"> <StackPanel Grid.Column="0">
<TextBlock> <TextBlock>
Check for updates Check for updates
</TextBlock> </TextBlock>
<TextBlock Classes="subtitle" TextWrapping="Wrap"> <TextBlock Classes="subtitle" TextWrapping="Wrap">
If enabled, we'll check for updates on startup and periodically while running. If enabled, we'll check for updates on startup and periodically while running.
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"> <StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
<ToggleSwitch IsChecked="{Binding UICheckForUpdates.Value}" MinWidth="0" /> <ToggleSwitch IsChecked="{Binding UICheckForUpdates.Value}" MinWidth="0" />
</StackPanel> </StackPanel>
</Grid> </Grid>
<Separator Classes="card-separator" /> <Separator Classes="card-separator" />
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto"> <Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0" VerticalAlignment="Center"> <StackPanel Grid.Column="0" VerticalAlignment="Center">
<TextBlock> <TextBlock>
Update Update
</TextBlock> </TextBlock>
<TextBlock Classes="subtitle"> <TextBlock Classes="subtitle">
Use the button on the right to check for updates now. Use the button on the right to check for updates now.
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"> <StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
<Button Command="{Binding OfferUpdatesIfFound}" Width="150" Content="Check now" /> <Button Command="{Binding OfferUpdatesIfFound}" Width="150" Content="Check now" />
</StackPanel> </StackPanel>
</Grid> </Grid>
</StackPanel> </StackPanel>
</Border> </Border>
<!-- Profile editor settings --> <!-- Profile editor settings -->
<TextBlock Classes="h4" Margin="0 15"> <TextBlock Classes="h4" Margin="0 15">
Profile editor Profile editor
</TextBlock> </TextBlock>
<Border Classes="card" VerticalAlignment="Stretch" Margin="0,0,5,0"> <Border Classes="card" VerticalAlignment="Stretch" Margin="0,0,5,0">
<StackPanel> <StackPanel>
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto"> <Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0"> <StackPanel Grid.Column="0">
<TextBlock> <TextBlock>
Show condition data model values Show condition data model values
</TextBlock> </TextBlock>
<TextBlock Classes="subtitle" TextWrapping="Wrap"> <TextBlock Classes="subtitle" TextWrapping="Wrap">
While selecting a condition target, show the current values of the data model. While selecting a condition target, show the current values of the data model.
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"> <StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
<ToggleSwitch IsChecked="{Binding ProfileEditorShowDataModelValues.Value}" MinWidth="0" /> <ToggleSwitch IsChecked="{Binding ProfileEditorShowDataModelValues.Value}" MinWidth="0" />
</StackPanel> </StackPanel>
</Grid> </Grid>
<Separator Classes="card-separator" /> <Separator Classes="card-separator" />
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto"> <Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0"> <StackPanel Grid.Column="0">
<TextBlock> <TextBlock>
Default brush Default brush
</TextBlock> </TextBlock>
<TextBlock Classes="subtitle" TextWrapping="Wrap"> <TextBlock Classes="subtitle" TextWrapping="Wrap">
Sets the default brush that is applied to new layers Sets the default brush that is applied to new layers
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"> <StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
<StackPanel.Styles> <StackPanel.Styles>
<Style Selector="ComboBox.brush /template/ ContentControl#ContentPresenter"> <Style Selector="ComboBox.brush /template/ ContentControl#ContentPresenter">
<Setter Property="ContentTemplate"> <Setter Property="ContentTemplate">
<Setter.Value> <Setter.Value>
<DataTemplate DataType="{x:Type layerBrushes:LayerBrushDescriptor}"> <DataTemplate DataType="{x:Type layerBrushes:LayerBrushDescriptor}">
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<avalonia:MaterialIcon Kind="{Binding Icon}" Height="20" Width="20" VerticalAlignment="Center" Margin="0 0 5 0"/> <avalonia:MaterialIcon Kind="{Binding Icon}" Height="20" Width="20" VerticalAlignment="Center" Margin="0 0 5 0"/>
<TextBlock Text="{Binding DisplayName}" VerticalAlignment="Center" /> <TextBlock Text="{Binding DisplayName}" VerticalAlignment="Center" />
</StackPanel> </StackPanel>
</DataTemplate> </DataTemplate>
</Setter.Value> </Setter.Value>
</Setter> </Setter>
</Style> </Style>
</StackPanel.Styles> </StackPanel.Styles>
<ComboBox Classes="brush" <ComboBox Classes="brush"
Width="200" Width="200"
HorizontalAlignment="Left" HorizontalAlignment="Left"
Items="{Binding LayerBrushDescriptors}" Items="{Binding LayerBrushDescriptors}"
SelectedItem="{Binding SelectedLayerBrushDescriptor}"> SelectedItem="{Binding SelectedLayerBrushDescriptor}">
<ComboBox.ItemTemplate> <ComboBox.ItemTemplate>
<DataTemplate DataType="{x:Type layerBrushes:LayerBrushDescriptor}"> <DataTemplate DataType="{x:Type layerBrushes:LayerBrushDescriptor}">
<Grid ColumnDefinitions="30,*" RowDefinitions="Auto,Auto"> <Grid ColumnDefinitions="30,*" RowDefinitions="Auto,Auto">
<avalonia:MaterialIcon Grid.Row="0" <avalonia:MaterialIcon Grid.Row="0"
Grid.RowSpan="2" Grid.RowSpan="2"
Kind="{Binding Icon}" Kind="{Binding Icon}"
Height="20" Height="20"
Width="20" Width="20"
VerticalAlignment="Center" VerticalAlignment="Center"
HorizontalAlignment="Left" /> HorizontalAlignment="Left" />
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding DisplayName}" TextWrapping="Wrap" MaxWidth="350" /> <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding DisplayName}" TextWrapping="Wrap" MaxWidth="350" />
<TextBlock Classes="subtitle" Grid.Row="1" Grid.Column="1" Text="{Binding Description}" TextWrapping="Wrap" MaxWidth="350" /> <TextBlock Classes="subtitle" Grid.Row="1" Grid.Column="1" Text="{Binding Description}" TextWrapping="Wrap" MaxWidth="350" />
</Grid> </Grid>
</DataTemplate> </DataTemplate>
</ComboBox.ItemTemplate> </ComboBox.ItemTemplate>
</ComboBox> </ComboBox>
</StackPanel> </StackPanel>
</Grid> </Grid>
</StackPanel> </StackPanel>
</Border> </Border>
<!-- Rendering settings --> <!-- Rendering settings -->
<TextBlock Classes="h4" Margin="0 15"> <TextBlock Classes="h4" Margin="0 15">
Rendering Rendering
</TextBlock> </TextBlock>
<Border Classes="card" VerticalAlignment="Stretch" Margin="0,0,5,0"> <Border Classes="card" VerticalAlignment="Stretch" Margin="0,0,5,0">
<StackPanel> <StackPanel>
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto"> <Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0"> <StackPanel Grid.Column="0">
<TextBlock> <TextBlock>
Preferred render method Preferred render method
</TextBlock> </TextBlock>
<TextBlock Classes="subtitle" TextWrapping="Wrap"> <TextBlock Classes="subtitle" TextWrapping="Wrap">
Software-based rendering is done purely on the CPU while Vulkan uses GPU-acceleration. Software-based rendering is done purely on the CPU while Vulkan uses GPU-acceleration.
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"> <StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
<ComboBox Width="150" <ComboBox Width="150"
SelectedItem="{Binding CorePreferredGraphicsContext.Value}" SelectedItem="{Binding CorePreferredGraphicsContext.Value}"
Items="{Binding GraphicsContexts}"/> Items="{Binding GraphicsContexts}"/>
</StackPanel> </StackPanel>
</Grid> </Grid>
<Separator Classes="card-separator" /> <Separator Classes="card-separator" />
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto"> <Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0"> <StackPanel Grid.Column="0">
<TextBlock> <TextBlock>
Render scale Render scale
</TextBlock> </TextBlock>
<TextBlock Classes="subtitle" TextWrapping="Wrap"> <TextBlock Classes="subtitle" TextWrapping="Wrap">
Sets the resolution Artemis renders at, higher scale means more CPU-usage, especially on large surfaces. Sets the resolution Artemis renders at, higher scale means more CPU-usage, especially on large surfaces.
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"> <StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
<ComboBox Width="150" <ComboBox Width="150"
SelectedItem="{Binding SelectedRenderScale}" SelectedItem="{Binding SelectedRenderScale}"
Items="{Binding RenderScales}"> Items="{Binding RenderScales}">
<ComboBox.ItemTemplate> <ComboBox.ItemTemplate>
<DataTemplate> <DataTemplate>
<TextBlock Text="{Binding [0]}" /> <TextBlock Text="{Binding [0]}" />
</DataTemplate> </DataTemplate>
</ComboBox.ItemTemplate> </ComboBox.ItemTemplate>
</ComboBox> </ComboBox>
</StackPanel> </StackPanel>
</Grid> </Grid>
<Separator Classes="card-separator" /> <Separator Classes="card-separator" />
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto"> <Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0"> <StackPanel Grid.Column="0">
<TextBlock> <TextBlock>
Target frame rate Target frame rate
</TextBlock> </TextBlock>
<TextBlock Classes="subtitle" TextWrapping="Wrap"> <TextBlock Classes="subtitle" TextWrapping="Wrap">
Sets the FPS Artemis tries to render at, higher FPS means more CPU-usage but smoother animations. Sets the FPS Artemis tries to render at, higher FPS means more CPU-usage but smoother animations.
</TextBlock> </TextBlock>
<TextBlock Classes="subtitle" TextWrapping="Wrap"> <TextBlock Classes="subtitle" TextWrapping="Wrap">
The options past 45 FPS are mostly useless unless you are using a custom device. The options past 45 FPS are mostly useless unless you are using a custom device.
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"> <StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
<ComboBox Width="150" <ComboBox Width="150"
SelectedItem="{Binding SelectedTargetFrameRate}" SelectedItem="{Binding SelectedTargetFrameRate}"
Items="{Binding TargetFrameRates}"> Items="{Binding TargetFrameRates}">
<ComboBox.ItemTemplate> <ComboBox.ItemTemplate>
<DataTemplate> <DataTemplate>
<TextBlock Text="{Binding [0]}" /> <TextBlock Text="{Binding [0]}" />
</DataTemplate> </DataTemplate>
</ComboBox.ItemTemplate> </ComboBox.ItemTemplate>
</ComboBox> </ComboBox>
</StackPanel> </StackPanel>
</Grid> </Grid>
</StackPanel> </StackPanel>
</Border> </Border>
<!-- Tools --> <!-- Tools -->
<TextBlock Classes="h4" Margin="0 15"> <TextBlock Classes="h4" Margin="0 15">
Tools Tools
</TextBlock> </TextBlock>
<Border Classes="card" VerticalAlignment="Stretch" Margin="0,0,5,0"> <Border Classes="card" VerticalAlignment="Stretch" Margin="0,0,5,0">
<StackPanel> <StackPanel>
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto"> <Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0" VerticalAlignment="Center"> <StackPanel Grid.Column="0" VerticalAlignment="Center">
<TextBlock> <TextBlock>
Setup wizard Setup wizard
</TextBlock> </TextBlock>
<TextBlock Classes="subtitle"> <TextBlock Classes="subtitle">
Opens the startup wizard usually shown when Artemis first starts. Opens the startup wizard usually shown when Artemis first starts.
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"> <StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
<Button Command="{Binding ShowSetupWizard}" Width="150" Content="Show wizard" /> <Button Command="{Binding ShowSetupWizard}" Width="150" Content="Show wizard" />
</StackPanel> </StackPanel>
</Grid> </Grid>
<Separator Classes="card-separator" /> <Separator Classes="card-separator" />
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto"> <Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0" VerticalAlignment="Center"> <StackPanel Grid.Column="0" VerticalAlignment="Center">
<TextBlock> <TextBlock>
Debugger Debugger
</TextBlock> </TextBlock>
<TextBlock Classes="subtitle"> <TextBlock Classes="subtitle">
Use the debugger to see the raw image Artemis is rendering on the surface. Use the debugger to see the raw image Artemis is rendering on the surface.
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"> <StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
<Button Command="{Binding ShowDebugger}" Width="150" Content="Show debugger" /> <Button Command="{Binding ShowDebugger}" Width="150" Content="Show debugger" />
</StackPanel> </StackPanel>
</Grid> </Grid>
<Separator Classes="card-separator" /> <Separator Classes="card-separator" />
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0" VerticalAlignment="Center">
<TextBlock>
Application files
</TextBlock>
<TextBlock Classes="subtitle">
Opens the directory where application files like plugins and settings are stored.
</TextBlock>
</StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
<Button Command="{Binding ShowDataFolder}" Width="150" Content="Show app files" />
</StackPanel>
</Grid>
</StackPanel>
</Border>
</StackPanel>
</ScrollViewer>
<Grid RowDefinitions="*,*" ColumnDefinitions="*,Auto">
<StackPanel Grid.Column="0" VerticalAlignment="Center">
<TextBlock>
Application files
</TextBlock>
<TextBlock Classes="subtitle">
Opens the directory where application files like plugins and settings are stored.
</TextBlock>
</StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
<Button Command="{Binding ShowDataFolder}" Width="150" Content="Show app files" />
</StackPanel>
</Grid>
</StackPanel>
</Border>
</StackPanel>
</UserControl> </UserControl>

View File

@ -6,6 +6,8 @@
x:Class="Artemis.UI.Screens.Settings.Tabs.PluginsTabView"> x:Class="Artemis.UI.Screens.Settings.Tabs.PluginsTabView">
<Grid RowDefinitions="Auto,*" ColumnDefinitions="*,*" Width="900"> <Grid RowDefinitions="Auto,*" ColumnDefinitions="*,*" Width="900">
<TextBox Grid.Row="0" Grid.Column="0" Text="{Binding SearchPluginInput}" Watermark="Search plugins" Margin="0 10" /> <TextBox Grid.Row="0" Grid.Column="0" Text="{Binding SearchPluginInput}" Watermark="Search plugins" Margin="0 10" />
<ItemsControl Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Items="{Binding Plugins}" /> <ScrollViewer Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<ItemsControl Items="{Binding Plugins}" />
</ScrollViewer>
</Grid> </Grid>
</UserControl> </UserControl>

View File

@ -22,7 +22,7 @@ namespace Artemis.UI.Services
private void BringDebuggerToForeground() private void BringDebuggerToForeground()
{ {
if (_debugViewModel != null) if (_debugViewModel != null)
_debugViewModel.IsActive = true; _debugViewModel.Activate();
} }
private void CreateDebugger() private void CreateDebugger()

View File

@ -1,7 +1,7 @@
using System; using System;
using Artemis.UI.Shared;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Controls.Templates; using Avalonia.Controls.Templates;
using ReactiveUI;
namespace Artemis.UI namespace Artemis.UI
{ {
@ -22,7 +22,7 @@ namespace Artemis.UI
public bool Match(object data) public bool Match(object data)
{ {
return data is ViewModelBase; return data is ReactiveObject;
} }
} }
} }

View File

@ -19,11 +19,11 @@
}, },
"Avalonia.Controls.PanAndZoom": { "Avalonia.Controls.PanAndZoom": {
"type": "Direct", "type": "Direct",
"requested": "[4.2.0, )", "requested": "[4.3.0, )",
"resolved": "4.2.0", "resolved": "4.3.0",
"contentHash": "zIQhp86CdV7xmFXFkaQBDNDr0WSyumEdJvqvIrywG5SEQK3HzACt0gR85KX19DHTlkJlnUVjmfkTEiPjwvgGtA==", "contentHash": "oUpQm2frhjWll5QWLx8Uzc2VWDNXgPqONlNBLu2gFBis1lkce1jjZvu423U7RNfvg1rOMeZoeiodZq7xZ02STA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8" "Avalonia": "0.10.10"
} }
}, },
"Avalonia.Desktop": { "Avalonia.Desktop": {
@ -64,25 +64,25 @@
}, },
"Avalonia.Svg.Skia": { "Avalonia.Svg.Skia": {
"type": "Direct", "type": "Direct",
"requested": "[0.10.8.3, )", "requested": "[0.10.10, )",
"resolved": "0.10.8.3", "resolved": "0.10.10",
"contentHash": "w7RYf+8+gOI3uVZZJ59S0EP49LVsyr1jpnZQzVFQqKa3y/c/i2jT/EUoKOeaqPMhFIsQZyEF4iluqoo6aZ05Tw==", "contentHash": "7xQkg3b/djGjGQe6ODxCY+LxMeZ0MtSFUOeEu8IMMUG89gueptuS84GZMRY27xG8lvjP3Mu8B1p3/YY5u7UiDg==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.8", "Avalonia": "0.10.10",
"Avalonia.Skia": "0.10.8", "Avalonia.Skia": "0.10.10",
"SkiaSharp": "2.80.2", "SkiaSharp": "2.80.2",
"Svg.Skia": "0.5.8.3" "Svg.Skia": "0.5.10"
} }
}, },
"FluentAvaloniaUI": { "FluentAvaloniaUI": {
"type": "Direct", "type": "Direct",
"requested": "[1.1.5, )", "requested": "[1.1.6, )",
"resolved": "1.1.5", "resolved": "1.1.6",
"contentHash": "1W1VZQaCeH4/kzNM2c9yPHAVVs9lW9/09bzz1lqu7Tvu79u9JCOjwkZmR8rGC0KbyOA7twwVr2/VvB84zDZYvA==", "contentHash": "EJukyiTmEVhaYlHdntFMyQKI4+u772rSClKYQqJRfkTb1NoJXLqiIVqMjx8ZQ0pxnfih+6CZ7+x82lfrGHIPUw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.9", "Avalonia": "0.10.10",
"Avalonia.Desktop": "0.10.9", "Avalonia.Desktop": "0.10.10",
"Avalonia.Diagnostics": "0.10.9" "Avalonia.Diagnostics": "0.10.10"
} }
}, },
"Flurl.Http": { "Flurl.Http": {
@ -115,14 +115,23 @@
"Material.Icons": "1.0.2" "Material.Icons": "1.0.2"
} }
}, },
"ReactiveUI.Validation": {
"type": "Direct",
"requested": "[2.2.1, )",
"resolved": "2.2.1",
"contentHash": "rhEphZ4ErbGfNtbBQ/tYMsLJYHyLVyqidU+sgZ3kXKbS7QrNoM4j6PPxCwLMKsJUuvVL8JN45xgmB9tSwm7+lg==",
"dependencies": {
"ReactiveUI": "16.2.6"
}
},
"Splat.Ninject": { "Splat.Ninject": {
"type": "Direct", "type": "Direct",
"requested": "[13.1.30, )", "requested": "[13.1.63, )",
"resolved": "13.1.30", "resolved": "13.1.63",
"contentHash": "hYgyD12Syt2l8U/KccMzNUj4nmrdULjoRTF4g5Q9XtVWPrcdTYmLEdcX/prZEWaFT7vGNP6x9uFXvOlM7Jc+gg==", "contentHash": "rTF0HSa6p8nxrXj2hwVgkutcTDJUXY34sY+zYK4ky65b7a0ROL8kdiYyxVVLE4Lq31N5Rcd4bBbqlPkgwZguww==",
"dependencies": { "dependencies": {
"Ninject": "3.3.4", "Ninject": "3.3.4",
"Splat": "13.1.30" "Splat": "13.1.63"
} }
}, },
"Avalonia.Angle.Windows.Natives": { "Avalonia.Angle.Windows.Natives": {
@ -198,27 +207,27 @@
}, },
"Avalonia.Xaml.Behaviors": { "Avalonia.Xaml.Behaviors": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.10", "resolved": "0.10.10.4",
"contentHash": "rHDkieWZDTjG+PVGQzronzknmH24r2VDtzbNfC3O8FLZGqREsBoCRDrqW4R4bmtD6CqpDPBey5soBYnnDE1m3Q==", "contentHash": "iSVOObfXch8vFzhYFvwGntRt4l4kg+dxXYc4C4RDhnoyPh60BCMUzdk2gYUYySv9UVSGAhqH4dQPWZ0l9USmYA==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.10", "Avalonia": "0.10.10",
"Avalonia.Xaml.Interactions": "0.10.10", "Avalonia.Xaml.Interactions": "0.10.10.4",
"Avalonia.Xaml.Interactivity": "0.10.10" "Avalonia.Xaml.Interactivity": "0.10.10.4"
} }
}, },
"Avalonia.Xaml.Interactions": { "Avalonia.Xaml.Interactions": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.10", "resolved": "0.10.10.4",
"contentHash": "bOJvciyk6kUjPx+mg6n+bwHQqRqgNiTDzTBkpokfkcWl9pMAlKvqqUe6YXWVCpKIDBjbzvkAbYa29S0ajqwFxw==", "contentHash": "OAwrl0tzsz+iX2z3T5wdsEG/JkbnlylfXUjCfbgQlQqODUBO0kk02RpCHJMnV86apkVXjeLV+S5+yA1yX+DT6g==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.10", "Avalonia": "0.10.10",
"Avalonia.Xaml.Interactivity": "0.10.10" "Avalonia.Xaml.Interactivity": "0.10.10.4"
} }
}, },
"Avalonia.Xaml.Interactivity": { "Avalonia.Xaml.Interactivity": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.10.10", "resolved": "0.10.10.4",
"contentHash": "xxWrpi0HsySczpU3Zl6c2ugbkTOs9qwqbvClfi/AKncoVbWpXv7W6J3kfQcfRlnKFwkTPjLyTYKVERIkb7kNCQ==", "contentHash": "RH33/HboQikon64SCfu1qFpuy4+mox2SEGYbXrrw9mnw3Ogw8PeYTJLtZw8/mNYs6dZAU3NusRBaLIG+0PGisw==",
"dependencies": { "dependencies": {
"Avalonia": "0.10.10" "Avalonia": "0.10.10"
} }
@ -242,8 +251,8 @@
}, },
"DynamicData": { "DynamicData": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.1.1", "resolved": "7.3.1",
"contentHash": "Pc6J5bFnSxEa64PV2V67FMcLlDdpv6m+zTBKSnRN3aLon/WtWWy8kuDpHFbJlgXHtqc6Nxloj9ItuvDlvKC/8w==", "contentHash": "E9oTvWlAgzct0MuWt6k+0s+nSDA3LkFVvDwkMUTklIZZnva314KZAEF2vG4XX9I98ia+EpMqjte67jWEBJlsRw==",
"dependencies": { "dependencies": {
"System.Reactive": "5.0.0" "System.Reactive": "5.0.0"
} }
@ -302,8 +311,8 @@
}, },
"LiteDB": { "LiteDB": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.10", "resolved": "5.0.11",
"contentHash": "x70WuqMDuP75dajqSLvO+AnI/BbwS6da+ukTO7rueV7VoXoQ5CRA9FV4r7cOS4OUr2NS1Up7LDIutjCxQycRvg==" "contentHash": "6cL4bOmVCUB0gIK+6qIr68HeqjjHZicPDGQjvJ87mIOvkFsEsJWkIps3yoKNeLpHhJQur++yoQ9Q8gxsdos0xQ=="
}, },
"Material.Icons": { "Material.Icons": {
"type": "Transitive", "type": "Transitive",
@ -521,13 +530,11 @@
}, },
"ReactiveUI": { "ReactiveUI": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.2.10", "resolved": "16.2.6",
"contentHash": "fOCbEZ+RsO2Jhv6vB8VX+ZEvczYJaC95atcSG7oXohJeL/sEwbbqvv9k+tbj2l4bRSj2j5CQvhwA3HNLaxlCAg==", "contentHash": "jf1RvD8HxHuA6CGQtheGHUCHzRrhpvo0z593Npsz7g8KJWXfGR45Dc9bILJHoymBxhdDD1L1WjUfh0fcucIPPg==",
"dependencies": { "dependencies": {
"DynamicData": "7.1.1", "DynamicData": "7.3.1",
"Splat": "10.0.1", "Splat": "13.1.1"
"System.Reactive": "5.0.0",
"System.Runtime.Serialization.Primitives": "4.3.0"
} }
}, },
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
@ -668,8 +675,8 @@
}, },
"ShimSkiaSharp": { "ShimSkiaSharp": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "BWwwsIlYUFF0DUc8Pa9xONIXVDvEL9pOYc9YmWilpHrWC37dcK+H4+tfuxztZxtfJx559HGn+6iZmMDjfFoOxA==" "contentHash": "G1ltdwS5+eMhMCoMx31hHjFIznGAjdUK7xAg8raFMFbN09p2tuxzvK7cKbveWm8SEAGIW7NgDyEqGGJzrPrMrg=="
}, },
"SkiaSharp": { "SkiaSharp": {
"type": "Transitive", "type": "Transitive",
@ -698,13 +705,13 @@
}, },
"Splat": { "Splat": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.1.30", "resolved": "13.1.63",
"contentHash": "yaj3r8CvHQwtvhfTi+dp5LpIb3c4svqe/tL6LdAS8wWP+dXAp3fTCLjYx21TrW1QBFTBJcg9lrJqDPbheSzHbA==" "contentHash": "7iW45RA7AbSlQPCgdokmysva5PGd6iBUhuNkC0XD73LF9dxfTkKeo3wZkohU7nvspDhJ7PJsYHvDtxIt5bMQ8Q=="
}, },
"Svg.Custom": { "Svg.Custom": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "6FnbI4T3uCNN7DYJpfPFa4caTTJzp4YbhU3J4c/syX7wQNSeQ/1u7JZZ+dGgrRUauiWP8VsiCLKP8qinc5xI5w==", "contentHash": "Ypi/4NxDxjM24vsK+4Uit08aJUFHcZZpB5Ctb7FLMVevMq0hYeDqzKp6OVLFO5UCX/TxUfRiL1u9F7fvUDA0tQ==",
"dependencies": { "dependencies": {
"Fizzler": "1.2.0", "Fizzler": "1.2.0",
"System.Drawing.Common": "5.0.0", "System.Drawing.Common": "5.0.0",
@ -715,22 +722,22 @@
}, },
"Svg.Model": { "Svg.Model": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "F/rimPwV5KF64P8oofXGMwOZ0T7b3z1A9OiC4mv5OdSpLpMpUxpSwGLAOkJ5DFqQgXqVjKKLhPdjIjQBwy0AjA==", "contentHash": "sh5W7VpghtFjDnPOMa+CEiIKpJPmkb7FxNuHnB2sLZwJR2qzyVlZaBWM95VaRAXlOU8c0qbtA5ZNVREOpzLQRw==",
"dependencies": { "dependencies": {
"ShimSkiaSharp": "0.5.8.3", "ShimSkiaSharp": "0.5.10",
"Svg.Custom": "0.5.8.3" "Svg.Custom": "0.5.10"
} }
}, },
"Svg.Skia": { "Svg.Skia": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.5.8.3", "resolved": "0.5.10",
"contentHash": "ajQ0aINQtEzWkqEXyJjnwqOFNusWNMHJVGrKa1ISbP21nrWJh+tApydLFVFGGjs91d7K3YOUbWDKlEzzdDQaOg==", "contentHash": "Xz/nd+5dNJAh7IbfjyduWIJAtpHNqMopX+ORg6ZNnW6l1I7lK20KHlSdMNy9c18vALrA95eU8WFo00nloLVUkQ==",
"dependencies": { "dependencies": {
"SkiaSharp": "2.80.2", "SkiaSharp": "2.80.2",
"SkiaSharp.HarfBuzz": "2.80.2", "SkiaSharp.HarfBuzz": "2.80.2",
"Svg.Custom": "0.5.8.3", "Svg.Custom": "0.5.10",
"Svg.Model": "0.5.8.3" "Svg.Model": "0.5.10"
} }
}, },
"System.AppContext": { "System.AppContext": {
@ -1342,15 +1349,6 @@
"System.Runtime.Extensions": "4.3.0" "System.Runtime.Extensions": "4.3.0"
} }
}, },
"System.Runtime.Serialization.Primitives": {
"type": "Transitive",
"resolved": "4.3.0",
"contentHash": "Wz+0KOukJGAlXjtKr+5Xpuxf8+c8739RI1C+A2BoQZT+wMCCoMDDdO8/4IRHfaVINqL78GO8dW8G2lW/e45Mcw==",
"dependencies": {
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Security.AccessControl": { "System.Security.AccessControl": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "5.0.0",
@ -1665,7 +1663,7 @@
"EmbedIO": "3.4.3", "EmbedIO": "3.4.3",
"HidSharp": "2.1.0", "HidSharp": "2.1.0",
"Humanizer.Core": "2.11.10", "Humanizer.Core": "2.11.10",
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"McMaster.NETCore.Plugins": "1.4.0", "McMaster.NETCore.Plugins": "1.4.0",
"Newtonsoft.Json": "13.0.1", "Newtonsoft.Json": "13.0.1",
"Ninject": "3.3.4", "Ninject": "3.3.4",
@ -1686,7 +1684,7 @@
"artemis.storage": { "artemis.storage": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"LiteDB": "5.0.10", "LiteDB": "5.0.11",
"Serilog": "2.10.0" "Serilog": "2.10.0"
} }
}, },
@ -1696,12 +1694,13 @@
"Artemis.Core": "1.0.0", "Artemis.Core": "1.0.0",
"Avalonia": "0.10.10", "Avalonia": "0.10.10",
"Avalonia.ReactiveUI": "0.10.10", "Avalonia.ReactiveUI": "0.10.10",
"Avalonia.Svg.Skia": "0.10.8.3", "Avalonia.Svg.Skia": "0.10.10",
"Avalonia.Xaml.Behaviors": "0.10.10", "Avalonia.Xaml.Behaviors": "0.10.10.4",
"Avalonia.Xaml.Interactions": "0.10.10", "Avalonia.Xaml.Interactions": "0.10.10.4",
"Avalonia.Xaml.Interactivity": "0.10.10", "Avalonia.Xaml.Interactivity": "0.10.10.4",
"FluentAvaloniaUI": "1.1.5", "FluentAvaloniaUI": "1.1.6",
"Material.Icons.Avalonia": "1.0.2" "Material.Icons.Avalonia": "1.0.2",
"ReactiveUI.Validation": "2.2.1"
} }
} }
} }