mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
f0dcd0f0f3
@ -54,7 +54,7 @@ steps:
|
|||||||
command: 'publish'
|
command: 'publish'
|
||||||
publishWebProjects: false
|
publishWebProjects: false
|
||||||
projects: '$(artemisSolution)'
|
projects: '$(artemisSolution)'
|
||||||
arguments: '--runtime win-x64 --self-contained false --output $(Build.ArtifactStagingDirectory)/build /nowarn:cs1591'
|
arguments: '--runtime win-x64 --self-contained false --configuration Release --output $(Build.ArtifactStagingDirectory)/build /nowarn:cs1591'
|
||||||
zipAfterPublish: false
|
zipAfterPublish: false
|
||||||
modifyOutputPath: false
|
modifyOutputPath: false
|
||||||
|
|
||||||
@ -74,12 +74,13 @@ steps:
|
|||||||
fileType: 'json'
|
fileType: 'json'
|
||||||
targetFiles: '**/buildinfo.json'
|
targetFiles: '**/buildinfo.json'
|
||||||
|
|
||||||
|
# Copy Artemis binaries to where plugin projects expect them
|
||||||
- task: CopyFiles@2
|
- task: CopyFiles@2
|
||||||
displayName: 'Plugins - Prepare Artemis binaries'
|
displayName: 'Plugins - Prepare Artemis binaries'
|
||||||
inputs:
|
inputs:
|
||||||
SourceFolder: '$(Build.ArtifactStagingDirectory)/build'
|
SourceFolder: '$(Build.ArtifactStagingDirectory)/build'
|
||||||
Contents: '**'
|
Contents: '**'
|
||||||
TargetFolder: 'Artemis/src/Artemis.UI/bin/x64/Debug/net5.0-windows'
|
TargetFolder: 'Artemis/src/Artemis.UI/bin/net5.0-windows'
|
||||||
|
|
||||||
- task: PowerShell@2
|
- task: PowerShell@2
|
||||||
displayName: 'Plugins - Insert build number into plugin.json'
|
displayName: 'Plugins - Insert build number into plugin.json'
|
||||||
@ -100,7 +101,7 @@ steps:
|
|||||||
inputs:
|
inputs:
|
||||||
command: 'publish'
|
command: 'publish'
|
||||||
publishWebProjects: false
|
publishWebProjects: false
|
||||||
arguments: '--runtime win-x64 --self-contained false --output $(Build.ArtifactStagingDirectory)/build/Plugins'
|
arguments: '--runtime win-x64 --configuration Release --self-contained false --output $(Build.ArtifactStagingDirectory)/build/Plugins'
|
||||||
projects: '$(pluginProjects)'
|
projects: '$(pluginProjects)'
|
||||||
zipAfterPublish: true
|
zipAfterPublish: true
|
||||||
|
|
||||||
|
|||||||
@ -38,19 +38,19 @@
|
|||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Ben.Demystifier" Version="0.1.6" />
|
<PackageReference Include="Ben.Demystifier" Version="0.3.0" />
|
||||||
<PackageReference Include="EmbedIO" Version="3.4.3" />
|
<PackageReference Include="EmbedIO" Version="3.4.3" />
|
||||||
<PackageReference Include="HidSharp" Version="2.1.0" />
|
<PackageReference Include="HidSharp" Version="2.1.0" />
|
||||||
<PackageReference Include="Humanizer.Core" Version="2.8.26" />
|
<PackageReference Include="Humanizer.Core" Version="2.8.26" />
|
||||||
<PackageReference Include="LiteDB" Version="5.0.9" />
|
<PackageReference Include="LiteDB" Version="5.0.10" />
|
||||||
<PackageReference Include="McMaster.NETCore.Plugins" Version="1.3.1" />
|
<PackageReference Include="McMaster.NETCore.Plugins" Version="1.3.1" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||||
<PackageReference Include="Ninject" Version="3.3.4" />
|
<PackageReference Include="Ninject" Version="3.3.4" />
|
||||||
<PackageReference Include="Ninject.Extensions.ChildKernel" Version="3.3.0" />
|
<PackageReference Include="Ninject.Extensions.ChildKernel" Version="3.3.0" />
|
||||||
<PackageReference Include="Ninject.Extensions.Conventions" Version="3.3.0" />
|
<PackageReference Include="Ninject.Extensions.Conventions" Version="3.3.0" />
|
||||||
<PackageReference Include="Serilog" Version="2.10.0" />
|
<PackageReference Include="Serilog" Version="2.10.0" />
|
||||||
<PackageReference Include="Serilog.Enrichers.Demystify" Version="1.0.0-dev-00019" />
|
<PackageReference Include="Serilog.Enrichers.Demystify" Version="1.0.0-dev-00019" />
|
||||||
<PackageReference Include="Serilog.Sinks.Debug" Version="1.0.1" />
|
<PackageReference Include="Serilog.Sinks.Debug" Version="2.0.0" />
|
||||||
<PackageReference Include="Serilog.Sinks.File" Version="4.1.0" />
|
<PackageReference Include="Serilog.Sinks.File" Version="4.1.0" />
|
||||||
<PackageReference Include="SkiaSharp" Version="2.80.2" />
|
<PackageReference Include="SkiaSharp" Version="2.80.2" />
|
||||||
<PackageReference Include="System.Buffers" Version="4.5.1" />
|
<PackageReference Include="System.Buffers" Version="4.5.1" />
|
||||||
@ -58,7 +58,7 @@
|
|||||||
<PackageReference Include="System.Numerics.Vectors" Version="4.5.0" />
|
<PackageReference Include="System.Numerics.Vectors" Version="4.5.0" />
|
||||||
<PackageReference Include="System.Reflection.Metadata" Version="5.0.0" />
|
<PackageReference Include="System.Reflection.Metadata" Version="5.0.0" />
|
||||||
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
|
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
|
||||||
<PackageReference Include="Unclassified.NetRevisionTask" Version="0.3.0">
|
<PackageReference Include="Unclassified.NetRevisionTask" Version="0.4.0">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|||||||
@ -47,7 +47,7 @@ namespace Artemis.Core
|
|||||||
/// <para>Information is retrieved from <c>buildinfo.json</c></para>
|
/// <para>Information is retrieved from <c>buildinfo.json</c></para>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly BuildInfo BuildInfo = File.Exists(Path.Combine(ApplicationFolder, "buildinfo.json"))
|
public static readonly BuildInfo BuildInfo = File.Exists(Path.Combine(ApplicationFolder, "buildinfo.json"))
|
||||||
? JsonConvert.DeserializeObject<BuildInfo>(File.ReadAllText(Path.Combine(ApplicationFolder, "buildinfo.json")))
|
? JsonConvert.DeserializeObject<BuildInfo>(File.ReadAllText(Path.Combine(ApplicationFolder, "buildinfo.json")))!
|
||||||
: new BuildInfo
|
: new BuildInfo
|
||||||
{
|
{
|
||||||
IsLocalBuild = true,
|
IsLocalBuild = true,
|
||||||
|
|||||||
@ -39,13 +39,13 @@ namespace Artemis.Core.Services
|
|||||||
foreach (Process startedProcess in newProcesses.Except(_lastScannedProcesses, _comparer))
|
foreach (Process startedProcess in newProcesses.Except(_lastScannedProcesses, _comparer))
|
||||||
{
|
{
|
||||||
ProcessStarted?.Invoke(this, new ProcessEventArgs(startedProcess));
|
ProcessStarted?.Invoke(this, new ProcessEventArgs(startedProcess));
|
||||||
_logger.Debug("Started Process: {startedProcess}", startedProcess.ProcessName);
|
_logger.Verbose("Started Process: {startedProcess}", startedProcess.ProcessName);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (Process stoppedProcess in _lastScannedProcesses.Except(newProcesses, _comparer))
|
foreach (Process stoppedProcess in _lastScannedProcesses.Except(newProcesses, _comparer))
|
||||||
{
|
{
|
||||||
ProcessStopped?.Invoke(this, new ProcessEventArgs(stoppedProcess));
|
ProcessStopped?.Invoke(this, new ProcessEventArgs(stoppedProcess));
|
||||||
_logger.Debug("Stopped Process: {stoppedProcess}", stoppedProcess.ProcessName);
|
_logger.Verbose("Stopped Process: {stoppedProcess}", stoppedProcess.ProcessName);
|
||||||
}
|
}
|
||||||
|
|
||||||
_lastScannedProcesses = newProcesses;
|
_lastScannedProcesses = newProcesses;
|
||||||
|
|||||||
@ -4,12 +4,11 @@
|
|||||||
".NETCoreApp,Version=v5.0": {
|
".NETCoreApp,Version=v5.0": {
|
||||||
"Ben.Demystifier": {
|
"Ben.Demystifier": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[0.1.6, )",
|
"requested": "[0.3.0, )",
|
||||||
"resolved": "0.1.6",
|
"resolved": "0.3.0",
|
||||||
"contentHash": "sYI8+ANUo78i/vIq9Vjrjjl6A00yVbT6XsuSVvUMVRVEKJHXZu4VE00RZHg/CA7QxmaQ1zfw/Bs6DAU+OJUNAg==",
|
"contentHash": "7mTSt0PLeXomarrTXdLcdYAg+zaOunw3KEvWKQ0fQaGySwqOzGxKVq8BDgUXWAyBH2hKhXldkG7uKJGkYBhDiw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"System.Reflection.Metadata": "1.6.0",
|
"System.Reflection.Metadata": "5.0.0"
|
||||||
"System.Threading.Tasks.Extensions": "4.5.3"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"EmbedIO": {
|
"EmbedIO": {
|
||||||
@ -35,9 +34,9 @@
|
|||||||
},
|
},
|
||||||
"LiteDB": {
|
"LiteDB": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[5.0.9, )",
|
"requested": "[5.0.10, )",
|
||||||
"resolved": "5.0.9",
|
"resolved": "5.0.10",
|
||||||
"contentHash": "cWnNWXL+qaP/qrkUCYZHBUJcv+IsfJfofa+Ed4EyT0zs/gkXqfKvjTbS3uSMBfcd9I7Yf+q9YPmCpmVFrVGQtw=="
|
"contentHash": "x70WuqMDuP75dajqSLvO+AnI/BbwS6da+ukTO7rueV7VoXoQ5CRA9FV4r7cOS4OUr2NS1Up7LDIutjCxQycRvg=="
|
||||||
},
|
},
|
||||||
"McMaster.NETCore.Plugins": {
|
"McMaster.NETCore.Plugins": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
@ -51,9 +50,9 @@
|
|||||||
},
|
},
|
||||||
"Newtonsoft.Json": {
|
"Newtonsoft.Json": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[12.0.3, )",
|
"requested": "[13.0.1, )",
|
||||||
"resolved": "12.0.3",
|
"resolved": "13.0.1",
|
||||||
"contentHash": "6mgjfnRB4jKMlzHSl+VD+oUc1IebOZabkbyWj2RiTgWwYPPuaK1H97G1sHqGwPlS5npiF5Q0OrxN1wni2n5QWg=="
|
"contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A=="
|
||||||
},
|
},
|
||||||
"Ninject": {
|
"Ninject": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
@ -101,12 +100,11 @@
|
|||||||
},
|
},
|
||||||
"Serilog.Sinks.Debug": {
|
"Serilog.Sinks.Debug": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[1.0.1, )",
|
"requested": "[2.0.0, )",
|
||||||
"resolved": "1.0.1",
|
"resolved": "2.0.0",
|
||||||
"contentHash": "nE5wvw9+J/V4lA+rEkFUETGjBabK8IlLQY5Z9KDzoo5LvILC4vhTOXLs7DGYs8h5juIf2nLZnVxHDXf404FqEQ==",
|
"contentHash": "Y6g3OBJ4JzTyyw16fDqtFcQ41qQAydnEvEqmXjhwhgjsnG/FaJ8GUqF5ldsC/bVkK8KYmqrPhDO+tm4dF6xx4A==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Serilog": "2.5.0",
|
"Serilog": "2.10.0"
|
||||||
"System.Diagnostics.Debug": "4.3.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Serilog.Sinks.File": {
|
"Serilog.Sinks.File": {
|
||||||
@ -166,9 +164,9 @@
|
|||||||
},
|
},
|
||||||
"Unclassified.NetRevisionTask": {
|
"Unclassified.NetRevisionTask": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[0.3.0, )",
|
"requested": "[0.4.0, )",
|
||||||
"resolved": "0.3.0",
|
"resolved": "0.4.0",
|
||||||
"contentHash": "KwOAbbcAoaOIsyszuOv7ZeLEHfata70iM+0h1jMoMXs87EMXr5E8cFYRrCFbJDdd4Do9dK+L3gwNWjfg/ROUWw=="
|
"contentHash": "2Tzz6qoQNciyO4uT6wxByMiyvbve+u4eFIiDewDUbeHuxr/rKuba3/EhhXDsEH9WoKzYlpzqxDfQGPE/bIe5Rw=="
|
||||||
},
|
},
|
||||||
"Castle.Core": {
|
"Castle.Core": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
@ -1164,8 +1162,13 @@
|
|||||||
},
|
},
|
||||||
"System.Threading.Tasks.Extensions": {
|
"System.Threading.Tasks.Extensions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.5.3",
|
"resolved": "4.3.0",
|
||||||
"contentHash": "+MvhNtcvIbqmhANyKu91jQnvIRVSTiaOiFNfKWwXGHG48YAb4I/TyH8spsySiPYla7gKal5ZnF3teJqZAximyQ=="
|
"contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==",
|
||||||
|
"dependencies": {
|
||||||
|
"System.Collections": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.0",
|
||||||
|
"System.Threading.Tasks": "4.3.0"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"System.Threading.Timer": {
|
"System.Threading.Timer": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
@ -1243,7 +1246,7 @@
|
|||||||
"artemis.storage": {
|
"artemis.storage": {
|
||||||
"type": "Project",
|
"type": "Project",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"LiteDB": "5.0.9",
|
"LiteDB": "5.0.10",
|
||||||
"Serilog": "2.10.0"
|
"Serilog": "2.10.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="LiteDB" Version="5.0.9" />
|
<PackageReference Include="LiteDB" Version="5.0.10" />
|
||||||
<PackageReference Include="Serilog" Version="2.10.0" />
|
<PackageReference Include="Serilog" Version="2.10.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@ -4,9 +4,9 @@
|
|||||||
".NETCoreApp,Version=v5.0": {
|
".NETCoreApp,Version=v5.0": {
|
||||||
"LiteDB": {
|
"LiteDB": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[5.0.9, )",
|
"requested": "[5.0.10, )",
|
||||||
"resolved": "5.0.9",
|
"resolved": "5.0.10",
|
||||||
"contentHash": "cWnNWXL+qaP/qrkUCYZHBUJcv+IsfJfofa+Ed4EyT0zs/gkXqfKvjTbS3uSMBfcd9I7Yf+q9YPmCpmVFrVGQtw=="
|
"contentHash": "x70WuqMDuP75dajqSLvO+AnI/BbwS6da+ukTO7rueV7VoXoQ5CRA9FV4r7cOS4OUr2NS1Up7LDIutjCxQycRvg=="
|
||||||
},
|
},
|
||||||
"Serilog": {
|
"Serilog": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
|
|||||||
@ -33,20 +33,20 @@
|
|||||||
<DocumentationFile>bin\Artemis.UI.Shared.xml</DocumentationFile>
|
<DocumentationFile>bin\Artemis.UI.Shared.xml</DocumentationFile>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AvalonEdit" Version="6.0.1" />
|
<PackageReference Include="Ben.Demystifier" Version="0.3.0" />
|
||||||
<PackageReference Include="Humanizer.Core" Version="2.8.26" />
|
<PackageReference Include="Humanizer.Core" Version="2.8.26" />
|
||||||
<PackageReference Include="MaterialDesignExtensions" Version="3.3.0-a01" />
|
<PackageReference Include="MaterialDesignExtensions" Version="3.3.0" />
|
||||||
<PackageReference Include="MaterialDesignThemes" Version="3.2.0" />
|
<PackageReference Include="MaterialDesignThemes" Version="4.0.0" />
|
||||||
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.19" />
|
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.31" />
|
||||||
<PackageReference Include="Ninject" Version="3.3.4" />
|
<PackageReference Include="Ninject" Version="3.3.4" />
|
||||||
<PackageReference Include="Ninject.Extensions.Conventions" Version="3.3.0" />
|
<PackageReference Include="Ninject.Extensions.Conventions" Version="3.3.0" />
|
||||||
<PackageReference Include="SharpVectors.Reloaded" Version="1.7.1" />
|
<PackageReference Include="SharpVectors.Reloaded" Version="1.7.1" />
|
||||||
<PackageReference Include="SkiaSharp" Version="2.80.2" />
|
<PackageReference Include="SkiaSharp" Version="2.80.2" />
|
||||||
<PackageReference Include="SkiaSharp.Views.WPF" Version="2.80.2" />
|
<PackageReference Include="SkiaSharp.Views.WPF" Version="2.80.2" />
|
||||||
<PackageReference Include="Stylet" Version="1.3.5" />
|
<PackageReference Include="Stylet" Version="1.3.6" />
|
||||||
<PackageReference Include="System.Buffers" Version="4.5.1" />
|
<PackageReference Include="System.Buffers" Version="4.5.1" />
|
||||||
<PackageReference Include="System.Numerics.Vectors" Version="4.5.0" />
|
<PackageReference Include="System.Numerics.Vectors" Version="4.5.0" />
|
||||||
<PackageReference Include="Unclassified.NetRevisionTask" Version="0.3.0">
|
<PackageReference Include="Unclassified.NetRevisionTask" Version="0.4.0">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|||||||
@ -66,17 +66,23 @@
|
|||||||
</UserControl.Resources>
|
</UserControl.Resources>
|
||||||
<Grid HorizontalAlignment="Stretch">
|
<Grid HorizontalAlignment="Stretch">
|
||||||
<TextBox x:Name="ColorCodeTextBox"
|
<TextBox x:Name="ColorCodeTextBox"
|
||||||
materialDesign:TextFieldAssist.TextBoxViewMargin="1 0 1 0"
|
materialDesign:TextFieldAssist.TextBoxViewMargin="0 2 20 0"
|
||||||
|
materialDesign:HintAssist.IsFloating="False"
|
||||||
|
Style="{Binding TextBoxStyle, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
|
||||||
Text="{Binding Color, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Converter={StaticResource ColorToStringConverter}}"
|
Text="{Binding Color, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Converter={StaticResource ColorToStringConverter}}"
|
||||||
MinWidth="95"
|
MinWidth="95"
|
||||||
MaxLength="9"
|
MaxLength="9"
|
||||||
Margin="0"
|
Margin="0"
|
||||||
HorizontalAlignment="Stretch" />
|
HorizontalAlignment="Stretch">
|
||||||
|
<materialDesign:TextFieldAssist.CharacterCounterStyle>
|
||||||
|
<Style TargetType="TextBlock" />
|
||||||
|
</materialDesign:TextFieldAssist.CharacterCounterStyle>
|
||||||
|
</TextBox>
|
||||||
|
|
||||||
<Border Width="15"
|
<Border Width="15"
|
||||||
Height="15"
|
Height="15"
|
||||||
CornerRadius="15"
|
CornerRadius="15"
|
||||||
Margin="0,0,0,2"
|
Margin="0 0 8 0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
HorizontalAlignment="Right"
|
HorizontalAlignment="Right"
|
||||||
Background="{StaticResource Checkerboard}">
|
Background="{StaticResource Checkerboard}">
|
||||||
@ -130,9 +136,9 @@
|
|||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ItemsControl.ItemTemplate>
|
</ItemsControl.ItemTemplate>
|
||||||
<ItemsControl.ItemsPanel>
|
<ItemsControl.ItemsPanel>
|
||||||
<ItemsPanelTemplate>
|
<ItemsPanelTemplate>
|
||||||
<WrapPanel Orientation="Horizontal"></WrapPanel>
|
<WrapPanel Orientation="Horizontal" />
|
||||||
</ItemsPanelTemplate>
|
</ItemsPanelTemplate>
|
||||||
</ItemsControl.ItemsPanel>
|
</ItemsControl.ItemsPanel>
|
||||||
</ItemsControl>
|
</ItemsControl>
|
||||||
|
|
||||||
|
|||||||
@ -35,9 +35,16 @@ namespace Artemis.UI.Shared
|
|||||||
public static readonly DependencyProperty StaysOpenProperty = DependencyProperty.Register(nameof(StaysOpen), typeof(bool), typeof(ColorPicker),
|
public static readonly DependencyProperty StaysOpenProperty = DependencyProperty.Register(nameof(StaysOpen), typeof(bool), typeof(ColorPicker),
|
||||||
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, StaysOpenPropertyChangedCallback));
|
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, StaysOpenPropertyChangedCallback));
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the style used on the text box
|
||||||
|
/// </summary>
|
||||||
|
public static readonly DependencyProperty TextBoxStyleProperty = DependencyProperty.Register(nameof(TextBoxStyle), typeof(Style), typeof(ColorPicker),
|
||||||
|
new FrameworkPropertyMetadata(Application.Current.Resources["MaterialDesignTextBox"]));
|
||||||
|
|
||||||
internal static readonly DependencyProperty ColorOpacityProperty = DependencyProperty.Register(nameof(ColorOpacity), typeof(byte), typeof(ColorPicker),
|
internal static readonly DependencyProperty ColorOpacityProperty = DependencyProperty.Register(nameof(ColorOpacity), typeof(byte), typeof(ColorPicker),
|
||||||
new FrameworkPropertyMetadata((byte) 255, FrameworkPropertyMetadataOptions.AffectsArrange | FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, ColorOpacityPropertyChangedCallback));
|
new FrameworkPropertyMetadata((byte) 255, FrameworkPropertyMetadataOptions.AffectsArrange | FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, ColorOpacityPropertyChangedCallback));
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Occurs when the selected color has changed
|
/// Occurs when the selected color has changed
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -97,6 +104,15 @@ namespace Artemis.UI.Shared
|
|||||||
set => SetValue(StaysOpenProperty, value);
|
set => SetValue(StaysOpenProperty, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the style used on the text box
|
||||||
|
/// </summary>
|
||||||
|
public Style TextBoxStyle
|
||||||
|
{
|
||||||
|
get => (Style) GetValue(TextBoxStyleProperty);
|
||||||
|
set => SetValue(TextBoxStyleProperty, value);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Used by the gradient picker to load saved gradients, do not touch or it'll just throw an exception
|
/// Used by the gradient picker to load saved gradients, do not touch or it'll just throw an exception
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -116,6 +132,16 @@ namespace Artemis.UI.Shared
|
|||||||
set => SetValue(ColorOpacityProperty, value);
|
set => SetValue(ColorOpacityProperty, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Occurs when dragging the color picker has started
|
||||||
|
/// </summary>
|
||||||
|
public event EventHandler? DragStarted;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Occurs when dragging the color picker has ended
|
||||||
|
/// </summary>
|
||||||
|
public event EventHandler? DragEnded;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Invokes the <see cref="PropertyChanged" /> event
|
/// Invokes the <see cref="PropertyChanged" /> event
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -125,6 +151,22 @@ namespace Artemis.UI.Shared
|
|||||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Invokes the <see cref="DragStarted" /> event
|
||||||
|
/// </summary>
|
||||||
|
protected virtual void OnDragStarted()
|
||||||
|
{
|
||||||
|
DragStarted?.Invoke(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Invokes the <see cref="DragEnded" /> event
|
||||||
|
/// </summary>
|
||||||
|
protected virtual void OnDragEnded()
|
||||||
|
{
|
||||||
|
DragEnded?.Invoke(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
private static void ColorPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
private static void ColorPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||||
{
|
{
|
||||||
ColorPicker colorPicker = (ColorPicker) d;
|
ColorPicker colorPicker = (ColorPicker) d;
|
||||||
@ -257,36 +299,5 @@ namespace Artemis.UI.Shared
|
|||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public event PropertyChangedEventHandler? PropertyChanged;
|
public event PropertyChangedEventHandler? PropertyChanged;
|
||||||
|
|
||||||
|
|
||||||
#region Events
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Occurs when dragging the color picker has started
|
|
||||||
/// </summary>
|
|
||||||
public event EventHandler? DragStarted;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Occurs when dragging the color picker has ended
|
|
||||||
/// </summary>
|
|
||||||
public event EventHandler? DragEnded;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Invokes the <see cref="DragStarted" /> event
|
|
||||||
/// </summary>
|
|
||||||
protected virtual void OnDragStarted()
|
|
||||||
{
|
|
||||||
DragStarted?.Invoke(this, EventArgs.Empty);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Invokes the <see cref="DragEnded" /> event
|
|
||||||
/// </summary>
|
|
||||||
protected virtual void OnDragEnded()
|
|
||||||
{
|
|
||||||
DragEnded?.Invoke(this, EventArgs.Empty);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -8,6 +8,7 @@
|
|||||||
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||||
xmlns:exceptions="clr-namespace:Artemis.UI.Shared.Screens.Exceptions"
|
xmlns:exceptions="clr-namespace:Artemis.UI.Shared.Screens.Exceptions"
|
||||||
xmlns:avalonedit="http://icsharpcode.net/sharpdevelop/avalonedit"
|
xmlns:avalonedit="http://icsharpcode.net/sharpdevelop/avalonedit"
|
||||||
|
xmlns:s="https://github.com/canton7/Stylet"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="Unhandled exception"
|
Title="Unhandled exception"
|
||||||
Background="{DynamicResource MaterialDesignPaper}"
|
Background="{DynamicResource MaterialDesignPaper}"
|
||||||
@ -19,41 +20,49 @@
|
|||||||
d:DesignWidth="800"
|
d:DesignWidth="800"
|
||||||
d:DataContext="{d:DesignInstance exceptions:ExceptionViewModel}">
|
d:DataContext="{d:DesignInstance exceptions:ExceptionViewModel}">
|
||||||
<DockPanel>
|
<DockPanel>
|
||||||
<controls:AppBar Type="Dense" Title="{Binding Header}" DockPanel.Dock="Top" Margin="-18 0 0 0" ShowShadow="False">
|
<controls:AppBar Type="Dense" Title="{Binding Header, Mode=OneTime}" DockPanel.Dock="Top" Margin="-18 0 0 0" ShowShadow="False">
|
||||||
<controls:AppBar.AppIcon>
|
<controls:AppBar.AppIcon>
|
||||||
<materialDesign:PackIcon Kind="ErrorOutline" Width="20" Height="28" />
|
<materialDesign:PackIcon Kind="ErrorOutline" Width="20" Height="28" />
|
||||||
</controls:AppBar.AppIcon>
|
</controls:AppBar.AppIcon>
|
||||||
</controls:AppBar>
|
</controls:AppBar>
|
||||||
|
|
||||||
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" Margin="16">
|
<Grid>
|
||||||
<StackPanel>
|
<Grid Margin="15">
|
||||||
<ItemsControl ItemsSource="{Binding Exceptions}">
|
<Grid.ColumnDefinitions>
|
||||||
<ItemsControl.ItemTemplate>
|
<ColumnDefinition Width="*" />
|
||||||
<DataTemplate>
|
<ColumnDefinition Width="Auto" />
|
||||||
<StackPanel>
|
</Grid.ColumnDefinitions>
|
||||||
<TextBlock Style="{StaticResource MaterialDesignBody1TextBlock}"
|
<Grid.RowDefinitions>
|
||||||
Text="Stack trace"
|
<RowDefinition Height="*" />
|
||||||
TextWrapping="Wrap"
|
<RowDefinition Height="Auto" />
|
||||||
FontWeight="Bold"
|
</Grid.RowDefinitions>
|
||||||
MaxWidth="1000" />
|
|
||||||
|
|
||||||
<avalonedit:TextEditor SyntaxHighlighting="C#"
|
<materialDesign:Card Grid.Row="0" Grid.ColumnSpan="2" Margin="0 0 0 5">
|
||||||
FontFamily="pack://application:,,,/Resources/Fonts/#Roboto Mono"
|
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Margin="16">
|
||||||
FontSize="10pt"
|
<TextBox Text="{Binding Exception, Mode=OneTime}"
|
||||||
IsReadOnly="True"
|
AcceptsReturn="True"
|
||||||
Document="{Binding Document}"
|
IsReadOnly="True"
|
||||||
HorizontalScrollBarVisibility="Auto"
|
FontFamily="Consolas"
|
||||||
VerticalScrollBarVisibility="Auto"
|
FontSize="12"
|
||||||
Margin="0 10 10 0"
|
materialDesign:TextFieldAssist.UnderlineBrush="Transparent"
|
||||||
MaxHeight="500"
|
BorderThickness="0" />
|
||||||
Padding="10" />
|
</ScrollViewer>
|
||||||
|
</materialDesign:Card>
|
||||||
|
|
||||||
<Separator Margin="0 15" />
|
<TextBlock Grid.Row="1" Grid.Column="0" TextWrapping="Wrap" Margin="0 0 5 0" VerticalAlignment="Center">
|
||||||
</StackPanel>
|
<materialDesign:PackIcon Kind="Text" Margin="0 0 0 -3" />
|
||||||
</DataTemplate>
|
When reporting errors please don't take a screenshot of the error, instead copy the text, thanks!
|
||||||
</ItemsControl.ItemTemplate>
|
</TextBlock>
|
||||||
</ItemsControl>
|
<StackPanel Grid.Row="1" Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0 5 0 0">
|
||||||
</StackPanel>
|
<Button Style="{StaticResource MaterialDesignOutlinedButton}" Command="{s:Action CopyException}" Width="150" Margin="0 0 5 0">
|
||||||
</ScrollViewer>
|
COPY EXCEPTION
|
||||||
|
</Button>
|
||||||
|
<Button Style="{StaticResource MaterialDesignFlatMidBgButton}" Command="{s:Action Close}" Width="150" Margin="5 0 0 0">
|
||||||
|
CLOSE
|
||||||
|
</Button>
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
<materialDesign:Snackbar MessageQueue="{Binding MessageQueue}"></materialDesign:Snackbar>
|
||||||
|
</Grid>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</controls:MaterialWindow>
|
</controls:MaterialWindow>
|
||||||
@ -1,45 +1,33 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Diagnostics;
|
||||||
using ICSharpCode.AvalonEdit.Document;
|
using System.Windows;
|
||||||
|
using MaterialDesignThemes.Wpf;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
|
|
||||||
namespace Artemis.UI.Shared.Screens.Exceptions
|
namespace Artemis.UI.Shared.Screens.Exceptions
|
||||||
{
|
{
|
||||||
internal class ExceptionViewModel : Screen
|
internal class ExceptionViewModel : Screen
|
||||||
{
|
{
|
||||||
private List<DialogException> _exceptions;
|
public ExceptionViewModel(string message, Exception exception)
|
||||||
|
|
||||||
public ExceptionViewModel(string message, Exception? exception)
|
|
||||||
{
|
{
|
||||||
Header = message;
|
Header = message;
|
||||||
_exceptions = new List<DialogException>();
|
Exception = exception.ToStringDemystified();
|
||||||
|
MessageQueue = new SnackbarMessageQueue(TimeSpan.FromSeconds(2));
|
||||||
Exception? currentException = exception;
|
|
||||||
while (currentException != null)
|
|
||||||
{
|
|
||||||
Exceptions.Add(new DialogException(currentException));
|
|
||||||
currentException = currentException.InnerException;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Header { get; }
|
public string Header { get; }
|
||||||
|
public string Exception { get; }
|
||||||
|
public SnackbarMessageQueue MessageQueue { get; }
|
||||||
|
|
||||||
public List<DialogException> Exceptions
|
public void CopyException()
|
||||||
{
|
{
|
||||||
get => _exceptions;
|
Clipboard.SetText(Exception);
|
||||||
set => SetAndNotify(ref _exceptions, value);
|
MessageQueue.Enqueue("Copied exception to clipboard");
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal class DialogException
|
|
||||||
{
|
|
||||||
public DialogException(Exception exception)
|
|
||||||
{
|
|
||||||
Exception = exception;
|
|
||||||
Document = new TextDocument(new StringTextSource($"{exception.Message}\r\n\r\n{exception.StackTrace}"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Exception Exception { get; }
|
public void Close()
|
||||||
public IDocument Document { get; set; }
|
{
|
||||||
|
RequestClose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -29,15 +29,15 @@ namespace Artemis.UI.Shared.Services
|
|||||||
_pluginManagementService = pluginManagementService;
|
_pluginManagementService = pluginManagementService;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<object> ShowDialog<T>(IParameter[] parameters) where T : DialogViewModelBase
|
private async Task<object?> ShowDialog<T>(IParameter[] parameters) where T : DialogViewModelBase
|
||||||
{
|
{
|
||||||
if (parameters == null) throw new ArgumentNullException(nameof(parameters));
|
if (parameters == null) throw new ArgumentNullException(nameof(parameters));
|
||||||
return await ShowDialog("RootDialog", GetBestKernel().Get<T>(parameters));
|
return await ShowDialog("RootDialog", GetBestKernel().Get<T>(parameters));
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<object> ShowDialog(string? identifier, DialogViewModelBase viewModel)
|
private async Task<object?> ShowDialog(string? identifier, DialogViewModelBase viewModel)
|
||||||
{
|
{
|
||||||
Task<object>? result = null;
|
Task<object?>? result = null;
|
||||||
await Execute.OnUIThreadAsync(() =>
|
await Execute.OnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
UIElement view = _viewManager.CreateViewForModel(viewModel);
|
UIElement view = _viewManager.CreateViewForModel(viewModel);
|
||||||
@ -54,7 +54,7 @@ namespace Artemis.UI.Shared.Services
|
|||||||
return await result;
|
return await result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<object> ShowDialogAt<T>(string identifier, IParameter[] parameters) where T : DialogViewModelBase
|
private async Task<object?> ShowDialogAt<T>(string identifier, IParameter[] parameters) where T : DialogViewModelBase
|
||||||
{
|
{
|
||||||
if (parameters == null)
|
if (parameters == null)
|
||||||
throw new ArgumentNullException(nameof(parameters));
|
throw new ArgumentNullException(nameof(parameters));
|
||||||
@ -70,8 +70,8 @@ namespace Artemis.UI.Shared.Services
|
|||||||
new ConstructorArgument("confirmText", confirmText.ToUpper()),
|
new ConstructorArgument("confirmText", confirmText.ToUpper()),
|
||||||
new ConstructorArgument("cancelText", cancelText.ToUpper())
|
new ConstructorArgument("cancelText", cancelText.ToUpper())
|
||||||
};
|
};
|
||||||
object result = await ShowDialog<ConfirmDialogViewModel>(arguments);
|
object? result = await ShowDialog<ConfirmDialogViewModel>(arguments);
|
||||||
return (bool) result;
|
return result is bool booleanResult && booleanResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<bool> ShowConfirmDialogAt(string identifier, string header, string text, string confirmText = "Confirm", string cancelText = "Cancel")
|
public async Task<bool> ShowConfirmDialogAt(string identifier, string header, string text, string confirmText = "Confirm", string cancelText = "Cancel")
|
||||||
@ -84,16 +84,16 @@ namespace Artemis.UI.Shared.Services
|
|||||||
new ConstructorArgument("confirmText", confirmText.ToUpper()),
|
new ConstructorArgument("confirmText", confirmText.ToUpper()),
|
||||||
new ConstructorArgument("cancelText", cancelText.ToUpper())
|
new ConstructorArgument("cancelText", cancelText.ToUpper())
|
||||||
};
|
};
|
||||||
object result = await ShowDialogAt<ConfirmDialogViewModel>(identifier, arguments);
|
object? result = await ShowDialogAt<ConfirmDialogViewModel>(identifier, arguments);
|
||||||
return (bool) result;
|
return result is bool booleanResult && booleanResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<object> ShowDialog<T>() where T : DialogViewModelBase
|
public async Task<object?> ShowDialog<T>() where T : DialogViewModelBase
|
||||||
{
|
{
|
||||||
return await ShowDialog("RootDialog", GetBestKernel().Get<T>());
|
return await ShowDialog("RootDialog", GetBestKernel().Get<T>());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task<object> ShowDialog<T>(Dictionary<string, object> parameters) where T : DialogViewModelBase
|
public Task<object?> ShowDialog<T>(Dictionary<string, object> parameters) where T : DialogViewModelBase
|
||||||
{
|
{
|
||||||
if (parameters == null)
|
if (parameters == null)
|
||||||
throw new ArgumentNullException(nameof(parameters));
|
throw new ArgumentNullException(nameof(parameters));
|
||||||
@ -102,13 +102,13 @@ namespace Artemis.UI.Shared.Services
|
|||||||
return ShowDialog<T>(paramsArray);
|
return ShowDialog<T>(paramsArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<object> ShowDialogAt<T>(string identifier) where T : DialogViewModelBase
|
public async Task<object?> ShowDialogAt<T>(string identifier) where T : DialogViewModelBase
|
||||||
{
|
{
|
||||||
if (identifier == null) throw new ArgumentNullException(nameof(identifier));
|
if (identifier == null) throw new ArgumentNullException(nameof(identifier));
|
||||||
return await ShowDialog(identifier, GetBestKernel().Get<T>());
|
return await ShowDialog(identifier, GetBestKernel().Get<T>());
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<object> ShowDialogAt<T>(string identifier, Dictionary<string, object> parameters) where T : DialogViewModelBase
|
public async Task<object?> ShowDialogAt<T>(string identifier, Dictionary<string, object> parameters) where T : DialogViewModelBase
|
||||||
{
|
{
|
||||||
if (identifier == null) throw new ArgumentNullException(nameof(identifier));
|
if (identifier == null) throw new ArgumentNullException(nameof(identifier));
|
||||||
if (parameters == null) throw new ArgumentNullException(nameof(parameters));
|
if (parameters == null) throw new ArgumentNullException(nameof(parameters));
|
||||||
@ -119,6 +119,7 @@ namespace Artemis.UI.Shared.Services
|
|||||||
|
|
||||||
public void ShowExceptionDialog(string message, Exception exception)
|
public void ShowExceptionDialog(string message, Exception exception)
|
||||||
{
|
{
|
||||||
|
if (exception == null) throw new ArgumentNullException(nameof(exception));
|
||||||
_windowManager.ShowDialog(new ExceptionViewModel(message, exception));
|
_windowManager.ShowDialog(new ExceptionViewModel(message, exception));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -40,7 +40,7 @@ namespace Artemis.UI.Shared.Services
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="T">The type of the view model</typeparam>
|
/// <typeparam name="T">The type of the view model</typeparam>
|
||||||
/// <returns>A task resolving to the result of the dialog's <see cref="DialogSession" /></returns>
|
/// <returns>A task resolving to the result of the dialog's <see cref="DialogSession" /></returns>
|
||||||
Task<object> ShowDialog<T>() where T : DialogViewModelBase;
|
Task<object?> ShowDialog<T>() where T : DialogViewModelBase;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Shows a dialog by initializing a view model implementing <see cref="DialogViewModelBase" /> with arguments passed
|
/// Shows a dialog by initializing a view model implementing <see cref="DialogViewModelBase" /> with arguments passed
|
||||||
@ -49,7 +49,7 @@ namespace Artemis.UI.Shared.Services
|
|||||||
/// <typeparam name="T">The type of the view model</typeparam>
|
/// <typeparam name="T">The type of the view model</typeparam>
|
||||||
/// <param name="parameters">A dictionary of constructor arguments to pass to the view model</param>
|
/// <param name="parameters">A dictionary of constructor arguments to pass to the view model</param>
|
||||||
/// <returns>A task resolving to the result of the dialog's <see cref="DialogSession" /></returns>
|
/// <returns>A task resolving to the result of the dialog's <see cref="DialogSession" /></returns>
|
||||||
Task<object> ShowDialog<T>(Dictionary<string, object> parameters) where T : DialogViewModelBase;
|
Task<object?> ShowDialog<T>(Dictionary<string, object> parameters) where T : DialogViewModelBase;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Shows a dialog by initializing a view model implementing <see cref="DialogViewModelBase" />
|
/// Shows a dialog by initializing a view model implementing <see cref="DialogViewModelBase" />
|
||||||
@ -60,7 +60,7 @@ namespace Artemis.UI.Shared.Services
|
|||||||
/// <code><materialDesign:DialogHost Identifier="MyDialogHost"></code>
|
/// <code><materialDesign:DialogHost Identifier="MyDialogHost"></code>
|
||||||
/// </param>
|
/// </param>
|
||||||
/// <returns>A task resolving to the result of the dialog's <see cref="DialogSession" /></returns>
|
/// <returns>A task resolving to the result of the dialog's <see cref="DialogSession" /></returns>
|
||||||
Task<object> ShowDialogAt<T>(string identifier) where T : DialogViewModelBase;
|
Task<object?> ShowDialogAt<T>(string identifier) where T : DialogViewModelBase;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Shows a dialog by initializing a view model implementing <see cref="DialogViewModelBase" /> with arguments passed
|
/// Shows a dialog by initializing a view model implementing <see cref="DialogViewModelBase" /> with arguments passed
|
||||||
@ -73,7 +73,7 @@ namespace Artemis.UI.Shared.Services
|
|||||||
/// </param>
|
/// </param>
|
||||||
/// <param name="parameters">A dictionary of constructor arguments to pass to the view model</param>
|
/// <param name="parameters">A dictionary of constructor arguments to pass to the view model</param>
|
||||||
/// <returns>A task resolving to the result of the dialog's <see cref="DialogSession" /></returns>
|
/// <returns>A task resolving to the result of the dialog's <see cref="DialogSession" /></returns>
|
||||||
Task<object> ShowDialogAt<T>(string identifier, Dictionary<string, object> parameters) where T : DialogViewModelBase;
|
Task<object?> ShowDialogAt<T>(string identifier, Dictionary<string, object> parameters) where T : DialogViewModelBase;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Shows a dialog displaying the provided message and exception. Does not handle, log or throw the exception.
|
/// Shows a dialog displaying the provided message and exception. Does not handle, log or throw the exception.
|
||||||
|
|||||||
@ -42,8 +42,8 @@ namespace Artemis.UI.Shared.Services
|
|||||||
/// <param name="actionArgument">Argument to pass to <paramref name="actionHandler" />.</param>
|
/// <param name="actionArgument">Argument to pass to <paramref name="actionHandler" />.</param>
|
||||||
void ShowMessage<TArgument>(
|
void ShowMessage<TArgument>(
|
||||||
object content,
|
object content,
|
||||||
object actionContent,
|
object? actionContent,
|
||||||
Action<TArgument> actionHandler,
|
Action<object?>? actionHandler,
|
||||||
TArgument actionArgument);
|
TArgument actionArgument);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -63,7 +63,7 @@ namespace Artemis.UI.Shared.Services
|
|||||||
/// <param name="actionContent">Content for the action button.</param>
|
/// <param name="actionContent">Content for the action button.</param>
|
||||||
/// <param name="actionHandler">Call back to be executed if user clicks the action button.</param>
|
/// <param name="actionHandler">Call back to be executed if user clicks the action button.</param>
|
||||||
/// <param name="promote">The message will promoted to the front of the queue.</param>
|
/// <param name="promote">The message will promoted to the front of the queue.</param>
|
||||||
void ShowMessage(object content, object actionContent, Action actionHandler, bool promote);
|
void ShowMessage(object content, object? actionContent, Action? actionHandler, bool promote);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Queues a notification message for display in a snackbar.
|
/// Queues a notification message for display in a snackbar.
|
||||||
@ -75,8 +75,8 @@ namespace Artemis.UI.Shared.Services
|
|||||||
/// <param name="promote">The message will be promoted to the front of the queue and never considered to be a duplicate.</param>
|
/// <param name="promote">The message will be promoted to the front of the queue and never considered to be a duplicate.</param>
|
||||||
void ShowMessage<TArgument>(
|
void ShowMessage<TArgument>(
|
||||||
object content,
|
object content,
|
||||||
object actionContent,
|
object? actionContent,
|
||||||
Action<TArgument> actionHandler,
|
Action<TArgument?>? actionHandler,
|
||||||
TArgument actionArgument,
|
TArgument actionArgument,
|
||||||
bool promote);
|
bool promote);
|
||||||
|
|
||||||
@ -92,8 +92,8 @@ namespace Artemis.UI.Shared.Services
|
|||||||
/// <param name="durationOverride">Message show duration override.</param>
|
/// <param name="durationOverride">Message show duration override.</param>
|
||||||
void ShowMessage<TArgument>(
|
void ShowMessage<TArgument>(
|
||||||
object content,
|
object content,
|
||||||
object actionContent,
|
object? actionContent,
|
||||||
Action<TArgument> actionHandler,
|
Action<TArgument?>? actionHandler,
|
||||||
TArgument actionArgument,
|
TArgument actionArgument,
|
||||||
bool promote,
|
bool promote,
|
||||||
bool neverConsiderToBeDuplicate,
|
bool neverConsiderToBeDuplicate,
|
||||||
@ -111,8 +111,8 @@ namespace Artemis.UI.Shared.Services
|
|||||||
/// <param name="durationOverride">Message show duration override.</param>
|
/// <param name="durationOverride">Message show duration override.</param>
|
||||||
void ShowMessage(
|
void ShowMessage(
|
||||||
object content,
|
object content,
|
||||||
object actionContent,
|
object? actionContent,
|
||||||
Action<object> actionHandler,
|
Action<object?>? actionHandler,
|
||||||
object actionArgument,
|
object actionArgument,
|
||||||
bool promote,
|
bool promote,
|
||||||
bool neverConsiderToBeDuplicate,
|
bool neverConsiderToBeDuplicate,
|
||||||
|
|||||||
@ -29,7 +29,7 @@ namespace Artemis.UI.Shared.Services
|
|||||||
MainMessageQueue.Enqueue(content, actionContent, actionHandler);
|
MainMessageQueue.Enqueue(content, actionContent, actionHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ShowMessage<TArgument>(object content, object actionContent, Action<TArgument> actionHandler, TArgument actionArgument)
|
public void ShowMessage<TArgument>(object content, object? actionContent, Action<object?>? actionHandler, TArgument actionArgument)
|
||||||
{
|
{
|
||||||
MainMessageQueue.Enqueue(content, actionContent, actionHandler, actionArgument);
|
MainMessageQueue.Enqueue(content, actionContent, actionHandler, actionArgument);
|
||||||
}
|
}
|
||||||
@ -39,19 +39,19 @@ namespace Artemis.UI.Shared.Services
|
|||||||
MainMessageQueue.Enqueue(content, neverConsiderToBeDuplicate);
|
MainMessageQueue.Enqueue(content, neverConsiderToBeDuplicate);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ShowMessage(object content, object actionContent, Action actionHandler, bool promote)
|
public void ShowMessage(object content, object? actionContent, Action? actionHandler, bool promote)
|
||||||
{
|
{
|
||||||
MainMessageQueue.Enqueue(content, actionContent, actionHandler, promote);
|
MainMessageQueue.Enqueue(content, actionContent, actionHandler, promote);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ShowMessage<TArgument>(object content, object actionContent, Action<TArgument> actionHandler, TArgument actionArgument, bool promote)
|
public void ShowMessage<TArgument>(object content, object? actionContent, Action<TArgument?>? actionHandler, TArgument actionArgument, bool promote)
|
||||||
{
|
{
|
||||||
MainMessageQueue.Enqueue(content, actionContent, actionHandler, actionArgument, promote);
|
MainMessageQueue.Enqueue(content, actionContent, actionHandler, actionArgument, promote);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ShowMessage<TArgument>(object content,
|
public void ShowMessage<TArgument>(object content,
|
||||||
object actionContent,
|
object? actionContent,
|
||||||
Action<TArgument> actionHandler,
|
Action<TArgument?>? actionHandler,
|
||||||
TArgument actionArgument,
|
TArgument actionArgument,
|
||||||
bool promote,
|
bool promote,
|
||||||
bool neverConsiderToBeDuplicate,
|
bool neverConsiderToBeDuplicate,
|
||||||
@ -61,8 +61,8 @@ namespace Artemis.UI.Shared.Services
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void ShowMessage(object content,
|
public void ShowMessage(object content,
|
||||||
object actionContent,
|
object? actionContent,
|
||||||
Action<object> actionHandler,
|
Action<object?>? actionHandler,
|
||||||
object actionArgument,
|
object actionArgument,
|
||||||
bool promote,
|
bool promote,
|
||||||
bool neverConsiderToBeDuplicate,
|
bool neverConsiderToBeDuplicate,
|
||||||
|
|||||||
@ -2,11 +2,14 @@
|
|||||||
"version": 1,
|
"version": 1,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
".NETCoreApp,Version=v5.0": {
|
".NETCoreApp,Version=v5.0": {
|
||||||
"AvalonEdit": {
|
"Ben.Demystifier": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[6.0.1, )",
|
"requested": "[0.3.0, )",
|
||||||
"resolved": "6.0.1",
|
"resolved": "0.3.0",
|
||||||
"contentHash": "JmRwKMDRUUkUGLQmTtIHiSgFSQH9567b2/55Wa/gQp+ZtxQN+mnl5Qt6B/Kgz56FMnnDyE/fV23r7J2SV+NP7g=="
|
"contentHash": "7mTSt0PLeXomarrTXdLcdYAg+zaOunw3KEvWKQ0fQaGySwqOzGxKVq8BDgUXWAyBH2hKhXldkG7uKJGkYBhDiw==",
|
||||||
|
"dependencies": {
|
||||||
|
"System.Reflection.Metadata": "5.0.0"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"Humanizer.Core": {
|
"Humanizer.Core": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
@ -16,9 +19,9 @@
|
|||||||
},
|
},
|
||||||
"MaterialDesignExtensions": {
|
"MaterialDesignExtensions": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[3.3.0-a01, )",
|
"requested": "[3.3.0, )",
|
||||||
"resolved": "3.3.0-a01",
|
"resolved": "3.3.0",
|
||||||
"contentHash": "dq8lvcj73H6TCmhjlRud8EeUSgC8S2U7T4jOoefmLieZQigbfQNy29hF1041cnu6b3l8mW00zWJituRMSt0iOQ==",
|
"contentHash": "dlxWtdrMH8aHNib3dWJhNQ/nNiA2b/CNvr90w/5KB6erTisuTpyYVx2l2+UGCZvwhSX5mHTHQYHfjgAKbDrgjg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"MaterialDesignColors": "1.2.7",
|
"MaterialDesignColors": "1.2.7",
|
||||||
"MaterialDesignThemes": "3.2.0"
|
"MaterialDesignThemes": "3.2.0"
|
||||||
@ -26,18 +29,18 @@
|
|||||||
},
|
},
|
||||||
"MaterialDesignThemes": {
|
"MaterialDesignThemes": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[3.2.0, )",
|
"requested": "[4.0.0, )",
|
||||||
"resolved": "3.2.0",
|
"resolved": "4.0.0",
|
||||||
"contentHash": "aOZQShQuV7sCWOwO98dYz1S4stmIWDBH+Q6KoR3wDiDyuG7twoGnBDzQBhrxuS16I3GQiG5nfvUjEJFVc/zdKg==",
|
"contentHash": "+n5oWHuRiYL/gUw2XfQHCRZqHtU8KbrdurgU0IcO98Zsyhw4BvggodfXY8veRtbjjmM9EJ/sG2yKBrgPOGX4JQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"MaterialDesignColors": "[1.2.7, 2.0.0)"
|
"MaterialDesignColors": "2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Xaml.Behaviors.Wpf": {
|
"Microsoft.Xaml.Behaviors.Wpf": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[1.1.19, )",
|
"requested": "[1.1.31, )",
|
||||||
"resolved": "1.1.19",
|
"resolved": "1.1.31",
|
||||||
"contentHash": "5sPWkbqImc2t1aQwIfJcKsUo7tOg1Tr8+6xVzZJB56Nzt4u9NlpcLofgdX/aRYpPKdWDA3U23Akw1KQzU5e82g=="
|
"contentHash": "LZpuf82ACZWldmfMuv3CTUMDh3o0xo0uHUaybR5HgqVLDBJJ9RZLykplQ/bTJd0/VDt3EhD4iDgUgbdIUAM+Kg=="
|
||||||
},
|
},
|
||||||
"Ninject": {
|
"Ninject": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
@ -85,9 +88,9 @@
|
|||||||
},
|
},
|
||||||
"Stylet": {
|
"Stylet": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[1.3.5, )",
|
"requested": "[1.3.6, )",
|
||||||
"resolved": "1.3.5",
|
"resolved": "1.3.6",
|
||||||
"contentHash": "9vjjaTgf5sZAGHnxQWIslD32MG5gXj7ANgS+w965L5Eh//UC3qwZDrEf226Pf+v1P/ldAJDpUySnOyGlb3TSSw==",
|
"contentHash": "SISR+DsPrgBww3AI5FtHx1tD9VkEfJWZYu+ykq5EFM2o7Se9zxNR6FAa2g5QadQa90NKMYxn/VZEQRDo7/pdkw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"System.Drawing.Common": "4.6.0"
|
"System.Drawing.Common": "4.6.0"
|
||||||
}
|
}
|
||||||
@ -106,9 +109,9 @@
|
|||||||
},
|
},
|
||||||
"Unclassified.NetRevisionTask": {
|
"Unclassified.NetRevisionTask": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[0.3.0, )",
|
"requested": "[0.4.0, )",
|
||||||
"resolved": "0.3.0",
|
"resolved": "0.4.0",
|
||||||
"contentHash": "KwOAbbcAoaOIsyszuOv7ZeLEHfata70iM+0h1jMoMXs87EMXr5E8cFYRrCFbJDdd4Do9dK+L3gwNWjfg/ROUWw=="
|
"contentHash": "2Tzz6qoQNciyO4uT6wxByMiyvbve+u4eFIiDewDUbeHuxr/rKuba3/EhhXDsEH9WoKzYlpzqxDfQGPE/bIe5Rw=="
|
||||||
},
|
},
|
||||||
"WriteableBitmapEx": {
|
"WriteableBitmapEx": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
@ -116,15 +119,6 @@
|
|||||||
"resolved": "1.6.7",
|
"resolved": "1.6.7",
|
||||||
"contentHash": "GoPhIdYzG/DWJq/MADb8gFzRN5PsxM+1DSJFS8Jzupg4DXqFSnlejYEjJw4ffPEUyELL07O4XIGUZydE4jQK0Q=="
|
"contentHash": "GoPhIdYzG/DWJq/MADb8gFzRN5PsxM+1DSJFS8Jzupg4DXqFSnlejYEjJw4ffPEUyELL07O4XIGUZydE4jQK0Q=="
|
||||||
},
|
},
|
||||||
"Ben.Demystifier": {
|
|
||||||
"type": "Transitive",
|
|
||||||
"resolved": "0.1.6",
|
|
||||||
"contentHash": "sYI8+ANUo78i/vIq9Vjrjjl6A00yVbT6XsuSVvUMVRVEKJHXZu4VE00RZHg/CA7QxmaQ1zfw/Bs6DAU+OJUNAg==",
|
|
||||||
"dependencies": {
|
|
||||||
"System.Reflection.Metadata": "1.6.0",
|
|
||||||
"System.Threading.Tasks.Extensions": "4.5.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Castle.Core": {
|
"Castle.Core": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.2.0",
|
"resolved": "4.2.0",
|
||||||
@ -157,13 +151,13 @@
|
|||||||
},
|
},
|
||||||
"LiteDB": {
|
"LiteDB": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "5.0.9",
|
"resolved": "5.0.10",
|
||||||
"contentHash": "cWnNWXL+qaP/qrkUCYZHBUJcv+IsfJfofa+Ed4EyT0zs/gkXqfKvjTbS3uSMBfcd9I7Yf+q9YPmCpmVFrVGQtw=="
|
"contentHash": "x70WuqMDuP75dajqSLvO+AnI/BbwS6da+ukTO7rueV7VoXoQ5CRA9FV4r7cOS4OUr2NS1Up7LDIutjCxQycRvg=="
|
||||||
},
|
},
|
||||||
"MaterialDesignColors": {
|
"MaterialDesignColors": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "1.2.7",
|
"resolved": "2.0.0",
|
||||||
"contentHash": "e+shDlaSAJcuTArqtfWjVUgAOlwQlgWq8akkzCGe1MvfV1ozmOqqXyWxg5w0vC/3/KZ84wnPUJeI1wzEpI0uJQ=="
|
"contentHash": "+JoghC3QRK0u9Wul1To1ORjcfTbFTVzFPjJ02H7VREOdNzIIn427e8G9gP9hXu9pm1r2OneLnoCG/lTma5cG2w=="
|
||||||
},
|
},
|
||||||
"McMaster.NETCore.Plugins": {
|
"McMaster.NETCore.Plugins": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
@ -268,8 +262,8 @@
|
|||||||
},
|
},
|
||||||
"Newtonsoft.Json": {
|
"Newtonsoft.Json": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "12.0.3",
|
"resolved": "13.0.1",
|
||||||
"contentHash": "6mgjfnRB4jKMlzHSl+VD+oUc1IebOZabkbyWj2RiTgWwYPPuaK1H97G1sHqGwPlS5npiF5Q0OrxN1wni2n5QWg=="
|
"contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A=="
|
||||||
},
|
},
|
||||||
"Ninject.Extensions.ChildKernel": {
|
"Ninject.Extensions.ChildKernel": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
@ -411,11 +405,10 @@
|
|||||||
},
|
},
|
||||||
"Serilog.Sinks.Debug": {
|
"Serilog.Sinks.Debug": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "1.0.1",
|
"resolved": "2.0.0",
|
||||||
"contentHash": "nE5wvw9+J/V4lA+rEkFUETGjBabK8IlLQY5Z9KDzoo5LvILC4vhTOXLs7DGYs8h5juIf2nLZnVxHDXf404FqEQ==",
|
"contentHash": "Y6g3OBJ4JzTyyw16fDqtFcQ41qQAydnEvEqmXjhwhgjsnG/FaJ8GUqF5ldsC/bVkK8KYmqrPhDO+tm4dF6xx4A==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Serilog": "2.5.0",
|
"Serilog": "2.10.0"
|
||||||
"System.Diagnostics.Debug": "4.3.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Serilog.Sinks.File": {
|
"Serilog.Sinks.File": {
|
||||||
@ -1237,8 +1230,13 @@
|
|||||||
},
|
},
|
||||||
"System.Threading.Tasks.Extensions": {
|
"System.Threading.Tasks.Extensions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.5.3",
|
"resolved": "4.3.0",
|
||||||
"contentHash": "+MvhNtcvIbqmhANyKu91jQnvIRVSTiaOiFNfKWwXGHG48YAb4I/TyH8spsySiPYla7gKal5ZnF3teJqZAximyQ=="
|
"contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==",
|
||||||
|
"dependencies": {
|
||||||
|
"System.Collections": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.0",
|
||||||
|
"System.Threading.Tasks": "4.3.0"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"System.Threading.Timer": {
|
"System.Threading.Timer": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
@ -1322,19 +1320,19 @@
|
|||||||
"type": "Project",
|
"type": "Project",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Artemis.Storage": "1.0.0",
|
"Artemis.Storage": "1.0.0",
|
||||||
"Ben.Demystifier": "0.1.6",
|
"Ben.Demystifier": "0.3.0",
|
||||||
"EmbedIO": "3.4.3",
|
"EmbedIO": "3.4.3",
|
||||||
"HidSharp": "2.1.0",
|
"HidSharp": "2.1.0",
|
||||||
"Humanizer.Core": "2.8.26",
|
"Humanizer.Core": "2.8.26",
|
||||||
"LiteDB": "5.0.9",
|
"LiteDB": "5.0.10",
|
||||||
"McMaster.NETCore.Plugins": "1.3.1",
|
"McMaster.NETCore.Plugins": "1.3.1",
|
||||||
"Newtonsoft.Json": "12.0.3",
|
"Newtonsoft.Json": "13.0.1",
|
||||||
"Ninject": "3.3.4",
|
"Ninject": "3.3.4",
|
||||||
"Ninject.Extensions.ChildKernel": "3.3.0",
|
"Ninject.Extensions.ChildKernel": "3.3.0",
|
||||||
"Ninject.Extensions.Conventions": "3.3.0",
|
"Ninject.Extensions.Conventions": "3.3.0",
|
||||||
"Serilog": "2.10.0",
|
"Serilog": "2.10.0",
|
||||||
"Serilog.Enrichers.Demystify": "1.0.0-dev-00019",
|
"Serilog.Enrichers.Demystify": "1.0.0-dev-00019",
|
||||||
"Serilog.Sinks.Debug": "1.0.1",
|
"Serilog.Sinks.Debug": "2.0.0",
|
||||||
"Serilog.Sinks.File": "4.1.0",
|
"Serilog.Sinks.File": "4.1.0",
|
||||||
"SkiaSharp": "2.80.2",
|
"SkiaSharp": "2.80.2",
|
||||||
"System.Buffers": "4.5.1",
|
"System.Buffers": "4.5.1",
|
||||||
@ -1347,7 +1345,7 @@
|
|||||||
"artemis.storage": {
|
"artemis.storage": {
|
||||||
"type": "Project",
|
"type": "Project",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"LiteDB": "5.0.9",
|
"LiteDB": "5.0.10",
|
||||||
"Serilog": "2.10.0"
|
"Serilog": "2.10.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -134,15 +134,15 @@
|
|||||||
<Resource Include="Resources\Images\Sidebar\sidebar-header.png" />
|
<Resource Include="Resources\Images\Sidebar\sidebar-header.png" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="FluentValidation" Version="9.3.0" />
|
<PackageReference Include="FluentValidation" Version="10.0.0" />
|
||||||
<PackageReference Include="Flurl.Http" Version="3.0.1" />
|
<PackageReference Include="Flurl.Http" Version="3.0.1" />
|
||||||
<PackageReference Include="gong-wpf-dragdrop" Version="2.3.2" />
|
<PackageReference Include="gong-wpf-dragdrop" Version="2.3.2" />
|
||||||
<PackageReference Include="Hardcodet.NotifyIcon.Wpf.NetCore" Version="1.0.18" />
|
<PackageReference Include="Hardcodet.NotifyIcon.Wpf.NetCore" Version="1.0.18" />
|
||||||
<PackageReference Include="Humanizer.Core" Version="2.8.26" />
|
<PackageReference Include="Humanizer.Core" Version="2.8.26" />
|
||||||
<PackageReference Include="MaterialDesignExtensions" Version="3.3.0-a01" />
|
<PackageReference Include="MaterialDesignExtensions" Version="3.3.0" />
|
||||||
<PackageReference Include="MaterialDesignThemes" Version="3.2.0" />
|
<PackageReference Include="MaterialDesignThemes" Version="4.0.0" />
|
||||||
<PackageReference Include="Microsoft.Win32.Registry" Version="5.0.0" />
|
<PackageReference Include="Microsoft.Win32.Registry" Version="5.0.0" />
|
||||||
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.19" />
|
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.31" />
|
||||||
<PackageReference Include="Ninject" Version="3.3.4" />
|
<PackageReference Include="Ninject" Version="3.3.4" />
|
||||||
<PackageReference Include="Ninject.Extensions.Conventions" Version="3.3.0" />
|
<PackageReference Include="Ninject.Extensions.Conventions" Version="3.3.0" />
|
||||||
<PackageReference Include="Ookii.Dialogs.Wpf" Version="3.1.0" />
|
<PackageReference Include="Ookii.Dialogs.Wpf" Version="3.1.0" />
|
||||||
@ -150,14 +150,14 @@
|
|||||||
<PackageReference Include="Serilog" Version="2.10.0" />
|
<PackageReference Include="Serilog" Version="2.10.0" />
|
||||||
<PackageReference Include="SkiaSharp.Views.WPF" Version="2.80.2" />
|
<PackageReference Include="SkiaSharp.Views.WPF" Version="2.80.2" />
|
||||||
<PackageReference Include="SkiaSharp.Vulkan.SharpVk" Version="2.80.2" />
|
<PackageReference Include="SkiaSharp.Vulkan.SharpVk" Version="2.80.2" />
|
||||||
<PackageReference Include="Stylet" Version="1.3.5" />
|
<PackageReference Include="Stylet" Version="1.3.6" />
|
||||||
<PackageReference Include="System.Buffers" Version="4.5.1" />
|
<PackageReference Include="System.Buffers" Version="4.5.1" />
|
||||||
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
|
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
|
||||||
<PackageReference Include="System.Drawing.Common" Version="5.0.0" />
|
<PackageReference Include="System.Drawing.Common" Version="5.0.2" />
|
||||||
<PackageReference Include="System.Management" Version="5.0.0" />
|
<PackageReference Include="System.Management" Version="5.0.0" />
|
||||||
<PackageReference Include="System.Numerics.Vectors" Version="4.5.0" />
|
<PackageReference Include="System.Numerics.Vectors" Version="4.5.0" />
|
||||||
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
|
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
|
||||||
<PackageReference Include="Unclassified.NetRevisionTask" Version="0.3.0">
|
<PackageReference Include="Unclassified.NetRevisionTask" Version="0.4.0">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|||||||
@ -14,6 +14,7 @@ using Artemis.UI.Services;
|
|||||||
using Artemis.UI.Shared;
|
using Artemis.UI.Shared;
|
||||||
using Artemis.UI.Shared.Services;
|
using Artemis.UI.Shared.Services;
|
||||||
using Artemis.UI.Stylet;
|
using Artemis.UI.Stylet;
|
||||||
|
using Artemis.UI.Utilities;
|
||||||
using Ninject;
|
using Ninject;
|
||||||
using Serilog;
|
using Serilog;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
@ -47,6 +48,8 @@ namespace Artemis.UI
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try { DPIAwareness.Initalize(); } catch (Exception ex) { logger.Error($"Failed to set DPI-Awareness: {ex.Message}"); }
|
||||||
|
|
||||||
IViewManager viewManager = Kernel.Get<IViewManager>();
|
IViewManager viewManager = Kernel.Get<IViewManager>();
|
||||||
StartupArguments = Args.ToList();
|
StartupArguments = Args.ToList();
|
||||||
|
|
||||||
@ -68,7 +71,7 @@ namespace Artemis.UI
|
|||||||
Execute.OnUIThreadSync(() =>
|
Execute.OnUIThreadSync(() =>
|
||||||
{
|
{
|
||||||
UIElement view = viewManager.CreateAndBindViewForModelIfNecessary(RootViewModel);
|
UIElement view = viewManager.CreateAndBindViewForModelIfNecessary(RootViewModel);
|
||||||
((TrayViewModel) RootViewModel).SetTaskbarIcon(view);
|
((TrayViewModel)RootViewModel).SetTaskbarIcon(view);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Initialize the core async so the UI can show the progress
|
// Initialize the core async so the UI can show the progress
|
||||||
|
|||||||
@ -1,11 +1,14 @@
|
|||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
|
using System.Windows.Media;
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
// to COM components. If you need to access a type in this assembly from
|
// to COM components. If you need to access a type in this assembly from
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
[assembly: DisableDpiAwareness]
|
||||||
|
|
||||||
//In order to begin building localizable applications, set
|
//In order to begin building localizable applications, set
|
||||||
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
|
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
|
||||||
//inside a <PropertyGroup>. For example, if you are using US english
|
//inside a <PropertyGroup>. For example, if you are using US english
|
||||||
@ -15,7 +18,6 @@ using System.Windows;
|
|||||||
|
|
||||||
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
||||||
|
|
||||||
|
|
||||||
[assembly: ThemeInfo(
|
[assembly: ThemeInfo(
|
||||||
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
||||||
//(used if a resource is not found in the page,
|
//(used if a resource is not found in the page,
|
||||||
|
|||||||
@ -197,8 +197,8 @@
|
|||||||
<materialDesign:PackIcon Kind="Message" />
|
<materialDesign:PackIcon Kind="Message" />
|
||||||
</Button>
|
</Button>
|
||||||
<Button ToolTip="Email" Command="{s:Action OpenUrl}" CommandParameter="https://github.com/SpoinkyNL/Artemis"
|
<Button ToolTip="Email" Command="{s:Action OpenUrl}" CommandParameter="https://github.com/SpoinkyNL/Artemis"
|
||||||
Background="{DynamicResource SecondaryAccentBrush}"
|
Background="{DynamicResource SecondaryHueMidBrush}"
|
||||||
Foreground="{DynamicResource SecondaryAccentForegroundBrush}"
|
Foreground="{DynamicResource SecondaryHueMidForegroundBrush}"
|
||||||
>
|
>
|
||||||
<materialDesign:PackIcon Kind="Email" />
|
<materialDesign:PackIcon Kind="Email" />
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
<TextBlock Style="{StaticResource MaterialDesignHeadline5TextBlock}" Margin="0 15">Activation requirements</TextBlock>
|
<TextBlock Style="{StaticResource MaterialDesignHeadline5TextBlock}" Margin="0 15">Activation requirements</TextBlock>
|
||||||
<TextBlock Margin="0 0 0 15" TextWrapping="Wrap" Style="{StaticResource MaterialDesignTextBlock}">
|
<TextBlock Margin="0 0 0 15" TextWrapping="Wrap" Style="{StaticResource MaterialDesignTextBlock}">
|
||||||
This module has built-in activation requirements and won't activate until
|
This module has built-in activation requirements and won't activate until
|
||||||
<Run Text="{Binding ActivationType}" FontWeight="Medium" Foreground="{StaticResource SecondaryAccentBrush}" />. <LineBreak />
|
<Run Text="{Binding ActivationType}" FontWeight="Medium" Foreground="{StaticResource SecondaryHueMidBrush}" />. <LineBreak />
|
||||||
These requirements allow the module creator to decide when the module is activated and you cannot override them.
|
These requirements allow the module creator to decide when the module is activated and you cannot override them.
|
||||||
</TextBlock>
|
</TextBlock>
|
||||||
|
|
||||||
|
|||||||
@ -14,14 +14,15 @@
|
|||||||
|
|
||||||
<TextBox materialDesign:HintAssist.Hint="Profile name"
|
<TextBox materialDesign:HintAssist.Hint="Profile name"
|
||||||
Margin="0 8 0 16"
|
Margin="0 8 0 16"
|
||||||
Style="{StaticResource MaterialDesignFloatingHintTextBox}"
|
Width="300"
|
||||||
|
Style="{StaticResource MaterialDesignFilledTextBox}"
|
||||||
Text="{Binding ProfileName, UpdateSourceTrigger=PropertyChanged}" />
|
Text="{Binding ProfileName, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0 8 0 0">
|
||||||
<Button Style="{StaticResource MaterialDesignFlatButton}" IsCancel="True" Margin="0 8 8 0" Command="{s:Action Cancel}">
|
<Button Style="{StaticResource MaterialDesignFlatButton}" IsCancel="True" Margin="0 0 8 0" Command="{s:Action Cancel}">
|
||||||
CANCEL
|
CANCEL
|
||||||
</Button>
|
</Button>
|
||||||
<Button Style="{StaticResource MaterialDesignFlatButton}" IsDefault="True" Margin="0 8 8 0" Command="{s:Action Accept}">
|
<Button Style="{StaticResource MaterialDesignFlatButton}" IsDefault="True" Margin="0 0 0 0" Command="{s:Action Accept}">
|
||||||
ACCEPT
|
ACCEPT
|
||||||
</Button>
|
</Button>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|||||||
@ -14,14 +14,15 @@
|
|||||||
|
|
||||||
<TextBox materialDesign:HintAssist.Hint="Profile name"
|
<TextBox materialDesign:HintAssist.Hint="Profile name"
|
||||||
Margin="0 8 0 16"
|
Margin="0 8 0 16"
|
||||||
Style="{StaticResource MaterialDesignFloatingHintTextBox}"
|
Width="300"
|
||||||
|
Style="{StaticResource MaterialDesignFilledTextBox}"
|
||||||
Text="{Binding ProfileName, UpdateSourceTrigger=PropertyChanged}" />
|
Text="{Binding ProfileName, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0 8 0 0">
|
||||||
<Button Style="{StaticResource MaterialDesignFlatButton}" IsCancel="True" Margin="0 8 8 0" Command="{s:Action Cancel}">
|
<Button Style="{StaticResource MaterialDesignFlatButton}" IsCancel="True" Margin="0 0 8 0" Command="{s:Action Cancel}">
|
||||||
CANCEL
|
CANCEL
|
||||||
</Button>
|
</Button>
|
||||||
<Button Style="{StaticResource MaterialDesignFlatButton}" IsDefault="True" Margin="0 8 8 0" Command="{s:Action Accept}">
|
<Button Style="{StaticResource MaterialDesignFlatButton}" IsDefault="True" Margin="0 0 0 0" Command="{s:Action Accept}">
|
||||||
ACCEPT
|
ACCEPT
|
||||||
</Button>
|
</Button>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:s="https://github.com/canton7/Stylet"
|
xmlns:s="https://github.com/canton7/Stylet"
|
||||||
xmlns:avalonedit="http://icsharpcode.net/sharpdevelop/avalonedit"
|
xmlns:avalonedit="http://icsharpcode.net/sharpdevelop/avalonedit"
|
||||||
|
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="450" d:DesignWidth="800">
|
d:DesignHeight="450" d:DesignWidth="800">
|
||||||
<Grid Margin="16" Width="800">
|
<Grid Margin="16" Width="800">
|
||||||
@ -37,14 +38,16 @@
|
|||||||
the person who exported it, you'll have to select LEDs for each layer in the profile.
|
the person who exported it, you'll have to select LEDs for each layer in the profile.
|
||||||
</TextBlock>
|
</TextBlock>
|
||||||
|
|
||||||
<avalonedit:TextEditor Grid.Row="3" SyntaxHighlighting="JavaScript"
|
<TextBox Grid.Row="3"
|
||||||
FontFamily="pack://application:,,,/Resources/Fonts/#Roboto Mono"
|
Text="{Binding ProfileJson}"
|
||||||
FontSize="10pt"
|
Style="{StaticResource MaterialDesignOutlinedTextBox}"
|
||||||
Document="{Binding Document}"
|
FontFamily="Consolas"
|
||||||
HorizontalScrollBarVisibility="Auto"
|
VerticalAlignment="Top"
|
||||||
VerticalScrollBarVisibility="Auto"
|
Height="400"
|
||||||
Height="500"
|
AcceptsReturn="True"
|
||||||
Padding="10" />
|
VerticalScrollBarVisibility="Auto"
|
||||||
|
materialDesign:HintAssist.Hint="Paste profile JSON here"
|
||||||
|
Margin="16" />
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Grid.Row="4">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Grid.Row="4">
|
||||||
<Button Style="{StaticResource MaterialDesignFlatButton}" IsCancel="True" Margin="0 8 8 0" Command="{s:Action Cancel}">
|
<Button Style="{StaticResource MaterialDesignFlatButton}" IsCancel="True" Margin="0 8 8 0" Command="{s:Action Cancel}">
|
||||||
|
|||||||
@ -2,7 +2,6 @@
|
|||||||
using Artemis.Core.Modules;
|
using Artemis.Core.Modules;
|
||||||
using Artemis.Core.Services;
|
using Artemis.Core.Services;
|
||||||
using Artemis.UI.Shared.Services;
|
using Artemis.UI.Shared.Services;
|
||||||
using ICSharpCode.AvalonEdit.Document;
|
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.ProfileEditor.Dialogs
|
namespace Artemis.UI.Screens.ProfileEditor.Dialogs
|
||||||
{
|
{
|
||||||
@ -15,14 +14,12 @@ namespace Artemis.UI.Screens.ProfileEditor.Dialogs
|
|||||||
public ProfileImportViewModel(ProfileModule profileModule, IProfileService profileService, IMessageService messageService)
|
public ProfileImportViewModel(ProfileModule profileModule, IProfileService profileService, IMessageService messageService)
|
||||||
{
|
{
|
||||||
ProfileModule = profileModule;
|
ProfileModule = profileModule;
|
||||||
Document = new TextDocument();
|
|
||||||
|
|
||||||
_profileService = profileService;
|
_profileService = profileService;
|
||||||
_messageService = messageService;
|
_messageService = messageService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ProfileModule ProfileModule { get; }
|
public ProfileModule ProfileModule { get; }
|
||||||
public TextDocument Document { get; set; }
|
|
||||||
|
|
||||||
public string ProfileJson
|
public string ProfileJson
|
||||||
{
|
{
|
||||||
@ -32,7 +29,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Dialogs
|
|||||||
|
|
||||||
public void Accept()
|
public void Accept()
|
||||||
{
|
{
|
||||||
ProfileDescriptor descriptor = _profileService.ImportProfile(Document.Text, ProfileModule);
|
ProfileDescriptor descriptor = _profileService.ImportProfile(ProfileJson, ProfileModule);
|
||||||
_messageService.ShowMessage("Profile imported.");
|
_messageService.ShowMessage("Profile imported.");
|
||||||
Session.Close(descriptor);
|
Session.Close(descriptor);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,25 +15,16 @@
|
|||||||
|
|
||||||
<TextBox materialDesign:HintAssist.Hint="Element name"
|
<TextBox materialDesign:HintAssist.Hint="Element name"
|
||||||
Margin="0 8 0 16"
|
Margin="0 8 0 16"
|
||||||
Style="{StaticResource MaterialDesignFloatingHintTextBox}"
|
Width="300"
|
||||||
|
Style="{StaticResource MaterialDesignFilledTextBox}"
|
||||||
Text="{Binding ElementName, UpdateSourceTrigger=PropertyChanged}"
|
Text="{Binding ElementName, UpdateSourceTrigger=PropertyChanged}"
|
||||||
Loaded="FrameworkElement_OnLoaded" />
|
Loaded="FrameworkElement_OnLoaded" />
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0 8 0 0">
|
||||||
<Button Style="{StaticResource MaterialDesignFlatButton}" IsCancel="True" Margin="0 8 8 0" Command="{s:Action Cancel}">
|
<Button Style="{StaticResource MaterialDesignFlatButton}" IsCancel="True" Margin="0 0 8 0" Command="{s:Action Cancel}">
|
||||||
<Button.CommandParameter>
|
|
||||||
<system:Boolean xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
False
|
|
||||||
</system:Boolean>
|
|
||||||
</Button.CommandParameter>
|
|
||||||
CANCEL
|
CANCEL
|
||||||
</Button>
|
</Button>
|
||||||
<Button Style="{StaticResource MaterialDesignFlatButton}" IsDefault="True" Margin="0 8 8 0" Command="{s:Action Accept}">
|
<Button Style="{StaticResource MaterialDesignFlatButton}" IsDefault="True" Margin="0 0 0 0" Command="{s:Action Accept}">
|
||||||
<Button.CommandParameter>
|
|
||||||
<system:Boolean xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
True
|
|
||||||
</system:Boolean>
|
|
||||||
</Button.CommandParameter>
|
|
||||||
ACCEPT
|
ACCEPT
|
||||||
</Button>
|
</Button>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|||||||
@ -29,15 +29,16 @@
|
|||||||
Panel.ZIndex="2">
|
Panel.ZIndex="2">
|
||||||
<Grid Margin="10 5">
|
<Grid Margin="10 5">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="48" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="48" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="48" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
<ComboBox Grid.Row="0"
|
<ComboBox Grid.Row="0"
|
||||||
Style="{StaticResource MaterialDesignFloatingHintComboBox}"
|
Style="{StaticResource MaterialDesignFilledComboBox}"
|
||||||
|
Margin="0 5"
|
||||||
materialDesign:HintAssist.Hint="Data binding mode"
|
materialDesign:HintAssist.Hint="Data binding mode"
|
||||||
MinWidth="128"
|
MinWidth="128"
|
||||||
SelectedValue="{Binding SelectedDataBindingMode}"
|
SelectedValue="{Binding SelectedDataBindingMode}"
|
||||||
@ -45,17 +46,18 @@
|
|||||||
SelectedValuePath="Value"
|
SelectedValuePath="Value"
|
||||||
DisplayMemberPath="Description" />
|
DisplayMemberPath="Description" />
|
||||||
|
|
||||||
<StackPanel Grid.Row="1">
|
<TextBox Grid.Row="1"
|
||||||
<TextBox Style="{StaticResource MaterialDesignFloatingHintTextBox}"
|
Style="{StaticResource MaterialDesignFilledTextBox}"
|
||||||
Text="{Binding EasingTime}"
|
Margin="0 5"
|
||||||
materialDesign:TextFieldAssist.HasClearButton="True"
|
Text="{Binding EasingTime}"
|
||||||
materialDesign:TextFieldAssist.SuffixText="ms"
|
materialDesign:TextFieldAssist.HasClearButton="True"
|
||||||
materialDesign:HintAssist.Hint="Easing time"
|
materialDesign:TextFieldAssist.SuffixText="ms"
|
||||||
IsEnabled="{Binding IsDataBindingEnabled}" />
|
materialDesign:HintAssist.Hint="Easing time"
|
||||||
</StackPanel>
|
IsEnabled="{Binding IsDataBindingEnabled}" />
|
||||||
|
|
||||||
<ComboBox Grid.Row="2"
|
<ComboBox Grid.Row="2"
|
||||||
Style="{StaticResource MaterialDesignFloatingHintComboBox}"
|
Style="{StaticResource MaterialDesignFilledComboBox}"
|
||||||
|
Margin="0 5"
|
||||||
materialDesign:HintAssist.Hint="Easing type"
|
materialDesign:HintAssist.Hint="Easing type"
|
||||||
MinWidth="128"
|
MinWidth="128"
|
||||||
IsEnabled="{Binding IsEasingTimeEnabled}"
|
IsEnabled="{Binding IsEasingTimeEnabled}"
|
||||||
|
|||||||
@ -247,7 +247,7 @@
|
|||||||
MouseUp="{s:Action TimelineMouseUp}"
|
MouseUp="{s:Action TimelineMouseUp}"
|
||||||
MouseMove="{s:Action TimelineMouseMove}"
|
MouseMove="{s:Action TimelineMouseMove}"
|
||||||
Points="-8,0 -8,8 0,20, 8,8 8,0"
|
Points="-8,0 -8,8 0,20, 8,8 8,0"
|
||||||
Fill="{StaticResource SecondaryAccentBrush}" />
|
Fill="{StaticResource SecondaryHueMidBrush}" />
|
||||||
<Line Canvas.Left="{Binding TimeCaretPosition}"
|
<Line Canvas.Left="{Binding TimeCaretPosition}"
|
||||||
Cursor="SizeWE"
|
Cursor="SizeWE"
|
||||||
MouseDown="{s:Action TimelineMouseDown}"
|
MouseDown="{s:Action TimelineMouseDown}"
|
||||||
@ -258,7 +258,7 @@
|
|||||||
Y1="0"
|
Y1="0"
|
||||||
Y2="{Binding ActualHeight, ElementName=TimelineHeaderScrollViewer}"
|
Y2="{Binding ActualHeight, ElementName=TimelineHeaderScrollViewer}"
|
||||||
StrokeThickness="2"
|
StrokeThickness="2"
|
||||||
Stroke="{StaticResource SecondaryAccentBrush}" />
|
Stroke="{StaticResource SecondaryHueMidBrush}" />
|
||||||
</Canvas>
|
</Canvas>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
|
|
||||||
@ -281,7 +281,7 @@
|
|||||||
Y1="0"
|
Y1="0"
|
||||||
Y2="{Binding ActualHeight, ElementName=RailsGrid}"
|
Y2="{Binding ActualHeight, ElementName=RailsGrid}"
|
||||||
StrokeThickness="2"
|
StrokeThickness="2"
|
||||||
Stroke="{StaticResource SecondaryAccentBrush}" />
|
Stroke="{StaticResource SecondaryHueMidBrush}" />
|
||||||
</Canvas>
|
</Canvas>
|
||||||
|
|
||||||
<ContentControl Grid.Column="0" s:View.Model="{Binding TimelineViewModel}" x:Name="PropertyTimeLine" />
|
<ContentControl Grid.Column="0" s:View.Model="{Binding TimelineViewModel}" x:Name="PropertyTimeLine" />
|
||||||
|
|||||||
@ -16,9 +16,9 @@
|
|||||||
|
|
||||||
<TextBox materialDesign:HintAssist.Hint="Segment length"
|
<TextBox materialDesign:HintAssist.Hint="Segment length"
|
||||||
materialDesign:TextFieldAssist.SuffixText="seconds"
|
materialDesign:TextFieldAssist.SuffixText="seconds"
|
||||||
Margin="0 8 0 16"
|
Margin="0 16"
|
||||||
Text="{Binding InputValue, UpdateSourceTrigger=PropertyChanged}"
|
Text="{Binding InputValue, UpdateSourceTrigger=PropertyChanged}"
|
||||||
Style="{StaticResource MaterialDesignFloatingHintTextBox}" />
|
Style="{StaticResource MaterialDesignFilledTextBox}" />
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
|
||||||
<Button Style="{StaticResource MaterialDesignFlatButton}" IsCancel="True" Margin="0 8 8 0" Command="{s:Action Cancel}">
|
<Button Style="{StaticResource MaterialDesignFlatButton}" IsCancel="True" Margin="0 8 8 0" Command="{s:Action Cancel}">
|
||||||
@ -29,7 +29,7 @@
|
|||||||
</Button.CommandParameter>
|
</Button.CommandParameter>
|
||||||
CANCEL
|
CANCEL
|
||||||
</Button>
|
</Button>
|
||||||
<Button Style="{StaticResource MaterialDesignFlatButton}" IsDefault="True" Margin="0 8 8 0" Command="{s:Action Accept}">
|
<Button Style="{StaticResource MaterialDesignFlatButton}" IsDefault="True" Margin="0 8 0 0" Command="{s:Action Accept}">
|
||||||
<Button.CommandParameter>
|
<Button.CommandParameter>
|
||||||
<system:Boolean xmlns:system="clr-namespace:System;assembly=mscorlib">
|
<system:Boolean xmlns:system="clr-namespace:System;assembly=mscorlib">
|
||||||
True
|
True
|
||||||
|
|||||||
@ -54,12 +54,10 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline.Dialogs
|
|||||||
RuleFor(m => m.InputValue)
|
RuleFor(m => m.InputValue)
|
||||||
.Must(ValidateTime)
|
.Must(ValidateTime)
|
||||||
.WithMessage("Input cannot be converted to a time");
|
.WithMessage("Input cannot be converted to a time");
|
||||||
RuleFor(m => m.InputValue)
|
Transform(m => m.InputValue, CreateTime)
|
||||||
.Transform(CreateTime)
|
|
||||||
.GreaterThanOrEqualTo(TimeSpan.FromMilliseconds(100))
|
.GreaterThanOrEqualTo(TimeSpan.FromMilliseconds(100))
|
||||||
.WithMessage("Minimum timeline length is 100ms");
|
.WithMessage("Minimum timeline length is 100ms");
|
||||||
RuleFor(m => m.InputValue)
|
Transform(m => m.InputValue, CreateTime)
|
||||||
.Transform(CreateTime)
|
|
||||||
.LessThanOrEqualTo(TimeSpan.FromHours(24))
|
.LessThanOrEqualTo(TimeSpan.FromHours(24))
|
||||||
.WithMessage("Maximum timeline length is 24 hours");
|
.WithMessage("Maximum timeline length is 24 hours");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -45,28 +45,28 @@
|
|||||||
<!-- Mutation points -->
|
<!-- Mutation points -->
|
||||||
<Rectangle x:Name="ResizeTopCenter"
|
<Rectangle x:Name="ResizeTopCenter"
|
||||||
Fill="White"
|
Fill="White"
|
||||||
Stroke="{DynamicResource SecondaryAccentBrush}"
|
Stroke="{DynamicResource SecondaryHueMidBrush}"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
MouseDown="ResizeOnMouseDown"
|
MouseDown="ResizeOnMouseDown"
|
||||||
MouseUp="ResizeOnMouseUp"
|
MouseUp="ResizeOnMouseUp"
|
||||||
MouseMove="ResizeOnMouseMove" />
|
MouseMove="ResizeOnMouseMove" />
|
||||||
<Rectangle x:Name="ResizeRightCenter"
|
<Rectangle x:Name="ResizeRightCenter"
|
||||||
Fill="White"
|
Fill="White"
|
||||||
Stroke="{DynamicResource SecondaryAccentBrush}"
|
Stroke="{DynamicResource SecondaryHueMidBrush}"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
MouseDown="ResizeOnMouseDown"
|
MouseDown="ResizeOnMouseDown"
|
||||||
MouseUp="ResizeOnMouseUp"
|
MouseUp="ResizeOnMouseUp"
|
||||||
MouseMove="ResizeOnMouseMove" />
|
MouseMove="ResizeOnMouseMove" />
|
||||||
<Rectangle x:Name="ResizeBottomCenter"
|
<Rectangle x:Name="ResizeBottomCenter"
|
||||||
Fill="White"
|
Fill="White"
|
||||||
Stroke="{DynamicResource SecondaryAccentBrush}"
|
Stroke="{DynamicResource SecondaryHueMidBrush}"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
MouseDown="ResizeOnMouseDown"
|
MouseDown="ResizeOnMouseDown"
|
||||||
MouseUp="ResizeOnMouseUp"
|
MouseUp="ResizeOnMouseUp"
|
||||||
MouseMove="ResizeOnMouseMove" />
|
MouseMove="ResizeOnMouseMove" />
|
||||||
<Rectangle x:Name="ResizeLeftCenter"
|
<Rectangle x:Name="ResizeLeftCenter"
|
||||||
Fill="White"
|
Fill="White"
|
||||||
Stroke="{DynamicResource SecondaryAccentBrush}"
|
Stroke="{DynamicResource SecondaryHueMidBrush}"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
MouseDown="ResizeOnMouseDown"
|
MouseDown="ResizeOnMouseDown"
|
||||||
MouseUp="ResizeOnMouseUp"
|
MouseUp="ResizeOnMouseUp"
|
||||||
@ -74,28 +74,28 @@
|
|||||||
|
|
||||||
<Rectangle x:Name="ResizeTopLeft"
|
<Rectangle x:Name="ResizeTopLeft"
|
||||||
Fill="White"
|
Fill="White"
|
||||||
Stroke="{DynamicResource SecondaryAccentBrush}"
|
Stroke="{DynamicResource SecondaryHueMidBrush}"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
MouseDown="ResizeOnMouseDown"
|
MouseDown="ResizeOnMouseDown"
|
||||||
MouseUp="ResizeOnMouseUp"
|
MouseUp="ResizeOnMouseUp"
|
||||||
MouseMove="ResizeOnMouseMove" />
|
MouseMove="ResizeOnMouseMove" />
|
||||||
<Rectangle x:Name="ResizeTopRight"
|
<Rectangle x:Name="ResizeTopRight"
|
||||||
Fill="White"
|
Fill="White"
|
||||||
Stroke="{DynamicResource SecondaryAccentBrush}"
|
Stroke="{DynamicResource SecondaryHueMidBrush}"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
MouseDown="ResizeOnMouseDown"
|
MouseDown="ResizeOnMouseDown"
|
||||||
MouseUp="ResizeOnMouseUp"
|
MouseUp="ResizeOnMouseUp"
|
||||||
MouseMove="ResizeOnMouseMove" />
|
MouseMove="ResizeOnMouseMove" />
|
||||||
<Rectangle x:Name="ResizeBottomRight"
|
<Rectangle x:Name="ResizeBottomRight"
|
||||||
Fill="White"
|
Fill="White"
|
||||||
Stroke="{DynamicResource SecondaryAccentBrush}"
|
Stroke="{DynamicResource SecondaryHueMidBrush}"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
MouseDown="ResizeOnMouseDown"
|
MouseDown="ResizeOnMouseDown"
|
||||||
MouseUp="ResizeOnMouseUp"
|
MouseUp="ResizeOnMouseUp"
|
||||||
MouseMove="ResizeOnMouseMove" />
|
MouseMove="ResizeOnMouseMove" />
|
||||||
<Rectangle x:Name="ResizeBottomLeft"
|
<Rectangle x:Name="ResizeBottomLeft"
|
||||||
Fill="White"
|
Fill="White"
|
||||||
Stroke="{DynamicResource SecondaryAccentBrush}"
|
Stroke="{DynamicResource SecondaryHueMidBrush}"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
MouseDown="ResizeOnMouseDown"
|
MouseDown="ResizeOnMouseDown"
|
||||||
MouseUp="ResizeOnMouseUp"
|
MouseUp="ResizeOnMouseUp"
|
||||||
@ -104,7 +104,7 @@
|
|||||||
<!-- Anchor point -->
|
<!-- Anchor point -->
|
||||||
<Ellipse x:Name="AnchorPoint"
|
<Ellipse x:Name="AnchorPoint"
|
||||||
Fill="White"
|
Fill="White"
|
||||||
Stroke="{DynamicResource SecondaryAccentBrush}"
|
Stroke="{DynamicResource SecondaryHueMidBrush}"
|
||||||
Cursor="SizeAll"
|
Cursor="SizeAll"
|
||||||
MouseDown="MoveOnMouseDown"
|
MouseDown="MoveOnMouseDown"
|
||||||
MouseUp="MoveOnMouseUp"
|
MouseUp="MoveOnMouseUp"
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Globalization;
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Timers;
|
using System.Timers;
|
||||||
@ -20,6 +19,7 @@ using MaterialDesignExtensions.Controls;
|
|||||||
using MaterialDesignThemes.Wpf;
|
using MaterialDesignThemes.Wpf;
|
||||||
using Ninject;
|
using Ninject;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
|
using Constants = Artemis.Core.Constants;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens
|
namespace Artemis.UI.Screens
|
||||||
{
|
{
|
||||||
|
|||||||
@ -15,6 +15,7 @@ using Ookii.Dialogs.Wpf;
|
|||||||
using RGB.NET.Layout;
|
using RGB.NET.Layout;
|
||||||
using SkiaSharp;
|
using SkiaSharp;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
|
using Constants = Artemis.Core.Constants;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Settings.Device
|
namespace Artemis.UI.Screens.Settings.Device
|
||||||
{
|
{
|
||||||
|
|||||||
@ -24,7 +24,7 @@
|
|||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition />
|
<ColumnDefinition />
|
||||||
<ColumnDefinition Width="40"/>
|
<ColumnDefinition Width="40" />
|
||||||
<ColumnDefinition />
|
<ColumnDefinition />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<StackPanel Grid.Column="0">
|
<StackPanel Grid.Column="0">
|
||||||
@ -35,22 +35,22 @@
|
|||||||
<TextBox materialDesign:HintAssist.Hint="X-coordinate"
|
<TextBox materialDesign:HintAssist.Hint="X-coordinate"
|
||||||
materialDesign:TextFieldAssist.SuffixText="mm"
|
materialDesign:TextFieldAssist.SuffixText="mm"
|
||||||
Text="{Binding X, UpdateSourceTrigger=PropertyChanged}"
|
Text="{Binding X, UpdateSourceTrigger=PropertyChanged}"
|
||||||
Style="{StaticResource MaterialDesignFloatingHintTextBox}"
|
Style="{StaticResource MaterialDesignFilledTextBox}"
|
||||||
Margin="0 5" />
|
Margin="0 5" />
|
||||||
<TextBox materialDesign:HintAssist.Hint="Y-coordinate"
|
<TextBox materialDesign:HintAssist.Hint="Y-coordinate"
|
||||||
materialDesign:TextFieldAssist.SuffixText="mm"
|
materialDesign:TextFieldAssist.SuffixText="mm"
|
||||||
Text="{Binding Y, UpdateSourceTrigger=PropertyChanged}"
|
Text="{Binding Y, UpdateSourceTrigger=PropertyChanged}"
|
||||||
Style="{StaticResource MaterialDesignFloatingHintTextBox}"
|
Style="{StaticResource MaterialDesignFilledTextBox}"
|
||||||
Margin="0 5" />
|
Margin="0 5" />
|
||||||
<TextBox materialDesign:HintAssist.Hint="Scale"
|
<TextBox materialDesign:HintAssist.Hint="Scale"
|
||||||
materialDesign:TextFieldAssist.SuffixText="times"
|
materialDesign:TextFieldAssist.SuffixText="times"
|
||||||
Text="{Binding Scale, UpdateSourceTrigger=PropertyChanged}"
|
Text="{Binding Scale, UpdateSourceTrigger=PropertyChanged}"
|
||||||
Style="{StaticResource MaterialDesignFloatingHintTextBox}"
|
Style="{StaticResource MaterialDesignFilledTextBox}"
|
||||||
Margin="0 5" />
|
Margin="0 5" />
|
||||||
<TextBox materialDesign:HintAssist.Hint="Rotation"
|
<TextBox materialDesign:HintAssist.Hint="Rotation"
|
||||||
materialDesign:TextFieldAssist.SuffixText="deg"
|
materialDesign:TextFieldAssist.SuffixText="deg"
|
||||||
Text="{Binding Rotation, UpdateSourceTrigger=PropertyChanged}"
|
Text="{Binding Rotation, UpdateSourceTrigger=PropertyChanged}"
|
||||||
Style="{StaticResource MaterialDesignFloatingHintTextBox}"
|
Style="{StaticResource MaterialDesignFilledTextBox}"
|
||||||
Margin="0 5 0 12" />
|
Margin="0 5 0 12" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
@ -68,7 +68,7 @@
|
|||||||
Use the sliders below to adjust the colors of your device so that it matches your other devices.
|
Use the sliders below to adjust the colors of your device so that it matches your other devices.
|
||||||
</TextBlock>
|
</TextBlock>
|
||||||
|
|
||||||
<Grid>
|
<Grid Margin="0 3">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
@ -84,12 +84,14 @@
|
|||||||
VerticalAlignment="Center" />
|
VerticalAlignment="Center" />
|
||||||
<TextBox Grid.Column="2"
|
<TextBox Grid.Column="2"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
|
Style="{StaticResource MaterialDesignFilledTextBox}"
|
||||||
|
Width="70"
|
||||||
Text="{Binding RedScale, StringFormat={}{0:0.0}, UpdateSourceTrigger=PropertyChanged}"
|
Text="{Binding RedScale, StringFormat={}{0:0.0}, UpdateSourceTrigger=PropertyChanged}"
|
||||||
materialDesign:TextFieldAssist.SuffixText="%"
|
materialDesign:TextFieldAssist.SuffixText="%"
|
||||||
Width="50" />
|
materialDesign:HintAssist.IsFloating="False" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid>
|
<Grid Margin="0 3">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
@ -105,12 +107,14 @@
|
|||||||
VerticalAlignment="Center" />
|
VerticalAlignment="Center" />
|
||||||
<TextBox Grid.Column="2"
|
<TextBox Grid.Column="2"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
|
Style="{StaticResource MaterialDesignFilledTextBox}"
|
||||||
|
Width="70"
|
||||||
Text="{Binding GreenScale, StringFormat={}{0:0.0}, UpdateSourceTrigger=PropertyChanged}"
|
Text="{Binding GreenScale, StringFormat={}{0:0.0}, UpdateSourceTrigger=PropertyChanged}"
|
||||||
materialDesign:TextFieldAssist.SuffixText="%"
|
materialDesign:TextFieldAssist.SuffixText="%"
|
||||||
Width="50" />
|
materialDesign:HintAssist.IsFloating="False" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid>
|
<Grid Margin="0 2">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
@ -127,12 +131,14 @@
|
|||||||
VerticalAlignment="Center" />
|
VerticalAlignment="Center" />
|
||||||
<TextBox Grid.Column="2"
|
<TextBox Grid.Column="2"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
|
Style="{StaticResource MaterialDesignFilledTextBox}"
|
||||||
|
Width="70"
|
||||||
Text="{Binding BlueScale, StringFormat={}{0:0.0}, UpdateSourceTrigger=PropertyChanged}"
|
Text="{Binding BlueScale, StringFormat={}{0:0.0}, UpdateSourceTrigger=PropertyChanged}"
|
||||||
materialDesign:TextFieldAssist.SuffixText="%"
|
materialDesign:TextFieldAssist.SuffixText="%"
|
||||||
Width="50" />
|
materialDesign:HintAssist.IsFloating="False" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid Margin="0 28 0 0">
|
<Grid Margin="0 3 0 0">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition />
|
<ColumnDefinition />
|
||||||
<ColumnDefinition />
|
<ColumnDefinition />
|
||||||
@ -142,9 +148,9 @@
|
|||||||
Content="Show preview"
|
Content="Show preview"
|
||||||
VerticalAlignment="Center" />
|
VerticalAlignment="Center" />
|
||||||
<shared:ColorPicker Grid.Column="1"
|
<shared:ColorPicker Grid.Column="1"
|
||||||
Margin="0,0,5,0"
|
|
||||||
HorizontalAlignment="Right"
|
HorizontalAlignment="Right"
|
||||||
Color="{Binding CurrentColor, Converter={StaticResource SKColorToColorConverter}}"
|
Color="{Binding CurrentColor, Converter={StaticResource SKColorToColorConverter}}"
|
||||||
|
TextBoxStyle="{StaticResource MaterialDesignFilledTextBox}"
|
||||||
VerticalAlignment="Center" />
|
VerticalAlignment="Center" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
@ -161,7 +167,7 @@
|
|||||||
Select a custom layout below if you want to change the appearance and/or LEDs of this device.
|
Select a custom layout below if you want to change the appearance and/or LEDs of this device.
|
||||||
</TextBlock>
|
</TextBlock>
|
||||||
|
|
||||||
<TextBox Style="{StaticResource MaterialDesignFloatingHintTextBox}"
|
<TextBox Style="{StaticResource MaterialDesignFilledTextBox}"
|
||||||
Text="{Binding Device.CustomLayoutPath}"
|
Text="{Binding Device.CustomLayoutPath}"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
materialDesign:TextFieldAssist.HasClearButton="True"
|
materialDesign:TextFieldAssist.HasClearButton="True"
|
||||||
@ -177,9 +183,9 @@
|
|||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<!-- Buttons -->
|
<!-- Buttons -->
|
||||||
<Grid Grid.Row="1" >
|
<Grid Grid.Row="1">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto"/>
|
<ColumnDefinition Width="Auto" />
|
||||||
<ColumnDefinition />
|
<ColumnDefinition />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<Button Grid.Column="0"
|
<Button Grid.Column="0"
|
||||||
|
|||||||
@ -77,7 +77,12 @@
|
|||||||
</TextBlock>
|
</TextBlock>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
||||||
<TextBox Text="{Binding AutoRunDelay}" IsEnabled="{Binding StartWithWindows}" Width="80" materialDesign:TextFieldAssist.SuffixText="sec"/>
|
<TextBox Style="{StaticResource MaterialDesignFilledTextBox}"
|
||||||
|
Text="{Binding AutoRunDelay}"
|
||||||
|
IsEnabled="{Binding StartWithWindows}"
|
||||||
|
Width="100"
|
||||||
|
materialDesign:TextFieldAssist.SuffixText="sec"
|
||||||
|
materialDesign:HintAssist.IsFloating="false"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="-15 5" />
|
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="-15 5" />
|
||||||
@ -98,7 +103,13 @@
|
|||||||
</TextBlock>
|
</TextBlock>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
||||||
<ComboBox Width="80" SelectedValue="{Binding SelectedColorScheme}" ItemsSource="{Binding ColorSchemes}" SelectedValuePath="Value" DisplayMemberPath="Description" />
|
<ComboBox Style="{StaticResource MaterialDesignFilledComboBox}"
|
||||||
|
Width="100"
|
||||||
|
SelectedValue="{Binding SelectedColorScheme}"
|
||||||
|
ItemsSource="{Binding ColorSchemes}"
|
||||||
|
SelectedValuePath="Value"
|
||||||
|
DisplayMemberPath="Description"
|
||||||
|
materialDesign:HintAssist.IsFloating="false"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="-15 5" />
|
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="-15 5" />
|
||||||
@ -119,7 +130,13 @@
|
|||||||
</TextBlock>
|
</TextBlock>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
||||||
<ComboBox Width="80" SelectedValue="{Binding SelectedLogLevel}" ItemsSource="{Binding LogLevels}" SelectedValuePath="Value" DisplayMemberPath="Description" />
|
<ComboBox Style="{StaticResource MaterialDesignFilledComboBox}"
|
||||||
|
Width="100"
|
||||||
|
SelectedValue="{Binding SelectedLogLevel}"
|
||||||
|
ItemsSource="{Binding LogLevels}"
|
||||||
|
SelectedValuePath="Value"
|
||||||
|
DisplayMemberPath="Description"
|
||||||
|
materialDesign:HintAssist.IsFloating="false"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="-15 5" />
|
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="-15 5" />
|
||||||
@ -169,7 +186,8 @@
|
|||||||
</TextBlock>
|
</TextBlock>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
||||||
<TextBox Text="{Binding WebServerPortSetting.Value}" Width="80" />
|
<TextBox Style="{StaticResource MaterialDesignFilledTextBox}" Text="{Binding WebServerPortSetting.Value}" Width="100"
|
||||||
|
materialDesign:HintAssist.IsFloating="false"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
@ -287,12 +305,11 @@
|
|||||||
</TextBlock>
|
</TextBlock>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
||||||
<ComboBox Width="132"
|
<ComboBox Style="{StaticResource MaterialDesignFilledComboBox}"
|
||||||
Margin="0 2"
|
Width="150"
|
||||||
Padding="0 -1"
|
|
||||||
Height="15"
|
|
||||||
materialDesign:ComboBoxAssist.ClassicMode="True"
|
materialDesign:ComboBoxAssist.ClassicMode="True"
|
||||||
materialDesign:ValidationAssist.UsePopup="True"
|
materialDesign:ValidationAssist.UsePopup="True"
|
||||||
|
materialDesign:HintAssist.IsFloating="false"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
ItemsSource="{Binding Path=LayerBrushDescriptors}"
|
ItemsSource="{Binding Path=LayerBrushDescriptors}"
|
||||||
SelectedValue="{Binding Path=SelectedLayerBrushDescriptor}"
|
SelectedValue="{Binding Path=SelectedLayerBrushDescriptor}"
|
||||||
@ -324,7 +341,10 @@
|
|||||||
</TextBlock>
|
</TextBlock>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
||||||
<ComboBox Width="80" SelectedItem="{Binding PreferredGraphicsContext}" >
|
<ComboBox Style="{StaticResource MaterialDesignFilledComboBox}"
|
||||||
|
Width="100"
|
||||||
|
SelectedItem="{Binding PreferredGraphicsContext}"
|
||||||
|
materialDesign:HintAssist.IsFloating="false">
|
||||||
<system:String>Software</system:String>
|
<system:String>Software</system:String>
|
||||||
<system:String>Vulkan</system:String>
|
<system:String>Vulkan</system:String>
|
||||||
</ComboBox>
|
</ComboBox>
|
||||||
@ -348,7 +368,12 @@
|
|||||||
</TextBlock>
|
</TextBlock>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
||||||
<ComboBox Width="80" SelectedItem="{Binding SelectedRenderScale}" ItemsSource="{Binding RenderScales}" DisplayMemberPath="Item1" />
|
<ComboBox Style="{StaticResource MaterialDesignFilledComboBox}"
|
||||||
|
Width="100"
|
||||||
|
SelectedItem="{Binding SelectedRenderScale}"
|
||||||
|
ItemsSource="{Binding RenderScales}"
|
||||||
|
DisplayMemberPath="Item1"
|
||||||
|
materialDesign:HintAssist.IsFloating="false"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="-15 5" />
|
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="-15 5" />
|
||||||
@ -369,7 +394,12 @@
|
|||||||
</TextBlock>
|
</TextBlock>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Center">
|
||||||
<ComboBox Width="80" SelectedItem="{Binding SelectedTargetFrameRate}" ItemsSource="{Binding TargetFrameRates}" DisplayMemberPath="Item1" />
|
<ComboBox Style="{StaticResource MaterialDesignFilledComboBox}"
|
||||||
|
Width="100"
|
||||||
|
SelectedItem="{Binding SelectedTargetFrameRate}"
|
||||||
|
ItemsSource="{Binding TargetFrameRates}"
|
||||||
|
DisplayMemberPath="Item1"
|
||||||
|
materialDesign:HintAssist.IsFloating="false"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|||||||
@ -25,10 +25,15 @@
|
|||||||
The list below shows all loaded plugins. <LineBreak />
|
The list below shows all loaded plugins. <LineBreak />
|
||||||
If you're missing something, view your logs folder.
|
If you're missing something, view your logs folder.
|
||||||
</TextBlock>
|
</TextBlock>
|
||||||
<materialDesign:PackIcon Grid.Column="1" Kind="Search" VerticalAlignment="Top" Margin="15 5 0 0" />
|
<materialDesign:PackIcon Grid.Column="1"
|
||||||
|
Kind="Search"
|
||||||
|
VerticalAlignment="Top"
|
||||||
|
Margin="15 8 0 0" />
|
||||||
<TextBox Grid.Column="2"
|
<TextBox Grid.Column="2"
|
||||||
|
Style="{StaticResource MaterialDesignFilledTextBox}"
|
||||||
materialDesign:TextFieldAssist.HasClearButton="True"
|
materialDesign:TextFieldAssist.HasClearButton="True"
|
||||||
materialDesign:HintAssist.Hint="Search plugin"
|
materialDesign:HintAssist.Hint="Search plugin"
|
||||||
|
materialDesign:HintAssist.IsFloating="False"
|
||||||
VerticalAlignment="Top"
|
VerticalAlignment="Top"
|
||||||
Margin="5 0"
|
Margin="5 0"
|
||||||
Text="{Binding SearchPluginInput, Delay=300, UpdateSourceTrigger=PropertyChanged}" />
|
Text="{Binding SearchPluginInput, Delay=300, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
@ -51,7 +56,7 @@
|
|||||||
Margin="15 0 15 15">
|
Margin="15 0 15 15">
|
||||||
<ListBox.ItemTemplate>
|
<ListBox.ItemTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<ContentControl s:View.Model="{Binding IsAsync=True}" Margin="5" HorizontalAlignment="Center" IsTabStop="False" />
|
<ContentControl s:View.Model="{Binding IsAsync=True}" Margin="5" HorizontalAlignment="Center" IsTabStop="False" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ListBox.ItemTemplate>
|
</ListBox.ItemTemplate>
|
||||||
<ListBox.ItemsPanel>
|
<ListBox.ItemsPanel>
|
||||||
|
|||||||
@ -11,6 +11,7 @@ using Artemis.UI.Shared.Services;
|
|||||||
using MaterialDesignThemes.Wpf;
|
using MaterialDesignThemes.Wpf;
|
||||||
using Ninject;
|
using Ninject;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
|
using Constants = Artemis.Core.Constants;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Settings.Tabs.Plugins
|
namespace Artemis.UI.Screens.Settings.Tabs.Plugins
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,41 +0,0 @@
|
|||||||
<UserControl x:Class="Artemis.UI.Screens.SurfaceEditor.Dialogs.SurfaceCreateView"
|
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
||||||
xmlns:s="https://github.com/canton7/Stylet"
|
|
||||||
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
|
||||||
mc:Ignorable="d"
|
|
||||||
d:DesignHeight="213.053" d:DesignWidth="254.425">
|
|
||||||
<StackPanel Margin="16">
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignHeadline6TextBlock}">
|
|
||||||
Add a new surface layout
|
|
||||||
</TextBlock>
|
|
||||||
|
|
||||||
<TextBox materialDesign:HintAssist.Hint="Layout name"
|
|
||||||
Margin="0 8 0 16"
|
|
||||||
Style="{StaticResource MaterialDesignFloatingHintTextBox}"
|
|
||||||
Text="{Binding SurfaceName, UpdateSourceTrigger=PropertyChanged}" />
|
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
|
|
||||||
<Button Style="{StaticResource MaterialDesignFlatButton}" IsCancel="True" Margin="0 8 8 0"
|
|
||||||
Command="{s:Action Cancel}">
|
|
||||||
<Button.CommandParameter>
|
|
||||||
<system:Boolean xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
False
|
|
||||||
</system:Boolean>
|
|
||||||
</Button.CommandParameter>
|
|
||||||
CANCEL
|
|
||||||
</Button>
|
|
||||||
<Button Style="{StaticResource MaterialDesignFlatButton}" IsDefault="True" Margin="0 8 8 0"
|
|
||||||
Command="{s:Action Accept}">
|
|
||||||
<Button.CommandParameter>
|
|
||||||
<system:Boolean xmlns:system="clr-namespace:System;assembly=mscorlib">
|
|
||||||
True
|
|
||||||
</system:Boolean>
|
|
||||||
</Button.CommandParameter>
|
|
||||||
ACCEPT
|
|
||||||
</Button>
|
|
||||||
</StackPanel>
|
|
||||||
</StackPanel>
|
|
||||||
</UserControl>
|
|
||||||
@ -1,31 +0,0 @@
|
|||||||
using System.Threading.Tasks;
|
|
||||||
using Artemis.UI.Shared.Services;
|
|
||||||
using Stylet;
|
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.SurfaceEditor.Dialogs
|
|
||||||
{
|
|
||||||
public class SurfaceCreateViewModel : DialogViewModelBase
|
|
||||||
{
|
|
||||||
private string _surfaceName;
|
|
||||||
|
|
||||||
public SurfaceCreateViewModel(IModelValidator<SurfaceCreateViewModel> validator) : base(validator)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public string SurfaceName
|
|
||||||
{
|
|
||||||
get => _surfaceName;
|
|
||||||
set => SetAndNotify(ref _surfaceName, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task Accept()
|
|
||||||
{
|
|
||||||
await ValidateAsync();
|
|
||||||
|
|
||||||
if (HasErrors)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Session.Close(SurfaceName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
using FluentValidation;
|
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.SurfaceEditor.Dialogs
|
|
||||||
{
|
|
||||||
public class SurfaceCreateViewModelValidator : AbstractValidator<SurfaceCreateViewModel>
|
|
||||||
{
|
|
||||||
public SurfaceCreateViewModelValidator()
|
|
||||||
{
|
|
||||||
RuleFor(m => m.SurfaceName).NotEmpty().WithMessage("Layout name may not be empty");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -18,6 +18,7 @@ using Flurl;
|
|||||||
using Flurl.Http;
|
using Flurl.Http;
|
||||||
using MaterialDesignThemes.Wpf;
|
using MaterialDesignThemes.Wpf;
|
||||||
using Serilog;
|
using Serilog;
|
||||||
|
using Constants = Artemis.Core.Constants;
|
||||||
using File = System.IO.File;
|
using File = System.IO.File;
|
||||||
|
|
||||||
namespace Artemis.UI.Services
|
namespace Artemis.UI.Services
|
||||||
|
|||||||
36
src/Artemis.UI/Utilities/DPIAwareness.cs
Normal file
36
src/Artemis.UI/Utilities/DPIAwareness.cs
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
namespace Artemis.UI.Utilities
|
||||||
|
{
|
||||||
|
public static class DPIAwareness
|
||||||
|
{
|
||||||
|
[DllImport("user32.dll", SetLastError = true)]
|
||||||
|
internal static extern bool SetProcessDpiAwarenessContext(int dpiFlag);
|
||||||
|
|
||||||
|
[DllImport("SHCore.dll", SetLastError = true)]
|
||||||
|
internal static extern bool SetProcessDpiAwareness(PROCESS_DPI_AWARENESS awareness);
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
internal static extern bool SetProcessDPIAware();
|
||||||
|
|
||||||
|
internal enum PROCESS_DPI_AWARENESS
|
||||||
|
{
|
||||||
|
Process_DPI_Unaware = 0,
|
||||||
|
Process_System_DPI_Aware = 1,
|
||||||
|
Process_Per_Monitor_DPI_Aware = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
internal enum DPI_AWARENESS_CONTEXT
|
||||||
|
{
|
||||||
|
DPI_AWARENESS_CONTEXT_UNAWARE = 16,
|
||||||
|
DPI_AWARENESS_CONTEXT_SYSTEM_AWARE = 17,
|
||||||
|
DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE = 18,
|
||||||
|
DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 = 34
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Initalize()
|
||||||
|
{
|
||||||
|
SetProcessDpiAwarenessContext((int)DPI_AWARENESS_CONTEXT.DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -4,9 +4,9 @@
|
|||||||
".NETCoreApp,Version=v5.0": {
|
".NETCoreApp,Version=v5.0": {
|
||||||
"FluentValidation": {
|
"FluentValidation": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[9.3.0, )",
|
"requested": "[10.0.0, )",
|
||||||
"resolved": "9.3.0",
|
"resolved": "10.0.0",
|
||||||
"contentHash": "C44l6Ih+YwpED/TsXfl6LIq6Z4wLXahstnr6T70uUg1Hs7/bLBKKAo9Nl0sLhVjDE8TA+fF+O3IM4nDrwabcSQ=="
|
"contentHash": "jNFPbLjBy/bfIWx4BV/WVEsS+1OxBVf22mmSdvVa9RCHJDkNhAjbKZkxgA0s1rYNFxVn+a1fQbos95t4j/z3Zg=="
|
||||||
},
|
},
|
||||||
"Flurl.Http": {
|
"Flurl.Http": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
@ -43,9 +43,9 @@
|
|||||||
},
|
},
|
||||||
"MaterialDesignExtensions": {
|
"MaterialDesignExtensions": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[3.3.0-a01, )",
|
"requested": "[3.3.0, )",
|
||||||
"resolved": "3.3.0-a01",
|
"resolved": "3.3.0",
|
||||||
"contentHash": "dq8lvcj73H6TCmhjlRud8EeUSgC8S2U7T4jOoefmLieZQigbfQNy29hF1041cnu6b3l8mW00zWJituRMSt0iOQ==",
|
"contentHash": "dlxWtdrMH8aHNib3dWJhNQ/nNiA2b/CNvr90w/5KB6erTisuTpyYVx2l2+UGCZvwhSX5mHTHQYHfjgAKbDrgjg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"MaterialDesignColors": "1.2.7",
|
"MaterialDesignColors": "1.2.7",
|
||||||
"MaterialDesignThemes": "3.2.0"
|
"MaterialDesignThemes": "3.2.0"
|
||||||
@ -53,11 +53,11 @@
|
|||||||
},
|
},
|
||||||
"MaterialDesignThemes": {
|
"MaterialDesignThemes": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[3.2.0, )",
|
"requested": "[4.0.0, )",
|
||||||
"resolved": "3.2.0",
|
"resolved": "4.0.0",
|
||||||
"contentHash": "aOZQShQuV7sCWOwO98dYz1S4stmIWDBH+Q6KoR3wDiDyuG7twoGnBDzQBhrxuS16I3GQiG5nfvUjEJFVc/zdKg==",
|
"contentHash": "+n5oWHuRiYL/gUw2XfQHCRZqHtU8KbrdurgU0IcO98Zsyhw4BvggodfXY8veRtbjjmM9EJ/sG2yKBrgPOGX4JQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"MaterialDesignColors": "[1.2.7, 2.0.0)"
|
"MaterialDesignColors": "2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Win32.Registry": {
|
"Microsoft.Win32.Registry": {
|
||||||
@ -72,9 +72,9 @@
|
|||||||
},
|
},
|
||||||
"Microsoft.Xaml.Behaviors.Wpf": {
|
"Microsoft.Xaml.Behaviors.Wpf": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[1.1.19, )",
|
"requested": "[1.1.31, )",
|
||||||
"resolved": "1.1.19",
|
"resolved": "1.1.31",
|
||||||
"contentHash": "5sPWkbqImc2t1aQwIfJcKsUo7tOg1Tr8+6xVzZJB56Nzt4u9NlpcLofgdX/aRYpPKdWDA3U23Akw1KQzU5e82g=="
|
"contentHash": "LZpuf82ACZWldmfMuv3CTUMDh3o0xo0uHUaybR5HgqVLDBJJ9RZLykplQ/bTJd0/VDt3EhD4iDgUgbdIUAM+Kg=="
|
||||||
},
|
},
|
||||||
"Ninject": {
|
"Ninject": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
@ -138,9 +138,9 @@
|
|||||||
},
|
},
|
||||||
"Stylet": {
|
"Stylet": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[1.3.5, )",
|
"requested": "[1.3.6, )",
|
||||||
"resolved": "1.3.5",
|
"resolved": "1.3.6",
|
||||||
"contentHash": "9vjjaTgf5sZAGHnxQWIslD32MG5gXj7ANgS+w965L5Eh//UC3qwZDrEf226Pf+v1P/ldAJDpUySnOyGlb3TSSw==",
|
"contentHash": "SISR+DsPrgBww3AI5FtHx1tD9VkEfJWZYu+ykq5EFM2o7Se9zxNR6FAa2g5QadQa90NKMYxn/VZEQRDo7/pdkw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"System.Drawing.Common": "4.6.0"
|
"System.Drawing.Common": "4.6.0"
|
||||||
}
|
}
|
||||||
@ -159,9 +159,9 @@
|
|||||||
},
|
},
|
||||||
"System.Drawing.Common": {
|
"System.Drawing.Common": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[5.0.0, )",
|
"requested": "[5.0.2, )",
|
||||||
"resolved": "5.0.0",
|
"resolved": "5.0.2",
|
||||||
"contentHash": "SztFwAnpfKC8+sEKXAFxCBWhKQaEd97EiOL7oZJZP56zbqnLpmxACWA8aGseaUExciuEAUuR9dY8f7HkTRAdnw==",
|
"contentHash": "rvr/M1WPf24ljpvvrVd74+NdjRUJu1bBkspkZcnzSZnmAUQWSvanlQ0k/hVHk+cHufZbZfu7vOh/vYc0q5Uu/A==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Win32.SystemEvents": "5.0.0"
|
"Microsoft.Win32.SystemEvents": "5.0.0"
|
||||||
}
|
}
|
||||||
@ -191,22 +191,16 @@
|
|||||||
},
|
},
|
||||||
"Unclassified.NetRevisionTask": {
|
"Unclassified.NetRevisionTask": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[0.3.0, )",
|
"requested": "[0.4.0, )",
|
||||||
"resolved": "0.3.0",
|
"resolved": "0.4.0",
|
||||||
"contentHash": "KwOAbbcAoaOIsyszuOv7ZeLEHfata70iM+0h1jMoMXs87EMXr5E8cFYRrCFbJDdd4Do9dK+L3gwNWjfg/ROUWw=="
|
"contentHash": "2Tzz6qoQNciyO4uT6wxByMiyvbve+u4eFIiDewDUbeHuxr/rKuba3/EhhXDsEH9WoKzYlpzqxDfQGPE/bIe5Rw=="
|
||||||
},
|
|
||||||
"AvalonEdit": {
|
|
||||||
"type": "Transitive",
|
|
||||||
"resolved": "6.0.1",
|
|
||||||
"contentHash": "JmRwKMDRUUkUGLQmTtIHiSgFSQH9567b2/55Wa/gQp+ZtxQN+mnl5Qt6B/Kgz56FMnnDyE/fV23r7J2SV+NP7g=="
|
|
||||||
},
|
},
|
||||||
"Ben.Demystifier": {
|
"Ben.Demystifier": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "0.1.6",
|
"resolved": "0.3.0",
|
||||||
"contentHash": "sYI8+ANUo78i/vIq9Vjrjjl6A00yVbT6XsuSVvUMVRVEKJHXZu4VE00RZHg/CA7QxmaQ1zfw/Bs6DAU+OJUNAg==",
|
"contentHash": "7mTSt0PLeXomarrTXdLcdYAg+zaOunw3KEvWKQ0fQaGySwqOzGxKVq8BDgUXWAyBH2hKhXldkG7uKJGkYBhDiw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"System.Reflection.Metadata": "1.6.0",
|
"System.Reflection.Metadata": "5.0.0"
|
||||||
"System.Threading.Tasks.Extensions": "4.5.3"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Castle.Core": {
|
"Castle.Core": {
|
||||||
@ -251,13 +245,13 @@
|
|||||||
},
|
},
|
||||||
"LiteDB": {
|
"LiteDB": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "5.0.9",
|
"resolved": "5.0.10",
|
||||||
"contentHash": "cWnNWXL+qaP/qrkUCYZHBUJcv+IsfJfofa+Ed4EyT0zs/gkXqfKvjTbS3uSMBfcd9I7Yf+q9YPmCpmVFrVGQtw=="
|
"contentHash": "x70WuqMDuP75dajqSLvO+AnI/BbwS6da+ukTO7rueV7VoXoQ5CRA9FV4r7cOS4OUr2NS1Up7LDIutjCxQycRvg=="
|
||||||
},
|
},
|
||||||
"MaterialDesignColors": {
|
"MaterialDesignColors": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "1.2.7",
|
"resolved": "2.0.0",
|
||||||
"contentHash": "e+shDlaSAJcuTArqtfWjVUgAOlwQlgWq8akkzCGe1MvfV1ozmOqqXyWxg5w0vC/3/KZ84wnPUJeI1wzEpI0uJQ=="
|
"contentHash": "+JoghC3QRK0u9Wul1To1ORjcfTbFTVzFPjJ02H7VREOdNzIIn427e8G9gP9hXu9pm1r2OneLnoCG/lTma5cG2w=="
|
||||||
},
|
},
|
||||||
"McMaster.NETCore.Plugins": {
|
"McMaster.NETCore.Plugins": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
@ -362,8 +356,8 @@
|
|||||||
},
|
},
|
||||||
"Newtonsoft.Json": {
|
"Newtonsoft.Json": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "12.0.3",
|
"resolved": "13.0.1",
|
||||||
"contentHash": "6mgjfnRB4jKMlzHSl+VD+oUc1IebOZabkbyWj2RiTgWwYPPuaK1H97G1sHqGwPlS5npiF5Q0OrxN1wni2n5QWg=="
|
"contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A=="
|
||||||
},
|
},
|
||||||
"Ninject.Extensions.ChildKernel": {
|
"Ninject.Extensions.ChildKernel": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
@ -500,11 +494,10 @@
|
|||||||
},
|
},
|
||||||
"Serilog.Sinks.Debug": {
|
"Serilog.Sinks.Debug": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "1.0.1",
|
"resolved": "2.0.0",
|
||||||
"contentHash": "nE5wvw9+J/V4lA+rEkFUETGjBabK8IlLQY5Z9KDzoo5LvILC4vhTOXLs7DGYs8h5juIf2nLZnVxHDXf404FqEQ==",
|
"contentHash": "Y6g3OBJ4JzTyyw16fDqtFcQ41qQAydnEvEqmXjhwhgjsnG/FaJ8GUqF5ldsC/bVkK8KYmqrPhDO+tm4dF6xx4A==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Serilog": "2.5.0",
|
"Serilog": "2.10.0"
|
||||||
"System.Diagnostics.Debug": "4.3.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Serilog.Sinks.File": {
|
"Serilog.Sinks.File": {
|
||||||
@ -1358,8 +1351,13 @@
|
|||||||
},
|
},
|
||||||
"System.Threading.Tasks.Extensions": {
|
"System.Threading.Tasks.Extensions": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "4.5.3",
|
"resolved": "4.3.0",
|
||||||
"contentHash": "+MvhNtcvIbqmhANyKu91jQnvIRVSTiaOiFNfKWwXGHG48YAb4I/TyH8spsySiPYla7gKal5ZnF3teJqZAximyQ=="
|
"contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==",
|
||||||
|
"dependencies": {
|
||||||
|
"System.Collections": "4.3.0",
|
||||||
|
"System.Runtime": "4.3.0",
|
||||||
|
"System.Threading.Tasks": "4.3.0"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"System.Threading.Timer": {
|
"System.Threading.Timer": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
@ -1443,19 +1441,19 @@
|
|||||||
"type": "Project",
|
"type": "Project",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Artemis.Storage": "1.0.0",
|
"Artemis.Storage": "1.0.0",
|
||||||
"Ben.Demystifier": "0.1.6",
|
"Ben.Demystifier": "0.3.0",
|
||||||
"EmbedIO": "3.4.3",
|
"EmbedIO": "3.4.3",
|
||||||
"HidSharp": "2.1.0",
|
"HidSharp": "2.1.0",
|
||||||
"Humanizer.Core": "2.8.26",
|
"Humanizer.Core": "2.8.26",
|
||||||
"LiteDB": "5.0.9",
|
"LiteDB": "5.0.10",
|
||||||
"McMaster.NETCore.Plugins": "1.3.1",
|
"McMaster.NETCore.Plugins": "1.3.1",
|
||||||
"Newtonsoft.Json": "12.0.3",
|
"Newtonsoft.Json": "13.0.1",
|
||||||
"Ninject": "3.3.4",
|
"Ninject": "3.3.4",
|
||||||
"Ninject.Extensions.ChildKernel": "3.3.0",
|
"Ninject.Extensions.ChildKernel": "3.3.0",
|
||||||
"Ninject.Extensions.Conventions": "3.3.0",
|
"Ninject.Extensions.Conventions": "3.3.0",
|
||||||
"Serilog": "2.10.0",
|
"Serilog": "2.10.0",
|
||||||
"Serilog.Enrichers.Demystify": "1.0.0-dev-00019",
|
"Serilog.Enrichers.Demystify": "1.0.0-dev-00019",
|
||||||
"Serilog.Sinks.Debug": "1.0.1",
|
"Serilog.Sinks.Debug": "2.0.0",
|
||||||
"Serilog.Sinks.File": "4.1.0",
|
"Serilog.Sinks.File": "4.1.0",
|
||||||
"SkiaSharp": "2.80.2",
|
"SkiaSharp": "2.80.2",
|
||||||
"System.Buffers": "4.5.1",
|
"System.Buffers": "4.5.1",
|
||||||
@ -1468,7 +1466,7 @@
|
|||||||
"artemis.storage": {
|
"artemis.storage": {
|
||||||
"type": "Project",
|
"type": "Project",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"LiteDB": "5.0.9",
|
"LiteDB": "5.0.10",
|
||||||
"Serilog": "2.10.0"
|
"Serilog": "2.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1476,17 +1474,17 @@
|
|||||||
"type": "Project",
|
"type": "Project",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Artemis.Core": "1.0.0",
|
"Artemis.Core": "1.0.0",
|
||||||
"AvalonEdit": "6.0.1",
|
"Ben.Demystifier": "0.3.0",
|
||||||
"Humanizer.Core": "2.8.26",
|
"Humanizer.Core": "2.8.26",
|
||||||
"MaterialDesignExtensions": "3.3.0-a01",
|
"MaterialDesignExtensions": "3.3.0",
|
||||||
"MaterialDesignThemes": "3.2.0",
|
"MaterialDesignThemes": "4.0.0",
|
||||||
"Microsoft.Xaml.Behaviors.Wpf": "1.1.19",
|
"Microsoft.Xaml.Behaviors.Wpf": "1.1.31",
|
||||||
"Ninject": "3.3.4",
|
"Ninject": "3.3.4",
|
||||||
"Ninject.Extensions.Conventions": "3.3.0",
|
"Ninject.Extensions.Conventions": "3.3.0",
|
||||||
"SharpVectors.Reloaded": "1.7.1",
|
"SharpVectors.Reloaded": "1.7.1",
|
||||||
"SkiaSharp": "2.80.2",
|
"SkiaSharp": "2.80.2",
|
||||||
"SkiaSharp.Views.WPF": "2.80.2",
|
"SkiaSharp.Views.WPF": "2.80.2",
|
||||||
"Stylet": "1.3.5",
|
"Stylet": "1.3.6",
|
||||||
"System.Buffers": "4.5.1",
|
"System.Buffers": "4.5.1",
|
||||||
"System.Numerics.Vectors": "4.5.0",
|
"System.Numerics.Vectors": "4.5.0",
|
||||||
"WriteableBitmapEx": "1.6.7"
|
"WriteableBitmapEx": "1.6.7"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user