mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
Fixed dynamic properties being processed while configuring
This commit is contained in:
parent
ddc63473a3
commit
e30d85578e
@ -8,29 +8,33 @@ namespace Artemis.ViewModels.LayerEditor
|
||||
{
|
||||
public class LayerDynamicPropertiesViewModel : Screen
|
||||
{
|
||||
private LayerDynamicPropertiesModel _layerDynamicPropertiesModel;
|
||||
private readonly LayerModel _layer;
|
||||
private readonly string _property;
|
||||
private LayerDynamicPropertiesModel _layerDynamicPropertiesModelProposed;
|
||||
private LayerPropertyType _layerPropertyType;
|
||||
private string _name;
|
||||
private GeneralHelpers.PropertyCollection _selectedSource;
|
||||
private GeneralHelpers.PropertyCollection _selectedTarget;
|
||||
private bool _sourcesIsVisible;
|
||||
private bool _userSourceIsVisible;
|
||||
private LayerPropertyType _layerPropertyType;
|
||||
|
||||
public LayerDynamicPropertiesViewModel(string property,
|
||||
BindableCollection<GeneralHelpers.PropertyCollection> dataModelProps, LayerModel layer)
|
||||
{
|
||||
_property = property;
|
||||
_layer = layer;
|
||||
|
||||
// Look for the existing property model
|
||||
LayerDynamicPropertiesModel = layer.LayerProperties.FirstOrDefault(lp => lp.LayerProperty == property);
|
||||
if (LayerDynamicPropertiesModel == null)
|
||||
LayerDynamicPropertiesModelProposed = new LayerDynamicPropertiesModel();
|
||||
var original = _layer.LayerProperties.FirstOrDefault(lp => lp.LayerProperty == _property);
|
||||
if (original == null)
|
||||
{
|
||||
// If it doesn't exist, create a new one
|
||||
LayerDynamicPropertiesModel = new LayerDynamicPropertiesModel
|
||||
{
|
||||
LayerProperty = property,
|
||||
LayerPropertyType = LayerPropertyType.None
|
||||
};
|
||||
// Add it to the layer
|
||||
layer.LayerProperties.Add(LayerDynamicPropertiesModel);
|
||||
LayerDynamicPropertiesModelProposed.LayerProperty = property;
|
||||
LayerDynamicPropertiesModelProposed.LayerPropertyType = LayerPropertyType.None;
|
||||
}
|
||||
else
|
||||
{
|
||||
GeneralHelpers.CopyProperties(LayerDynamicPropertiesModelProposed, original);
|
||||
}
|
||||
|
||||
Name = property + ":";
|
||||
@ -41,9 +45,11 @@ namespace Artemis.ViewModels.LayerEditor
|
||||
|
||||
PropertyChanged += OnPropertyChanged;
|
||||
|
||||
SelectedTarget = dataModelProps.FirstOrDefault(p => p.Path == LayerDynamicPropertiesModel.GameProperty);
|
||||
SelectedSource = dataModelProps.FirstOrDefault(p => p.Path == LayerDynamicPropertiesModel.PercentageSource);
|
||||
LayerPropertyType = LayerDynamicPropertiesModel.LayerPropertyType;
|
||||
SelectedTarget =
|
||||
dataModelProps.FirstOrDefault(p => p.Path == LayerDynamicPropertiesModelProposed.GameProperty);
|
||||
SelectedSource =
|
||||
dataModelProps.FirstOrDefault(p => p.Path == LayerDynamicPropertiesModelProposed.PercentageSource);
|
||||
LayerPropertyType = LayerDynamicPropertiesModelProposed.LayerPropertyType;
|
||||
}
|
||||
|
||||
public LayerPropertyType LayerPropertyType
|
||||
@ -68,14 +74,14 @@ namespace Artemis.ViewModels.LayerEditor
|
||||
}
|
||||
}
|
||||
|
||||
public LayerDynamicPropertiesModel LayerDynamicPropertiesModel
|
||||
public LayerDynamicPropertiesModel LayerDynamicPropertiesModelProposed
|
||||
{
|
||||
get { return _layerDynamicPropertiesModel; }
|
||||
get { return _layerDynamicPropertiesModelProposed; }
|
||||
set
|
||||
{
|
||||
if (Equals(value, _layerDynamicPropertiesModel)) return;
|
||||
_layerDynamicPropertiesModel = value;
|
||||
NotifyOfPropertyChange(() => LayerDynamicPropertiesModel);
|
||||
if (Equals(value, _layerDynamicPropertiesModelProposed)) return;
|
||||
_layerDynamicPropertiesModelProposed = value;
|
||||
NotifyOfPropertyChange(() => LayerDynamicPropertiesModelProposed);
|
||||
}
|
||||
}
|
||||
|
||||
@ -130,15 +136,24 @@ namespace Artemis.ViewModels.LayerEditor
|
||||
private void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
if (e.PropertyName == "SelectedTarget")
|
||||
LayerDynamicPropertiesModel.GameProperty = SelectedTarget.Path;
|
||||
LayerDynamicPropertiesModelProposed.GameProperty = SelectedTarget.Path;
|
||||
if (e.PropertyName == "SelectedSource")
|
||||
LayerDynamicPropertiesModel.PercentageSource = SelectedSource.Path;
|
||||
LayerDynamicPropertiesModelProposed.PercentageSource = SelectedSource.Path;
|
||||
if (e.PropertyName == "LayerPropertyType")
|
||||
{
|
||||
LayerDynamicPropertiesModel.LayerPropertyType = LayerPropertyType;
|
||||
UserSourceIsVisible = (LayerPropertyType == LayerPropertyType.PercentageOf);
|
||||
SourcesIsVisible = (LayerPropertyType == LayerPropertyType.PercentageOfProperty);
|
||||
LayerDynamicPropertiesModelProposed.LayerPropertyType = LayerPropertyType;
|
||||
UserSourceIsVisible = LayerPropertyType == LayerPropertyType.PercentageOf;
|
||||
SourcesIsVisible = LayerPropertyType == LayerPropertyType.PercentageOfProperty;
|
||||
}
|
||||
}
|
||||
|
||||
public void Apply()
|
||||
{
|
||||
var original = _layer.LayerProperties.FirstOrDefault(lp => lp.LayerProperty == _property);
|
||||
if (original == null)
|
||||
_layer.LayerProperties.Add(LayerDynamicPropertiesModelProposed);
|
||||
else
|
||||
GeneralHelpers.CopyProperties(original, LayerDynamicPropertiesModelProposed);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -16,6 +16,7 @@ namespace Artemis.ViewModels.LayerEditor
|
||||
private readonly BackgroundWorker _previewWorker;
|
||||
private readonly bool _wasEnabled;
|
||||
private LayerModel _layer;
|
||||
private LayerModel _proposedLayer;
|
||||
private LayerPropertiesModel _proposedProperties;
|
||||
|
||||
public LayerEditorViewModel(KeyboardProvider activeKeyboard, LayerModel layer)
|
||||
@ -24,12 +25,15 @@ namespace Artemis.ViewModels.LayerEditor
|
||||
_wasEnabled = layer.Enabled;
|
||||
|
||||
Layer = layer;
|
||||
ProposedLayer = new LayerModel();
|
||||
GeneralHelpers.CopyProperties(ProposedLayer, Layer);
|
||||
Layer.Enabled = false;
|
||||
DataModelProps = new BindableCollection<GeneralHelpers.PropertyCollection>();
|
||||
ProposedProperties = new LayerPropertiesModel();
|
||||
DataModelProps.AddRange(GeneralHelpers.GenerateTypeMap<T>());
|
||||
LayerConditionVms = new BindableCollection<LayerConditionViewModel<T>>(
|
||||
layer.LayerConditions.Select(c => new LayerConditionViewModel<T>(this, c, DataModelProps)));
|
||||
LayerConditionVms =
|
||||
new BindableCollection<LayerConditionViewModel<T>>(
|
||||
layer.LayerConditions.Select(c => new LayerConditionViewModel<T>(this, c, DataModelProps)));
|
||||
HeightProperties = new LayerDynamicPropertiesViewModel("Height", DataModelProps, layer);
|
||||
WidthProperties = new LayerDynamicPropertiesViewModel("Width", DataModelProps, layer);
|
||||
OpacityProperties = new LayerDynamicPropertiesViewModel("Opacity", DataModelProps, layer);
|
||||
@ -65,6 +69,17 @@ namespace Artemis.ViewModels.LayerEditor
|
||||
}
|
||||
}
|
||||
|
||||
public LayerModel ProposedLayer
|
||||
{
|
||||
get { return _proposedLayer; }
|
||||
set
|
||||
{
|
||||
if (Equals(value, _proposedLayer)) return;
|
||||
_proposedLayer = value;
|
||||
NotifyOfPropertyChange(() => ProposedLayer);
|
||||
}
|
||||
}
|
||||
|
||||
public LayerPropertiesModel ProposedProperties
|
||||
{
|
||||
get { return _proposedProperties; }
|
||||
@ -131,6 +146,9 @@ namespace Artemis.ViewModels.LayerEditor
|
||||
public void Apply()
|
||||
{
|
||||
GeneralHelpers.CopyProperties(Layer.UserProps, ProposedProperties);
|
||||
HeightProperties.Apply();
|
||||
WidthProperties.Apply();
|
||||
OpacityProperties.Apply();
|
||||
}
|
||||
|
||||
public void DeleteCondition(LayerConditionViewModel<T> layerConditionViewModel,
|
||||
|
||||
@ -81,7 +81,7 @@
|
||||
|
||||
<!-- PercentageOf -->
|
||||
<StackPanel Grid.Column="3" x:Name="UserSourceIsVisible" VerticalAlignment="Center">
|
||||
<controls:NumericUpDown Margin="10,0" Height="22" Value="{Binding Path=LayerDynamicPropertiesModel.PercentageSource, Mode=TwoWay}" />
|
||||
<controls:NumericUpDown Margin="10,0" Height="22" Value="{Binding Path=LayerDynamicPropertiesModelProposed.PercentageSource, Mode=TwoWay}" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
Loading…
x
Reference in New Issue
Block a user