mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-11 03:19:56 +00:00
Profiles - Added IPluginFeatureDependent interface and implement throughout profiles (#842)
* Profiles - Added IPluginFeatureDependent interface and implement througout profiles * Workshop - Include dependencies in profile upload request
This commit is contained in:
1 parent
28640f9502
commit
e5a5f10286
27 files changed
+209
-24
No files matched your search
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Artemis.Storage.Entities.Profile.Abstract;
|
||||
using Artemis.Storage.Entities.Profile.Conditions;
|
||||
|
||||
@@ -82,4 +83,14 @@ public class AlwaysOnCondition : ICondition
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Implementation of IPluginFeatureDependent
|
||||
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<PluginFeature> GetFeatureDependencies()
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
@@ -325,4 +325,14 @@ public class EventCondition : CorePropertyChanged, INodeScriptCondition
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Implementation of IPluginFeatureDependent
|
||||
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<PluginFeature> GetFeatureDependencies()
|
||||
{
|
||||
return Script.GetFeatureDependencies().Concat(EventPath?.GetFeatureDependencies() ?? []);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
@@ -6,7 +6,7 @@ namespace Artemis.Core;
|
||||
/// <summary>
|
||||
/// Represents a condition applied to a <see cref="ProfileElement" />
|
||||
/// </summary>
|
||||
public interface ICondition : IDisposable, IStorageModel
|
||||
public interface ICondition : IDisposable, IStorageModel, IPluginFeatureDependent
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the entity used to store this condition
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Artemis.Storage.Entities.Profile.Abstract;
|
||||
using Artemis.Storage.Entities.Profile.Conditions;
|
||||
|
||||
@@ -82,4 +83,14 @@ public class PlayOnceCondition : ICondition
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Implementation of IPluginFeatureDependent
|
||||
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<PluginFeature> GetFeatureDependencies()
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Artemis.Storage.Entities.Profile.Abstract;
|
||||
using Artemis.Storage.Entities.Profile.Conditions;
|
||||
@@ -159,6 +160,16 @@ public class StaticCondition : CorePropertyChanged, INodeScriptCondition
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Implementation of IPluginFeatureDependent
|
||||
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<PluginFeature> GetFeatureDependencies()
|
||||
{
|
||||
return Script.GetFeatureDependencies();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -243,4 +243,14 @@ public class DataBinding<TLayerProperty> : IDataBinding
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Implementation of IPluginFeatureDependent
|
||||
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<PluginFeature> GetFeatureDependencies()
|
||||
{
|
||||
return Script.GetFeatureDependencies();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
@@ -8,7 +8,7 @@ namespace Artemis.Core;
|
||||
/// Represents a data binding that binds a certain <see cref="LayerProperty{T}" /> to a value inside a
|
||||
/// <see cref="DataModel" />
|
||||
/// </summary>
|
||||
public interface IDataBinding : IStorageModel, IDisposable
|
||||
public interface IDataBinding : IStorageModel, IDisposable, IPluginFeatureDependent
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the layer property the data binding is applied to
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace Artemis.Core;
|
||||
/// <summary>
|
||||
/// Represents a path that points to a property in data model
|
||||
/// </summary>
|
||||
public class DataModelPath : IStorageModel, IDisposable
|
||||
public class DataModelPath : IStorageModel, IDisposable, IPluginFeatureDependent
|
||||
{
|
||||
private readonly LinkedList<DataModelPathSegment> _segments;
|
||||
private Expression<Func<object, object>>? _accessorLambda;
|
||||
@@ -188,6 +188,14 @@ public class DataModelPath : IStorageModel, IDisposable
|
||||
return string.IsNullOrWhiteSpace(Path) ? "this" : Path;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<PluginFeature> GetFeatureDependencies()
|
||||
{
|
||||
if (Target == null)
|
||||
return [];
|
||||
return [Target.Module];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Occurs whenever the path becomes invalid
|
||||
/// </summary>
|
||||
|
||||
@@ -179,6 +179,14 @@ public sealed class Folder : RenderProfileElement
|
||||
return $"[Folder] {nameof(Name)}: {Name}, {nameof(Order)}: {Order}";
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override IEnumerable<PluginFeature> GetFeatureDependencies()
|
||||
{
|
||||
return LayerEffects.SelectMany(e => e.GetFeatureDependencies())
|
||||
.Concat(Children.SelectMany(c => c.GetFeatureDependencies()))
|
||||
.Concat(DisplayCondition.GetFeatureDependencies());
|
||||
}
|
||||
|
||||
#region Rendering
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
@@ -189,6 +189,16 @@ public sealed class Layer : RenderProfileElement
|
||||
return $"[Layer] {nameof(Name)}: {Name}, {nameof(Order)}: {Order}";
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override IEnumerable<PluginFeature> GetFeatureDependencies()
|
||||
{
|
||||
return LayerEffects.SelectMany(e => e.GetFeatureDependencies())
|
||||
.Concat(LayerBrush?.GetFeatureDependencies() ?? [])
|
||||
.Concat(General.GetFeatureDependencies())
|
||||
.Concat(Transform.GetFeatureDependencies())
|
||||
.Concat(DisplayCondition.GetFeatureDependencies());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Occurs when a property affecting the rendering properties of this layer has been updated
|
||||
/// </summary>
|
||||
@@ -768,7 +778,7 @@ public sealed class Layer : RenderProfileElement
|
||||
|
||||
if (!_leds.Remove(led))
|
||||
return;
|
||||
|
||||
|
||||
CalculateRenderProperties();
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace Artemis.Core;
|
||||
/// initialize these for you.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
public interface ILayerProperty : IStorageModel, IDisposable
|
||||
public interface ILayerProperty : IStorageModel, IDisposable, IPluginFeatureDependent
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the description attribute applied to this property
|
||||
|
||||
@@ -54,6 +54,12 @@ public class LayerProperty<T> : CorePropertyChanged, ILayerProperty
|
||||
return $"{Path} - {CurrentValue} ({PropertyType})";
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<PluginFeature> GetFeatureDependencies()
|
||||
{
|
||||
return DataBinding.GetFeatureDependencies();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Releases the unmanaged resources used by the object and optionally releases the managed resources.
|
||||
/// </summary>
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace Artemis.Core;
|
||||
/// initialize these for you.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
public abstract class LayerPropertyGroup : IDisposable
|
||||
public abstract class LayerPropertyGroup : IDisposable, IPluginFeatureDependent
|
||||
{
|
||||
private readonly List<ILayerProperty> _layerProperties;
|
||||
private readonly List<LayerPropertyGroup> _layerPropertyGroups;
|
||||
@@ -343,4 +343,14 @@ public abstract class LayerPropertyGroup : IDisposable
|
||||
Dispose(true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
#region Implementation of IPluginFeatureDependent
|
||||
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<PluginFeature> GetFeatureDependencies()
|
||||
{
|
||||
return LayerProperties.SelectMany(p => p.GetFeatureDependencies()).Concat(LayerPropertyGroups.SelectMany(g => g.GetFeatureDependencies()));
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
@@ -171,6 +171,12 @@ public sealed class Profile : ProfileElement
|
||||
return $"[Profile] {nameof(Name)}: {Name}";
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override IEnumerable<PluginFeature> GetFeatureDependencies()
|
||||
{
|
||||
return GetRootFolder().GetFeatureDependencies().Concat(Scripts.Select(c => c.ScriptingProvider));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Populates all the LEDs on the elements in this profile
|
||||
/// </summary>
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Artemis.Core;
|
||||
/// <summary>
|
||||
/// Represents an element of a <see cref="Profile" />
|
||||
/// </summary>
|
||||
public abstract class ProfileElement : BreakableModel, IDisposable
|
||||
public abstract class ProfileElement : BreakableModel, IDisposable, IPluginFeatureDependent
|
||||
{
|
||||
internal readonly List<ProfileElement> ChildrenList;
|
||||
private Guid _entityId;
|
||||
@@ -122,6 +122,9 @@ public abstract class ProfileElement : BreakableModel, IDisposable
|
||||
return $"{nameof(EntityId)}: {EntityId}, {nameof(Order)}: {Order}, {nameof(Name)}: {Name}";
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public abstract IEnumerable<PluginFeature> GetFeatureDependencies();
|
||||
|
||||
/// <summary>
|
||||
/// Occurs when a child was added to the <see cref="Children" /> list
|
||||
/// </summary>
|
||||
|
||||
Reference in new issue
Block a user