mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-12 03:48:56 +00:00
Data bindings - WIP commit
Layer/effect config dialogs - Don't require specific ctor parameter names
This commit is contained in:
1 parent
c98fc51623
commit
21beffc0a9
15 files changed
+408
-130
No files matched your search
+62
-6
@@ -1,4 +1,5 @@
|
||||
using System.Reflection;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using Artemis.Core;
|
||||
using Stylet;
|
||||
|
||||
@@ -6,15 +7,70 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.DataBindings
|
||||
{
|
||||
public class DataBindingViewModel : PropertyChangedBase
|
||||
{
|
||||
public DataBindingViewModel(BaseLayerProperty layerProperty, PropertyInfo dataBindingProperty)
|
||||
private DataBinding _dataBinding;
|
||||
|
||||
public DataBindingViewModel(BaseLayerProperty layerProperty, PropertyInfo targetProperty)
|
||||
{
|
||||
DisplayName = dataBindingProperty.Name.ToUpper();
|
||||
LayerProperty = layerProperty;
|
||||
DataBindingProperty = dataBindingProperty;
|
||||
TargetProperty = targetProperty;
|
||||
|
||||
DisplayName = TargetProperty.Name.ToUpper();
|
||||
ModifierViewModels = new BindableCollection<DataBindingModifierViewModel>();
|
||||
DataBinding = layerProperty.DataBindings.FirstOrDefault(d => d.TargetProperty == targetProperty);
|
||||
}
|
||||
|
||||
public string DisplayName { get; }
|
||||
public BaseLayerProperty LayerProperty { get; }
|
||||
public PropertyInfo DataBindingProperty { get; }
|
||||
public PropertyInfo TargetProperty { get; }
|
||||
public string DisplayName { get; }
|
||||
public BindableCollection<DataBindingModifierViewModel> ModifierViewModels { get; }
|
||||
|
||||
public DataBinding DataBinding
|
||||
{
|
||||
get => _dataBinding;
|
||||
set
|
||||
{
|
||||
if (!SetAndNotify(ref _dataBinding, value)) return;
|
||||
UpdateModifierViewModels();
|
||||
}
|
||||
}
|
||||
|
||||
public void EnableDataBinding()
|
||||
{
|
||||
if (DataBinding != null)
|
||||
return;
|
||||
|
||||
DataBinding = LayerProperty.AddDataBinding(TargetProperty);
|
||||
}
|
||||
|
||||
public void RemoveDataBinding()
|
||||
{
|
||||
if (DataBinding == null)
|
||||
return;
|
||||
|
||||
var toRemove = DataBinding;
|
||||
DataBinding = null;
|
||||
LayerProperty.RemoveDataBinding(toRemove);
|
||||
}
|
||||
|
||||
public void AddModifier()
|
||||
{
|
||||
if (DataBinding == null)
|
||||
return;
|
||||
|
||||
var modifier = new DataBindingModifier(ProfileRightSideType.Dynamic);
|
||||
DataBinding.AddModifier(modifier);
|
||||
|
||||
ModifierViewModels.Add(new DataBindingModifierViewModel(modifier));
|
||||
}
|
||||
|
||||
private void UpdateModifierViewModels()
|
||||
{
|
||||
ModifierViewModels.Clear();
|
||||
if (DataBinding == null)
|
||||
return;
|
||||
|
||||
foreach (var dataBindingModifier in DataBinding.Modifiers)
|
||||
ModifierViewModels.Add(new DataBindingModifierViewModel(dataBindingModifier));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user