mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-31 09:43:46 +00:00
Profile editor - Moved layer property input to the Shared UI project
This commit is contained in:
parent
eda57f6d32
commit
92faafe1de
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using Artemis.Core.Models.Profile.LayerProperties.Attributes;
|
||||||
using Artemis.Storage.Entities.Profile;
|
using Artemis.Storage.Entities.Profile;
|
||||||
|
|
||||||
namespace Artemis.Core.Models.Profile.LayerProperties
|
namespace Artemis.Core.Models.Profile.LayerProperties
|
||||||
@ -74,6 +75,8 @@ namespace Artemis.Core.Models.Profile.LayerProperties
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsCoreProperty { get; internal set; }
|
public bool IsCoreProperty { get; internal set; }
|
||||||
|
|
||||||
|
public PropertyDescriptionAttribute PropertyDescription { get; internal set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a list of all the keyframes in their non-generic base form, without their values being available
|
/// Gets a list of all the keyframes in their non-generic base form, without their values being available
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@ -18,7 +18,7 @@ namespace Artemis.Core.Models.Profile.LayerProperties
|
|||||||
/// </para>
|
/// </para>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="T">The type of property encapsulated in this layer property</typeparam>
|
/// <typeparam name="T">The type of property encapsulated in this layer property</typeparam>
|
||||||
public abstract class LayerProperty<T> : BaseLayerProperty
|
public class LayerProperty<T> : BaseLayerProperty
|
||||||
{
|
{
|
||||||
private T _baseValue;
|
private T _baseValue;
|
||||||
private T _currentValue;
|
private T _currentValue;
|
||||||
@ -172,7 +172,10 @@ namespace Artemis.Core.Models.Profile.LayerProperties
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="keyframeProgress">The linear current keyframe progress</param>
|
/// <param name="keyframeProgress">The linear current keyframe progress</param>
|
||||||
/// <param name="keyframeProgressEased">The current keyframe progress, eased with the current easing function</param>
|
/// <param name="keyframeProgressEased">The current keyframe progress, eased with the current easing function</param>
|
||||||
protected abstract void UpdateCurrentValue(float keyframeProgress, float keyframeProgressEased);
|
protected virtual void UpdateCurrentValue(float keyframeProgress, float keyframeProgressEased)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Updates the property, moving the timeline forwards by the provided <paramref name="deltaTime" />
|
/// Updates the property, moving the timeline forwards by the provided <paramref name="deltaTime" />
|
||||||
|
|||||||
@ -51,6 +51,8 @@ namespace Artemis.Core.Models.Profile
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsCorePropertyGroup { get; internal set; }
|
public bool IsCorePropertyGroup { get; internal set; }
|
||||||
|
|
||||||
|
public PropertyGroupDescriptionAttribute GroupDescription { get; internal set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets whether the property is hidden in the UI
|
/// Gets or sets whether the property is hidden in the UI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -132,7 +134,9 @@ namespace Artemis.Core.Models.Profile
|
|||||||
|
|
||||||
var instance = (BaseLayerProperty) Activator.CreateInstance(propertyInfo.PropertyType, true);
|
var instance = (BaseLayerProperty) Activator.CreateInstance(propertyInfo.PropertyType, true);
|
||||||
instance.Parent = this;
|
instance.Parent = this;
|
||||||
|
instance.PropertyDescription = (PropertyDescriptionAttribute)propertyDescription;
|
||||||
instance.Layer = layer;
|
instance.Layer = layer;
|
||||||
|
|
||||||
InitializeProperty(layer, path + propertyInfo.Name, instance);
|
InitializeProperty(layer, path + propertyInfo.Name, instance);
|
||||||
propertyInfo.SetValue(this, instance);
|
propertyInfo.SetValue(this, instance);
|
||||||
_layerProperties.Add(instance);
|
_layerProperties.Add(instance);
|
||||||
@ -147,6 +151,7 @@ namespace Artemis.Core.Models.Profile
|
|||||||
|
|
||||||
var instance = (LayerPropertyGroup) Activator.CreateInstance(propertyInfo.PropertyType);
|
var instance = (LayerPropertyGroup) Activator.CreateInstance(propertyInfo.PropertyType);
|
||||||
instance.Parent = this;
|
instance.Parent = this;
|
||||||
|
instance.GroupDescription = (PropertyGroupDescriptionAttribute)propertyGroupDescription;
|
||||||
instance.InitializeProperties(layerService, layer, $"{path}{propertyInfo.Name}.");
|
instance.InitializeProperties(layerService, layer, $"{path}{propertyInfo.Name}.");
|
||||||
propertyInfo.SetValue(this, instance);
|
propertyInfo.SetValue(this, instance);
|
||||||
_layerPropertyGroups.Add(instance);
|
_layerPropertyGroups.Add(instance);
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using Artemis.Core.Extensions;
|
using Artemis.Core.Extensions;
|
||||||
using Artemis.Core.Plugins.Models;
|
using Artemis.Core.Plugins.Models;
|
||||||
@ -44,12 +43,7 @@ namespace Artemis.Core.Plugins.Abstract
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Dispose()
|
protected override void DisablePlugin()
|
||||||
{
|
|
||||||
// Does not happen with device providers, they require Artemis to restart
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void DisablePlugin()
|
|
||||||
{
|
{
|
||||||
// Does not happen with device providers, they require Artemis to restart
|
// Does not happen with device providers, they require Artemis to restart
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,30 +17,35 @@ namespace Artemis.Core.Plugins.Abstract
|
|||||||
|
|
||||||
public PluginInfo PluginInfo { get; internal set; }
|
public PluginInfo PluginInfo { get; internal set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets whether the plugin is enabled
|
||||||
|
/// </summary>
|
||||||
|
public bool Enabled { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets whether this plugin has a configuration view model.
|
/// Gets or sets whether this plugin has a configuration view model.
|
||||||
/// If set to true, <see cref="GetConfigurationViewModel" /> will be called when the plugin is configured from the UI.
|
/// If set to true, <see cref="GetConfigurationViewModel" /> will be called when the plugin is configured from the UI.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HasConfigurationViewModel { get; protected set; }
|
public bool HasConfigurationViewModel { get; protected set; }
|
||||||
|
|
||||||
/// <inheritdoc />
|
public void Dispose()
|
||||||
/// <summary>
|
{
|
||||||
/// Called when the plugin is unloaded, clean up any unmanaged resources here
|
Dispose(true);
|
||||||
/// </summary>
|
GC.SuppressFinalize(this);
|
||||||
public abstract void Dispose();
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Called when the plugin is activated
|
/// Called when the plugin is activated
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract void EnablePlugin();
|
protected abstract void EnablePlugin();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Called when the plugin is deactivated
|
/// Called when the plugin is deactivated
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract void DisablePlugin();
|
protected abstract void DisablePlugin();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Called when the plugin's configuration window is opened from the UI. The UI will only attempt to open if
|
/// Called when the plugins configuration window is opened from the UI. The UI will only attempt to open if
|
||||||
/// <see cref="HasConfigurationViewModel" /> is set to True.
|
/// <see cref="HasConfigurationViewModel" /> is set to True.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
@ -48,5 +53,49 @@ namespace Artemis.Core.Plugins.Abstract
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Called when Artemis shuts down
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing"></param>
|
||||||
|
protected virtual void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void SetEnabled(bool enable)
|
||||||
|
{
|
||||||
|
if (enable && !Enabled)
|
||||||
|
{
|
||||||
|
EnablePlugin();
|
||||||
|
OnPluginEnabled();
|
||||||
|
}
|
||||||
|
else if (!enable && Enabled)
|
||||||
|
{
|
||||||
|
DisablePlugin();
|
||||||
|
OnPluginDisabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
Enabled = enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Events
|
||||||
|
|
||||||
|
public event EventHandler PluginEnabled;
|
||||||
|
public event EventHandler PluginDisabled;
|
||||||
|
|
||||||
|
protected virtual void OnPluginEnabled()
|
||||||
|
{
|
||||||
|
PluginEnabled?.Invoke(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void OnPluginDisabled()
|
||||||
|
{
|
||||||
|
PluginDisabled?.Invoke(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -15,11 +15,6 @@ namespace Artemis.Core.Plugins.Abstract
|
|||||||
|
|
||||||
public Profile ActiveProfile { get; private set; }
|
public Profile ActiveProfile { get; private set; }
|
||||||
|
|
||||||
public override void EnablePlugin()
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public override void Update(double deltaTime)
|
public override void Update(double deltaTime)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -167,7 +167,7 @@ namespace Artemis.Core.Services
|
|||||||
var threwException = false;
|
var threwException = false;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
pluginInfo.Instance.EnablePlugin();
|
pluginInfo.Instance.SetEnabled(true);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@ -289,7 +289,7 @@ namespace Artemis.Core.Services
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
pluginInfo.Instance.DisablePlugin();
|
pluginInfo.Instance.SetEnabled(false);
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
@ -320,7 +320,7 @@ namespace Artemis.Core.Services
|
|||||||
var threwException = false;
|
var threwException = false;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
plugin.EnablePlugin();
|
plugin.SetEnabled(true);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@ -352,7 +352,7 @@ namespace Artemis.Core.Services
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
plugin.DisablePlugin();
|
plugin.SetEnabled(false);
|
||||||
|
|
||||||
OnPluginDisabled(new PluginEventArgs(plugin.PluginInfo));
|
OnPluginDisabled(new PluginEventArgs(plugin.PluginInfo));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using Artemis.Core.Models.Profile;
|
using Artemis.Core.Models.Profile;
|
||||||
|
|
||||||
namespace Artemis.UI.Events
|
namespace Artemis.UI.Shared.Events
|
||||||
{
|
{
|
||||||
public class ProfileElementEventArgs : EventArgs
|
public class ProfileElementEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
using System;
|
||||||
|
using Artemis.Core;
|
||||||
|
using Artemis.Core.Plugins.Models;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
|
|
||||||
|
namespace Artemis.UI.Shared.PropertyInput
|
||||||
|
{
|
||||||
|
public class PropertyInputRegistration
|
||||||
|
{
|
||||||
|
private readonly IProfileEditorService _profileEditorService;
|
||||||
|
|
||||||
|
internal PropertyInputRegistration(IProfileEditorService profileEditorService, PluginInfo pluginInfo, Type supportedType, Type viewModelType)
|
||||||
|
{
|
||||||
|
_profileEditorService = profileEditorService;
|
||||||
|
PluginInfo = pluginInfo;
|
||||||
|
SupportedType = supportedType;
|
||||||
|
ViewModelType = viewModelType;
|
||||||
|
|
||||||
|
if (PluginInfo != Constants.CorePluginInfo)
|
||||||
|
PluginInfo.Instance.PluginDisabled += InstanceOnPluginDisabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PluginInfo PluginInfo { get; }
|
||||||
|
public Type SupportedType { get; }
|
||||||
|
public Type ViewModelType { get; }
|
||||||
|
|
||||||
|
internal void Unsubscribe()
|
||||||
|
{
|
||||||
|
if (PluginInfo != Constants.CorePluginInfo)
|
||||||
|
PluginInfo.Instance.PluginDisabled -= InstanceOnPluginDisabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void Remove()
|
||||||
|
{
|
||||||
|
// It'll call Unsubscribe for us
|
||||||
|
_profileEditorService.RemovePropertyInput(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InstanceOnPluginDisabled(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,27 +1,32 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using Artemis.Core.Models.Profile.LayerProperties;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.Abstract
|
namespace Artemis.UI.Shared.PropertyInput
|
||||||
{
|
{
|
||||||
public abstract class PropertyInputViewModel<T> : ValidatingModelBase, IDisposable
|
public abstract class PropertyInputViewModel<T> : ValidatingModelBase, IDisposable
|
||||||
{
|
{
|
||||||
private T _inputValue;
|
private T _inputValue;
|
||||||
|
|
||||||
protected PropertyInputViewModel(LayerPropertyViewModel<T> layerPropertyViewModel)
|
protected PropertyInputViewModel(LayerProperty<T> layerProperty, IProfileEditorService profileEditorService)
|
||||||
{
|
{
|
||||||
LayerPropertyViewModel = layerPropertyViewModel;
|
LayerProperty = layerProperty;
|
||||||
LayerPropertyViewModel.LayerProperty.Updated += LayerPropertyOnUpdated;
|
ProfileEditorService = profileEditorService;
|
||||||
|
LayerProperty.Updated += LayerPropertyOnUpdated;
|
||||||
UpdateInputValue();
|
UpdateInputValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected PropertyInputViewModel(LayerPropertyViewModel<T> layerPropertyViewModel, IModelValidator validator) : base(validator)
|
protected PropertyInputViewModel(LayerProperty<T> layerProperty, IProfileEditorService profileEditorService, IModelValidator validator) : base(validator)
|
||||||
{
|
{
|
||||||
LayerPropertyViewModel = layerPropertyViewModel;
|
LayerProperty = layerProperty;
|
||||||
LayerPropertyViewModel.LayerProperty.Updated += LayerPropertyOnUpdated;
|
ProfileEditorService = profileEditorService;
|
||||||
|
LayerProperty.Updated += LayerPropertyOnUpdated;
|
||||||
UpdateInputValue();
|
UpdateInputValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
public LayerPropertyViewModel<T> LayerPropertyViewModel { get; }
|
public LayerProperty<T> LayerProperty { get; }
|
||||||
|
public IProfileEditorService ProfileEditorService { get; }
|
||||||
|
|
||||||
public bool InputDragging { get; private set; }
|
public bool InputDragging { get; private set; }
|
||||||
|
|
||||||
@ -37,7 +42,7 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyI
|
|||||||
|
|
||||||
public virtual void Dispose()
|
public virtual void Dispose()
|
||||||
{
|
{
|
||||||
LayerPropertyViewModel.LayerProperty.Updated -= LayerPropertyOnUpdated;
|
LayerProperty.Updated -= LayerPropertyOnUpdated;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void OnInputValueApplied()
|
protected virtual void OnInputValueApplied()
|
||||||
@ -48,6 +53,19 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyI
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void ApplyInputValue()
|
||||||
|
{
|
||||||
|
// Force the validator to run
|
||||||
|
if (Validator != null)
|
||||||
|
Validate();
|
||||||
|
// Only apply the input value to the layer property if the validator found no errors
|
||||||
|
if (!HasErrors)
|
||||||
|
SetCurrentValue(_inputValue, !InputDragging);
|
||||||
|
|
||||||
|
OnInputValueChanged();
|
||||||
|
OnInputValueApplied();
|
||||||
|
}
|
||||||
|
|
||||||
private void LayerPropertyOnUpdated(object sender, EventArgs e)
|
private void LayerPropertyOnUpdated(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
UpdateInputValue();
|
UpdateInputValue();
|
||||||
@ -56,11 +74,11 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyI
|
|||||||
private void UpdateInputValue()
|
private void UpdateInputValue()
|
||||||
{
|
{
|
||||||
// Avoid unnecessary UI updates and validator cycles
|
// Avoid unnecessary UI updates and validator cycles
|
||||||
if (_inputValue != null && _inputValue.Equals(LayerPropertyViewModel.LayerProperty.CurrentValue) || _inputValue == null && LayerPropertyViewModel.LayerProperty.CurrentValue == null)
|
if (_inputValue != null && _inputValue.Equals(LayerProperty.CurrentValue) || _inputValue == null && LayerProperty.CurrentValue == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Override the input value
|
// Override the input value
|
||||||
_inputValue = LayerPropertyViewModel.LayerProperty.CurrentValue;
|
_inputValue = LayerProperty.CurrentValue;
|
||||||
|
|
||||||
// Notify a change in the input value
|
// Notify a change in the input value
|
||||||
OnInputValueChanged();
|
OnInputValueChanged();
|
||||||
@ -71,19 +89,6 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyI
|
|||||||
Validate();
|
Validate();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void ApplyInputValue()
|
|
||||||
{
|
|
||||||
// Force the validator to run
|
|
||||||
if (Validator != null)
|
|
||||||
Validate();
|
|
||||||
// Only apply the input value to the layer property if the validator found no errors
|
|
||||||
if (!HasErrors)
|
|
||||||
LayerPropertyViewModel.SetCurrentValue(_inputValue, !InputDragging);
|
|
||||||
|
|
||||||
OnInputValueChanged();
|
|
||||||
OnInputValueApplied();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#region Event handlers
|
#region Event handlers
|
||||||
|
|
||||||
@ -95,7 +100,16 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyI
|
|||||||
public void InputDragEnded(object sender, EventArgs e)
|
public void InputDragEnded(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
InputDragging = false;
|
InputDragging = false;
|
||||||
LayerPropertyViewModel.ProfileEditorService.UpdateSelectedProfileElement();
|
ProfileEditorService.UpdateSelectedProfileElement();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetCurrentValue(T value, bool saveChanges)
|
||||||
|
{
|
||||||
|
LayerProperty.SetCurrentValue(value, ProfileEditorService.CurrentTime);
|
||||||
|
if (saveChanges)
|
||||||
|
ProfileEditorService.UpdateSelectedProfileElement();
|
||||||
|
else
|
||||||
|
ProfileEditorService.UpdateProfilePreview();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -1,23 +1,23 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using Artemis.Core.Models.Profile;
|
using Artemis.Core.Models.Profile;
|
||||||
using Artemis.Core.Models.Profile.LayerProperties;
|
|
||||||
using Artemis.Core.Models.Profile.LayerProperties.Attributes;
|
|
||||||
using Artemis.Core.Plugins.Abstract;
|
using Artemis.Core.Plugins.Abstract;
|
||||||
using Artemis.UI.Events;
|
using Artemis.Core.Plugins.Models;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties;
|
using Artemis.UI.Shared.Events;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Abstract;
|
using Artemis.UI.Shared.PropertyInput;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree;
|
using Ninject;
|
||||||
|
|
||||||
namespace Artemis.UI.Services.Interfaces
|
namespace Artemis.UI.Shared.Services.Interfaces
|
||||||
{
|
{
|
||||||
public interface IProfileEditorService : IArtemisUIService
|
public interface IProfileEditorService : IArtemisSharedUIService
|
||||||
{
|
{
|
||||||
Profile SelectedProfile { get; }
|
Profile SelectedProfile { get; }
|
||||||
ProfileElement SelectedProfileElement { get; }
|
ProfileElement SelectedProfileElement { get; }
|
||||||
TimeSpan CurrentTime { get; set; }
|
TimeSpan CurrentTime { get; set; }
|
||||||
int PixelsPerSecond { get; set; }
|
int PixelsPerSecond { get; set; }
|
||||||
|
IReadOnlyList<PropertyInputRegistration> RegisteredPropertyEditors { get; }
|
||||||
|
IKernel Kernel { get; }
|
||||||
|
|
||||||
LayerPropertyBaseViewModel CreateLayerPropertyViewModel(BaseLayerProperty baseLayerProperty, PropertyDescriptionAttribute propertyDescription);
|
|
||||||
void ChangeSelectedProfile(Profile profile);
|
void ChangeSelectedProfile(Profile profile);
|
||||||
void UpdateSelectedProfile();
|
void UpdateSelectedProfile();
|
||||||
void ChangeSelectedProfileElement(ProfileElement profileElement);
|
void ChangeSelectedProfileElement(ProfileElement profileElement);
|
||||||
@ -63,6 +63,7 @@ namespace Artemis.UI.Services.Interfaces
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
event EventHandler ProfilePreviewUpdated;
|
event EventHandler ProfilePreviewUpdated;
|
||||||
|
|
||||||
TreePropertyViewModel<T> CreateTreePropertyViewModel<T>(LayerPropertyViewModel<T> layerPropertyViewModel);
|
PropertyInputRegistration RegisterPropertyInput(PluginInfo pluginInfo, Type viewModelType);
|
||||||
|
void RemovePropertyInput(PropertyInputRegistration registration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,32 +1,24 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Artemis.Core.Models.Profile;
|
using Artemis.Core.Models.Profile;
|
||||||
using Artemis.Core.Models.Profile.Colors;
|
|
||||||
using Artemis.Core.Models.Profile.LayerProperties;
|
|
||||||
using Artemis.Core.Models.Profile.LayerProperties.Attributes;
|
|
||||||
using Artemis.Core.Plugins.Abstract;
|
using Artemis.Core.Plugins.Abstract;
|
||||||
|
using Artemis.Core.Plugins.Exceptions;
|
||||||
|
using Artemis.Core.Plugins.Models;
|
||||||
using Artemis.Core.Services.Interfaces;
|
using Artemis.Core.Services.Interfaces;
|
||||||
using Artemis.Core.Services.Storage.Interfaces;
|
using Artemis.Core.Services.Storage.Interfaces;
|
||||||
using Artemis.UI.Events;
|
using Artemis.UI.Shared.Events;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties;
|
using Artemis.UI.Shared.PropertyInput;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Abstract;
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree;
|
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput;
|
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.Abstract;
|
|
||||||
using Artemis.UI.Services.Interfaces;
|
|
||||||
using Ninject;
|
using Ninject;
|
||||||
using Ninject.Parameters;
|
|
||||||
using SkiaSharp;
|
|
||||||
|
|
||||||
namespace Artemis.UI.Services
|
namespace Artemis.UI.Shared.Services
|
||||||
{
|
{
|
||||||
public class ProfileEditorService : IProfileEditorService
|
public class ProfileEditorService : IProfileEditorService
|
||||||
{
|
{
|
||||||
private readonly ICoreService _coreService;
|
private readonly ICoreService _coreService;
|
||||||
private readonly IProfileService _profileService;
|
private readonly IProfileService _profileService;
|
||||||
private readonly IKernel _kernel;
|
private readonly List<PropertyInputRegistration> _registeredPropertyEditors;
|
||||||
private TimeSpan _currentTime;
|
private TimeSpan _currentTime;
|
||||||
private TimeSpan _lastUpdateTime;
|
private TimeSpan _lastUpdateTime;
|
||||||
private int _pixelsPerSecond;
|
private int _pixelsPerSecond;
|
||||||
@ -35,23 +27,14 @@ namespace Artemis.UI.Services
|
|||||||
{
|
{
|
||||||
_coreService = coreService;
|
_coreService = coreService;
|
||||||
_profileService = profileService;
|
_profileService = profileService;
|
||||||
_kernel = kernel;
|
_registeredPropertyEditors = new List<PropertyInputRegistration>();
|
||||||
|
|
||||||
RegisteredPropertyEditors = new Dictionary<Type, Type>
|
Kernel = kernel;
|
||||||
{
|
|
||||||
{typeof(LayerBrushReference), typeof(BrushPropertyInputViewModel)},
|
|
||||||
{typeof(ColorGradient), typeof(ColorGradientPropertyInputViewModel)},
|
|
||||||
{typeof(float), typeof(FloatPropertyInputViewModel)},
|
|
||||||
{typeof(int), typeof(IntPropertyInputViewModel)},
|
|
||||||
{typeof(SKColor), typeof(SKColorPropertyInputViewModel)},
|
|
||||||
{typeof(SKPoint), typeof(SKPointPropertyInputViewModel)},
|
|
||||||
{typeof(SKSize), typeof(SKSizePropertyInputViewModel)}
|
|
||||||
};
|
|
||||||
PixelsPerSecond = 31;
|
PixelsPerSecond = 31;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Dictionary<Type, Type> RegisteredPropertyEditors { get; set; }
|
public IKernel Kernel { get; }
|
||||||
|
public IReadOnlyList<PropertyInputRegistration> RegisteredPropertyEditors => _registeredPropertyEditors.AsReadOnly();
|
||||||
public Profile SelectedProfile { get; private set; }
|
public Profile SelectedProfile { get; private set; }
|
||||||
public ProfileElement SelectedProfileElement { get; private set; }
|
public ProfileElement SelectedProfileElement { get; private set; }
|
||||||
|
|
||||||
@ -78,36 +61,6 @@ namespace Artemis.UI.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public LayerPropertyBaseViewModel CreateLayerPropertyViewModel(BaseLayerProperty baseLayerProperty, PropertyDescriptionAttribute propertyDescription)
|
|
||||||
{
|
|
||||||
// Go through the pain of instantiating a generic type VM now via reflection to make things a lot simpler down the line
|
|
||||||
var genericType = baseLayerProperty.GetType().BaseType.GetGenericArguments()[0];
|
|
||||||
// Only create entries for types supported by a tree input VM
|
|
||||||
if (!genericType.IsEnum && !RegisteredPropertyEditors.ContainsKey(genericType))
|
|
||||||
return null;
|
|
||||||
var genericViewModel = typeof(LayerPropertyViewModel<>).MakeGenericType(genericType);
|
|
||||||
var parameters = new IParameter[]
|
|
||||||
{
|
|
||||||
new ConstructorArgument("layerProperty", baseLayerProperty),
|
|
||||||
new ConstructorArgument("propertyDescription", propertyDescription)
|
|
||||||
};
|
|
||||||
|
|
||||||
return (LayerPropertyBaseViewModel) _kernel.Get(genericViewModel, parameters);
|
|
||||||
}
|
|
||||||
|
|
||||||
public TreePropertyViewModel<T> CreateTreePropertyViewModel<T>(LayerPropertyViewModel<T> layerPropertyViewModel)
|
|
||||||
{
|
|
||||||
var type = typeof(T).IsEnum
|
|
||||||
? typeof(EnumPropertyInputViewModel<>).MakeGenericType(typeof(T))
|
|
||||||
: RegisteredPropertyEditors[typeof(T)];
|
|
||||||
|
|
||||||
var parameters = new IParameter[]
|
|
||||||
{
|
|
||||||
new ConstructorArgument("layerPropertyViewModel", layerPropertyViewModel)
|
|
||||||
};
|
|
||||||
return new TreePropertyViewModel<T>(layerPropertyViewModel, (PropertyInputViewModel<T>) _kernel.Get(type, parameters), this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ChangeSelectedProfile(Profile profile)
|
public void ChangeSelectedProfile(Profile profile)
|
||||||
{
|
{
|
||||||
ChangeSelectedProfileElement(null);
|
ChangeSelectedProfileElement(null);
|
||||||
@ -193,6 +146,44 @@ namespace Artemis.UI.Services
|
|||||||
UpdateProfilePreview();
|
UpdateProfilePreview();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PropertyInputRegistration RegisterPropertyInput(PluginInfo pluginInfo, Type viewModelType)
|
||||||
|
{
|
||||||
|
// Bit ugly to do a name comparison but I don't know a nicer way right now
|
||||||
|
if (viewModelType.BaseType == null || viewModelType.BaseType.Name != typeof(PropertyInputViewModel<>).Name)
|
||||||
|
throw new ArtemisPluginException($"{nameof(viewModelType)} base type must be of type PropertyInputViewModel<T>");
|
||||||
|
|
||||||
|
lock (_registeredPropertyEditors)
|
||||||
|
{
|
||||||
|
var supportedType = viewModelType.BaseType.GetGenericArguments()[0];
|
||||||
|
var existing = _registeredPropertyEditors.FirstOrDefault(r => r.SupportedType == supportedType);
|
||||||
|
if (existing != null)
|
||||||
|
{
|
||||||
|
if (existing.PluginInfo != pluginInfo)
|
||||||
|
throw new ArtemisPluginException($"Cannot register property editor for type {supportedType.Name} because an editor was already registered by {pluginInfo.Name}");
|
||||||
|
return existing;
|
||||||
|
}
|
||||||
|
|
||||||
|
Kernel.Bind(viewModelType).ToSelf();
|
||||||
|
var registration = new PropertyInputRegistration(this, pluginInfo, supportedType, viewModelType);
|
||||||
|
_registeredPropertyEditors.Add(registration);
|
||||||
|
return registration;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RemovePropertyInput(PropertyInputRegistration registration)
|
||||||
|
{
|
||||||
|
lock (_registeredPropertyEditors)
|
||||||
|
{
|
||||||
|
if (_registeredPropertyEditors.Contains(registration))
|
||||||
|
{
|
||||||
|
registration.Unsubscribe();
|
||||||
|
_registeredPropertyEditors.Remove(registration);
|
||||||
|
|
||||||
|
Kernel.Unbind(registration.ViewModelType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public event EventHandler<ProfileElementEventArgs> ProfileSelected;
|
public event EventHandler<ProfileElementEventArgs> ProfileSelected;
|
||||||
public event EventHandler<ProfileElementEventArgs> SelectedProfileUpdated;
|
public event EventHandler<ProfileElementEventArgs> SelectedProfileUpdated;
|
||||||
public event EventHandler<ProfileElementEventArgs> ProfileElementSelected;
|
public event EventHandler<ProfileElementEventArgs> ProfileElementSelected;
|
||||||
565
src/Artemis.UI/Artemis.UI_u2tszd0b_wpftmp.csproj
Normal file
565
src/Artemis.UI/Artemis.UI_u2tszd0b_wpftmp.csproj
Normal file
@ -0,0 +1,565 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||||
|
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
|
<AssemblyTitle>Artemis</AssemblyTitle>
|
||||||
|
<Product>Artemis</Product>
|
||||||
|
<NeutralLanguage>en-US</NeutralLanguage>
|
||||||
|
<Description>Adds third-party support for RGB keyboards to games.</Description>
|
||||||
|
<Copyright>Copyright © Robert Beekman - 2019</Copyright>
|
||||||
|
<AssemblyVersion>2.0.0.0</AssemblyVersion>
|
||||||
|
<FileVersion>2.0.0.0</FileVersion>
|
||||||
|
<Prefer32Bit>true</Prefer32Bit>
|
||||||
|
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
|
||||||
|
<UseWPF>true</UseWPF>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<ApplicationIcon>Resources\Images\Logo\logo-512.ico</ApplicationIcon>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<PostBuildEvent />
|
||||||
|
</PropertyGroup>
|
||||||
|
<Target Name="SkiaCleanUpAfterBuild" AfterTargets="AfterBuild">
|
||||||
|
<Delete Files="$(OutputPath)\libSkiaSharp.dylib" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="RemoveTranslationsAfterBuild" AfterTargets="AfterBuild">
|
||||||
|
<RemoveDir Directories="@(FluentValidationExcludedCultures->'$(OutputPath)%(Filename)')" />
|
||||||
|
</Target>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Remove="publish\**" />
|
||||||
|
<EmbeddedResource Remove="publish\**" />
|
||||||
|
<None Remove="publish\**" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Update="Properties\Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
</EmbeddedResource>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Artemis.Core\Artemis.Core.csproj">
|
||||||
|
<Private>true</Private>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\Artemis.Storage\Artemis.Storage.csproj">
|
||||||
|
<Private>true</Private>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\Artemis.UI.Shared\Artemis.UI.Shared.csproj">
|
||||||
|
<Private>true</Private>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Castle.Core" Version="4.4.1" />
|
||||||
|
<PackageReference Include="FluentValidation" Version="8.6.2" />
|
||||||
|
<PackageReference Include="gong-wpf-dragdrop" Version="2.2.0" />
|
||||||
|
<PackageReference Include="Hardcodet.NotifyIcon.Wpf.NetCore" Version="1.0.10" />
|
||||||
|
<PackageReference Include="Humanizer.Core" Version="2.8.11" />
|
||||||
|
<PackageReference Include="MaterialDesignExtensions" Version="3.1.0" />
|
||||||
|
<PackageReference Include="MaterialDesignThemes" Version="3.1.3" />
|
||||||
|
<PackageReference Include="Microsoft.Win32.Registry" Version="4.7.0" />
|
||||||
|
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.19" />
|
||||||
|
<PackageReference Include="Ninject" Version="3.3.4" />
|
||||||
|
<PackageReference Include="Ninject.Extensions.Conventions" Version="3.3.0" />
|
||||||
|
<PackageReference Include="PropertyChanged.Fody" Version="3.2.8" />
|
||||||
|
<PackageReference Include="Serilog" Version="2.9.0" />
|
||||||
|
<PackageReference Include="SkiaSharp.Views.WPF" Version="1.68.3" />
|
||||||
|
<PackageReference Include="Stylet" Version="1.3.2" />
|
||||||
|
<PackageReference Include="System.Buffers" Version="4.5.0" />
|
||||||
|
<PackageReference Include="System.ComponentModel.Annotations" Version="4.7.0" />
|
||||||
|
<PackageReference Include="System.Drawing.Common" Version="4.7.0" />
|
||||||
|
<PackageReference Include="System.Management" Version="4.7.0" />
|
||||||
|
<PackageReference Include="System.Numerics.Vectors" Version="4.5.0" />
|
||||||
|
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="4.7.0" />
|
||||||
|
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Remove="obj\x64\Debug\App.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\App.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\GeneratedInternalTypeHelper.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\GeneratedInternalTypeHelper.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\App.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\GeneratedInternalTypeHelper.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\RootView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\RootView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\RootView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Dialogs\ConfirmDialogView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Dialogs\ConfirmDialogView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\GradientEditor\GradientEditorView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\GradientEditor\GradientEditorView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Home\HomeView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Home\HomeView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ModuleRootView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ModuleRootView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\News\NewsView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\News\NewsView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Settings\SettingsView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Settings\SettingsView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Sidebar\SidebarView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Sidebar\SidebarView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Splash\SplashView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Splash\SplashView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\SurfaceEditor\SurfaceEditorView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\SurfaceEditor\SurfaceEditorView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Workshop\WorkshopView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Workshop\WorkshopView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Dialogs\ConfirmDialogView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Home\HomeView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Module\ModuleRootView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\News\NewsView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Settings\SettingsView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Splash\SplashView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Workshop\WorkshopView.g.cs" />
|
||||||
|
<Compile Remove="Screens\Module\ProfileEditor\LayerProperties\Timeline\PropertyRailItemView.xaml.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\ProfileEditorView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\ProfileEditorView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Settings\Debug\DebugView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Settings\Debug\DebugView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\SurfaceEditor\Dialogs\SurfaceCreateView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\SurfaceEditor\Dialogs\SurfaceCreateView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\SurfaceEditor\Dialogs\SurfaceDeviceConfigView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\SurfaceEditor\Dialogs\SurfaceDeviceConfigView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\SurfaceEditor\Visualization\SurfaceDeviceView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\SurfaceEditor\Visualization\SurfaceDeviceView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\SurfaceEditor\Visualization\SurfaceLedView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\SurfaceEditor\Visualization\SurfaceLedView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Module\ProfileEditor\ProfileEditorView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Settings\Debug\DebugView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\SurfaceEditor\Dialogs\SurfaceCreateView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\SurfaceEditor\Dialogs\SurfaceDeviceConfigView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\SurfaceEditor\Visualization\SurfaceDeviceView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\SurfaceEditor\Visualization\SurfaceLedView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Dialogs\ProfileCreateView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Dialogs\ProfileCreateView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Dialogs\ProfileElementRenameView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Dialogs\ProfileElementRenameView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\DisplayConditions\DisplayConditionsView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\DisplayConditions\DisplayConditionsView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\DisplayConditions\DisplayConditionView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\DisplayConditions\DisplayConditionView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\ElementProperties\ElementPropertiesView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\ElementProperties\ElementPropertyView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerElements\LayerElementsView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerElements\LayerElementView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\LayerPropertiesView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\LayerPropertiesView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Layers\LayersView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\ProfileTree\ProfileTreeView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\ProfileTree\ProfileTreeView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\ProfileDeviceView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\ProfileDeviceView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\ProfileLayerView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\ProfileLayerView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\ProfileLedView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\ProfileLedView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\ProfileView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\ProfileView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Settings\Tabs\Devices\DeviceSettingsView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Settings\Tabs\Devices\DeviceSettingsView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Module\ProfileEditor\Dialogs\ProfileCreateView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Module\ProfileEditor\DisplayConditions\DisplayConditionsView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Module\ProfileEditor\DisplayConditions\DisplayConditionView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Module\ProfileEditor\ElementProperties\ElementPropertiesView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Module\ProfileEditor\ElementProperties\ElementPropertyView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Module\ProfileEditor\LayerElements\LayerElementsView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Module\ProfileEditor\LayerElements\LayerElementView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Module\ProfileEditor\Layers\LayersView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Module\ProfileEditor\Visualization\ProfileDeviceView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Module\ProfileEditor\Visualization\ProfileLedView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Module\ProfileEditor\Visualization\ProfileView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Release\Screens\Settings\Tabs\Devices\DeviceSettingsView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerElements\Dialogs\AddLayerElementView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyTreeChildView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyTreeChildView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyTreeItemView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyTreeView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyTreeView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\Timeline\LayerPropertiesTimelineView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\Timeline\PropertyRailItemView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\Timeline\PropertyTimelineView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\Timeline\PropertyTimelineView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\Timeline\PropertyTrackView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\Timeline\PropertyTrackView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\Timeline\TimelineKeyframeView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\Timeline\TimelinePartView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\Timeline\TimelinePropertyRailView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\Timeline\TimelinePropertyView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\Timeline\TimelineTimeView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\ProfileTree\TreeItem\FolderView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\ProfileTree\TreeItem\FolderView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\ProfileTree\TreeItem\LayerView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\ProfileTree\TreeItem\LayerView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\Tools\EditToolView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\Tools\EditToolView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\Tools\EllipseToolView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\Tools\FillToolView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\Tools\PolygonToolView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\Tools\RectangleToolView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\Tools\SelectionAddToolView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\Tools\SelectionRemoveToolView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\Tools\SelectionRemoveToolView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\Tools\SelectionToolView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\Tools\SelectionToolView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\Tools\ViewpointMoveToolView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\Tools\ViewpointMoveToolView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\UserControls\LayerShapeControl.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\Visualization\UserControls\LayerShapeControl.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyInput\BrushPropertyInputView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyInput\BrushPropertyInputView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyInput\EnumPropertyInputView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyInput\EnumPropertyInputView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyInput\FloatPropertyInputView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyInput\FloatPropertyInputView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyInput\IntPropertyInputView - Copy.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyInput\IntPropertyInputView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyInput\IntPropertyInputView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyInput\SKColorPropertyInputView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyInput\SKColorPropertyInputView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyInput\SKPointPropertyInputView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyInput\SKPointPropertyInputView.g.i.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyInput\SKSizePropertyInputView.g.cs" />
|
||||||
|
<Compile Remove="obj\x64\Debug\Screens\Module\ProfileEditor\LayerProperties\PropertyTree\PropertyInput\SKSizePropertyInputView.g.i.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Remove="Resources\Fonts\RobotoMono-Regular.ttf" />
|
||||||
|
<None Remove="Resources\Images\Logo\logo-512.ico" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Update="Properties\Resources.Designer.cs">
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\Accessibility.dll" />
|
||||||
|
<ReferencePath Include="C:\Repos\Artemis\src\Artemis.Core\bin\AnyCPU\Debug\netcoreapp3.1\Artemis.Core.dll" />
|
||||||
|
<ReferencePath Include="C:\Repos\Artemis\src\Artemis.Storage\bin\Debug\netcoreapp3.1\Artemis.Storage.dll" />
|
||||||
|
<ReferencePath Include="C:\Repos\Artemis\src\Artemis.UI.Shared\bin\AnyCPU\Debug\netcoreapp3.1\Artemis.UI.Shared.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\ben.demystifier\0.1.6\lib\netstandard2.0\Ben.Demystifier.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\castle.core\4.4.1\lib\netstandard1.5\Castle.Core.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\fastmember\1.5.0\lib\netcoreapp2.0\FastMember.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\fluentvalidation\8.6.2\lib\netstandard2.0\FluentValidation.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\gong-wpf-dragdrop\2.2.0\lib\netcoreapp3.1\GongSolutions.WPF.DragDrop.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\hardcodet.notifyicon.wpf.netcore\1.0.10\lib\netcoreapp3.0\Hardcodet.Wpf.TaskbarNotification.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\hidsharp\2.1.0\lib\netstandard2.0\HidSharp.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\humanizer.core\2.8.11\lib\netstandard2.0\Humanizer.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\avalonedit\6.0.1\lib\netcoreapp3.0\ICSharpCode.AvalonEdit.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\litedb\5.0.8\lib\netstandard2.0\LiteDB.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\materialdesigncolors\1.2.6\lib\netcoreapp3.1\MaterialDesignColors.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\materialdesignextensions\3.1.0\lib\netcoreapp3.1\MaterialDesignExtensions.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\materialdesignthemes\3.1.3\lib\netcoreapp3.1\MaterialDesignThemes.Wpf.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\mcmaster.netcore.plugins\1.3.0\lib\netcoreapp3.0\McMaster.NETCore.Plugins.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\Microsoft.CSharp.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\microsoft.dotnet.platformabstractions\3.1.0\lib\netstandard2.0\Microsoft.DotNet.PlatformAbstractions.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\microsoft.extensions.dependencymodel\3.1.0\lib\netstandard2.0\Microsoft.Extensions.DependencyModel.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\Microsoft.VisualBasic.Core.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\Microsoft.VisualBasic.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\Microsoft.Win32.Primitives.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\Microsoft.Win32.Registry.AccessControl.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\Microsoft.Win32.Registry.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\Microsoft.Win32.SystemEvents.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\microsoft.xaml.behaviors.wpf\1.1.19\lib\netcoreapp3.0\Microsoft.Xaml.Behaviors.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\mscorlib.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\netstandard.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\newtonsoft.json\12.0.3\lib\netstandard2.0\Newtonsoft.Json.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\ninject\3.3.4\lib\netstandard2.0\Ninject.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\ninject.extensions.childkernel\3.3.0\lib\netstandard2.0\Ninject.Extensions.ChildKernel.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\ninject.extensions.conventions\3.3.0\lib\netstandard2.0\Ninject.Extensions.Conventions.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\ninject.extensions.factory\3.3.2\lib\netstandard2.0\Ninject.Extensions.Factory.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationCore.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationFramework.Aero.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationFramework.Aero2.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationFramework.AeroLite.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationFramework.Classic.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationFramework.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationFramework.Luna.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationFramework.Royale.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\PresentationUI.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\propertychanged.fody\3.2.8\lib\netstandard1.0\PropertyChanged.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\ReachFramework.dll" />
|
||||||
|
<ReferencePath Include="C:\Repos\RGB.NET\bin\netstandard2.0\RGB.NET.Core.dll" />
|
||||||
|
<ReferencePath Include="C:\Repos\RGB.NET\bin\netstandard2.0\RGB.NET.Groups.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\serilog\2.9.0\lib\netstandard2.0\Serilog.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\serilog.enrichers.demystify\1.0.0-dev-00019\lib\netstandard2.0\Serilog.Enrichers.Demystify.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\serilog.sinks.debug\1.0.1\lib\netstandard2.0\Serilog.Sinks.Debug.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\serilog.sinks.file\4.1.0\lib\netstandard2.0\Serilog.Sinks.File.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\skiasharp\1.68.3\lib\netstandard2.0\SkiaSharp.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\skiasharp.views.desktop.common\1.68.3\lib\netcoreapp3.0\SkiaSharp.Views.Desktop.Common.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\skiasharp.views.wpf\1.68.3\lib\netcoreapp3.0\SkiaSharp.Views.WPF.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\stylet\1.3.2\lib\netcoreapp3.0\Stylet.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.AppContext.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Buffers.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.CodeDom.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Collections.Concurrent.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Collections.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Collections.Immutable.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Collections.NonGeneric.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Collections.Specialized.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ComponentModel.Annotations.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ComponentModel.DataAnnotations.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ComponentModel.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ComponentModel.EventBasedAsync.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ComponentModel.Primitives.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ComponentModel.TypeConverter.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Configuration.ConfigurationManager.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Configuration.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Console.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Core.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Data.Common.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Data.DataSetExtensions.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Data.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Design.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.Contracts.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.Debug.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.DiagnosticSource.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.EventLog.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.FileVersionInfo.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.PerformanceCounter.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.Process.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.StackTrace.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.TextWriterTraceListener.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.Tools.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.TraceSource.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Diagnostics.Tracing.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.DirectoryServices.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Drawing.Common.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Drawing.Design.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Drawing.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Drawing.Primitives.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Dynamic.Runtime.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Globalization.Calendars.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Globalization.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Globalization.Extensions.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.Compression.Brotli.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.Compression.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.Compression.FileSystem.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.Compression.ZipFile.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.FileSystem.AccessControl.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.FileSystem.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.FileSystem.DriveInfo.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.FileSystem.Primitives.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.FileSystem.Watcher.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.IsolatedStorage.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.MemoryMappedFiles.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.Packaging.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.Pipes.AccessControl.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.Pipes.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.IO.UnmanagedMemoryStream.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Linq.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Linq.Expressions.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Linq.Parallel.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Linq.Queryable.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\system.management\4.7.0\ref\netstandard2.0\System.Management.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Memory.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.Http.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.HttpListener.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.Mail.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.NameResolution.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.NetworkInformation.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.Ping.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.Primitives.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.Requests.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.Security.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.ServicePoint.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.Sockets.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.WebClient.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.WebHeaderCollection.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.WebProxy.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.WebSockets.Client.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Net.WebSockets.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Numerics.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Numerics.Vectors.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ObjectModel.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Printing.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.DispatchProxy.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.Emit.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.Emit.ILGeneration.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.Emit.Lightweight.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.Extensions.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.Metadata.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.Primitives.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Reflection.TypeExtensions.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Resources.Extensions.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Resources.Reader.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Resources.ResourceManager.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Resources.Writer.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.CompilerServices.Unsafe.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.CompilerServices.VisualC.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Extensions.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Handles.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.InteropServices.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.InteropServices.RuntimeInformation.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.InteropServices.WindowsRuntime.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Intrinsics.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Loader.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Numerics.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Serialization.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Serialization.Formatters.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Serialization.Json.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Serialization.Primitives.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Runtime.Serialization.Xml.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.AccessControl.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Claims.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.Algorithms.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.Cng.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.Csp.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.Encoding.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.Pkcs.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.Primitives.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.ProtectedData.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.X509Certificates.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Cryptography.Xml.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Permissions.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Principal.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.Principal.Windows.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Security.SecureString.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ServiceModel.Web.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ServiceProcess.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Text.Encoding.CodePages.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Text.Encoding.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Text.Encoding.Extensions.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Text.Encodings.Web.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Text.Json.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Text.RegularExpressions.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.AccessControl.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.Channels.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.Overlapped.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.Tasks.Dataflow.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.Tasks.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.Tasks.Extensions.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.Tasks.Parallel.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.Thread.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.ThreadPool.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Threading.Timer.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Transactions.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Transactions.Local.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.ValueTuple.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Web.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Web.HttpUtility.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Windows.Controls.Ribbon.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Windows.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Windows.Extensions.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Windows.Forms.Design.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Windows.Forms.Design.Editors.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Windows.Forms.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Windows.Input.Manipulations.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Windows.Presentation.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xaml.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.Linq.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.ReaderWriter.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.Serialization.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.XDocument.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.XmlDocument.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.XmlSerializer.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.XPath.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1\System.Xml.XPath.XDocument.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\UIAutomationClient.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\UIAutomationClientSideProviders.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\UIAutomationProvider.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\UIAutomationTypes.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\WindowsBase.dll" />
|
||||||
|
<ReferencePath Include="C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\3.1.0\ref\netcoreapp3.1\WindowsFormsIntegration.dll" />
|
||||||
|
<ReferencePath Include="C:\Users\Robert\.nuget\packages\writeablebitmapex\1.6.5\lib\netcoreapp3.0\WriteableBitmapEx.Wpf.dll" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\PropertyInput\BrushPropertyInputView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\PropertyInput\ColorGradientPropertyInputView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\PropertyInput\EnumPropertyInputView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\PropertyInput\FloatPropertyInputView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\PropertyInput\IntPropertyInputView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\PropertyInput\SKColorPropertyInputView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\PropertyInput\SKPointPropertyInputView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\PropertyInput\SKSizePropertyInputView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Home\HomeView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ModuleRootView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\Dialogs\ProfileCreateView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\Dialogs\ProfileElementRenameView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\DisplayConditions\DisplayConditionsView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\DisplayConditions\DisplayConditionView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\LayerProperties\LayerPropertiesView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\LayerProperties\Timeline\TimelinePropertyGroupView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\LayerProperties\Timeline\TimelinePropertyView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\LayerProperties\Timeline\TimelineView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\LayerProperties\Tree\TreePropertyView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\LayerProperties\Tree\TreeView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\ProfileEditorView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\ProfileTree\ProfileTreeView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\ProfileTree\TreeItem\FolderView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\ProfileTree\TreeItem\LayerView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\Visualization\ProfileDeviceView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\Visualization\ProfileLayerView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\Visualization\ProfileLedView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\Visualization\ProfileView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\Visualization\Tools\EditToolView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\Visualization\Tools\SelectionRemoveToolView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\Visualization\Tools\SelectionToolView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\Visualization\Tools\ViewpointMoveToolView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Module\ProfileEditor\Visualization\UserControls\LayerShapeControl.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\News\NewsView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\RootView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Settings\Debug\DebugView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Settings\SettingsView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Settings\Tabs\Devices\DeviceSettingsView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Settings\Tabs\Plugins\PluginSettingsView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Settings\Tabs\Plugins\PluginSettingsWindowView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Sidebar\SidebarView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Splash\SplashView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\SurfaceEditor\Dialogs\SurfaceCreateView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\SurfaceEditor\Dialogs\SurfaceDeviceConfigView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\SurfaceEditor\SurfaceEditorView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\SurfaceEditor\Visualization\SurfaceDeviceView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\TrayView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\Screens\Workshop\WorkshopView.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\App.g.cs" />
|
||||||
|
<Compile Include="C:\Repos\Artemis\src\Artemis.UI\obj\Debug\netcoreapp3.1\GeneratedInternalTypeHelper.g.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
@ -2,8 +2,8 @@
|
|||||||
using Artemis.UI.Ninject.Factories;
|
using Artemis.UI.Ninject.Factories;
|
||||||
using Artemis.UI.Screens;
|
using Artemis.UI.Screens;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor;
|
using Artemis.UI.Screens.Module.ProfileEditor;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.Abstract;
|
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
|
using Artemis.UI.Shared.PropertyInput;
|
||||||
using Artemis.UI.Shared.Services.Dialog;
|
using Artemis.UI.Shared.Services.Dialog;
|
||||||
using Artemis.UI.Stylet;
|
using Artemis.UI.Stylet;
|
||||||
using FluentValidation;
|
using FluentValidation;
|
||||||
@ -77,14 +77,6 @@ namespace Artemis.UI.Ninject
|
|||||||
.InheritedFrom<IValidator>()
|
.InheritedFrom<IValidator>()
|
||||||
.BindAllInterfaces();
|
.BindAllInterfaces();
|
||||||
});
|
});
|
||||||
|
|
||||||
Kernel.Bind(x =>
|
|
||||||
{
|
|
||||||
x.FromThisAssembly()
|
|
||||||
.SelectAllClasses()
|
|
||||||
.InheritedFrom(typeof(PropertyInputViewModel<>))
|
|
||||||
.BindToSelf();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,15 +1,15 @@
|
|||||||
<UserControl x:Class="Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.BrushPropertyInputView"
|
<UserControl x:Class="Artemis.UI.PropertyInput.BrushPropertyInputView"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||||
xmlns:propertyInput="clr-namespace:Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput"
|
xmlns:propertyInput="clr-namespace:Artemis.UI.PropertyInput"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="450" d:DesignWidth="800"
|
d:DesignHeight="450" d:DesignWidth="800"
|
||||||
d:DataContext="{d:DesignInstance {x:Type propertyInput:BrushPropertyInputViewModel}}">
|
d:DataContext="{d:DesignInstance {x:Type propertyInput:BrushPropertyInputViewModel}}">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock Margin="0 0 5 4" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.PropertyDescription.InputPrefix}" />
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputPrefix}" />
|
||||||
<ComboBox Width="132"
|
<ComboBox Width="132"
|
||||||
Margin="0 2"
|
Margin="0 2"
|
||||||
Padding="0 -1"
|
Padding="0 -1"
|
||||||
@ -20,6 +20,6 @@
|
|||||||
SelectedValuePath="Value"
|
SelectedValuePath="Value"
|
||||||
DisplayMemberPath="Description"
|
DisplayMemberPath="Description"
|
||||||
SelectedValue="{Binding Path=InputValue}" />
|
SelectedValue="{Binding Path=InputValue}" />
|
||||||
<TextBlock Margin="5 0 0 4" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.PropertyDescription.InputAffix}" />
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputAffix}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@ -2,21 +2,23 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Artemis.Core.Events;
|
using Artemis.Core.Events;
|
||||||
using Artemis.Core.Models.Profile;
|
using Artemis.Core.Models.Profile;
|
||||||
|
using Artemis.Core.Models.Profile.LayerProperties;
|
||||||
using Artemis.Core.Plugins.LayerBrush;
|
using Artemis.Core.Plugins.LayerBrush;
|
||||||
using Artemis.Core.Services.Interfaces;
|
using Artemis.Core.Services.Interfaces;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.Abstract;
|
using Artemis.UI.Shared.PropertyInput;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
using Artemis.UI.Shared.Utilities;
|
using Artemis.UI.Shared.Utilities;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput
|
namespace Artemis.UI.PropertyInput
|
||||||
{
|
{
|
||||||
public class BrushPropertyInputViewModel : PropertyInputViewModel<LayerBrushReference>
|
public class BrushPropertyInputViewModel : PropertyInputViewModel<LayerBrushReference>
|
||||||
{
|
{
|
||||||
private readonly ILayerService _layerService;
|
private readonly ILayerService _layerService;
|
||||||
private readonly IPluginService _pluginService;
|
private readonly IPluginService _pluginService;
|
||||||
|
|
||||||
public BrushPropertyInputViewModel(LayerPropertyViewModel<LayerBrushReference> layerPropertyViewModel, ILayerService layerService, IPluginService pluginService)
|
public BrushPropertyInputViewModel(LayerProperty<LayerBrushReference> layerProperty, IProfileEditorService profileEditorService,
|
||||||
: base(layerPropertyViewModel)
|
ILayerService layerService, IPluginService pluginService) : base(layerProperty, profileEditorService)
|
||||||
{
|
{
|
||||||
_layerService = layerService;
|
_layerService = layerService;
|
||||||
_pluginService = pluginService;
|
_pluginService = pluginService;
|
||||||
@ -54,14 +56,14 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyI
|
|||||||
base.Dispose();
|
base.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void OnInputValueApplied()
|
||||||
|
{
|
||||||
|
_layerService.InstantiateLayerBrush(LayerProperty.Layer);
|
||||||
|
}
|
||||||
|
|
||||||
private void PluginServiceOnPluginLoaded(object sender, PluginEventArgs e)
|
private void PluginServiceOnPluginLoaded(object sender, PluginEventArgs e)
|
||||||
{
|
{
|
||||||
UpdateEnumValues();
|
UpdateEnumValues();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnInputValueApplied()
|
|
||||||
{
|
|
||||||
_layerService.InstantiateLayerBrush(LayerPropertyViewModel.LayerProperty.Layer);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,22 +1,22 @@
|
|||||||
<UserControl x:Class="Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.ColorGradientPropertyInputView"
|
<UserControl x:Class="Artemis.UI.PropertyInput.ColorGradientPropertyInputView"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:controls="clr-namespace:Artemis.UI.Shared.Controls;assembly=Artemis.UI.Shared"
|
xmlns:controls="clr-namespace:Artemis.UI.Shared.Controls;assembly=Artemis.UI.Shared"
|
||||||
xmlns:propertyInput="clr-namespace:Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput"
|
xmlns:propertyInput="clr-namespace:Artemis.UI.PropertyInput"
|
||||||
xmlns:s="https://github.com/canton7/Stylet"
|
xmlns:s="https://github.com/canton7/Stylet"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="25" d:DesignWidth="800"
|
d:DesignHeight="25" d:DesignWidth="800"
|
||||||
d:DataContext="{d:DesignInstance propertyInput:ColorGradientPropertyInputViewModel}">
|
d:DataContext="{d:DesignInstance propertyInput:ColorGradientPropertyInputViewModel}">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock Margin="0 0 5 4" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.PropertyDescription.InputPrefix}" />
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputPrefix}" />
|
||||||
<controls:GradientPicker Width="132"
|
<controls:GradientPicker Width="132"
|
||||||
Margin="0 2"
|
Margin="0 2"
|
||||||
Padding="0 -1"
|
Padding="0 -1"
|
||||||
ColorGradient="{Binding InputValue}"
|
ColorGradient="{Binding InputValue}"
|
||||||
DialogClosed="{s:Action DialogClosed}"
|
DialogClosed="{s:Action DialogClosed}"
|
||||||
DialogHost="PropertyTreeDialogHost" />
|
DialogHost="PropertyTreeDialogHost" />
|
||||||
<TextBlock Margin="5 0 0 4" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.PropertyDescription.InputAffix}" />
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputAffix}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@ -1,12 +1,15 @@
|
|||||||
using System;
|
using System;
|
||||||
using Artemis.Core.Models.Profile.Colors;
|
using Artemis.Core.Models.Profile.Colors;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.Abstract;
|
using Artemis.Core.Models.Profile.LayerProperties;
|
||||||
|
using Artemis.UI.Shared.PropertyInput;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput
|
namespace Artemis.UI.PropertyInput
|
||||||
{
|
{
|
||||||
public class ColorGradientPropertyInputViewModel : PropertyInputViewModel<ColorGradient>
|
public class ColorGradientPropertyInputViewModel : PropertyInputViewModel<ColorGradient>
|
||||||
{
|
{
|
||||||
public ColorGradientPropertyInputViewModel(LayerPropertyViewModel<ColorGradient> layerPropertyViewModel) : base(layerPropertyViewModel)
|
public ColorGradientPropertyInputViewModel(LayerProperty<ColorGradient> layerProperty, IProfileEditorService profileEditorService)
|
||||||
|
: base(layerProperty, profileEditorService)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
<UserControl x:Class="Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.EnumPropertyInputView"
|
<UserControl x:Class="Artemis.UI.PropertyInput.EnumPropertyInputView"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
@ -7,7 +7,7 @@
|
|||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="450" d:DesignWidth="800">
|
d:DesignHeight="450" d:DesignWidth="800">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock Margin="0 0 5 4" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.PropertyDescription.InputPrefix}" />
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputPrefix}" />
|
||||||
<ComboBox Width="132"
|
<ComboBox Width="132"
|
||||||
Margin="0 2"
|
Margin="0 2"
|
||||||
Padding="0 -1"
|
Padding="0 -1"
|
||||||
@ -18,6 +18,6 @@
|
|||||||
SelectedValuePath="Value"
|
SelectedValuePath="Value"
|
||||||
DisplayMemberPath="Description"
|
DisplayMemberPath="Description"
|
||||||
SelectedValue="{Binding Path=InputValue}" />
|
SelectedValue="{Binding Path=InputValue}" />
|
||||||
<TextBlock Margin="5 0 0 4" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.PropertyDescription.InputAffix}" />
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputAffix}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@ -1,13 +1,15 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.Abstract;
|
using Artemis.Core.Models.Profile.LayerProperties;
|
||||||
|
using Artemis.UI.Shared.PropertyInput;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
using Artemis.UI.Shared.Utilities;
|
using Artemis.UI.Shared.Utilities;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput
|
namespace Artemis.UI.PropertyInput
|
||||||
{
|
{
|
||||||
public class EnumPropertyInputViewModel<T> : PropertyInputViewModel<T> where T : Enum
|
public class EnumPropertyInputViewModel<T> : PropertyInputViewModel<T> where T : Enum
|
||||||
{
|
{
|
||||||
public EnumPropertyInputViewModel(LayerPropertyViewModel<T> layerPropertyViewModel) : base(layerPropertyViewModel)
|
public EnumPropertyInputViewModel(LayerProperty<T> layerProperty, IProfileEditorService profileEditorService) : base(layerProperty, profileEditorService)
|
||||||
{
|
{
|
||||||
EnumValues = EnumUtilities.GetAllValuesAndDescriptions(typeof(T));
|
EnumValues = EnumUtilities.GetAllValuesAndDescriptions(typeof(T));
|
||||||
}
|
}
|
||||||
@ -1,24 +1,24 @@
|
|||||||
<UserControl x:Class="Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.FloatPropertyInputView"
|
<UserControl x:Class="Artemis.UI.PropertyInput.FloatPropertyInputView"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:local="clr-namespace:Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput"
|
xmlns:local="clr-namespace:Artemis.UI.PropertyInput"
|
||||||
xmlns:s="https://github.com/canton7/Stylet"
|
xmlns:s="https://github.com/canton7/Stylet"
|
||||||
xmlns:shared="clr-namespace:Artemis.UI.Shared;assembly=Artemis.UI.Shared"
|
xmlns:shared="clr-namespace:Artemis.UI.Shared;assembly=Artemis.UI.Shared"
|
||||||
xmlns:controls="clr-namespace:Artemis.UI.Shared.Controls;assembly=Artemis.UI.Shared"
|
xmlns:controls="clr-namespace:Artemis.UI.Shared.Controls;assembly=Artemis.UI.Shared"
|
||||||
xmlns:propertyInput="clr-namespace:Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput"
|
xmlns:propertyInput="clr-namespace:Artemis.UI.PropertyInput"
|
||||||
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
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"
|
||||||
d:DataContext="{d:DesignInstance propertyInput:FloatPropertyInputViewModel}">
|
d:DataContext="{d:DesignInstance propertyInput:FloatPropertyInputViewModel}">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock Margin="0 0 5 4" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.PropertyDescription.InputPrefix}" />
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputPrefix}" />
|
||||||
<controls:DraggableFloat Value="{Binding InputValue}"
|
<controls:DraggableFloat Value="{Binding InputValue}"
|
||||||
materialDesign:ValidationAssist.UsePopup="True"
|
materialDesign:ValidationAssist.UsePopup="True"
|
||||||
StepSize="{Binding LayerPropertyViewModel.PropertyDescription.InputStepSize}"
|
StepSize="{Binding LayerProperty.PropertyDescription.InputStepSize}"
|
||||||
DragStarted="{s:Action InputDragStarted}"
|
DragStarted="{s:Action InputDragStarted}"
|
||||||
DragEnded="{s:Action InputDragEnded}" />
|
DragEnded="{s:Action InputDragEnded}" />
|
||||||
<TextBlock Margin="5 0 0 4" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.PropertyDescription.InputAffix}" />
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputAffix}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
30
src/Artemis.UI/PropertyInput/FloatPropertyInputViewModel.cs
Normal file
30
src/Artemis.UI/PropertyInput/FloatPropertyInputViewModel.cs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
using Artemis.Core.Models.Profile.LayerProperties;
|
||||||
|
using Artemis.UI.Shared.PropertyInput;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
|
using FluentValidation;
|
||||||
|
using Stylet;
|
||||||
|
|
||||||
|
namespace Artemis.UI.PropertyInput
|
||||||
|
{
|
||||||
|
public class FloatPropertyInputViewModel : PropertyInputViewModel<float>
|
||||||
|
{
|
||||||
|
public FloatPropertyInputViewModel(LayerProperty<float> layerProperty, IProfileEditorService profileEditorService, IModelValidator<FloatPropertyInputViewModel> validator)
|
||||||
|
: base(layerProperty, profileEditorService, validator)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class FloatPropertyInputViewModelValidator : AbstractValidator<FloatPropertyInputViewModel>
|
||||||
|
{
|
||||||
|
public FloatPropertyInputViewModelValidator()
|
||||||
|
{
|
||||||
|
RuleFor(vm => vm.InputValue)
|
||||||
|
.LessThanOrEqualTo(vm => (float) vm.LayerProperty.PropertyDescription.MaxInputValue)
|
||||||
|
.When(vm => vm.LayerProperty.PropertyDescription.MaxInputValue is float);
|
||||||
|
|
||||||
|
RuleFor(vm => vm.InputValue)
|
||||||
|
.GreaterThanOrEqualTo(vm => (float) vm.LayerProperty.PropertyDescription.MinInputValue)
|
||||||
|
.When(vm => vm.LayerProperty.PropertyDescription.MinInputValue is float);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,24 +1,24 @@
|
|||||||
<UserControl x:Class="Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.IntPropertyInputView"
|
<UserControl x:Class="Artemis.UI.PropertyInput.IntPropertyInputView"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:local="clr-namespace:Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput"
|
xmlns:local="clr-namespace:Artemis.UI.PropertyInput"
|
||||||
xmlns:s="https://github.com/canton7/Stylet"
|
xmlns:s="https://github.com/canton7/Stylet"
|
||||||
xmlns:shared="clr-namespace:Artemis.UI.Shared;assembly=Artemis.UI.Shared"
|
xmlns:shared="clr-namespace:Artemis.UI.Shared;assembly=Artemis.UI.Shared"
|
||||||
xmlns:controls="clr-namespace:Artemis.UI.Shared.Controls;assembly=Artemis.UI.Shared"
|
xmlns:controls="clr-namespace:Artemis.UI.Shared.Controls;assembly=Artemis.UI.Shared"
|
||||||
xmlns:propertyInput="clr-namespace:Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput"
|
xmlns:propertyInput="clr-namespace:Artemis.UI.PropertyInput"
|
||||||
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
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"
|
||||||
d:DataContext="{d:DesignInstance propertyInput:IntPropertyInputViewModel}">
|
d:DataContext="{d:DesignInstance propertyInput:IntPropertyInputViewModel}">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock Margin="0 0 5 4" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.PropertyDescription.InputPrefix}" />
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputPrefix}" />
|
||||||
<controls:DraggableFloat Value="{Binding InputValue}"
|
<controls:DraggableFloat Value="{Binding InputValue}"
|
||||||
materialDesign:ValidationAssist.UsePopup="True"
|
materialDesign:ValidationAssist.UsePopup="True"
|
||||||
StepSize="{Binding LayerPropertyViewModel.PropertyDescription.InputStepSize}"
|
StepSize="{Binding LayerProperty.PropertyDescription.InputStepSize}"
|
||||||
DragStarted="{s:Action InputDragStarted}"
|
DragStarted="{s:Action InputDragStarted}"
|
||||||
DragEnded="{s:Action InputDragEnded}" />
|
DragEnded="{s:Action InputDragEnded}" />
|
||||||
<TextBlock Margin="5 0 0 4" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.PropertyDescription.InputAffix}" />
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputAffix}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
30
src/Artemis.UI/PropertyInput/IntPropertyInputViewModel.cs
Normal file
30
src/Artemis.UI/PropertyInput/IntPropertyInputViewModel.cs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
using Artemis.Core.Models.Profile.LayerProperties;
|
||||||
|
using Artemis.UI.Shared.PropertyInput;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
|
using FluentValidation;
|
||||||
|
using Stylet;
|
||||||
|
|
||||||
|
namespace Artemis.UI.PropertyInput
|
||||||
|
{
|
||||||
|
public class IntPropertyInputViewModel : PropertyInputViewModel<int>
|
||||||
|
{
|
||||||
|
public IntPropertyInputViewModel(LayerProperty<int> layerProperty, IProfileEditorService profileEditorService, IModelValidator<IntPropertyInputViewModel> validator)
|
||||||
|
: base(layerProperty, profileEditorService, validator)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class IntPropertyInputViewModelValidator : AbstractValidator<IntPropertyInputViewModel>
|
||||||
|
{
|
||||||
|
public IntPropertyInputViewModelValidator()
|
||||||
|
{
|
||||||
|
RuleFor(vm => vm.InputValue)
|
||||||
|
.LessThanOrEqualTo(vm => (int) vm.LayerProperty.PropertyDescription.MaxInputValue)
|
||||||
|
.When(vm => vm.LayerProperty.PropertyDescription.MaxInputValue is int);
|
||||||
|
|
||||||
|
RuleFor(vm => vm.InputValue)
|
||||||
|
.GreaterThanOrEqualTo(vm => (int) vm.LayerProperty.PropertyDescription.MinInputValue)
|
||||||
|
.When(vm => vm.LayerProperty.PropertyDescription.MinInputValue is int);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,13 +1,13 @@
|
|||||||
<UserControl x:Class="Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.SKColorPropertyInputView"
|
<UserControl x:Class="Artemis.UI.PropertyInput.SKColorPropertyInputView"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:local="clr-namespace:Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput"
|
xmlns:local="clr-namespace:Artemis.UI.PropertyInput"
|
||||||
xmlns:artemis="clr-namespace:Artemis.UI.Shared;assembly=Artemis.UI.Shared"
|
xmlns:artemis="clr-namespace:Artemis.UI.Shared;assembly=Artemis.UI.Shared"
|
||||||
xmlns:converters="clr-namespace:Artemis.UI.Shared.Converters;assembly=Artemis.UI.Shared"
|
xmlns:converters="clr-namespace:Artemis.UI.Shared.Converters;assembly=Artemis.UI.Shared"
|
||||||
xmlns:controls="clr-namespace:Artemis.UI.Shared.Controls;assembly=Artemis.UI.Shared"
|
xmlns:controls="clr-namespace:Artemis.UI.Shared.Controls;assembly=Artemis.UI.Shared"
|
||||||
xmlns:propertyInput="clr-namespace:Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput"
|
xmlns:propertyInput="clr-namespace:Artemis.UI.PropertyInput"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="25" d:DesignWidth="800"
|
d:DesignHeight="25" d:DesignWidth="800"
|
||||||
d:DataContext="{d:DesignInstance propertyInput:SKColorPropertyInputViewModel}">
|
d:DataContext="{d:DesignInstance propertyInput:SKColorPropertyInputViewModel}">
|
||||||
@ -15,11 +15,11 @@
|
|||||||
<converters:SKColorToColorConverter x:Key="SKColorToColorConverter" />
|
<converters:SKColorToColorConverter x:Key="SKColorToColorConverter" />
|
||||||
</UserControl.Resources>
|
</UserControl.Resources>
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock Margin="0 0 5 4" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.PropertyDescription.InputPrefix}" />
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputPrefix}" />
|
||||||
<controls:ColorPicker Width="132"
|
<controls:ColorPicker Width="132"
|
||||||
Margin="0 -2 0 3"
|
Margin="0 -2 0 3"
|
||||||
Padding="0 -1"
|
Padding="0 -1"
|
||||||
Color="{Binding InputValue, Converter={StaticResource SKColorToColorConverter}}" />
|
Color="{Binding InputValue, Converter={StaticResource SKColorToColorConverter}}" />
|
||||||
<TextBlock Margin="5 0 0 4" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.PropertyDescription.InputAffix}" />
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputAffix}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
using Artemis.Core.Models.Profile.LayerProperties;
|
||||||
|
using Artemis.UI.Shared.PropertyInput;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
|
using SkiaSharp;
|
||||||
|
|
||||||
|
namespace Artemis.UI.PropertyInput
|
||||||
|
{
|
||||||
|
public class SKColorPropertyInputViewModel : PropertyInputViewModel<SKColor>
|
||||||
|
{
|
||||||
|
public SKColorPropertyInputViewModel(LayerProperty<SKColor> layerProperty, IProfileEditorService profileEditorService) : base(layerProperty, profileEditorService)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,29 +1,29 @@
|
|||||||
<UserControl x:Class="Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.SKPointPropertyInputView"
|
<UserControl x:Class="Artemis.UI.PropertyInput.SKPointPropertyInputView"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:local="clr-namespace:Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput"
|
xmlns:local="clr-namespace:Artemis.UI.PropertyInput"
|
||||||
xmlns:s="https://github.com/canton7/Stylet"
|
xmlns:s="https://github.com/canton7/Stylet"
|
||||||
xmlns:shared="clr-namespace:Artemis.UI.Shared;assembly=Artemis.UI.Shared"
|
xmlns:shared="clr-namespace:Artemis.UI.Shared;assembly=Artemis.UI.Shared"
|
||||||
xmlns:controls="clr-namespace:Artemis.UI.Shared.Controls;assembly=Artemis.UI.Shared"
|
xmlns:controls="clr-namespace:Artemis.UI.Shared.Controls;assembly=Artemis.UI.Shared"
|
||||||
xmlns:propertyInput="clr-namespace:Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput"
|
xmlns:propertyInput="clr-namespace:Artemis.UI.PropertyInput"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="25" d:DesignWidth="800"
|
d:DesignHeight="25" d:DesignWidth="800"
|
||||||
d:DataContext="{d:DesignInstance propertyInput:SKPointPropertyInputViewModel}">
|
d:DataContext="{d:DesignInstance propertyInput:SKPointPropertyInputViewModel}">
|
||||||
<StackPanel Orientation="Horizontal" KeyboardNavigation.IsTabStop="True">
|
<StackPanel Orientation="Horizontal" KeyboardNavigation.IsTabStop="True">
|
||||||
<TextBlock Margin="0 0 5 4" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.PropertyDescription.InputPrefix}" />
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputPrefix}" />
|
||||||
<controls:DraggableFloat ToolTip="X-coordinate (horizontal)"
|
<controls:DraggableFloat ToolTip="X-coordinate (horizontal)"
|
||||||
Value="{Binding X}"
|
Value="{Binding X}"
|
||||||
StepSize="{Binding LayerPropertyViewModel.PropertyDescription.InputStepSize}"
|
StepSize="{Binding LayerProperty.PropertyDescription.InputStepSize}"
|
||||||
DragStarted="{s:Action InputDragStarted}"
|
DragStarted="{s:Action InputDragStarted}"
|
||||||
DragEnded="{s:Action InputDragEnded}" />
|
DragEnded="{s:Action InputDragEnded}" />
|
||||||
<TextBlock Margin="5 0" VerticalAlignment="Bottom">,</TextBlock>
|
<TextBlock Margin="5 0" VerticalAlignment="Bottom">,</TextBlock>
|
||||||
<controls:DraggableFloat ToolTip="Y-coordinate (vertical)"
|
<controls:DraggableFloat ToolTip="Y-coordinate (vertical)"
|
||||||
Value="{Binding Y}"
|
Value="{Binding Y}"
|
||||||
StepSize="{Binding LayerPropertyViewModel.PropertyDescription.InputStepSize}"
|
StepSize="{Binding LayerProperty.PropertyDescription.InputStepSize}"
|
||||||
DragStarted="{s:Action InputDragStarted}"
|
DragStarted="{s:Action InputDragStarted}"
|
||||||
DragEnded="{s:Action InputDragEnded}" />
|
DragEnded="{s:Action InputDragEnded}" />
|
||||||
<TextBlock Margin="5 0 0 4" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.PropertyDescription.InputAffix}" />
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputAffix}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
@ -1,15 +1,17 @@
|
|||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.Abstract;
|
using Artemis.Core.Models.Profile.LayerProperties;
|
||||||
|
using Artemis.UI.Shared.PropertyInput;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
using FluentValidation;
|
using FluentValidation;
|
||||||
using PropertyChanged;
|
using PropertyChanged;
|
||||||
using SkiaSharp;
|
using SkiaSharp;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput
|
namespace Artemis.UI.PropertyInput
|
||||||
{
|
{
|
||||||
public class SKPointPropertyInputViewModel : PropertyInputViewModel<SKPoint>
|
public class SKPointPropertyInputViewModel : PropertyInputViewModel<SKPoint>
|
||||||
{
|
{
|
||||||
public SKPointPropertyInputViewModel(LayerPropertyViewModel<SKPoint> layerPropertyViewModel, IModelValidator<SKPointPropertyInputViewModel> validator)
|
public SKPointPropertyInputViewModel(LayerProperty<SKPoint> layerProperty, IProfileEditorService profileEditorService,
|
||||||
: base(layerPropertyViewModel, validator)
|
IModelValidator<SKPointPropertyInputViewModel> validator) : base(layerProperty, profileEditorService, validator)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -40,18 +42,18 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyI
|
|||||||
public SKPointPropertyInputViewModelValidator()
|
public SKPointPropertyInputViewModelValidator()
|
||||||
{
|
{
|
||||||
RuleFor(vm => vm.X)
|
RuleFor(vm => vm.X)
|
||||||
.LessThanOrEqualTo(vm => ((SKPoint) vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue).X)
|
.LessThanOrEqualTo(vm => ((SKPoint) vm.LayerProperty.PropertyDescription.MaxInputValue).X)
|
||||||
.When(vm => vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue is SKPoint);
|
.When(vm => vm.LayerProperty.PropertyDescription.MaxInputValue is SKPoint);
|
||||||
RuleFor(vm => vm.X)
|
RuleFor(vm => vm.X)
|
||||||
.GreaterThanOrEqualTo(vm => ((SKPoint) vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue).X)
|
.GreaterThanOrEqualTo(vm => ((SKPoint) vm.LayerProperty.PropertyDescription.MaxInputValue).X)
|
||||||
.When(vm => vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue is SKPoint);
|
.When(vm => vm.LayerProperty.PropertyDescription.MaxInputValue is SKPoint);
|
||||||
|
|
||||||
RuleFor(vm => vm.Y)
|
RuleFor(vm => vm.Y)
|
||||||
.LessThanOrEqualTo(vm => ((SKPoint) vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue).Y)
|
.LessThanOrEqualTo(vm => ((SKPoint) vm.LayerProperty.PropertyDescription.MaxInputValue).Y)
|
||||||
.When(vm => vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue is SKPoint);
|
.When(vm => vm.LayerProperty.PropertyDescription.MaxInputValue is SKPoint);
|
||||||
RuleFor(vm => vm.Y)
|
RuleFor(vm => vm.Y)
|
||||||
.GreaterThanOrEqualTo(vm => ((SKPoint) vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue).Y)
|
.GreaterThanOrEqualTo(vm => ((SKPoint) vm.LayerProperty.PropertyDescription.MaxInputValue).Y)
|
||||||
.When(vm => vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue is SKPoint);
|
.When(vm => vm.LayerProperty.PropertyDescription.MaxInputValue is SKPoint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,9 +1,9 @@
|
|||||||
<UserControl x:Class="Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.SKSizePropertyInputView"
|
<UserControl x:Class="Artemis.UI.PropertyInput.SKSizePropertyInputView"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:local="clr-namespace:Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput"
|
xmlns:local="clr-namespace:Artemis.UI.PropertyInput"
|
||||||
xmlns:s="https://github.com/canton7/Stylet"
|
xmlns:s="https://github.com/canton7/Stylet"
|
||||||
xmlns:shared="clr-namespace:Artemis.UI.Shared;assembly=Artemis.UI.Shared"
|
xmlns:shared="clr-namespace:Artemis.UI.Shared;assembly=Artemis.UI.Shared"
|
||||||
xmlns:controls="clr-namespace:Artemis.UI.Shared.Controls;assembly=Artemis.UI.Shared"
|
xmlns:controls="clr-namespace:Artemis.UI.Shared.Controls;assembly=Artemis.UI.Shared"
|
||||||
@ -11,18 +11,18 @@
|
|||||||
d:DesignHeight="450" d:DesignWidth="800"
|
d:DesignHeight="450" d:DesignWidth="800"
|
||||||
d:DataContext="{d:DesignInstance local:SKSizePropertyInputViewModel}">
|
d:DataContext="{d:DesignInstance local:SKSizePropertyInputViewModel}">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock Margin="0 0 5 4" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.PropertyDescription.InputPrefix}" />
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputPrefix}" />
|
||||||
<controls:DraggableFloat ToolTip="Height"
|
<controls:DraggableFloat ToolTip="Height"
|
||||||
Value="{Binding Height}"
|
Value="{Binding Height}"
|
||||||
StepSize="{Binding LayerPropertyViewModel.PropertyDescription.InputStepSize}"
|
StepSize="{Binding LayerProperty.PropertyDescription.InputStepSize}"
|
||||||
DragStarted="{s:Action InputDragStarted}"
|
DragStarted="{s:Action InputDragStarted}"
|
||||||
DragEnded="{s:Action InputDragEnded}" />
|
DragEnded="{s:Action InputDragEnded}" />
|
||||||
<TextBlock Margin="5 0" VerticalAlignment="Bottom">,</TextBlock>
|
<TextBlock Margin="5 0" VerticalAlignment="Bottom">,</TextBlock>
|
||||||
<controls:DraggableFloat ToolTip="Width"
|
<controls:DraggableFloat ToolTip="Width"
|
||||||
Value="{Binding Width}"
|
Value="{Binding Width}"
|
||||||
StepSize="{Binding LayerPropertyViewModel.PropertyDescription.InputStepSize}"
|
StepSize="{Binding LayerProperty.PropertyDescription.InputStepSize}"
|
||||||
DragStarted="{s:Action InputDragStarted}"
|
DragStarted="{s:Action InputDragStarted}"
|
||||||
DragEnded="{s:Action InputDragEnded}" />
|
DragEnded="{s:Action InputDragEnded}" />
|
||||||
<TextBlock Margin="5 0 0 4" Width="10" VerticalAlignment="Bottom" Text="{Binding LayerPropertyViewModel.PropertyDescription.InputAffix}" />
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputAffix}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
59
src/Artemis.UI/PropertyInput/SKSizePropertyInputViewModel.cs
Normal file
59
src/Artemis.UI/PropertyInput/SKSizePropertyInputViewModel.cs
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
using Artemis.Core.Models.Profile.LayerProperties;
|
||||||
|
using Artemis.UI.Shared.PropertyInput;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
|
using FluentValidation;
|
||||||
|
using PropertyChanged;
|
||||||
|
using SkiaSharp;
|
||||||
|
using Stylet;
|
||||||
|
|
||||||
|
namespace Artemis.UI.PropertyInput
|
||||||
|
{
|
||||||
|
public class SKSizePropertyInputViewModel : PropertyInputViewModel<SKSize>
|
||||||
|
{
|
||||||
|
public SKSizePropertyInputViewModel(LayerProperty<SKSize> layerProperty, IProfileEditorService profileEditorService,
|
||||||
|
IModelValidator<SKSizePropertyInputViewModel> validator) : base(layerProperty, profileEditorService, validator)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// Since SKSize is immutable we need to create properties that replace the SKSize entirely
|
||||||
|
[DependsOn(nameof(InputValue))]
|
||||||
|
public float Width
|
||||||
|
{
|
||||||
|
get => InputValue.Width;
|
||||||
|
set => InputValue = new SKSize(value, Height);
|
||||||
|
}
|
||||||
|
|
||||||
|
[DependsOn(nameof(InputValue))]
|
||||||
|
public float Height
|
||||||
|
{
|
||||||
|
get => InputValue.Height;
|
||||||
|
set => InputValue = new SKSize(Width, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnInputValueChanged()
|
||||||
|
{
|
||||||
|
NotifyOfPropertyChange(nameof(Width));
|
||||||
|
NotifyOfPropertyChange(nameof(Height));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SKSizePropertyInputViewModelValidator : AbstractValidator<SKSizePropertyInputViewModel>
|
||||||
|
{
|
||||||
|
public SKSizePropertyInputViewModelValidator()
|
||||||
|
{
|
||||||
|
RuleFor(vm => vm.Width)
|
||||||
|
.LessThanOrEqualTo(vm => ((SKSize) vm.LayerProperty.PropertyDescription.MaxInputValue).Width)
|
||||||
|
.When(vm => vm.LayerProperty.PropertyDescription.MaxInputValue is SKSize);
|
||||||
|
RuleFor(vm => vm.Width)
|
||||||
|
.GreaterThanOrEqualTo(vm => ((SKSize) vm.LayerProperty.PropertyDescription.MaxInputValue).Width)
|
||||||
|
.When(vm => vm.LayerProperty.PropertyDescription.MaxInputValue is SKSize);
|
||||||
|
|
||||||
|
RuleFor(vm => vm.Height)
|
||||||
|
.LessThanOrEqualTo(vm => ((SKSize) vm.LayerProperty.PropertyDescription.MaxInputValue).Height)
|
||||||
|
.When(vm => vm.LayerProperty.PropertyDescription.MaxInputValue is SKSize);
|
||||||
|
RuleFor(vm => vm.Height)
|
||||||
|
.GreaterThanOrEqualTo(vm => ((SKSize) vm.LayerProperty.PropertyDescription.MaxInputValue).Height)
|
||||||
|
.When(vm => vm.LayerProperty.PropertyDescription.MaxInputValue is SKSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -16,6 +16,8 @@ using Artemis.UI.Events;
|
|||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Timeline;
|
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Timeline;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree;
|
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
|
using Artemis.UI.Shared.Events;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties
|
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties
|
||||||
|
|||||||
@ -1,18 +1,22 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using Artemis.Core.Models.Profile;
|
using Artemis.Core.Models.Profile;
|
||||||
using Artemis.Core.Models.Profile.LayerProperties;
|
using Artemis.Core.Models.Profile.LayerProperties;
|
||||||
using Artemis.Core.Models.Profile.LayerProperties.Attributes;
|
using Artemis.Core.Models.Profile.LayerProperties.Attributes;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Abstract;
|
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Abstract;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Timeline;
|
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Timeline;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree;
|
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
|
using Ninject;
|
||||||
|
using Ninject.Parameters;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties
|
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties
|
||||||
{
|
{
|
||||||
public class LayerPropertyGroupViewModel : LayerPropertyBaseViewModel
|
public class LayerPropertyGroupViewModel : LayerPropertyBaseViewModel
|
||||||
{
|
{
|
||||||
public LayerPropertyGroupViewModel(IProfileEditorService profileEditorService, LayerPropertyGroup layerPropertyGroup, PropertyGroupDescriptionAttribute propertyGroupDescription)
|
public LayerPropertyGroupViewModel(IProfileEditorService profileEditorService, LayerPropertyGroup layerPropertyGroup,
|
||||||
|
PropertyGroupDescriptionAttribute propertyGroupDescription)
|
||||||
{
|
{
|
||||||
ProfileEditorService = profileEditorService;
|
ProfileEditorService = profileEditorService;
|
||||||
|
|
||||||
@ -43,30 +47,6 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties
|
|||||||
public TreePropertyGroupViewModel TreePropertyGroupViewModel { get; set; }
|
public TreePropertyGroupViewModel TreePropertyGroupViewModel { get; set; }
|
||||||
public TimelinePropertyGroupViewModel TimelinePropertyGroupViewModel { get; set; }
|
public TimelinePropertyGroupViewModel TimelinePropertyGroupViewModel { get; set; }
|
||||||
|
|
||||||
private void PopulateChildren()
|
|
||||||
{
|
|
||||||
// Get all properties and property groups and create VMs for them
|
|
||||||
foreach (var propertyInfo in LayerPropertyGroup.GetType().GetProperties())
|
|
||||||
{
|
|
||||||
var propertyAttribute = (PropertyDescriptionAttribute) Attribute.GetCustomAttribute(propertyInfo, typeof(PropertyDescriptionAttribute));
|
|
||||||
var groupAttribute = (PropertyGroupDescriptionAttribute) Attribute.GetCustomAttribute(propertyInfo, typeof(PropertyGroupDescriptionAttribute));
|
|
||||||
var value = propertyInfo.GetValue(LayerPropertyGroup);
|
|
||||||
|
|
||||||
// Create VMs for properties on the group
|
|
||||||
if (propertyAttribute != null && value is BaseLayerProperty baseLayerProperty)
|
|
||||||
{
|
|
||||||
var viewModel = ProfileEditorService.CreateLayerPropertyViewModel(baseLayerProperty, propertyAttribute);
|
|
||||||
if (viewModel != null)
|
|
||||||
Children.Add(viewModel);
|
|
||||||
}
|
|
||||||
// Create VMs for child groups on this group, resulting in a nested structure
|
|
||||||
else if (groupAttribute != null && value is LayerPropertyGroup layerPropertyGroup)
|
|
||||||
{
|
|
||||||
Children.Add(new LayerPropertyGroupViewModel(ProfileEditorService, layerPropertyGroup, groupAttribute));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override List<BaseLayerPropertyKeyframe> GetKeyframes(bool expandedOnly)
|
public override List<BaseLayerPropertyKeyframe> GetKeyframes(bool expandedOnly)
|
||||||
{
|
{
|
||||||
var result = new List<BaseLayerPropertyKeyframe>();
|
var result = new List<BaseLayerPropertyKeyframe>();
|
||||||
@ -101,6 +81,48 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void PopulateChildren()
|
||||||
|
{
|
||||||
|
// Get all properties and property groups and create VMs for them
|
||||||
|
foreach (var propertyInfo in LayerPropertyGroup.GetType().GetProperties())
|
||||||
|
{
|
||||||
|
var propertyAttribute = (PropertyDescriptionAttribute) Attribute.GetCustomAttribute(propertyInfo, typeof(PropertyDescriptionAttribute));
|
||||||
|
var groupAttribute = (PropertyGroupDescriptionAttribute) Attribute.GetCustomAttribute(propertyInfo, typeof(PropertyGroupDescriptionAttribute));
|
||||||
|
var value = propertyInfo.GetValue(LayerPropertyGroup);
|
||||||
|
|
||||||
|
// Create VMs for properties on the group
|
||||||
|
if (propertyAttribute != null && value is BaseLayerProperty baseLayerProperty)
|
||||||
|
{
|
||||||
|
var viewModel = CreateLayerPropertyViewModel(baseLayerProperty, propertyAttribute);
|
||||||
|
if (viewModel != null)
|
||||||
|
Children.Add(viewModel);
|
||||||
|
}
|
||||||
|
// Create VMs for child groups on this group, resulting in a nested structure
|
||||||
|
else if (groupAttribute != null && value is LayerPropertyGroup layerPropertyGroup)
|
||||||
|
Children.Add(new LayerPropertyGroupViewModel(ProfileEditorService, layerPropertyGroup, groupAttribute));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private LayerPropertyBaseViewModel CreateLayerPropertyViewModel(BaseLayerProperty baseLayerProperty, PropertyDescriptionAttribute propertyDescription)
|
||||||
|
{
|
||||||
|
// Go through the pain of instantiating a generic type VM now via reflection to make things a lot simpler down the line
|
||||||
|
var genericType = baseLayerProperty.GetType().Name == typeof(LayerProperty<>).Name
|
||||||
|
? baseLayerProperty.GetType().GetGenericArguments()[0]
|
||||||
|
: baseLayerProperty.GetType().BaseType.GetGenericArguments()[0];
|
||||||
|
|
||||||
|
// Only create entries for types supported by a tree input VM
|
||||||
|
if (!genericType.IsEnum && ProfileEditorService.RegisteredPropertyEditors.All(r => r.SupportedType != genericType))
|
||||||
|
return null;
|
||||||
|
var genericViewModel = typeof(LayerPropertyViewModel<>).MakeGenericType(genericType);
|
||||||
|
var parameters = new IParameter[]
|
||||||
|
{
|
||||||
|
new ConstructorArgument("layerProperty", baseLayerProperty),
|
||||||
|
new ConstructorArgument("propertyDescription", propertyDescription)
|
||||||
|
};
|
||||||
|
|
||||||
|
return (LayerPropertyBaseViewModel) ProfileEditorService.Kernel.Get(genericViewModel, parameters);
|
||||||
|
}
|
||||||
|
|
||||||
private void LayerPropertyGroupOnVisibilityChanged(object sender, EventArgs e)
|
private void LayerPropertyGroupOnVisibilityChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
NotifyOfPropertyChange(nameof(IsVisible));
|
NotifyOfPropertyChange(nameof(IsVisible));
|
||||||
|
|||||||
@ -2,37 +2,39 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Artemis.Core.Models.Profile.LayerProperties;
|
using Artemis.Core.Models.Profile.LayerProperties;
|
||||||
using Artemis.Core.Models.Profile.LayerProperties.Attributes;
|
using Artemis.UI.Exceptions;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Abstract;
|
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Abstract;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Timeline;
|
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Timeline;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree;
|
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.PropertyInput;
|
||||||
|
using Artemis.UI.Shared.PropertyInput;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
using Humanizer;
|
using Humanizer;
|
||||||
|
using Ninject;
|
||||||
|
using Ninject.Parameters;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties
|
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties
|
||||||
{
|
{
|
||||||
public class LayerPropertyViewModel<T> : LayerPropertyViewModel
|
public class LayerPropertyViewModel<T> : LayerPropertyViewModel
|
||||||
{
|
{
|
||||||
public LayerPropertyViewModel(IProfileEditorService profileEditorService, LayerProperty<T> layerProperty, PropertyDescriptionAttribute propertyDescription)
|
public LayerPropertyViewModel(IProfileEditorService profileEditorService, LayerProperty<T> layerProperty) : base(profileEditorService, layerProperty)
|
||||||
: base(profileEditorService, layerProperty)
|
|
||||||
{
|
{
|
||||||
LayerProperty = layerProperty;
|
LayerProperty = layerProperty;
|
||||||
PropertyDescription = propertyDescription;
|
|
||||||
|
|
||||||
TreePropertyViewModel = ProfileEditorService.CreateTreePropertyViewModel(this);
|
TreePropertyViewModel = CreateTreePropertyViewModel();
|
||||||
TimelinePropertyViewModel = new TimelinePropertyViewModel<T>(this, profileEditorService);
|
TimelinePropertyViewModel = new TimelinePropertyViewModel<T>(this, profileEditorService);
|
||||||
|
|
||||||
TreePropertyBaseViewModel = TreePropertyViewModel;
|
TreePropertyBaseViewModel = TreePropertyViewModel;
|
||||||
TimelinePropertyBaseViewModel = TimelinePropertyViewModel;
|
TimelinePropertyBaseViewModel = TimelinePropertyViewModel;
|
||||||
|
|
||||||
// Generate a fallback name if the description does not contain one
|
// Generate a fallback name if the description does not contain one
|
||||||
if (PropertyDescription.Name == null)
|
if (LayerProperty.PropertyDescription.Name == null)
|
||||||
{
|
{
|
||||||
var propertyInfo = LayerProperty.Parent?.GetType().GetProperties().FirstOrDefault(p => ReferenceEquals(p.GetValue(LayerProperty.Parent), LayerProperty));
|
var propertyInfo = LayerProperty.Parent?.GetType().GetProperties().FirstOrDefault(p => ReferenceEquals(p.GetValue(LayerProperty.Parent), LayerProperty));
|
||||||
if (propertyInfo != null)
|
if (propertyInfo != null)
|
||||||
PropertyDescription.Name = propertyInfo.Name.Humanize();
|
LayerProperty.PropertyDescription.Name = propertyInfo.Name.Humanize();
|
||||||
else
|
else
|
||||||
PropertyDescription.Name = $"Unknown {typeof(T).Name} property";
|
LayerProperty.PropertyDescription.Name = $"Unknown {typeof(T).Name} property";
|
||||||
}
|
}
|
||||||
|
|
||||||
LayerProperty.VisibilityChanged += LayerPropertyOnVisibilityChanged;
|
LayerProperty.VisibilityChanged += LayerPropertyOnVisibilityChanged;
|
||||||
@ -69,6 +71,29 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties
|
|||||||
ProfileEditorService.UpdateProfilePreview();
|
ProfileEditorService.UpdateProfilePreview();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private TreePropertyViewModel<T> CreateTreePropertyViewModel()
|
||||||
|
{
|
||||||
|
// Make sure there is a supported property editor VM, unless the type is an enum, then we'll use the EnumPropertyInputViewModel
|
||||||
|
Type vmType = null;
|
||||||
|
if (typeof(T).IsEnum)
|
||||||
|
vmType = typeof(EnumPropertyInputViewModel<>).MakeGenericType(typeof(T));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var registration = ProfileEditorService.RegisteredPropertyEditors.FirstOrDefault(r => r.SupportedType == typeof(T));
|
||||||
|
if (registration != null)
|
||||||
|
vmType = registration.ViewModelType;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (vmType == null)
|
||||||
|
throw new ArtemisUIException($"Cannot create a tree property view model for type {typeof(T)}, found no matching property editor");
|
||||||
|
|
||||||
|
var parameters = new IParameter[]
|
||||||
|
{
|
||||||
|
new ConstructorArgument("layerProperty", LayerProperty)
|
||||||
|
};
|
||||||
|
return new TreePropertyViewModel<T>(this, (PropertyInputViewModel<T>) ProfileEditorService.Kernel.Get(vmType, parameters), ProfileEditorService);
|
||||||
|
}
|
||||||
|
|
||||||
private void LayerPropertyOnVisibilityChanged(object sender, EventArgs e)
|
private void LayerPropertyOnVisibilityChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
NotifyOfPropertyChange(nameof(IsVisible));
|
NotifyOfPropertyChange(nameof(IsVisible));
|
||||||
@ -86,7 +111,6 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties
|
|||||||
public IProfileEditorService ProfileEditorService { get; }
|
public IProfileEditorService ProfileEditorService { get; }
|
||||||
public BaseLayerProperty BaseLayerProperty { get; }
|
public BaseLayerProperty BaseLayerProperty { get; }
|
||||||
|
|
||||||
public PropertyDescriptionAttribute PropertyDescription { get; protected set; }
|
|
||||||
public TreePropertyViewModel TreePropertyBaseViewModel { get; set; }
|
public TreePropertyViewModel TreePropertyBaseViewModel { get; set; }
|
||||||
public TimelinePropertyViewModel TimelinePropertyBaseViewModel { get; set; }
|
public TimelinePropertyViewModel TimelinePropertyBaseViewModel { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,7 @@ using System.Windows.Input;
|
|||||||
using Artemis.Core.Models.Profile.LayerProperties;
|
using Artemis.Core.Models.Profile.LayerProperties;
|
||||||
using Artemis.Core.Utilities;
|
using Artemis.Core.Utilities;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Timeline
|
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Timeline
|
||||||
|
|||||||
@ -3,6 +3,7 @@ using System.Linq;
|
|||||||
using Artemis.UI.Exceptions;
|
using Artemis.UI.Exceptions;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Abstract;
|
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Abstract;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Timeline
|
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Timeline
|
||||||
|
|||||||
@ -1,28 +0,0 @@
|
|||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.Abstract;
|
|
||||||
using FluentValidation;
|
|
||||||
using Stylet;
|
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput
|
|
||||||
{
|
|
||||||
public class FloatPropertyInputViewModel : PropertyInputViewModel<float>
|
|
||||||
{
|
|
||||||
public FloatPropertyInputViewModel(LayerPropertyViewModel<float> layerPropertyViewModel, IModelValidator<FloatPropertyInputViewModel> validator)
|
|
||||||
: base(layerPropertyViewModel, validator)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class FloatPropertyInputViewModelValidator : AbstractValidator<FloatPropertyInputViewModel>
|
|
||||||
{
|
|
||||||
public FloatPropertyInputViewModelValidator()
|
|
||||||
{
|
|
||||||
RuleFor(vm => vm.InputValue)
|
|
||||||
.LessThanOrEqualTo(vm => (float) vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue)
|
|
||||||
.When(vm => vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue is float);
|
|
||||||
|
|
||||||
RuleFor(vm => vm.InputValue)
|
|
||||||
.GreaterThanOrEqualTo(vm => (float) vm.LayerPropertyViewModel.PropertyDescription.MinInputValue)
|
|
||||||
.When(vm => vm.LayerPropertyViewModel.PropertyDescription.MinInputValue is float);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.Abstract;
|
|
||||||
using FluentValidation;
|
|
||||||
using Stylet;
|
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput
|
|
||||||
{
|
|
||||||
public class IntPropertyInputViewModel : PropertyInputViewModel<int>
|
|
||||||
{
|
|
||||||
public IntPropertyInputViewModel(LayerPropertyViewModel<int> layerPropertyViewModel, IModelValidator<IntPropertyInputViewModel> validator)
|
|
||||||
: base(layerPropertyViewModel, validator)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class IntPropertyInputViewModelValidator : AbstractValidator<IntPropertyInputViewModel>
|
|
||||||
{
|
|
||||||
public IntPropertyInputViewModelValidator()
|
|
||||||
{
|
|
||||||
RuleFor(vm => vm.InputValue)
|
|
||||||
.LessThanOrEqualTo(vm => (int) vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue)
|
|
||||||
.When(vm => vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue is int);
|
|
||||||
|
|
||||||
RuleFor(vm => vm.InputValue)
|
|
||||||
.GreaterThanOrEqualTo(vm => (int) vm.LayerPropertyViewModel.PropertyDescription.MinInputValue)
|
|
||||||
.When(vm => vm.LayerPropertyViewModel.PropertyDescription.MinInputValue is int);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.Abstract;
|
|
||||||
using SkiaSharp;
|
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput
|
|
||||||
{
|
|
||||||
public class SKColorPropertyInputViewModel : PropertyInputViewModel<SKColor>
|
|
||||||
{
|
|
||||||
public SKColorPropertyInputViewModel(LayerPropertyViewModel<SKColor> layerPropertyViewModel) : base(layerPropertyViewModel)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,57 +0,0 @@
|
|||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.Abstract;
|
|
||||||
using FluentValidation;
|
|
||||||
using PropertyChanged;
|
|
||||||
using SkiaSharp;
|
|
||||||
using Stylet;
|
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput
|
|
||||||
{
|
|
||||||
public class SKSizePropertyInputViewModel : PropertyInputViewModel<SKSize>
|
|
||||||
{
|
|
||||||
public SKSizePropertyInputViewModel(LayerPropertyViewModel<SKSize> layerPropertyViewModel, IModelValidator<SKSizePropertyInputViewModel> validator)
|
|
||||||
: base(layerPropertyViewModel, validator)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// Since SKSize is immutable we need to create properties that replace the SKSize entirely
|
|
||||||
[DependsOn(nameof(InputValue))]
|
|
||||||
public float Width
|
|
||||||
{
|
|
||||||
get => InputValue.Width;
|
|
||||||
set => InputValue = new SKSize(value, Height);
|
|
||||||
}
|
|
||||||
|
|
||||||
[DependsOn(nameof(InputValue))]
|
|
||||||
public float Height
|
|
||||||
{
|
|
||||||
get => InputValue.Height;
|
|
||||||
set => InputValue = new SKSize(Width, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnInputValueChanged()
|
|
||||||
{
|
|
||||||
NotifyOfPropertyChange(nameof(Width));
|
|
||||||
NotifyOfPropertyChange(nameof(Height));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class SKSizePropertyInputViewModelValidator : AbstractValidator<SKSizePropertyInputViewModel>
|
|
||||||
{
|
|
||||||
public SKSizePropertyInputViewModelValidator()
|
|
||||||
{
|
|
||||||
RuleFor(vm => vm.Width)
|
|
||||||
.LessThanOrEqualTo(vm => ((SKSize)vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue).Width)
|
|
||||||
.When(vm => vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue is SKSize);
|
|
||||||
RuleFor(vm => vm.Width)
|
|
||||||
.GreaterThanOrEqualTo(vm => ((SKSize)vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue).Width)
|
|
||||||
.When(vm => vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue is SKSize);
|
|
||||||
|
|
||||||
RuleFor(vm => vm.Height)
|
|
||||||
.LessThanOrEqualTo(vm => ((SKSize)vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue).Height)
|
|
||||||
.When(vm => vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue is SKSize);
|
|
||||||
RuleFor(vm => vm.Height)
|
|
||||||
.GreaterThanOrEqualTo(vm => ((SKSize)vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue).Height)
|
|
||||||
.When(vm => vm.LayerPropertyViewModel.PropertyDescription.MaxInputValue is SKSize);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -32,11 +32,18 @@
|
|||||||
Padding="0,0,5,0"
|
Padding="0,0,5,0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
TextTrimming="CharacterEllipsis"
|
TextTrimming="CharacterEllipsis"
|
||||||
Text="{Binding LayerPropertyViewModel.PropertyDescription.Name}"
|
Text="{Binding LayerPropertyViewModel.LayerProperty.PropertyDescription.Name}"
|
||||||
ToolTip="{Binding LayerPropertyViewModel.PropertyDescription.Description}"
|
ToolTip="{Binding LayerPropertyViewModel.LayerProperty.PropertyDescription.Description}"
|
||||||
HorizontalAlignment="Left" />
|
HorizontalAlignment="Left" />
|
||||||
|
|
||||||
<ContentControl Grid.Column="2" Margin="20 0" s:View.Model="{Binding PropertyInputViewModel}" />
|
<ContentControl Grid.Column="2" Margin="20 0" s:View.Model="{Binding PropertyInputViewModel}">
|
||||||
|
<ContentControl.Resources>
|
||||||
|
<Style TargetType="TextBlock">
|
||||||
|
<Setter Property="Margin" Value="0 0 5 4" />
|
||||||
|
<Setter Property="VerticalAlignment" Value="Bottom" />
|
||||||
|
</Style>
|
||||||
|
</ContentControl.Resources>
|
||||||
|
</ContentControl>
|
||||||
|
|
||||||
<Button Grid.Column="3"
|
<Button Grid.Column="3"
|
||||||
Style="{StaticResource MaterialDesignOutlinedButton}"
|
Style="{StaticResource MaterialDesignOutlinedButton}"
|
||||||
|
|||||||
@ -3,8 +3,8 @@ using System.Linq;
|
|||||||
using Artemis.Core.Models.Profile.LayerProperties;
|
using Artemis.Core.Models.Profile.LayerProperties;
|
||||||
using Artemis.Core.Utilities;
|
using Artemis.Core.Utilities;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Abstract;
|
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Abstract;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree.PropertyInput.Abstract;
|
using Artemis.UI.Shared.PropertyInput;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree
|
namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties.Tree
|
||||||
{
|
{
|
||||||
|
|||||||
@ -5,6 +5,7 @@ using Artemis.Core.Models.Profile;
|
|||||||
using Artemis.UI.Ninject.Factories;
|
using Artemis.UI.Ninject.Factories;
|
||||||
using Artemis.UI.Screens.Module.ProfileEditor.ProfileTree.TreeItem;
|
using Artemis.UI.Screens.Module.ProfileEditor.ProfileTree.TreeItem;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
using GongSolutions.Wpf.DragDrop;
|
using GongSolutions.Wpf.DragDrop;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.ProfileTree
|
namespace Artemis.UI.Screens.Module.ProfileEditor.ProfileTree
|
||||||
|
|||||||
@ -9,6 +9,7 @@ using Artemis.Core.Models.Profile.LayerShapes;
|
|||||||
using Artemis.Core.Models.Surface;
|
using Artemis.Core.Models.Surface;
|
||||||
using Artemis.UI.Extensions;
|
using Artemis.UI.Extensions;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
using RGB.NET.Core;
|
using RGB.NET.Core;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
using Rectangle = Artemis.Core.Models.Profile.LayerShapes.Rectangle;
|
using Rectangle = Artemis.Core.Models.Profile.LayerShapes.Rectangle;
|
||||||
|
|||||||
@ -16,6 +16,7 @@ using Artemis.UI.Ninject.Factories;
|
|||||||
using Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools;
|
using Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools;
|
||||||
using Artemis.UI.Screens.Shared;
|
using Artemis.UI.Screens.Shared;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization
|
namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization
|
||||||
@ -338,7 +339,7 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization
|
|||||||
UpdateCanSelectEditTool();
|
UpdateCanSelectEditTool();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SelectedLayerOnLayerBrushUpdated(object? sender, EventArgs e)
|
private void SelectedLayerOnLayerBrushUpdated(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
UpdateCanSelectEditTool();
|
UpdateCanSelectEditTool();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,7 @@ using System.Windows.Media;
|
|||||||
using Artemis.Core.Models.Profile;
|
using Artemis.Core.Models.Profile;
|
||||||
using Artemis.UI.Events;
|
using Artemis.UI.Events;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
using SkiaSharp;
|
using SkiaSharp;
|
||||||
using SkiaSharp.Views.WPF;
|
using SkiaSharp.Views.WPF;
|
||||||
using Stylet;
|
using Stylet;
|
||||||
|
|||||||
@ -5,6 +5,7 @@ using System.Windows.Input;
|
|||||||
using Artemis.Core.Models.Profile;
|
using Artemis.Core.Models.Profile;
|
||||||
using Artemis.UI.Properties;
|
using Artemis.UI.Properties;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools
|
namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools
|
||||||
{
|
{
|
||||||
|
|||||||
@ -5,6 +5,7 @@ using System.Windows.Input;
|
|||||||
using Artemis.Core.Models.Profile;
|
using Artemis.Core.Models.Profile;
|
||||||
using Artemis.UI.Properties;
|
using Artemis.UI.Properties;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools
|
namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools
|
namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools
|
||||||
{
|
{
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools
|
namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,9 +1,14 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
|
using Artemis.Core;
|
||||||
using Artemis.Core.Models.Profile;
|
using Artemis.Core.Models.Profile;
|
||||||
|
using Artemis.Core.Models.Profile.Colors;
|
||||||
using Artemis.Core.Services;
|
using Artemis.Core.Services;
|
||||||
|
using Artemis.UI.PropertyInput;
|
||||||
|
using Artemis.UI.PropertyInput;
|
||||||
using Artemis.UI.Services.Interfaces;
|
using Artemis.UI.Services.Interfaces;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
using SkiaSharp;
|
using SkiaSharp;
|
||||||
using SkiaSharp.Views.WPF;
|
using SkiaSharp.Views.WPF;
|
||||||
|
|
||||||
@ -12,10 +17,24 @@ namespace Artemis.UI.Services
|
|||||||
public class LayerEditorService : ILayerEditorService
|
public class LayerEditorService : ILayerEditorService
|
||||||
{
|
{
|
||||||
private readonly ISettingsService _settingsService;
|
private readonly ISettingsService _settingsService;
|
||||||
|
private readonly IProfileEditorService _profileEditorService;
|
||||||
|
|
||||||
public LayerEditorService(ISettingsService settingsService)
|
public LayerEditorService(ISettingsService settingsService, IProfileEditorService profileEditorService)
|
||||||
{
|
{
|
||||||
_settingsService = settingsService;
|
_settingsService = settingsService;
|
||||||
|
_profileEditorService = profileEditorService;
|
||||||
|
RegisterBuiltInPropertyEditors();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RegisterBuiltInPropertyEditors()
|
||||||
|
{
|
||||||
|
_profileEditorService.RegisterPropertyInput(Constants.CorePluginInfo, typeof(BrushPropertyInputViewModel));
|
||||||
|
_profileEditorService.RegisterPropertyInput(Constants.CorePluginInfo, typeof(ColorGradientPropertyInputViewModel));
|
||||||
|
_profileEditorService.RegisterPropertyInput(Constants.CorePluginInfo, typeof(FloatPropertyInputViewModel));
|
||||||
|
_profileEditorService.RegisterPropertyInput(Constants.CorePluginInfo, typeof(IntPropertyInputViewModel));
|
||||||
|
_profileEditorService.RegisterPropertyInput(Constants.CorePluginInfo, typeof(SKColorPropertyInputViewModel));
|
||||||
|
_profileEditorService.RegisterPropertyInput(Constants.CorePluginInfo, typeof(SKPointPropertyInputViewModel));
|
||||||
|
_profileEditorService.RegisterPropertyInput(Constants.CorePluginInfo, typeof(SKSizePropertyInputViewModel));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
|
|||||||
@ -16,7 +16,7 @@ namespace Artemis.Plugins.Devices.Asus
|
|||||||
_rgbService = rgbService;
|
_rgbService = rgbService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void EnablePlugin()
|
protected override void EnablePlugin()
|
||||||
{
|
{
|
||||||
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(AsusRGBDevice<>), sender, args);
|
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(AsusRGBDevice<>), sender, args);
|
||||||
_rgbService.AddDeviceProvider(RgbDeviceProvider);
|
_rgbService.AddDeviceProvider(RgbDeviceProvider);
|
||||||
|
|||||||
@ -17,7 +17,7 @@ namespace Artemis.Plugins.Devices.CoolerMaster
|
|||||||
_rgbService = rgbService;
|
_rgbService = rgbService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void EnablePlugin()
|
protected override void EnablePlugin()
|
||||||
{
|
{
|
||||||
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(CoolerMasterRGBDevice<>), sender, args);
|
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(CoolerMasterRGBDevice<>), sender, args);
|
||||||
RGB.NET.Devices.CoolerMaster.CoolerMasterDeviceProvider.PossibleX64NativePaths.Add(Path.Combine(PluginInfo.Directory.FullName, "x64", "CMSDK.dll"));
|
RGB.NET.Devices.CoolerMaster.CoolerMasterDeviceProvider.PossibleX64NativePaths.Add(Path.Combine(PluginInfo.Directory.FullName, "x64", "CMSDK.dll"));
|
||||||
|
|||||||
@ -17,7 +17,7 @@ namespace Artemis.Plugins.Devices.Corsair
|
|||||||
_rgbService = rgbService;
|
_rgbService = rgbService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void EnablePlugin()
|
protected override void EnablePlugin()
|
||||||
{
|
{
|
||||||
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(CorsairRGBDevice<>), sender, args);
|
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(CorsairRGBDevice<>), sender, args);
|
||||||
RGB.NET.Devices.Corsair.CorsairDeviceProvider.PossibleX64NativePaths.Add(Path.Combine(PluginInfo.Directory.FullName, "x64", "CUESDK.x64_2017.dll"));
|
RGB.NET.Devices.Corsair.CorsairDeviceProvider.PossibleX64NativePaths.Add(Path.Combine(PluginInfo.Directory.FullName, "x64", "CUESDK.x64_2017.dll"));
|
||||||
|
|||||||
@ -17,7 +17,7 @@ namespace Artemis.Plugins.Devices.DMX
|
|||||||
HasConfigurationViewModel = true;
|
HasConfigurationViewModel = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void EnablePlugin()
|
protected override void EnablePlugin()
|
||||||
{
|
{
|
||||||
// TODO: Load from configuration
|
// TODO: Load from configuration
|
||||||
// RGB.NET.Devices.DMX.DMXDeviceProvider.Instance.AddDeviceDefinition();
|
// RGB.NET.Devices.DMX.DMXDeviceProvider.Instance.AddDeviceDefinition();
|
||||||
|
|||||||
@ -25,7 +25,7 @@ namespace Artemis.Plugins.Devices.Logitech
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void EnablePlugin()
|
protected override void EnablePlugin()
|
||||||
{
|
{
|
||||||
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(LogitechRGBDevice<>), sender, args);
|
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(LogitechRGBDevice<>), sender, args);
|
||||||
RGB.NET.Devices.Logitech.LogitechDeviceProvider.PossibleX64NativePaths.Add(Path.Combine(PluginInfo.Directory.FullName, "x64", "LogitechLedEnginesWrapper.dll"));
|
RGB.NET.Devices.Logitech.LogitechDeviceProvider.PossibleX64NativePaths.Add(Path.Combine(PluginInfo.Directory.FullName, "x64", "LogitechLedEnginesWrapper.dll"));
|
||||||
|
|||||||
@ -17,7 +17,7 @@ namespace Artemis.Plugins.Devices.Msi
|
|||||||
_rgbService = rgbService;
|
_rgbService = rgbService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void EnablePlugin()
|
protected override void EnablePlugin()
|
||||||
{
|
{
|
||||||
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(MsiRGBDevice<>), sender, args);
|
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(MsiRGBDevice<>), sender, args);
|
||||||
RGB.NET.Devices.Msi.MsiDeviceProvider.PossibleX64NativePaths.Add(Path.Combine(PluginInfo.Directory.FullName, "x64", "MysticLight_SDK.dll"));
|
RGB.NET.Devices.Msi.MsiDeviceProvider.PossibleX64NativePaths.Add(Path.Combine(PluginInfo.Directory.FullName, "x64", "MysticLight_SDK.dll"));
|
||||||
|
|||||||
@ -16,7 +16,7 @@ namespace Artemis.Plugins.Devices.Novation
|
|||||||
_rgbService = rgbService;
|
_rgbService = rgbService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void EnablePlugin()
|
protected override void EnablePlugin()
|
||||||
{
|
{
|
||||||
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(NovationRGBDevice<>), sender, args);
|
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(NovationRGBDevice<>), sender, args);
|
||||||
_rgbService.AddDeviceProvider(RgbDeviceProvider);
|
_rgbService.AddDeviceProvider(RgbDeviceProvider);
|
||||||
|
|||||||
@ -18,7 +18,7 @@ namespace Artemis.Plugins.Devices.Razer
|
|||||||
_rgbService = rgbService;
|
_rgbService = rgbService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void EnablePlugin()
|
protected override void EnablePlugin()
|
||||||
{
|
{
|
||||||
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(RazerRGBDevice<>), sender, args);
|
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(RazerRGBDevice<>), sender, args);
|
||||||
RGB.NET.Devices.Razer.RazerDeviceProvider.PossibleX64NativePaths.Add(Path.Combine(PluginInfo.Directory.FullName, "x64", "RzChromaSDK.dll"));
|
RGB.NET.Devices.Razer.RazerDeviceProvider.PossibleX64NativePaths.Add(Path.Combine(PluginInfo.Directory.FullName, "x64", "RzChromaSDK.dll"));
|
||||||
|
|||||||
@ -15,7 +15,7 @@ namespace Artemis.Plugins.Devices.Roccat
|
|||||||
_rgbService = rgbService;
|
_rgbService = rgbService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void EnablePlugin()
|
protected override void EnablePlugin()
|
||||||
{
|
{
|
||||||
// TODO: Find out why this is missing, Roccat seems unimplemented
|
// TODO: Find out why this is missing, Roccat seems unimplemented
|
||||||
// PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(RoccatRGBDevice<>), sender, args);
|
// PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(RoccatRGBDevice<>), sender, args);
|
||||||
|
|||||||
@ -16,7 +16,7 @@ namespace Artemis.Plugins.Devices.SteelSeries
|
|||||||
_rgbService = rgbService;
|
_rgbService = rgbService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void EnablePlugin()
|
protected override void EnablePlugin()
|
||||||
{
|
{
|
||||||
// TODO Check to see if this works, it's usually a generic type after all
|
// TODO Check to see if this works, it's usually a generic type after all
|
||||||
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(SteelSeriesRGBDevice), sender, args);
|
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(SteelSeriesRGBDevice), sender, args);
|
||||||
|
|||||||
@ -25,7 +25,7 @@ namespace Artemis.Plugins.Devices.WS281X
|
|||||||
|
|
||||||
public PluginSettings Settings { get; }
|
public PluginSettings Settings { get; }
|
||||||
|
|
||||||
public override void EnablePlugin()
|
protected override void EnablePlugin()
|
||||||
{
|
{
|
||||||
var definitions = Settings.GetSetting<List<DeviceDefinition>>("DeviceDefinitions");
|
var definitions = Settings.GetSetting<List<DeviceDefinition>>("DeviceDefinitions");
|
||||||
if (definitions.Value == null)
|
if (definitions.Value == null)
|
||||||
@ -49,18 +49,11 @@ namespace Artemis.Plugins.Devices.WS281X
|
|||||||
_rgbService.AddDeviceProvider(RgbDeviceProvider);
|
_rgbService.AddDeviceProvider(RgbDeviceProvider);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void DisablePlugin()
|
protected override void DisablePlugin()
|
||||||
{
|
{
|
||||||
// TODO: Remove the device provider from the surface
|
// TODO: Remove the device provider from the surface
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Dispose()
|
|
||||||
{
|
|
||||||
// TODO: This will probably not go well without first removing the device provider
|
|
||||||
// WS281XDeviceProvider.Instance.ResetDevices();
|
|
||||||
// WS281XDeviceProvider.Instance.Dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override PluginConfigurationViewModel GetConfigurationViewModel()
|
public override PluginConfigurationViewModel GetConfigurationViewModel()
|
||||||
{
|
{
|
||||||
return new WS281XConfigurationViewModel(this, Settings);
|
return new WS281XConfigurationViewModel(this, Settings);
|
||||||
|
|||||||
@ -17,7 +17,7 @@ namespace Artemis.Plugins.Devices.Wooting
|
|||||||
_rgbService = rgbService;
|
_rgbService = rgbService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void EnablePlugin()
|
protected override void EnablePlugin()
|
||||||
{
|
{
|
||||||
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(WootingRGBDevice<>), sender, args);
|
PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(WootingRGBDevice<>), sender, args);
|
||||||
RGB.NET.Devices.Wooting.WootingDeviceProvider.PossibleX64NativePaths.Add(Path.Combine(PluginInfo.Directory.FullName, "x64", "wooting-rgb-sdk64.dll"));
|
RGB.NET.Devices.Wooting.WootingDeviceProvider.PossibleX64NativePaths.Add(Path.Combine(PluginInfo.Directory.FullName, "x64", "wooting-rgb-sdk64.dll"));
|
||||||
@ -25,16 +25,9 @@ namespace Artemis.Plugins.Devices.Wooting
|
|||||||
_rgbService.AddDeviceProvider(RgbDeviceProvider);
|
_rgbService.AddDeviceProvider(RgbDeviceProvider);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void DisablePlugin()
|
protected override void DisablePlugin()
|
||||||
{
|
{
|
||||||
// TODO: Remove the device provider from the surface
|
// TODO: Remove the device provider from the surface
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Dispose()
|
|
||||||
{
|
|
||||||
// TODO: This will probably not go well without first removing the device provider
|
|
||||||
// WootingDeviceProvider.Instance.ResetDevices();
|
|
||||||
// WootingDeviceProvider.Instance.Dispose();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -10,15 +10,11 @@ namespace Artemis.Plugins.LayerBrushes.Color
|
|||||||
AddLayerBrushDescriptor<ColorBrush>("Color", "A color with an (optional) gradient", "Brush");
|
AddLayerBrushDescriptor<ColorBrush>("Color", "A color with an (optional) gradient", "Brush");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void EnablePlugin()
|
protected override void EnablePlugin()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void DisablePlugin()
|
protected override void DisablePlugin()
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Dispose()
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,6 +35,7 @@
|
|||||||
<ProjectReference Include="..\..\Artemis.Core\Artemis.Core.csproj">
|
<ProjectReference Include="..\..\Artemis.Core\Artemis.Core.csproj">
|
||||||
<Private>false</Private>
|
<Private>false</Private>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\..\Artemis.UI.Shared\Artemis.UI.Shared.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="RGB.NET.Brushes">
|
<Reference Include="RGB.NET.Brushes">
|
||||||
|
|||||||
@ -0,0 +1,23 @@
|
|||||||
|
<UserControl x:Class="Artemis.Plugins.LayerBrushes.ColorRgbNet.PropertyInput.StringPropertyInputView"
|
||||||
|
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:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||||
|
xmlns:propertyInput="clr-namespace:Artemis.Plugins.LayerBrushes.ColorRgbNet.PropertyInput"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
d:DesignHeight="450" d:DesignWidth="800"
|
||||||
|
d:DataContext="{d:DesignInstance propertyInput:StringPropertyInputViewModel}">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<!-- This is required because the main UI can't know where to show this -->
|
||||||
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputPrefix}" />
|
||||||
|
<!-- Mess with the margins a bit to wrangle it into the tight bounds of the property tree -->
|
||||||
|
<TextBox Width="132"
|
||||||
|
Margin="0 -2.5 0 2.5"
|
||||||
|
materialDesign:ValidationAssist.UsePopup="True"
|
||||||
|
HorizontalAlignment="Left"
|
||||||
|
Text="{Binding Path=InputValue}" />
|
||||||
|
<!-- This is required because the main UI can't know where to show this -->
|
||||||
|
<TextBlock Width="10" Text="{Binding LayerProperty.PropertyDescription.InputAffix}" />
|
||||||
|
</StackPanel>
|
||||||
|
</UserControl>
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
using Artemis.Core.Models.Profile.LayerProperties;
|
||||||
|
using Artemis.UI.Shared.PropertyInput;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
|
|
||||||
|
namespace Artemis.Plugins.LayerBrushes.ColorRgbNet.PropertyInput
|
||||||
|
{
|
||||||
|
public class StringPropertyInputViewModel : PropertyInputViewModel<string>
|
||||||
|
{
|
||||||
|
public StringPropertyInputViewModel(LayerProperty<string> layerProperty, IProfileEditorService profileEditorService) : base(layerProperty, profileEditorService)
|
||||||
|
{
|
||||||
|
// This is a fairly dumb input that can only take text and nothing else so it needs no special logic in its VM
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,4 +1,5 @@
|
|||||||
using Artemis.Core.Extensions;
|
using System;
|
||||||
|
using Artemis.Core.Extensions;
|
||||||
using Artemis.Core.Models.Profile;
|
using Artemis.Core.Models.Profile;
|
||||||
using Artemis.Core.Plugins.LayerBrush;
|
using Artemis.Core.Plugins.LayerBrush;
|
||||||
using RGB.NET.Brushes;
|
using RGB.NET.Brushes;
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using Artemis.Core.Models.Profile;
|
using Artemis.Core.Models.Profile;
|
||||||
|
using Artemis.Core.Models.Profile.LayerProperties;
|
||||||
using Artemis.Core.Models.Profile.LayerProperties.Attributes;
|
using Artemis.Core.Models.Profile.LayerProperties.Attributes;
|
||||||
using Artemis.Core.Models.Profile.LayerProperties.Types;
|
using Artemis.Core.Models.Profile.LayerProperties.Types;
|
||||||
using SkiaSharp;
|
using SkiaSharp;
|
||||||
@ -10,9 +11,13 @@ namespace Artemis.Plugins.LayerBrushes.ColorRgbNet
|
|||||||
[PropertyDescription(Description = "The color of the brush")]
|
[PropertyDescription(Description = "The color of the brush")]
|
||||||
public SKColorLayerProperty Color { get; set; }
|
public SKColorLayerProperty Color { get; set; }
|
||||||
|
|
||||||
|
[PropertyDescription(InputPrefix = "Test")]
|
||||||
|
public LayerProperty<string> TestProperty { get; set; }
|
||||||
|
|
||||||
protected override void PopulateDefaults()
|
protected override void PopulateDefaults()
|
||||||
{
|
{
|
||||||
Color.DefaultValue = new SKColor(255, 0, 0);
|
Color.DefaultValue = new SKColor(255, 0, 0);
|
||||||
|
TestProperty.DefaultValue = "I was empty before!";
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnPropertiesInitialized()
|
protected override void OnPropertiesInitialized()
|
||||||
|
|||||||
@ -1,24 +1,26 @@
|
|||||||
using Artemis.Core.Plugins.LayerBrush;
|
using Artemis.Core.Plugins.LayerBrush;
|
||||||
using Artemis.Core.Plugins.Models;
|
using Artemis.Core.Plugins.Models;
|
||||||
|
using Artemis.Plugins.LayerBrushes.ColorRgbNet.PropertyInput;
|
||||||
|
using Artemis.UI.Shared.Services.Interfaces;
|
||||||
|
|
||||||
namespace Artemis.Plugins.LayerBrushes.ColorRgbNet
|
namespace Artemis.Plugins.LayerBrushes.ColorRgbNet
|
||||||
{
|
{
|
||||||
public class RgbNetColorBrushProvider : LayerBrushProvider
|
public class RgbNetColorBrushProvider : LayerBrushProvider
|
||||||
{
|
{
|
||||||
public RgbNetColorBrushProvider(PluginInfo pluginInfo) : base(pluginInfo)
|
private readonly IProfileEditorService _profileEditorService;
|
||||||
|
|
||||||
|
public RgbNetColorBrushProvider(PluginInfo pluginInfo, IProfileEditorService profileEditorService) : base(pluginInfo)
|
||||||
{
|
{
|
||||||
|
_profileEditorService = profileEditorService;
|
||||||
AddLayerBrushDescriptor<RgbNetColorBrush>("RGB.NET Color", "A RGB.NET based color", "Brush");
|
AddLayerBrushDescriptor<RgbNetColorBrush>("RGB.NET Color", "A RGB.NET based color", "Brush");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void EnablePlugin()
|
protected override void EnablePlugin()
|
||||||
{
|
{
|
||||||
|
_profileEditorService.RegisterPropertyInput(PluginInfo, typeof(StringPropertyInputViewModel));
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void DisablePlugin()
|
protected override void DisablePlugin()
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Dispose()
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,15 +10,11 @@ namespace Artemis.Plugins.LayerBrushes.Noise
|
|||||||
AddLayerBrushDescriptor<NoiseBrush>("Noise", "A brush of that shows an animated random noise", "ScatterPlot");
|
AddLayerBrushDescriptor<NoiseBrush>("Noise", "A brush of that shows an animated random noise", "ScatterPlot");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void EnablePlugin()
|
protected override void EnablePlugin()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void DisablePlugin()
|
protected override void DisablePlugin()
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Dispose()
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,20 +22,16 @@ namespace Artemis.Plugins.Modules.General
|
|||||||
var testSetting = _settings.GetSetting("TestSetting", DateTime.Now);
|
var testSetting = _settings.GetSetting("TestSetting", DateTime.Now);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void EnablePlugin()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void DisablePlugin()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public override IEnumerable<ModuleViewModel> GetViewModels()
|
public override IEnumerable<ModuleViewModel> GetViewModels()
|
||||||
{
|
{
|
||||||
return new List<ModuleViewModel> {new GeneralViewModel(this)};
|
return new List<ModuleViewModel> {new GeneralViewModel(this)};
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Dispose()
|
protected override void EnablePlugin()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void DisablePlugin()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user