mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-11 19:36:28 +00:00
Data model visualization - Simplified and improved VMs
Layer conditions - Added left side property selection
This commit is contained in:
1 parent
55555ed6a8
commit
4e1a09308f
38 files changed
+908
-359
No files matched your search
@@ -0,0 +1,36 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Artemis.Core.Models.Profile.Conditions.Abstract
|
||||
{
|
||||
public abstract class DisplayConditionPart
|
||||
{
|
||||
private readonly List<DisplayConditionPart> _children;
|
||||
|
||||
protected DisplayConditionPart()
|
||||
{
|
||||
_children = new List<DisplayConditionPart>();
|
||||
}
|
||||
|
||||
public DisplayConditionPart Parent { get; set; }
|
||||
public IReadOnlyList<DisplayConditionPart> Children => _children.AsReadOnly();
|
||||
|
||||
public void AddChild(DisplayConditionPart displayConditionPart)
|
||||
{
|
||||
if (!_children.Contains(displayConditionPart))
|
||||
{
|
||||
displayConditionPart.Parent = this;
|
||||
_children.Add(displayConditionPart);
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveChild(DisplayConditionPart displayConditionPart)
|
||||
{
|
||||
if (_children.Contains(displayConditionPart))
|
||||
{
|
||||
displayConditionPart.Parent = null;
|
||||
_children.Remove(displayConditionPart);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Artemis.Core.Models.Profile.Conditions.Abstract
|
||||
{
|
||||
public abstract class LayerConditionPart
|
||||
{
|
||||
protected LayerConditionPart()
|
||||
{
|
||||
Children = new List<LayerConditionPart>();
|
||||
}
|
||||
|
||||
public List<LayerConditionPart> Children { get; set; }
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -4,9 +4,9 @@ using Artemis.Core.Plugins.Abstract.DataModels;
|
||||
|
||||
namespace Artemis.Core.Models.Profile.Conditions
|
||||
{
|
||||
public class LayerCondition
|
||||
public class DisplayCondition
|
||||
{
|
||||
public Expression<Func<DataModel, bool>> ExpressionTree { get; set; }
|
||||
public LayerConditionGroup RootGroup { get; set; }
|
||||
public DisplayConditionGroup RootGroup { get; set; }
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace Artemis.Core.Models.Profile.Conditions
|
||||
{
|
||||
public class LayerConditionGroup : LayerConditionPart
|
||||
public class DisplayConditionGroup : DisplayConditionPart
|
||||
{
|
||||
public BooleanOperator BooleanOperator { get; set; }
|
||||
}
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace Artemis.Core.Models.Profile.Conditions
|
||||
{
|
||||
public class LayerConditionListStatement : LayerConditionPart
|
||||
public class DisplayConditionListPredicate : DisplayConditionPart
|
||||
{
|
||||
public ListOperator ListOperator { get; set; }
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ using Artemis.Core.Services.Interfaces;
|
||||
|
||||
namespace Artemis.Core.Models.Profile.Conditions
|
||||
{
|
||||
public abstract class LayerConditionOperator
|
||||
public abstract class DisplayConditionOperator
|
||||
{
|
||||
private IDataModelService _dataModelService;
|
||||
private bool _registered;
|
||||
+2
-2
@@ -3,12 +3,12 @@ using Artemis.Core.Models.Profile.Conditions.Abstract;
|
||||
|
||||
namespace Artemis.Core.Models.Profile.Conditions
|
||||
{
|
||||
public class LayerConditionStatement : LayerConditionPart
|
||||
public class DisplayConditionPredicate : DisplayConditionPart
|
||||
{
|
||||
public Guid DataModelGuid { get; set; }
|
||||
public string PropertyPath { get; set; }
|
||||
|
||||
public LayerConditionOperator Operator { get; set; }
|
||||
public DisplayConditionOperator Operator { get; set; }
|
||||
public object Value { get; set; }
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -4,7 +4,7 @@ using System.Linq.Expressions;
|
||||
|
||||
namespace Artemis.Core.Models.Profile.Conditions.Operators
|
||||
{
|
||||
public class GreaterThanConditionOperator : LayerConditionOperator
|
||||
public class GreaterThanConditionOperator : DisplayConditionOperator
|
||||
{
|
||||
public override IReadOnlyCollection<Type> CompatibleTypes => new List<Type>
|
||||
{
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using Artemis.Core.Extensions;
|
||||
using Artemis.Core.Models.Profile.Conditions;
|
||||
using Artemis.Core.Models.Profile.LayerProperties;
|
||||
using Artemis.Core.Models.Profile.LayerProperties.Attributes;
|
||||
using Artemis.Core.Models.Profile.LayerShapes;
|
||||
@@ -22,6 +23,7 @@ namespace Artemis.Core.Models.Profile
|
||||
/// </summary>
|
||||
public sealed class Layer : EffectProfileElement
|
||||
{
|
||||
private DisplayConditionGroup _displayConditionGroup;
|
||||
private LayerGeneralProperties _general;
|
||||
private SKBitmap _layerBitmap;
|
||||
private BaseLayerBrush _layerBrush;
|
||||
@@ -115,6 +117,15 @@ namespace Artemis.Core.Models.Profile
|
||||
internal set => SetAndNotify(ref _layerBrush, value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the root display condition group
|
||||
/// </summary>
|
||||
public DisplayConditionGroup DisplayConditionGroup
|
||||
{
|
||||
get => _displayConditionGroup;
|
||||
set => SetAndNotify(ref _displayConditionGroup, value);
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"[Layer] {nameof(Name)}: {Name}, {nameof(Order)}: {Order}";
|
||||
|
||||
@@ -21,13 +21,13 @@ namespace Artemis.Core.Services
|
||||
{
|
||||
private readonly List<DataModel> _dataModelExpansions;
|
||||
private readonly IPluginService _pluginService;
|
||||
private readonly List<LayerConditionOperator> _registeredConditionOperators;
|
||||
private readonly List<DisplayConditionOperator> _registeredConditionOperators;
|
||||
|
||||
internal DataModelService(IPluginService pluginService)
|
||||
{
|
||||
_pluginService = pluginService;
|
||||
_dataModelExpansions = new List<DataModel>();
|
||||
_registeredConditionOperators = new List<LayerConditionOperator>();
|
||||
_registeredConditionOperators = new List<DisplayConditionOperator>();
|
||||
|
||||
_pluginService.PluginEnabled += PluginServiceOnPluginEnabled;
|
||||
_pluginService.PluginDisabled += PluginServiceOnPluginDisabled;
|
||||
@@ -81,40 +81,50 @@ namespace Artemis.Core.Services
|
||||
return null;
|
||||
}
|
||||
|
||||
public bool GetPluginExtendsDataModel(Plugin plugin)
|
||||
{
|
||||
if (plugin is Module module)
|
||||
return module.InternalExpandsMainDataModel;
|
||||
if (plugin is BaseDataModelExpansion)
|
||||
return true;
|
||||
|
||||
public void RegisterConditionOperator(PluginInfo pluginInfo, LayerConditionOperator layerConditionOperator)
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public void RegisterConditionOperator(PluginInfo pluginInfo, DisplayConditionOperator displayConditionOperator)
|
||||
{
|
||||
if (pluginInfo == null)
|
||||
throw new ArgumentNullException(nameof(pluginInfo));
|
||||
if (layerConditionOperator == null)
|
||||
throw new ArgumentNullException(nameof(layerConditionOperator));
|
||||
if (displayConditionOperator == null)
|
||||
throw new ArgumentNullException(nameof(displayConditionOperator));
|
||||
|
||||
lock (_registeredConditionOperators)
|
||||
{
|
||||
if (_registeredConditionOperators.Contains(layerConditionOperator))
|
||||
if (_registeredConditionOperators.Contains(displayConditionOperator))
|
||||
return;
|
||||
|
||||
layerConditionOperator.Register(pluginInfo, this);
|
||||
_registeredConditionOperators.Add(layerConditionOperator);
|
||||
displayConditionOperator.Register(pluginInfo, this);
|
||||
_registeredConditionOperators.Add(displayConditionOperator);
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveConditionOperator(LayerConditionOperator layerConditionOperator)
|
||||
public void RemoveConditionOperator(DisplayConditionOperator displayConditionOperator)
|
||||
{
|
||||
if (layerConditionOperator == null)
|
||||
throw new ArgumentNullException(nameof(layerConditionOperator));
|
||||
if (displayConditionOperator == null)
|
||||
throw new ArgumentNullException(nameof(displayConditionOperator));
|
||||
|
||||
lock (_registeredConditionOperators)
|
||||
{
|
||||
if (!_registeredConditionOperators.Contains(layerConditionOperator))
|
||||
if (!_registeredConditionOperators.Contains(displayConditionOperator))
|
||||
return;
|
||||
|
||||
layerConditionOperator.Unsubscribe();
|
||||
_registeredConditionOperators.Remove(layerConditionOperator);
|
||||
displayConditionOperator.Unsubscribe();
|
||||
_registeredConditionOperators.Remove(displayConditionOperator);
|
||||
}
|
||||
}
|
||||
|
||||
public List<LayerConditionOperator> GetCompatibleConditionOperators(Type type)
|
||||
public List<DisplayConditionOperator> GetCompatibleConditionOperators(Type type)
|
||||
{
|
||||
lock (_registeredConditionOperators)
|
||||
{
|
||||
|
||||
@@ -29,17 +29,24 @@ namespace Artemis.Core.Services.Interfaces
|
||||
/// <param name="plugin">Should be a module with a data model or a data model expansion</param>
|
||||
DataModel GetPluginDataModel(Plugin plugin);
|
||||
|
||||
/// <summary>
|
||||
/// Determines whether the given plugin expands the main data model
|
||||
/// </summary>
|
||||
/// <param name="plugin"></param>
|
||||
/// <returns></returns>
|
||||
bool GetPluginExtendsDataModel(Plugin plugin);
|
||||
|
||||
/// <summary>
|
||||
/// Registers a new condition operator for use in layer conditions
|
||||
/// </summary>
|
||||
/// <param name="pluginInfo">The PluginInfo of the plugin this condition operator belongs to</param>
|
||||
/// <param name="layerConditionOperator">The condition operator to register</param>
|
||||
void RegisterConditionOperator([NotNull] PluginInfo pluginInfo, [NotNull] LayerConditionOperator layerConditionOperator);
|
||||
/// <param name="displayConditionOperator">The condition operator to register</param>
|
||||
void RegisterConditionOperator([NotNull] PluginInfo pluginInfo, [NotNull] DisplayConditionOperator displayConditionOperator);
|
||||
|
||||
/// <summary>
|
||||
/// Removes a condition operator so it is no longer available for use in layer conditions
|
||||
/// </summary>
|
||||
/// <param name="layerConditionOperator">The layer condition operator to remove</param>
|
||||
void RemoveConditionOperator([NotNull] LayerConditionOperator layerConditionOperator);
|
||||
/// <param name="displayConditionOperator">The layer condition operator to remove</param>
|
||||
void RemoveConditionOperator([NotNull] DisplayConditionOperator displayConditionOperator);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user