mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-01-01 10:13:30 +00:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
882fe44c20
@ -96,10 +96,11 @@ namespace Artemis.Core.Modules
|
|||||||
public bool IsActivatedOverride { get; private set; }
|
public bool IsActivatedOverride { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets whether this module should update if <see cref="IsActivatedOverride" /> is <see langword="true" />
|
/// Gets whether this module should update while <see cref="IsActivatedOverride" /> is <see langword="true" />. When
|
||||||
/// <para>Defaults to <see langword="true" /></para>
|
/// set to <see langword="false" /> <see cref="Update" /> and any timed updates will not get called during an activation override.
|
||||||
|
/// <para>Defaults to <see langword="false" /></para>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool UpdateDuringActivationOverride { get; protected set; } = true;
|
public bool UpdateDuringActivationOverride { get; protected set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A list of activation requirements
|
/// A list of activation requirements
|
||||||
|
|||||||
@ -46,12 +46,7 @@ namespace Artemis.Core.Services
|
|||||||
|
|
||||||
if (ActiveModuleOverride == overrideModule)
|
if (ActiveModuleOverride == overrideModule)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Always deactivate all modules whenever override is called
|
|
||||||
var modules = _pluginService.GetPluginsOfType<Module>().ToList();
|
|
||||||
foreach (var module in modules)
|
|
||||||
OverrideDeactivate(module);
|
|
||||||
|
|
||||||
if (overrideModule != null)
|
if (overrideModule != null)
|
||||||
{
|
{
|
||||||
OverrideActivate(overrideModule);
|
OverrideActivate(overrideModule);
|
||||||
@ -60,6 +55,11 @@ namespace Artemis.Core.Services
|
|||||||
else
|
else
|
||||||
_logger.Information("Clearing active module override");
|
_logger.Information("Clearing active module override");
|
||||||
|
|
||||||
|
// Always deactivate all other modules whenever override is called
|
||||||
|
var modules = _pluginService.GetPluginsOfType<Module>().ToList();
|
||||||
|
foreach (var module in modules.Where(m => m != overrideModule))
|
||||||
|
OverrideDeactivate(module);
|
||||||
|
|
||||||
ActiveModuleOverride = overrideModule;
|
ActiveModuleOverride = overrideModule;
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@ -78,7 +78,23 @@ namespace Artemis.Core.Services
|
|||||||
await ActiveModuleSemaphore.WaitAsync();
|
await ActiveModuleSemaphore.WaitAsync();
|
||||||
|
|
||||||
if (ActiveModuleOverride != null)
|
if (ActiveModuleOverride != null)
|
||||||
|
{
|
||||||
|
// The conditions of the active module override may be matched, in that case reactivate as a non-override
|
||||||
|
// the principle is different for this service but not for the module
|
||||||
|
var shouldBeActivated = ActiveModuleOverride.EvaluateActivationRequirements();
|
||||||
|
if (shouldBeActivated && ActiveModuleOverride.IsActivatedOverride)
|
||||||
|
{
|
||||||
|
ActiveModuleOverride.Deactivate(true);
|
||||||
|
ActiveModuleOverride.Activate(false);
|
||||||
|
}
|
||||||
|
else if (!shouldBeActivated && !ActiveModuleOverride.IsActivatedOverride)
|
||||||
|
{
|
||||||
|
ActiveModuleOverride.Deactivate(false);
|
||||||
|
ActiveModuleOverride.Activate(true);
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var stopwatch = new Stopwatch();
|
var stopwatch = new Stopwatch();
|
||||||
stopwatch.Start();
|
stopwatch.Start();
|
||||||
|
|||||||
@ -236,7 +236,8 @@ namespace Artemis.Core.Services
|
|||||||
var profileEntity = JsonConvert.DeserializeObject<ProfileEntity>(json, ExportSettings);
|
var profileEntity = JsonConvert.DeserializeObject<ProfileEntity>(json, ExportSettings);
|
||||||
|
|
||||||
// Assign a new GUID to make sure it is unique in case of a previous import of the same content
|
// Assign a new GUID to make sure it is unique in case of a previous import of the same content
|
||||||
profileEntity.Id = Guid.NewGuid();
|
profileEntity.UpdateGuid(Guid.NewGuid());
|
||||||
|
profileEntity.Name = $"{profileEntity.Name} - Imported";
|
||||||
|
|
||||||
_profileRepository.Add(profileEntity);
|
_profileRepository.Add(profileEntity);
|
||||||
return new ProfileDescriptor(profileModule, profileEntity);
|
return new ProfileDescriptor(profileModule, profileEntity);
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace Artemis.Storage.Entities.Profile
|
namespace Artemis.Storage.Entities.Profile
|
||||||
{
|
{
|
||||||
@ -19,5 +20,15 @@ namespace Artemis.Storage.Entities.Profile
|
|||||||
|
|
||||||
public List<FolderEntity> Folders { get; set; }
|
public List<FolderEntity> Folders { get; set; }
|
||||||
public List<LayerEntity> Layers { get; set; }
|
public List<LayerEntity> Layers { get; set; }
|
||||||
|
|
||||||
|
public void UpdateGuid(Guid guid)
|
||||||
|
{
|
||||||
|
var oldGuid = Id;
|
||||||
|
Id = guid;
|
||||||
|
|
||||||
|
var rootFolder = Folders.FirstOrDefault(f => f.ParentId == oldGuid);
|
||||||
|
if (rootFolder != null)
|
||||||
|
rootFolder.ParentId = Id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -128,7 +128,7 @@ namespace Artemis.UI.Shared
|
|||||||
if (PropertyInfo.GetGetMethod() == null)
|
if (PropertyInfo.GetGetMethod() == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
return Parent == null ? null : PropertyInfo.GetValue(Parent.GetCurrentValue());
|
return Parent?.GetCurrentValue() == null ? null : PropertyInfo.GetValue(Parent.GetCurrentValue());
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -31,12 +31,12 @@
|
|||||||
<StackPanel>
|
<StackPanel>
|
||||||
<StackPanel.Resources>
|
<StackPanel.Resources>
|
||||||
<DataTemplate DataType="{x:Type dataModel:DataModelPropertiesViewModel}">
|
<DataTemplate DataType="{x:Type dataModel:DataModelPropertiesViewModel}">
|
||||||
<TextBlock Text="{Binding PropertyDescription.Name}" ToolTip="{Binding PropertyDescription.Description}" />
|
<TextBlock Text="{Binding PropertyDescription.Name}" ToolTip="{Binding PropertyDescription.Description}" ToolTipService.ShowOnDisabled="True"/>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
<DataTemplate DataType="{x:Type dataModel:DataModelListViewModel}">
|
<DataTemplate DataType="{x:Type dataModel:DataModelListViewModel}">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<materialDesign:PackIcon Kind="FormatListBulleted" VerticalAlignment="Center" Margin="0 0 5 0" />
|
<materialDesign:PackIcon Kind="FormatListBulleted" VerticalAlignment="Center" Margin="0 0 5 0" />
|
||||||
<TextBlock Text="{Binding PropertyDescription.Name}" ToolTip="{Binding PropertyDescription.Description}" VerticalAlignment="Center" />
|
<TextBlock Text="{Binding PropertyDescription.Name}" ToolTip="{Binding PropertyDescription.Description}" ToolTipService.ShowOnDisabled="True" VerticalAlignment="Center" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
<DataTemplate DataType="{x:Type dataModel:DataModelPropertyViewModel}">
|
<DataTemplate DataType="{x:Type dataModel:DataModelPropertyViewModel}">
|
||||||
@ -54,12 +54,12 @@
|
|||||||
<StackPanel>
|
<StackPanel>
|
||||||
<StackPanel.Resources>
|
<StackPanel.Resources>
|
||||||
<DataTemplate DataType="{x:Type dataModel:DataModelPropertiesViewModel}">
|
<DataTemplate DataType="{x:Type dataModel:DataModelPropertiesViewModel}">
|
||||||
<TextBlock Text="{Binding PropertyDescription.Name}" ToolTip="{Binding PropertyDescription.Description}" />
|
<TextBlock Text="{Binding PropertyDescription.Name}" ToolTip="{Binding PropertyDescription.Description}" ToolTipService.ShowOnDisabled="True"/>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
<DataTemplate DataType="{x:Type dataModel:DataModelListViewModel}">
|
<DataTemplate DataType="{x:Type dataModel:DataModelListViewModel}">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<materialDesign:PackIcon Kind="FormatListBulleted" VerticalAlignment="Center" Margin="0 0 5 0" />
|
<materialDesign:PackIcon Kind="FormatListBulleted" VerticalAlignment="Center" Margin="0 0 5 0" />
|
||||||
<TextBlock Text="{Binding PropertyDescription.Name}" ToolTip="{Binding PropertyDescription.Description}" VerticalAlignment="Center" />
|
<TextBlock Text="{Binding PropertyDescription.Name}" ToolTip="{Binding PropertyDescription.Description}" ToolTipService.ShowOnDisabled="True" VerticalAlignment="Center"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
<DataTemplate DataType="{x:Type dataModel:DataModelPropertyViewModel}">
|
<DataTemplate DataType="{x:Type dataModel:DataModelPropertyViewModel}">
|
||||||
@ -70,25 +70,11 @@
|
|||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
<!-- Value description -->
|
<!-- Value description -->
|
||||||
<TextBlock Grid.Column="0" Text="{Binding PropertyDescription.Name}" ToolTip="{Binding PropertyDescription.Description}" />
|
<TextBlock Grid.Column="0" Text="{Binding PropertyDescription.Name}" ToolTip="{Binding PropertyDescription.Description}" ToolTipService.ShowOnDisabled="True"/>
|
||||||
|
|
||||||
<!-- Value display -->
|
<!-- Value display -->
|
||||||
<StackPanel Grid.Column="1">
|
<StackPanel Grid.Column="1">
|
||||||
<TextBlock Text="{Binding DisplayValue, Mode=OneWay}"
|
<ContentControl s:View.Model="{Binding DisplayViewModel}" FontFamily="Consolas" Margin="15 0.5 0 0"/>
|
||||||
FontFamily="Consolas"
|
|
||||||
HorizontalAlignment="Right"
|
|
||||||
Visibility="{Binding ShowToString, Converter={x:Static s:BoolToVisibilityConverter.Instance}, Mode=OneWay}"
|
|
||||||
Margin="15 0.5 0 0" />
|
|
||||||
<TextBlock Text="null"
|
|
||||||
FontFamily="Consolas"
|
|
||||||
HorizontalAlignment="Right"
|
|
||||||
Foreground="{DynamicResource MaterialDesignCheckBoxDisabled}"
|
|
||||||
Margin="15 0.5 0 0"
|
|
||||||
Visibility="{Binding ShowNull, Converter={x:Static s:BoolToVisibilityConverter.Instance}, Mode=OneWay}" />
|
|
||||||
<ContentControl s:View.Model="{Binding DisplayViewModel}"
|
|
||||||
FontFamily="Consolas"
|
|
||||||
Margin="15 0.5 0 0"
|
|
||||||
Visibility="{Binding ShowViewModel, Converter={x:Static s:BoolToVisibilityConverter.Instance}, Mode=OneWay}" />
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|||||||
@ -32,9 +32,9 @@ namespace Artemis.UI.Screens.ProfileEditor.Dialogs
|
|||||||
|
|
||||||
public void Accept()
|
public void Accept()
|
||||||
{
|
{
|
||||||
_profileService.ImportProfile(Document.Text, ProfileModule);
|
var descriptor = _profileService.ImportProfile(Document.Text, ProfileModule);
|
||||||
_mainMessageQueue.Enqueue("Profile imported.");
|
_mainMessageQueue.Enqueue("Profile imported.");
|
||||||
Session.Close();
|
Session.Close(descriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Cancel()
|
public void Cancel()
|
||||||
|
|||||||
@ -221,7 +221,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
|
|||||||
NotifyOfPropertyChange(nameof(TimeCaretPosition));
|
NotifyOfPropertyChange(nameof(TimeCaretPosition));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ProfileEditorServiceOnSelectedDataBindingChanged(object? sender, EventArgs e)
|
private void ProfileEditorServiceOnSelectedDataBindingChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
RightSideIndex = ProfileEditorService.SelectedDataBinding != null ? 1 : 0;
|
RightSideIndex = ProfileEditorService.SelectedDataBinding != null ? 1 : 0;
|
||||||
}
|
}
|
||||||
@ -562,20 +562,23 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
|
|||||||
Execute.PostToUIThread(() =>
|
Execute.PostToUIThread(() =>
|
||||||
{
|
{
|
||||||
var newTime = ProfileEditorService.CurrentTime.Add(TimeSpan.FromSeconds(e.DeltaTime));
|
var newTime = ProfileEditorService.CurrentTime.Add(TimeSpan.FromSeconds(e.DeltaTime));
|
||||||
if (Repeating && RepeatTimeline)
|
if (SelectedProfileElement != null)
|
||||||
{
|
{
|
||||||
if (newTime > SelectedProfileElement.TimelineLength)
|
if (Repeating && RepeatTimeline)
|
||||||
newTime = TimeSpan.Zero;
|
{
|
||||||
}
|
if (newTime > SelectedProfileElement.TimelineLength)
|
||||||
else if (Repeating && RepeatSegment)
|
newTime = TimeSpan.Zero;
|
||||||
{
|
}
|
||||||
if (newTime > GetCurrentSegmentEnd())
|
else if (Repeating && RepeatSegment)
|
||||||
newTime = GetCurrentSegmentStart();
|
{
|
||||||
}
|
if (newTime > GetCurrentSegmentEnd())
|
||||||
else if (newTime > SelectedProfileElement.TimelineLength)
|
newTime = GetCurrentSegmentStart();
|
||||||
{
|
}
|
||||||
newTime = SelectedProfileElement.TimelineLength;
|
else if (newTime > SelectedProfileElement.TimelineLength)
|
||||||
Pause();
|
{
|
||||||
|
newTime = SelectedProfileElement.TimelineLength;
|
||||||
|
Pause();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ProfileEditorService.CurrentTime = newTime;
|
ProfileEditorService.CurrentTime = newTime;
|
||||||
|
|||||||
@ -10,14 +10,38 @@
|
|||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="450" d:DesignWidth="800">
|
d:DesignHeight="450" d:DesignWidth="800">
|
||||||
<UserControl.Resources>
|
<UserControl.Resources>
|
||||||
<converters:NullToVisibilityConverter x:Key="NullToVisibilityConverter" />
|
|
||||||
<converters:PropertyTreeMarginConverter Length="20" x:Key="PropertyTreeMarginConverter" />
|
<converters:PropertyTreeMarginConverter Length="20" x:Key="PropertyTreeMarginConverter" />
|
||||||
|
<Style x:Key="DataBindingsButton" TargetType="shared:LockableToggleButton" BasedOn="{StaticResource MaterialDesignFlatToggleButton}">
|
||||||
|
<Style.Triggers>
|
||||||
|
<EventTrigger RoutedEvent="Button.Click">
|
||||||
|
<EventTrigger.Actions>
|
||||||
|
<BeginStoryboard>
|
||||||
|
<Storyboard>
|
||||||
|
<BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsEnabled">
|
||||||
|
<DiscreteBooleanKeyFrame KeyTime="00:00:00" Value="False" />
|
||||||
|
<DiscreteBooleanKeyFrame KeyTime="00:00:00.3" Value="True" />
|
||||||
|
</BooleanAnimationUsingKeyFrames>
|
||||||
|
</Storyboard>
|
||||||
|
</BeginStoryboard>
|
||||||
|
</EventTrigger.Actions>
|
||||||
|
</EventTrigger>
|
||||||
|
</Style.Triggers>
|
||||||
|
</Style>
|
||||||
</UserControl.Resources>
|
</UserControl.Resources>
|
||||||
|
|
||||||
<Border Name="Bd"
|
<Border Name="Bd"
|
||||||
BorderBrush="{DynamicResource MaterialDesignDivider}"
|
BorderBrush="{DynamicResource MaterialDesignDivider}"
|
||||||
BorderThickness="0,0,0,1"
|
BorderThickness="0,0,0,1"
|
||||||
Height="25">
|
Height="25">
|
||||||
|
<Border.Style>
|
||||||
|
<Style TargetType="Border">
|
||||||
|
<Style.Triggers>
|
||||||
|
<DataTrigger Binding="{Binding LayerPropertyViewModel.IsHighlighted, Mode=OneWay}" Value="True">
|
||||||
|
<Setter Property="Background" Value="{DynamicResource MaterialDesignPaper}" />
|
||||||
|
</DataTrigger>
|
||||||
|
</Style.Triggers>
|
||||||
|
</Style>
|
||||||
|
</Border.Style>
|
||||||
<Grid Margin="{Binding Converter={StaticResource PropertyTreeMarginConverter}}">
|
<Grid Margin="{Binding Converter={StaticResource PropertyTreeMarginConverter}}">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" />
|
<ColumnDefinition Width="Auto" />
|
||||||
@ -55,7 +79,7 @@
|
|||||||
</ContentControl>
|
</ContentControl>
|
||||||
|
|
||||||
<shared:LockableToggleButton Grid.Column="3"
|
<shared:LockableToggleButton Grid.Column="3"
|
||||||
Style="{StaticResource MaterialDesignFlatToggleButton}"
|
Style="{StaticResource DataBindingsButton}"
|
||||||
ToolTip="Change the property's data binding"
|
ToolTip="Change the property's data binding"
|
||||||
Width="20"
|
Width="20"
|
||||||
Height="20"
|
Height="20"
|
||||||
|
|||||||
@ -6,6 +6,7 @@ using System.Windows;
|
|||||||
using Artemis.Core;
|
using Artemis.Core;
|
||||||
using Artemis.Core.Modules;
|
using Artemis.Core.Modules;
|
||||||
using Artemis.Core.Services;
|
using Artemis.Core.Services;
|
||||||
|
using Artemis.UI.Extensions;
|
||||||
using Artemis.UI.Screens.ProfileEditor.Dialogs;
|
using Artemis.UI.Screens.ProfileEditor.Dialogs;
|
||||||
using Artemis.UI.Screens.ProfileEditor.DisplayConditions;
|
using Artemis.UI.Screens.ProfileEditor.DisplayConditions;
|
||||||
using Artemis.UI.Screens.ProfileEditor.LayerProperties;
|
using Artemis.UI.Screens.ProfileEditor.LayerProperties;
|
||||||
@ -58,7 +59,7 @@ namespace Artemis.UI.Screens.ProfileEditor
|
|||||||
DialogService = dialogService;
|
DialogService = dialogService;
|
||||||
|
|
||||||
Profiles = new BindableCollection<ProfileDescriptor>();
|
Profiles = new BindableCollection<ProfileDescriptor>();
|
||||||
|
|
||||||
// Populate the panels
|
// Populate the panels
|
||||||
ProfileViewModel = profileViewModel;
|
ProfileViewModel = profileViewModel;
|
||||||
ProfileTreeViewModel = profileTreeViewModel;
|
ProfileTreeViewModel = profileTreeViewModel;
|
||||||
@ -190,10 +191,17 @@ namespace Artemis.UI.Screens.ProfileEditor
|
|||||||
|
|
||||||
public async Task ImportProfile()
|
public async Task ImportProfile()
|
||||||
{
|
{
|
||||||
await DialogService.ShowDialog<ProfileImportViewModel>(new Dictionary<string, object>
|
var result = await DialogService.ShowDialog<ProfileImportViewModel>(new Dictionary<string, object>
|
||||||
{
|
{
|
||||||
{"profileModule", Module}
|
{"profileModule", Module}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (result != null && result is ProfileDescriptor descriptor)
|
||||||
|
{
|
||||||
|
Profiles.Add(descriptor);
|
||||||
|
Profiles.Sort(p => p.Name);
|
||||||
|
SelectedProfile = descriptor;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Undo()
|
public void Undo()
|
||||||
|
|||||||
@ -82,7 +82,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Artemis.Plugins.Modules.Ove
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DataModelExpansions", "DataModelExpansions", "{5A5B55D7-F631-467A-A16F-B880DE4E8909}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DataModelExpansions", "DataModelExpansions", "{5A5B55D7-F631-467A-A16F-B880DE4E8909}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Artemis.Plugins.DataModelExpansions.TestData", "Artemis.Plugins.DataModelExpansions.TestData\Artemis.Plugins.DataModelExpansions.TestData.csproj", "{5353C9A2-2D9A-4051-8599-AFE56D54B882}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Artemis.Plugins.DataModelExpansions.TestData", "Plugins\Artemis.Plugins.DataModelExpansions.TestData\Artemis.Plugins.DataModelExpansions.TestData.csproj", "{5353C9A2-2D9A-4051-8599-AFE56D54B882}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
|||||||
@ -24,7 +24,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Artemis.Core\Artemis.Core.csproj" />
|
<ProjectReference Include="..\..\Artemis.Core\Artemis.Core.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -8,7 +8,7 @@ namespace Artemis.Plugins.DataModelExpansions.TestData.DataModels
|
|||||||
{
|
{
|
||||||
public PluginDataModel()
|
public PluginDataModel()
|
||||||
{
|
{
|
||||||
PluginSubDataModel = new PluginSubDataModel();
|
// PluginSubDataModel = new PluginSubDataModel();
|
||||||
ListItems = new List<SomeListItem>();
|
ListItems = new List<SomeListItem>();
|
||||||
for (var i = 0; i < 20; i++)
|
for (var i = 0; i < 20; i++)
|
||||||
ListItems.Add(new SomeListItem {ItemName = $"Item {i + 1}", Number = i});
|
ListItems.Add(new SomeListItem {ItemName = $"Item {i + 1}", Number = i});
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 769 KiB |
@ -0,0 +1,37 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<Device xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<Name>G.Skill Trident Z RGB</Name>
|
||||||
|
<Description>Physical layout of G.Skill Trident Z RGB</Description>
|
||||||
|
<Type>DRAM</Type>
|
||||||
|
<Lighting>Key</Lighting>
|
||||||
|
<Vendor>G.Skill</Vendor>
|
||||||
|
<Model>Trident Z RGB</Model>
|
||||||
|
<Width>9</Width>
|
||||||
|
<Height>135</Height>
|
||||||
|
<LedUnitWidth>9</LedUnitWidth>
|
||||||
|
<LedUnitHeight>27</LedUnitHeight>
|
||||||
|
<ImageBasePath>Images\Asus\Drams</ImageBasePath>
|
||||||
|
<DeviceImage>TridentZ.PNG</DeviceImage>
|
||||||
|
<Leds>
|
||||||
|
<Led Id="DRAM1">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
</Led>
|
||||||
|
<Led Id="DRAM2">
|
||||||
|
<X>=</X>
|
||||||
|
<Y>+</Y>
|
||||||
|
</Led>
|
||||||
|
<Led Id="DRAM3">
|
||||||
|
<X>=</X>
|
||||||
|
<Y>+</Y>
|
||||||
|
</Led>
|
||||||
|
<Led Id="DRAM4">
|
||||||
|
<X>=</X>
|
||||||
|
<Y>+</Y>
|
||||||
|
</Led>
|
||||||
|
<Led Id="DRAM5">
|
||||||
|
<X>=</X>
|
||||||
|
<Y>+</Y>
|
||||||
|
</Led>
|
||||||
|
</Leds>
|
||||||
|
</Device>
|
||||||
@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<Device xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<Name>Asus ROG STRIX Z390-F</Name>
|
||||||
|
<Description>Asus ROG STRIX Z390-F</Description>
|
||||||
|
<Type>Mainboard</Type>
|
||||||
|
<Lighting>Device</Lighting>
|
||||||
|
<Vendor>Asus</Vendor>
|
||||||
|
<Model>ROG STRIX Z390-F</Model>
|
||||||
|
<Width>244</Width>
|
||||||
|
<Height>305</Height>
|
||||||
|
<LedUnitWidth>15</LedUnitWidth>
|
||||||
|
<LedUnitHeight>110</LedUnitHeight>
|
||||||
|
<ImageBasePath>Images\Asus\Mainboards</ImageBasePath>
|
||||||
|
<DeviceImage>ROG_Strix_Z390-F_Gaming.png</DeviceImage>
|
||||||
|
<Leds>
|
||||||
|
<Led Id="Mainboard1">
|
||||||
|
<X>8</X>
|
||||||
|
<Y>40</Y>
|
||||||
|
</Led>
|
||||||
|
<Led Id="Mainboard2" />
|
||||||
|
<Led Id="Mainboard3" />
|
||||||
|
<Led Id="Mainboard4">
|
||||||
|
<X>100</X>
|
||||||
|
<Y>150</Y>
|
||||||
|
<Width>8</Width>
|
||||||
|
<Height>0.1</Height>
|
||||||
|
</Led>
|
||||||
|
<Led Id="Mainboard5">
|
||||||
|
<X>0</X>
|
||||||
|
<Y>0</Y>
|
||||||
|
<Width>0</Width>
|
||||||
|
<Height>0</Height>
|
||||||
|
</Led>
|
||||||
|
</Leds>
|
||||||
|
</Device>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 228 KiB |
@ -1,14 +1,13 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
|
|
||||||
<Device xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
<Device xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||||
<Name>Corsair LL RGB Fan</Name>
|
<Name>Corsair LL RGB Fan</Name>
|
||||||
<Description>Physical layout of Corsairs LL RGB Fan</Description>
|
<Description>Physical layout of Corsairs LL RGB Fan</Description>
|
||||||
<Type>Fan</Type>
|
<Type>Fan</Type>
|
||||||
<Lighting>Key</Lighting>
|
<Lighting>Key</Lighting>
|
||||||
<Vendor>Corsair</Vendor>
|
<Vendor>Corsair</Vendor>
|
||||||
<Model>MM800 RGB</Model>
|
<Model>LL RGB</Model>
|
||||||
<Width>140</Width>
|
<Width>120</Width>
|
||||||
<Height>140</Height>
|
<Height>120</Height>
|
||||||
<LedUnitWidth>20</LedUnitWidth>
|
<LedUnitWidth>20</LedUnitWidth>
|
||||||
<LedUnitHeight>20</LedUnitHeight>
|
<LedUnitHeight>20</LedUnitHeight>
|
||||||
<ImageBasePath>Images\Corsair\Customs</ImageBasePath>
|
<ImageBasePath>Images\Corsair\Customs</ImageBasePath>
|
||||||
@ -16,8 +15,8 @@
|
|||||||
<Leds>
|
<Leds>
|
||||||
<Led Id="Fan1">
|
<Led Id="Fan1">
|
||||||
<Shape>Circle</Shape>
|
<Shape>Circle</Shape>
|
||||||
<X>59.5</X>
|
<X>50</X>
|
||||||
<Y>40</Y>
|
<Y>30</Y>
|
||||||
</Led>
|
</Led>
|
||||||
<Led Id="Fan4">
|
<Led Id="Fan4">
|
||||||
<Shape>Circle</Shape>
|
<Shape>Circle</Shape>
|
||||||
@ -33,66 +32,65 @@
|
|||||||
<X>-</X>
|
<X>-</X>
|
||||||
<Y>-</Y>
|
<Y>-</Y>
|
||||||
</Led>
|
</Led>
|
||||||
|
|
||||||
<Led Id="Fan5">
|
<Led Id="Fan5">
|
||||||
<Shape>Circle</Shape>
|
<Shape>Circle</Shape>
|
||||||
<X>7.9</X>
|
<X>6.7</X>
|
||||||
<Y>29.8</Y>
|
<Y>25</Y>
|
||||||
</Led>
|
</Led>
|
||||||
<Led Id="Fan6">
|
<Led Id="Fan6">
|
||||||
<Shape>Circle</Shape>
|
<Shape>Circle</Shape>
|
||||||
<X>0.4</X>
|
<X>0</X>
|
||||||
<Y>59.9</Y>
|
<Y>50</Y>
|
||||||
</Led>
|
</Led>
|
||||||
<Led Id="Fan7">
|
<Led Id="Fan7">
|
||||||
<Shape>Circle</Shape>
|
<Shape>Circle</Shape>
|
||||||
<X>8</X>
|
<X>6.7</X>
|
||||||
<Y>90.4</Y>
|
<Y>75</Y>
|
||||||
</Led>
|
</Led>
|
||||||
<Led Id="Fan8">
|
<Led Id="Fan8">
|
||||||
<Shape>Circle</Shape>
|
<Shape>Circle</Shape>
|
||||||
<X>30.7</X>
|
<X>25</X>
|
||||||
<Y>113.1</Y>
|
<Y>93.3</Y>
|
||||||
</Led>
|
</Led>
|
||||||
<Led Id="Fan9">
|
<Led Id="Fan9">
|
||||||
<Shape>Circle</Shape>
|
<Shape>Circle</Shape>
|
||||||
<X>59.5</X>
|
<X>50</X>
|
||||||
<Y>120.5</Y>
|
<Y>100</Y>
|
||||||
</Led>
|
</Led>
|
||||||
<Led Id="Fan10">
|
<Led Id="Fan10">
|
||||||
<Shape>Circle</Shape>
|
<Shape>Circle</Shape>
|
||||||
<X>90.5</X>
|
<X>75</X>
|
||||||
<Y>113.1</Y>
|
<Y>93.3</Y>
|
||||||
</Led>
|
</Led>
|
||||||
<Led Id="Fan11">
|
<Led Id="Fan11">
|
||||||
<Shape>Circle</Shape>
|
<Shape>Circle</Shape>
|
||||||
<X>113</X>
|
<X>93.3</X>
|
||||||
<Y>90.4</Y>
|
<Y>75</Y>
|
||||||
</Led>
|
</Led>
|
||||||
<Led Id="Fan12">
|
<Led Id="Fan12">
|
||||||
<Shape>Circle</Shape>
|
<Shape>Circle</Shape>
|
||||||
<X>120.5</X>
|
<X>100</X>
|
||||||
<Y>59.9</Y>
|
<Y>50</Y>
|
||||||
</Led>
|
</Led>
|
||||||
<Led Id="Fan13">
|
<Led Id="Fan13">
|
||||||
<Shape>Circle</Shape>
|
<Shape>Circle</Shape>
|
||||||
<X>113</X>
|
<X>93.3</X>
|
||||||
<Y>29.8</Y>
|
<Y>25</Y>
|
||||||
</Led>
|
</Led>
|
||||||
<Led Id="Fan14">
|
<Led Id="Fan14">
|
||||||
<Shape>Circle</Shape>
|
<Shape>Circle</Shape>
|
||||||
<X>90.5</X>
|
<X>75</X>
|
||||||
<Y>7.6</Y>
|
<Y>6.7</Y>
|
||||||
</Led>
|
</Led>
|
||||||
<Led Id="Fan15">
|
<Led Id="Fan15">
|
||||||
<Shape>Circle</Shape>
|
<Shape>Circle</Shape>
|
||||||
<X>59.5</X>
|
<X>50</X>
|
||||||
<Y>0</Y>
|
<Y>0</Y>
|
||||||
</Led>
|
</Led>
|
||||||
<Led Id="Fan16">
|
<Led Id="Fan16">
|
||||||
<Shape>Circle</Shape>
|
<Shape>Circle</Shape>
|
||||||
<X>28</X>
|
<X>25</X>
|
||||||
<Y>7.6</Y>
|
<Y>6.7</Y>
|
||||||
</Led>
|
</Led>
|
||||||
</Leds>
|
</Leds>
|
||||||
</Device>
|
</Device>
|
||||||
@ -0,0 +1,36 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<Device xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<Name>Corsair ML RGB Fan</Name>
|
||||||
|
<Description>Physical layout of Corsairs ML RGB Fan</Description>
|
||||||
|
<Type>Fan</Type>
|
||||||
|
<Lighting>Key</Lighting>
|
||||||
|
<Vendor>Corsair</Vendor>
|
||||||
|
<Model>ML PRO RGB</Model>
|
||||||
|
<Width>120</Width>
|
||||||
|
<Height>120</Height>
|
||||||
|
<LedUnitWidth>20</LedUnitWidth>
|
||||||
|
<LedUnitHeight>20</LedUnitHeight>
|
||||||
|
<ImageBasePath>Images\Corsair\Customs</ImageBasePath>
|
||||||
|
<DeviceImage>MLFAN.png</DeviceImage>
|
||||||
|
<Leds>
|
||||||
|
<Led Id="Fan1">
|
||||||
|
<Shape>Circle</Shape>
|
||||||
|
<X>50</X>
|
||||||
|
<Y>30</Y>
|
||||||
|
</Led>
|
||||||
|
<Led Id="Fan4">
|
||||||
|
<Shape>Circle</Shape>
|
||||||
|
<Y>+</Y>
|
||||||
|
</Led>
|
||||||
|
<Led Id="Fan3">
|
||||||
|
<Shape>Circle</Shape>
|
||||||
|
<X>-</X>
|
||||||
|
<Y>+</Y>
|
||||||
|
</Led>
|
||||||
|
<Led Id="Fan2">
|
||||||
|
<Shape>Circle</Shape>
|
||||||
|
<X>-</X>
|
||||||
|
<Y>-</Y>
|
||||||
|
</Led>
|
||||||
|
</Leds>
|
||||||
|
</Device>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 74 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 105 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 240 KiB |
@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<Device xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<Name>Logitech G935</Name>
|
||||||
|
<Description>Layout of the G935 Headset</Description>
|
||||||
|
<Type>Headset</Type>
|
||||||
|
<Lighting>Key</Lighting>
|
||||||
|
<Vendor>Logitech</Vendor>
|
||||||
|
<Model>G935</Model>
|
||||||
|
<Width>200</Width>
|
||||||
|
<Height>213</Height>
|
||||||
|
<LedUnitWidth>15</LedUnitWidth>
|
||||||
|
<LedUnitHeight>15</LedUnitHeight>
|
||||||
|
<ImageBasePath>Images\Logitech\Headsets</ImageBasePath>
|
||||||
|
<DeviceImage>G935.png</DeviceImage>
|
||||||
|
<Leds>
|
||||||
|
<Led Id="Headset1">
|
||||||
|
<Shape> M0.522,0.417 L0.92,0.417 L0.92,0.812 L0.731,0.812 L0.731,0.603 L0.516,0.603z M0.52,0.06 L0.402,0.075 L0.269,0.132 L0.19,0.199 L0.13,0.278 L0.093,0.362 L0.076,0.458 L0.074,0.537 L0.079,0.596 L0.098,0.646 L0.133,0.71 L0.177,0.771 L0.237,0.831 L0.311,0.878 L0.385,0.912 L0.454,0.922 L0.516,0.925 L0.516,0.759 L0.414,0.739 L0.333,0.675 L0.283,0.586 L0.266,0.502 L0.281,0.411 L0.338,0.325 L0.422,0.268 L0.474,0.253 L0.52,0.253z</Shape>
|
||||||
|
<X>70</X>
|
||||||
|
<Y>195</Y>
|
||||||
|
</Led>
|
||||||
|
<Led Id="Headset2">
|
||||||
|
<X>90</X>
|
||||||
|
<Y>110</Y>
|
||||||
|
<Width>1</Width>
|
||||||
|
<Height>6</Height>
|
||||||
|
</Led>
|
||||||
|
</Leds>
|
||||||
|
</Device>
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<Device xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<Name>Logitech G502</Name>
|
||||||
|
<Description>Layout of the G502 mouse</Description>
|
||||||
|
<Type>Mouse</Type>
|
||||||
|
<Lighting>Key</Lighting>
|
||||||
|
<Vendor>Logitech</Vendor>
|
||||||
|
<Model>G502</Model>
|
||||||
|
<Width>75</Width>
|
||||||
|
<Height>130</Height>
|
||||||
|
<LedUnitWidth>15</LedUnitWidth>
|
||||||
|
<LedUnitHeight>15</LedUnitHeight>
|
||||||
|
<ImageBasePath>Images\Logitech\Mice</ImageBasePath>
|
||||||
|
<DeviceImage>G502.png</DeviceImage>
|
||||||
|
<Leds>
|
||||||
|
<Led Id="Mouse1">
|
||||||
|
<X>11</X>
|
||||||
|
<Y>59</Y>
|
||||||
|
<Width>0.3</Width>
|
||||||
|
</Led>
|
||||||
|
<Led Id="Mouse2">
|
||||||
|
<Shape> M0.522,0.417 L0.92,0.417 L0.92,0.812 L0.731,0.812 L0.731,0.603 L0.516,0.603z M0.52,0.06 L0.402,0.075 L0.269,0.132 L0.19,0.199 L0.13,0.278 L0.093,0.362 L0.076,0.458 L0.074,0.537 L0.079,0.596 L0.098,0.646 L0.133,0.71 L0.177,0.771 L0.237,0.831 L0.311,0.878 L0.385,0.912 L0.454,0.922 L0.516,0.925 L0.516,0.759 L0.414,0.739 L0.333,0.675 L0.283,0.586 L0.266,0.502 L0.281,0.411 L0.338,0.325 L0.422,0.268 L0.474,0.253 L0.52,0.253z</Shape>
|
||||||
|
<X>23</X>
|
||||||
|
<Y>82</Y>
|
||||||
|
</Led>
|
||||||
|
</Leds>
|
||||||
|
</Device>
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<Device xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<Name>Logitech Powerplay</Name>
|
||||||
|
<Description>Layout of the Logitech Powerplay</Description>
|
||||||
|
<Type>Mousepad</Type>
|
||||||
|
<Lighting>Device</Lighting>
|
||||||
|
<Vendor>Logitech</Vendor>
|
||||||
|
<Model>Powerplay</Model>
|
||||||
|
<Width>320</Width>
|
||||||
|
<Height>285</Height>
|
||||||
|
<LedUnitWidth>16</LedUnitWidth>
|
||||||
|
<LedUnitHeight>16</LedUnitHeight>
|
||||||
|
<ImageBasePath>Images\Logitech\Mousepads</ImageBasePath>
|
||||||
|
<DeviceImage>Powerplay.png</DeviceImage>
|
||||||
|
<Leds>
|
||||||
|
<Led Id="Custom1">
|
||||||
|
<Shape>Circle</Shape>
|
||||||
|
<X>52</X>
|
||||||
|
<Y>7</Y>
|
||||||
|
<Width>1</Width>
|
||||||
|
<Height>1</Height>
|
||||||
|
</Led>
|
||||||
|
</Leds>
|
||||||
|
</Device>
|
||||||
Loading…
x
Reference in New Issue
Block a user