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

View File

@ -41,7 +41,7 @@
<PackageReference Include="EmbedIO" Version="3.4.3" />
<PackageReference Include="HidSharp" Version="2.1.0" />
<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="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="Ninject" Version="3.3.4" />

View File

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

View File

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

View File

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

View File

@ -689,6 +689,17 @@
Represents errors that occur within the Artemis Shared UI library
</summary>
</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">
<summary>
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
</summary>
</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">
<summary>
Represents the base class for Artemis view models

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -18,12 +18,13 @@
<ItemGroup>
<PackageReference Include="Avalonia" 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.Xaml.Behaviors" Version="0.10.10" />
<PackageReference Include="Avalonia.Xaml.Interactions" Version="0.10.10" />
<PackageReference Include="Avalonia.Xaml.Interactivity" Version="0.10.10" />
<PackageReference Include="FluentAvaloniaUI" Version="1.1.5" />
<PackageReference Include="Avalonia.Svg.Skia" Version="0.10.10" />
<PackageReference Include="Avalonia.Xaml.Behaviors" Version="0.10.10.4" />
<PackageReference Include="Avalonia.Xaml.Interactions" Version="0.10.10.4" />
<PackageReference Include="Avalonia.Xaml.Interactivity" Version="0.10.10.4" />
<PackageReference Include="FluentAvaloniaUI" Version="1.1.6" />
<PackageReference Include="Material.Icons.Avalonia" Version="1.0.2" />
<PackageReference Include="ReactiveUI.Validation" Version="2.2.1" />
</ItemGroup>
<ItemGroup>
<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 Ninject;
using Ninject.Parameters;
using ReactiveUI;
namespace Artemis.UI.Shared.Services.Builders
{
@ -14,6 +15,7 @@ namespace Artemis.UI.Shared.Services.Builders
private readonly ContentDialog _contentDialog;
private readonly IKernel _kernel;
private readonly Window _parent;
private ContentDialogViewModelBase? _viewModel;
internal ContentDialogBuilder(IKernel kernel, Window parent)
{
@ -53,6 +55,13 @@ namespace Artemis.UI.Shared.Services.Builders
_contentDialog.PrimaryButtonCommand = builder.Command;
_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;
}
@ -66,6 +75,13 @@ namespace Artemis.UI.Shared.Services.Builders
_contentDialog.SecondaryButtonCommand = builder.Command;
_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;
}
@ -75,24 +91,32 @@ namespace Artemis.UI.Shared.Services.Builders
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();
viewModel = _kernel.Get<T>(paramsArray);
viewModel.ContentDialog = _contentDialog;
_contentDialog.Content = viewModel;
_viewModel = viewModel;
return this;
}
public async Task<ContentDialogResult> ShowAsync()
{
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
{
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
{

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.");
}
Window? parent = classic.Windows.FirstOrDefault(w => w.IsActive) ?? classic.MainWindow;
Window? parent = classic.Windows.FirstOrDefault(w => w.IsActive && w.ShowInTaskbar) ?? classic.MainWindow;
return parent;
}
}

View File

@ -1,10 +1,69 @@
using System;
using System.Reactive.Disposables;
using Artemis.UI.Shared.Events;
using FluentAvalonia.UI.Controls;
using ReactiveUI;
using ReactiveUI.Validation.Helpers;
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>
/// Represents the base class for Artemis view models
/// </summary>

View File

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

View File

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

View File

@ -14,16 +14,17 @@
</ItemGroup>
<ItemGroup>
<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.Diagnostics" Version="0.10.10" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.10" />
<PackageReference Include="Avalonia.Svg.Skia" Version="0.10.8.3" />
<PackageReference Include="FluentAvaloniaUI" Version="1.1.5" />
<PackageReference Include="Avalonia.Svg.Skia" Version="0.10.10" />
<PackageReference Include="FluentAvaloniaUI" Version="1.1.6" />
<PackageReference Include="Flurl.Http" Version="3.2.0" />
<PackageReference Include="Live.Avalonia" Version="1.3.1" />
<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>
<ProjectReference Include="..\..\Artemis.Core\Artemis.Core.csproj" />

View File

@ -3,7 +3,7 @@
<NativeMenu x:Key="TrayIconMenu">
<NativeMenuItem Header="Home" Command="{Binding OpenScreen}" CommandParameter="Home" />
<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" />
<NativeMenuItemSeparator />
<NativeMenuItem Header="Debugger" Command="{Binding OpenDebugger}" />

View File

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

View File

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

View File

@ -1,5 +1,6 @@
using System;
using System.Reactive.Disposables;
using System.Reactive.Linq;
using Artemis.UI.Shared.Events;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
@ -12,19 +13,20 @@ namespace Artemis.UI.Screens.Debugger
{
public class DebugView : ReactiveWindow<DebugViewModel>
{
private readonly NavigationView _navigation;
public DebugView()
{
Activated += OnActivated;
Deactivated += OnDeactivated;
InitializeComponent();
NavigationView navigation = this.Get<NavigationView>("Navigation");
_navigation = this.Get<NavigationView>("Navigation");
this.WhenActivated(d =>
{
ViewModel!.WhenAnyValue(vm => vm!.IsActive).Subscribe(_ => Activate()).DisposeWith(d);
ViewModel!.SelectedItem = (NavigationViewItem) _navigation.MenuItems.ElementAt(0);
Observable.FromEventPattern(x => ViewModel!.ActivationRequested += x, x => ViewModel!.ActivationRequested -= x).Subscribe(_ =>
{
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);
}
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)
{
}
}
}

View File

@ -18,7 +18,6 @@ namespace Artemis.UI.Screens.Debugger
{
private readonly IKernel _kernel;
private readonly IDebugService _debugService;
private bool _isActive;
private NavigationViewItem? _selectedItem;
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
{
@ -77,5 +71,17 @@ namespace Artemis.UI.Screens.Debugger
}
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
{
public class DeviceDetectInputViewModel : ActivatableViewModelBase
public class DeviceDetectInputViewModel : ContentDialogViewModelBase
{
private readonly IInputService _inputService;
private readonly INotificationService _notificationService;

View File

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

View File

@ -4,7 +4,11 @@ using System.Threading.Tasks;
using Artemis.Core;
using Artemis.Core.Services;
using Artemis.UI.Ninject.Factories;
using Artemis.UI.Screens.Home;
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.Shared;
using Artemis.UI.Shared.Services.Interfaces;
@ -14,6 +18,8 @@ using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Platform;
using Avalonia.Threading;
using Ninject;
using Ninject.Parameters;
using ReactiveUI;
namespace Artemis.UI.Screens.Root
@ -24,6 +30,7 @@ namespace Artemis.UI.Screens.Root
private readonly ICoreService _coreService;
private readonly ISettingsService _settingsService;
private readonly IWindowService _windowService;
private readonly IDebugService _debugService;
private readonly IAssetLoader _assetLoader;
private readonly ISidebarVmFactory _sidebarVmFactory;
private SidebarViewModel? _sidebarViewModel;
@ -35,6 +42,7 @@ namespace Artemis.UI.Screens.Root
IRegistrationService registrationService,
IWindowService windowService,
IMainWindowService mainWindowService,
IDebugService debugService,
IAssetLoader assetLoader,
ISidebarVmFactory sidebarVmFactory)
{
@ -43,6 +51,7 @@ namespace Artemis.UI.Screens.Root
_coreService = coreService;
_settingsService = settingsService;
_windowService = windowService;
_debugService = debugService;
_assetLoader = assetLoader;
_sidebarVmFactory = sidebarVmFactory;
_lifeTime = (IClassicDesktopStyleApplicationLifetime) Application.Current.ApplicationLifetime;
@ -50,7 +59,7 @@ namespace Artemis.UI.Screens.Root
coreService.StartupArguments = _lifeTime.Args.ToList();
mainWindowService.ConfigureMainWindowProvider(this);
registrationService.RegisterProviders();
DisplayAccordingToSettings();
Task.Run(coreService.Initialize);
}
@ -64,13 +73,6 @@ namespace Artemis.UI.Screens.Root
/// <inheritdoc />
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)
{
_lifeTime.MainWindow = null;
@ -88,7 +90,7 @@ namespace Artemis.UI.Screens.Root
// Always show the tray icon if ShowOnStartup is false or the user has no way to open the main window
bool showTrayIcon = !showOnAutoRun || _settingsService.GetSetting("UI.ShowTrayIcon", true).Value;
if (showTrayIcon)
if (showTrayIcon)
ShowTrayIcon();
if (autoRunning && !showOnAutoRun || minimized)
@ -109,7 +111,11 @@ namespace Artemis.UI.Screens.Root
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");
_trayIcons = new TrayIcons {_trayIcon};
TrayIcon.SetIcons(Application.Current, _trayIcons);
@ -124,6 +130,30 @@ namespace Artemis.UI.Screens.Root
_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
/// <inheritdoc />
@ -140,8 +170,8 @@ namespace Artemis.UI.Screens.Root
_lifeTime.MainWindow.Closed += CurrentMainWindowOnClosed;
}
_lifeTime.MainWindow.WindowState = WindowState.Normal;
_lifeTime.MainWindow.Activate();
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:avalonia="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia"
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"
x:Class="Artemis.UI.Screens.Root.Sidebar.SidebarCategoryView">
<UserControl.Styles>
@ -27,19 +28,8 @@
<Setter Property="Opacity" Value="1" />
</Style>
</UserControl.Styles>
<Grid x:Name="ContainerGrid" Margin="0 8 0 0">
<Grid.RowDefinitions>
<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>
<Grid x:Name="ContainerGrid" Margin="0 8 0 0" RowDefinitions="Auto,*">
<Grid Grid.Row="0" Background="Transparent" ColumnDefinitions="Auto,Auto,*,Auto,Auto">
<avalonia:MaterialIcon Classes.chevron-collapsed="{Binding ShowItems}"
Kind="ChevronUp"
@ -87,7 +77,8 @@
<Button Classes="category-button icon-button icon-button-small"
Grid.Column="2"
ToolTip.Tip="Edit category"
HorizontalAlignment="Right">
HorizontalAlignment="Right"
Command="{Binding EditCategory}">
<avalonia:MaterialIcon Kind="Cog" />
</Button>
<ToggleButton Classes="category-button icon-button icon-button-small"
@ -105,12 +96,11 @@
<DataTemplate x:Key="ProfileDragTemplate" DataType="{x:Type local:SidebarProfileConfigurationViewModel}">
<Border Background="{DynamicResource MaterialDesignDivider}" Padding="10" CornerRadius="4">
<StackPanel Orientation="Horizontal">
<!-- <shared:ProfileConfigurationIcon ConfigurationIcon="{Binding ProfileConfiguration.Icon}" -->
<!-- Width="20" -->
<!-- Height="20" -->
<!-- Margin="0 0 10 0" -->
<!-- Foreground="{DynamicResource MaterialDesignBody}" /> -->
<TextBlock Text="{Binding ProfileConfiguration.Name}" VerticalAlignment="Center" Foreground="{DynamicResource MaterialDesignBody}" />
<controls:ProfileConfigurationIcon ConfigurationIcon="{Binding ProfileConfiguration.Icon}"
Width="20"
Height="20"
Margin="0 0 10 0" />
<TextBlock Text="{Binding ProfileConfiguration.Name}" VerticalAlignment="Center" />
</StackPanel>
</Border>
</DataTemplate>

View File

@ -1,22 +1,30 @@
using System.Collections.ObjectModel;
using System.Linq;
using System.Threading.Tasks;
using Artemis.Core;
using Artemis.Core.Services;
using Artemis.UI.Ninject.Factories;
using Artemis.UI.Screens.Root.Sidebar.Dialogs;
using Artemis.UI.Shared;
using Artemis.UI.Shared.Services.Interfaces;
using FluentAvalonia.UI.Controls;
using ReactiveUI;
namespace Artemis.UI.Screens.Root.Sidebar
{
public class SidebarCategoryViewModel : ViewModelBase
{
private readonly SidebarViewModel _sidebarViewModel;
private readonly IProfileService _profileService;
private readonly IWindowService _windowService;
private readonly ISidebarVmFactory _vmFactory;
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;
_windowService = windowService;
_vmFactory = vmFactory;
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()
{
ProfileConfigurations.Clear();

View File

@ -48,7 +48,10 @@
<ScrollViewer Grid.Row="3" VerticalScrollBarVisibility="Auto">
<StackPanel>
<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>
</ScrollViewer>

View File

@ -2,14 +2,18 @@
using System.Collections.ObjectModel;
using System.Linq;
using System.Reactive.Disposables;
using System.Threading.Tasks;
using Artemis.Core;
using Artemis.Core.Services;
using Artemis.UI.Ninject.Factories;
using Artemis.UI.Screens.Home;
using Artemis.UI.Screens.Root.Sidebar.Dialogs;
using Artemis.UI.Screens.Settings;
using Artemis.UI.Screens.SurfaceEditor;
using Artemis.UI.Screens.Workshop;
using Artemis.UI.Shared;
using Artemis.UI.Shared.Services.Interfaces;
using FluentAvalonia.UI.Controls;
using Material.Icons;
using Ninject;
using ReactiveUI;
@ -23,16 +27,18 @@ namespace Artemis.UI.Screens.Root.Sidebar
private readonly IProfileService _profileService;
private readonly IRgbService _rgbService;
private readonly ISidebarVmFactory _sidebarVmFactory;
private readonly IWindowService _windowService;
private ArtemisDevice? _headerDevice;
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;
_profileService = profileService;
_rgbService = rgbService;
_sidebarVmFactory = sidebarVmFactory;
_windowService = windowService;
SidebarScreens = new ObservableCollection<SidebarScreenViewModel>
{
@ -75,12 +81,24 @@ namespace Artemis.UI.Screens.Root.Sidebar
public SidebarCategoryViewModel AddProfileCategoryViewModel(ProfileCategory profileCategory)
{
SidebarCategoryViewModel viewModel = _sidebarVmFactory.SidebarCategoryViewModel(profileCategory);
SidebarCategoryViewModel viewModel = _sidebarVmFactory.SidebarCategoryViewModel(this, profileCategory);
SidebarCategories.Add(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();
foreach (ProfileCategory profileCategory in _profileService.ProfileCategories.OrderBy(p => p.Order))

View File

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

View File

@ -4,22 +4,30 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Artemis.UI.Screens.Settings.Tabs.DevicesTabView">
<StackPanel MaxWidth="1050">
<TextBlock Classes="h4">Device management</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>
<Grid MaxWidth="1050">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel>
<TextBlock Classes="h4">Device management</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">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</StackPanel>
<ScrollViewer Grid.Row="1" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<ItemsControl Items="{Binding Devices}" Margin="-5 0">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>
</Grid>
</UserControl>

View File

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

View File

@ -6,6 +6,8 @@
x:Class="Artemis.UI.Screens.Settings.Tabs.PluginsTabView">
<Grid RowDefinitions="Auto,*" ColumnDefinitions="*,*" Width="900">
<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>
</UserControl>

View File

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

View File

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

View File

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