Darthified code

This commit is contained in:
SpoinkyNL committed 2020-10-05 22:50:29 +02:00
1 parent 5b80c1e4fe
commit ae64db8a13
198 files changed
+1339 -1305

No files matched your search

@@ -39,13 +39,13 @@ namespace Artemis.UI.Screens.Modules
if (Module.ModuleTabs != null)
{
var moduleTabs = new List<ModuleTab>(Module.ModuleTabs);
foreach (var moduleTab in moduleTabs.Where(m => m != null))
List<ModuleTab> moduleTabs = new List<ModuleTab>(Module.ModuleTabs);
foreach (ModuleTab moduleTab in moduleTabs.Where(m => m != null))
{
var module = new ConstructorArgument("module", Module);
var displayName = new ConstructorArgument("displayName", DisplayName);
ConstructorArgument module = new ConstructorArgument("module", Module);
ConstructorArgument displayName = new ConstructorArgument("displayName", DisplayName);
var viewModel = (ModuleViewModel) Module.PluginInfo.Kernel.Get(moduleTab.Type, module, displayName);
ModuleViewModel viewModel = (ModuleViewModel) Module.PluginInfo.Kernel.Get(moduleTab.Type, module, displayName);
Items.Add(viewModel);
}
}
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Artemis.Core;
@@ -63,7 +64,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
public void SelectBooleanOperator(string type)
{
var enumValue = Enum.Parse<BooleanOperator>(type);
BooleanOperator enumValue = Enum.Parse<BooleanOperator>(type);
DataModelConditionGroup.BooleanOperator = enumValue;
NotifyOfPropertyChange(nameof(SelectedBooleanOperator));
@@ -108,12 +109,12 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
NotifyOfPropertyChange(nameof(SelectedBooleanOperator));
// Remove VMs of effects no longer applied on the layer
var toRemove = Items.Where(c => !DataModelConditionGroup.Children.Contains(c.Model)).ToList();
List<DataModelConditionViewModel> toRemove = Items.Where(c => !DataModelConditionGroup.Children.Contains(c.Model)).ToList();
// Using RemoveRange breaks our lovely animations
foreach (var DataModelConditionViewModel in toRemove)
foreach (DataModelConditionViewModel DataModelConditionViewModel in toRemove)
Items.Remove(DataModelConditionViewModel);
foreach (var childModel in Model.Children)
foreach (DataModelConditionPart childModel in Model.Children)
{
if (Items.Any(c => c.Model == childModel))
continue;
@@ -137,7 +138,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
}
}
foreach (var childViewModel in Items)
foreach (DataModelConditionViewModel childViewModel in Items)
childViewModel.Update();
if (IsRootGroup && Parent is DisplayConditionsViewModel displayConditionsViewModel)
@@ -99,7 +99,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
public void Initialize()
{
var listDataModel = GetListDataModel();
DataModelVisualizationViewModel listDataModel = GetListDataModel();
if (listDataModel.Children.Count == 1 && listDataModel.Children.First() is DataModelListPropertyViewModel)
_isPrimitiveList = true;
else
@@ -114,7 +114,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
}
// Determine which types are currently supported
var editors = _dataModelUIService.RegisteredDataModelEditors;
IReadOnlyCollection<DataModelVisualizationRegistration> editors = _dataModelUIService.RegisteredDataModelEditors;
_supportedInputTypes = editors.Select(e => e.SupportedType).ToList();
_supportedInputTypes.AddRange(editors.Where(e => e.CompatibleConversionTypes != null).SelectMany(e => e.CompatibleConversionTypes));
@@ -123,7 +123,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
public override void Update()
{
var listDataModelGuid = DataModelConditionListPredicate.DataModelConditionList.ListDataModel.PluginInfo.Guid;
Guid listDataModelGuid = DataModelConditionListPredicate.DataModelConditionList.ListDataModel.PluginInfo.Guid;
if (!_isPrimitiveList)
{
LeftSideSelectionViewModel.FilterTypes = _supportedInputTypes.ToArray();
@@ -133,7 +133,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
);
}
var leftSideType = _isPrimitiveList
Type leftSideType = _isPrimitiveList
? DataModelConditionListPredicate.DataModelConditionList.ListType
: LeftSideSelectionViewModel.SelectedPropertyViewModel?.DataModelPath?.GetPropertyType();
@@ -235,8 +235,8 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
private DataModelVisualizationViewModel GetListDataModel()
{
var dataModel = _dataModelUIService.GetPluginDataModelVisualization(_profileEditorService.GetCurrentModule(), true);
var listDataModel = (DataModelListViewModel) dataModel.GetChildByPath(
DataModelPropertiesViewModel dataModel = _dataModelUIService.GetPluginDataModelVisualization(_profileEditorService.GetCurrentModule(), true);
DataModelListViewModel listDataModel = (DataModelListViewModel) dataModel.GetChildByPath(
DataModelConditionListPredicate.DataModelConditionList.ListDataModel.PluginInfo.Guid,
DataModelConditionListPredicate.DataModelConditionList.ListPropertyPath
);
@@ -1,5 +1,6 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Media;
using Artemis.Core;
@@ -50,7 +51,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
public void SelectListOperator(string type)
{
var enumValue = Enum.Parse<ListOperator>(type);
ListOperator enumValue = Enum.Parse<ListOperator>(type);
DataModelConditionList.ListOperator = enumValue;
NotifyOfPropertyChange(nameof(SelectedListOperator));
@@ -110,24 +111,24 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
NotifyOfPropertyChange(nameof(SelectedListOperator));
// Remove VMs of effects no longer applied on the layer
var toRemove = Items.Where(c => !DataModelConditionList.Children.Contains(c.Model)).ToList();
List<DataModelConditionViewModel> toRemove = Items.Where(c => !DataModelConditionList.Children.Contains(c.Model)).ToList();
// Using RemoveRange breaks our lovely animations
foreach (var conditionViewModel in toRemove)
foreach (DataModelConditionViewModel conditionViewModel in toRemove)
Items.Remove(conditionViewModel);
foreach (var childModel in Model.Children)
foreach (DataModelConditionPart childModel in Model.Children)
{
if (Items.Any(c => c.Model == childModel))
continue;
if (!(childModel is DataModelConditionGroup dataModelConditionGroup))
continue;
var viewModel = _dataModelConditionsVmFactory.DataModelConditionGroupViewModel(dataModelConditionGroup, true);
DataModelConditionGroupViewModel viewModel = _dataModelConditionsVmFactory.DataModelConditionGroupViewModel(dataModelConditionGroup, true);
viewModel.IsRootGroup = true;
Items.Add(viewModel);
}
foreach (var childViewModel in Items)
foreach (DataModelConditionViewModel childViewModel in Items)
childViewModel.Update();
}
@@ -106,7 +106,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
LeftSideSelectionViewModel = _dataModelUIService.GetDynamicSelectionViewModel(_profileEditorService.GetCurrentModule());
LeftSideSelectionViewModel.PropertySelected += LeftSideOnPropertySelected;
// Determine which types are currently supported
var editors = _dataModelUIService.RegisteredDataModelEditors;
IReadOnlyCollection<DataModelVisualizationRegistration> editors = _dataModelUIService.RegisteredDataModelEditors;
_supportedInputTypes = editors.Select(e => e.SupportedType).ToList();
_supportedInputTypes.AddRange(editors.Where(e => e.CompatibleConversionTypes != null).SelectMany(e => e.CompatibleConversionTypes));
@@ -120,7 +120,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
DataModelConditionPredicate.LeftDataModel,
DataModelConditionPredicate.LeftPropertyPath
);
var leftSideType = LeftSideSelectionViewModel.SelectedPropertyViewModel?.DataModelPath?.GetPropertyType();
Type leftSideType = LeftSideSelectionViewModel.SelectedPropertyViewModel?.DataModelPath?.GetPropertyType();
// Get the supported operators
Operators.Clear();
@@ -135,7 +135,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Conditions
}
// Ensure the right side has the proper VM
var targetType = LeftSideSelectionViewModel?.SelectedPropertyViewModel?.DataModelPath?.GetPropertyType();
Type targetType = LeftSideSelectionViewModel?.SelectedPropertyViewModel?.DataModelPath?.GetPropertyType();
if (DataModelConditionPredicate.PredicateType == ProfileRightSideType.Dynamic && SelectedOperator.SupportsRightSide)
{
DisposeRightSideStatic();
@@ -24,7 +24,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Dialogs
public void Accept()
{
var encoded = _profileService.ExportProfile(ProfileDescriptor);
string encoded = _profileService.ExportProfile(ProfileDescriptor);
Clipboard.SetText(encoded);
_mainMessageQueue.Enqueue("Profile contents exported to clipboard.");
@@ -1,4 +1,5 @@
using Artemis.Core.Modules;
using Artemis.Core;
using Artemis.Core.Modules;
using Artemis.Core.Services;
using Artemis.UI.Shared.Services;
using ICSharpCode.AvalonEdit.Document;
@@ -32,7 +33,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Dialogs
public void Accept()
{
var descriptor = _profileService.ImportProfile(Document.Text, ProfileModule);
ProfileDescriptor descriptor = _profileService.ImportProfile(Document.Text, ProfileModule);
_mainMessageQueue.Enqueue("Profile imported.");
Session.Close(descriptor);
}
@@ -16,7 +16,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Dialogs
private void FrameworkElement_OnLoaded(object sender, RoutedEventArgs e)
{
var textBox = (TextBox) sender;
TextBox textBox = (TextBox) sender;
Keyboard.Focus(textBox);
textBox.SelectAll();
}
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using Artemis.Core;
@@ -48,7 +49,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.DataBindings.Conditio
{
ConditionalDataBinding.ConditionsUpdated -= ConditionalDataBindingOnConditionsUpdated;
foreach (var conditionViewModel in ConditionViewModels)
foreach (DataBindingConditionViewModel<TLayerProperty, TProperty> conditionViewModel in ConditionViewModels)
conditionViewModel.Dispose();
ConditionViewModels.Clear();
}
@@ -57,10 +58,10 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.DataBindings.Conditio
public void AddCondition(string type)
{
var condition = ConditionalDataBinding.AddCondition();
DataBindingCondition<TLayerProperty, TProperty> condition = ConditionalDataBinding.AddCondition();
// Find the VM of the new condition
var viewModel = ConditionViewModels.First(c => c.DataBindingCondition == condition);
DataBindingConditionViewModel<TLayerProperty, TProperty> viewModel = ConditionViewModels.First(c => c.DataBindingCondition == condition);
viewModel.ActiveItem.AddCondition(type);
_profileEditorService.UpdateSelectedProfileElement();
@@ -71,15 +72,15 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.DataBindings.Conditio
_updating = true;
// Remove old VMs
var toRemove = ConditionViewModels.Where(c => !ConditionalDataBinding.Conditions.Contains(c.DataBindingCondition)).ToList();
foreach (var dataBindingConditionViewModel in toRemove)
List<DataBindingConditionViewModel<TLayerProperty, TProperty>> toRemove = ConditionViewModels.Where(c => !ConditionalDataBinding.Conditions.Contains(c.DataBindingCondition)).ToList();
foreach (DataBindingConditionViewModel<TLayerProperty, TProperty> dataBindingConditionViewModel in toRemove)
{
ConditionViewModels.Remove(dataBindingConditionViewModel);
dataBindingConditionViewModel.Dispose();
}
// Add missing VMs
foreach (var condition in ConditionalDataBinding.Conditions)
foreach (DataBindingCondition<TLayerProperty, TProperty> condition in ConditionalDataBinding.Conditions)
{
if (ConditionViewModels.All(c => c.DataBindingCondition != condition))
ConditionViewModels.Add(_dataBindingsVmFactory.DataBindingConditionViewModel(condition));
@@ -103,9 +104,9 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.DataBindings.Conditio
if (_updating || e.Action != NotifyCollectionChangedAction.Add)
return;
for (var index = 0; index < ConditionViewModels.Count; index++)
for (int index = 0; index < ConditionViewModels.Count; index++)
{
var conditionViewModel = ConditionViewModels[index];
DataBindingConditionViewModel<TLayerProperty, TProperty> conditionViewModel = ConditionViewModels[index];
conditionViewModel.DataBindingCondition.Order = index + 1;
}
@@ -226,7 +226,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.DataBindings
Registration.DataBinding.Update(0.04);
if (ActiveItem.SupportsTestValue)
{
var currentValue = Registration.Converter.ConvertFromObject(ActiveItem?.GetTestValue() ?? default(TProperty));
TProperty currentValue = Registration.Converter.ConvertFromObject(ActiveItem?.GetTestValue() ?? default(TProperty));
TestInputValue.UpdateValue(currentValue);
TestResultValue.UpdateValue(Registration.DataBinding != null ? Registration.DataBinding.GetValue(currentValue) : default);
}
@@ -1,4 +1,6 @@
using System;
using System.Collections.Generic;
using Artemis.Core;
using Artemis.UI.Ninject.Factories;
using Artemis.UI.Shared.Services;
using Stylet;
@@ -36,15 +38,15 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.DataBindings
{
Items.Clear();
var layerProperty = _profileEditorService.SelectedDataBinding;
ILayerProperty layerProperty = _profileEditorService.SelectedDataBinding;
if (layerProperty == null)
return;
var registrations = layerProperty.GetAllDataBindingRegistrations();
List<IDataBindingRegistration> registrations = layerProperty.GetAllDataBindingRegistrations();
// Create a data binding VM for each data bindable property. These VMs will be responsible for retrieving
// and creating the actual data bindings
foreach (var registration in registrations)
foreach (IDataBindingRegistration registration in registrations)
Items.Add(_dataBindingsVmFactory.DataBindingViewModel(registration));
SelectedItemIndex = 0;
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Artemis.Core;
using Artemis.Core.Services;
@@ -92,7 +93,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.DataBindings.DirectDa
{
if (Modifier.ParameterType == ProfileRightSideType.Dynamic)
{
var sourceType = Modifier.DirectDataBinding.GetSourceType();
Type sourceType = Modifier.DirectDataBinding.GetSourceType();
Modifier.UpdateParameter((Modifier.ModifierType.ParameterType ?? sourceType).GetDefault());
}
else
@@ -116,7 +117,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.DataBindings.DirectDa
private void Update()
{
var sourceType = Modifier.DirectDataBinding.GetSourceType();
Type sourceType = Modifier.DirectDataBinding.GetSourceType();
if (sourceType == null)
throw new ArtemisUIException("Cannot use a data binding modifier VM for a data binding without a source");
@@ -150,11 +151,11 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.DataBindings.DirectDa
}
// Modifier type
var root = new ModifierTypeCategoryViewModel(null, null);
var modifierTypes = _dataBindingService.GetCompatibleModifierTypes(sourceType).GroupBy(t => t.Category);
foreach (var dataBindingModifierTypes in modifierTypes)
ModifierTypeCategoryViewModel root = new ModifierTypeCategoryViewModel(null, null);
IEnumerable<IGrouping<string, DataBindingModifierType>> modifierTypes = _dataBindingService.GetCompatibleModifierTypes(sourceType).GroupBy(t => t.Category);
foreach (IGrouping<string, DataBindingModifierType> dataBindingModifierTypes in modifierTypes)
{
var viewModels = dataBindingModifierTypes.Select(t => new ModifierTypeViewModel(t));
IEnumerable<ModifierTypeViewModel> viewModels = dataBindingModifierTypes.Select(t => new ModifierTypeViewModel(t));
if (dataBindingModifierTypes.Key == null)
root.Children.AddRange(viewModels);
else
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using Artemis.Core;
@@ -75,7 +76,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.DataBindings.DirectDa
TargetSelectionViewModel.Dispose();
DirectDataBinding.ModifiersUpdated -= DirectDataBindingOnModifiersUpdated;
foreach (var dataBindingModifierViewModel in ModifierViewModels)
foreach (DataBindingModifierViewModel<TLayerProperty, TProperty> dataBindingModifierViewModel in ModifierViewModels)
dataBindingModifierViewModel.Dispose();
ModifierViewModels.Clear();
}
@@ -96,9 +97,9 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.DataBindings.DirectDa
if (_updating || e.Action != NotifyCollectionChangedAction.Add)
return;
for (var index = 0; index < ModifierViewModels.Count; index++)
for (int index = 0; index < ModifierViewModels.Count; index++)
{
var dataBindingModifierViewModel = ModifierViewModels[index];
DataBindingModifierViewModel<TLayerProperty, TProperty> dataBindingModifierViewModel = ModifierViewModels[index];
dataBindingModifierViewModel.Modifier.Order = index + 1;
}
@@ -132,15 +133,15 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.DataBindings.DirectDa
_updating = true;
// Remove old VMs
var toRemove = ModifierViewModels.Where(m => !DirectDataBinding.Modifiers.Contains(m.Modifier)).ToList();
foreach (var modifierViewModel in toRemove)
List<DataBindingModifierViewModel<TLayerProperty, TProperty>> toRemove = ModifierViewModels.Where(m => !DirectDataBinding.Modifiers.Contains(m.Modifier)).ToList();
foreach (DataBindingModifierViewModel<TLayerProperty, TProperty> modifierViewModel in toRemove)
{
ModifierViewModels.Remove(modifierViewModel);
modifierViewModel.Dispose();
}
// Add missing VMs
foreach (var modifier in DirectDataBinding.Modifiers)
foreach (DataBindingModifier<TLayerProperty, TProperty> modifier in DirectDataBinding.Modifiers)
{
if (ModifierViewModels.All(m => m.Modifier != modifier))
ModifierViewModels.Add(_dataBindingsVmFactory.DataBindingModifierViewModel(modifier));
@@ -1,4 +1,5 @@
using System.ComponentModel;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Threading.Tasks;
using Artemis.Core;
@@ -34,14 +35,14 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.LayerEffects
public void PopulateDescriptors()
{
var layerBrushProviders = _pluginService.GetPluginsOfType<LayerEffectProvider>();
var descriptors = layerBrushProviders.SelectMany(l => l.LayerEffectDescriptors).ToList();
List<LayerEffectProvider> layerBrushProviders = _pluginService.GetPluginsOfType<LayerEffectProvider>();
List<LayerEffectDescriptor> descriptors = layerBrushProviders.SelectMany(l => l.LayerEffectDescriptors).ToList();
Items.AddRange(descriptors.Except(Items));
Items.RemoveRange(Items.Except(descriptors));
// Sort by display name
var index = 0;
foreach (var layerEffectDescriptor in Items.OrderBy(d => d.DisplayName).ToList())
int index = 0;
foreach (LayerEffectDescriptor layerEffectDescriptor in Items.OrderBy(d => d.DisplayName).ToList())
{
if (Items.IndexOf(layerEffectDescriptor) != index)
((BindableCollection<LayerEffectDescriptor>) Items).Move(Items.IndexOf(layerEffectDescriptor), index);
@@ -7,6 +7,7 @@ using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using Artemis.Core;
using Artemis.Core.LayerEffects;
using Artemis.Core.Services;
using Artemis.UI.Ninject.Factories;
using Artemis.UI.Screens.ProfileEditor.LayerProperties.DataBindings;
@@ -230,8 +231,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
public List<LayerPropertyGroupViewModel> GetAllLayerPropertyGroupViewModels()
{
var groups = LayerPropertyGroups.ToList();
var toAdd = groups.SelectMany(g => g.Children).Where(g => g is LayerPropertyGroupViewModel).Cast<LayerPropertyGroupViewModel>().ToList();
List<LayerPropertyGroupViewModel> groups = LayerPropertyGroups.ToList();
List<LayerPropertyGroupViewModel> toAdd = groups.SelectMany(g => g.Children).Where(g => g is LayerPropertyGroupViewModel).Cast<LayerPropertyGroupViewModel>().ToList();
groups.AddRange(toAdd);
return groups;
}
@@ -245,7 +246,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
SelectedLayer.LayerBrushUpdated -= SelectedLayerOnLayerBrushUpdated;
// Clear old properties
foreach (var layerPropertyGroupViewModel in LayerPropertyGroups)
foreach (LayerPropertyGroupViewModel layerPropertyGroupViewModel in LayerPropertyGroups)
layerPropertyGroupViewModel.Dispose();
LayerPropertyGroups.Clear();
_brushPropertyGroup = null;
@@ -285,7 +286,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
if (SelectedLayer == null)
return;
var hideRenderRelatedProperties = SelectedLayer?.LayerBrush != null && !SelectedLayer.LayerBrush.SupportsTransformation;
bool hideRenderRelatedProperties = SelectedLayer?.LayerBrush != null && !SelectedLayer.LayerBrush.SupportsTransformation;
SelectedLayer.General.ShapeType.IsHidden = hideRenderRelatedProperties;
SelectedLayer.General.ResizeMode.IsHidden = hideRenderRelatedProperties;
@@ -313,14 +314,14 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
return;
// Remove VMs of effects no longer applied on the layer
var toRemove = LayerPropertyGroups
List<LayerPropertyGroupViewModel> toRemove = LayerPropertyGroups
.Where(l => l.LayerPropertyGroup.LayerEffect != null && !SelectedProfileElement.LayerEffects.Contains(l.LayerPropertyGroup.LayerEffect))
.ToList();
LayerPropertyGroups.RemoveRange(toRemove);
foreach (var layerPropertyGroupViewModel in toRemove)
foreach (LayerPropertyGroupViewModel layerPropertyGroupViewModel in toRemove)
layerPropertyGroupViewModel.Dispose();
foreach (var layerEffect in SelectedProfileElement.LayerEffects)
foreach (BaseLayerEffect layerEffect in SelectedProfileElement.LayerEffects)
{
if (LayerPropertyGroups.Any(l => l.LayerPropertyGroup.LayerEffect == layerEffect) || layerEffect.BaseProperties == null)
continue;
@@ -334,26 +335,26 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
private void SortProperties()
{
// Get all non-effect properties
var nonEffectProperties = LayerPropertyGroups
List<LayerPropertyGroupViewModel> nonEffectProperties = LayerPropertyGroups
.Where(l => l.TreeGroupViewModel.GroupType != LayerEffectRoot)
.ToList();
// Order the effects
var effectProperties = LayerPropertyGroups
List<LayerPropertyGroupViewModel> effectProperties = LayerPropertyGroups
.Where(l => l.TreeGroupViewModel.GroupType == LayerEffectRoot)
.OrderBy(l => l.LayerPropertyGroup.LayerEffect.Order)
.ToList();
// Put the non-effect properties in front
for (var index = 0; index < nonEffectProperties.Count; index++)
for (int index = 0; index < nonEffectProperties.Count; index++)
{
var layerPropertyGroupViewModel = nonEffectProperties[index];
LayerPropertyGroupViewModel layerPropertyGroupViewModel = nonEffectProperties[index];
LayerPropertyGroups.Move(LayerPropertyGroups.IndexOf(layerPropertyGroupViewModel), index);
}
// Put the effect properties after, sorted by their order
for (var index = 0; index < effectProperties.Count; index++)
for (int index = 0; index < effectProperties.Count; index++)
{
var layerPropertyGroupViewModel = effectProperties[index];
LayerPropertyGroupViewModel layerPropertyGroupViewModel = effectProperties[index];
LayerPropertyGroups.Move(LayerPropertyGroups.IndexOf(layerPropertyGroupViewModel), index + nonEffectProperties.Count);
}
}
@@ -378,8 +379,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
if (dropInfo.InsertIndex == 1)
return;
var source = dropInfo.Data as LayerPropertyGroupViewModel;
var target = dropInfo.TargetItem as LayerPropertyGroupViewModel;
LayerPropertyGroupViewModel source = dropInfo.Data as LayerPropertyGroupViewModel;
LayerPropertyGroupViewModel target = dropInfo.TargetItem as LayerPropertyGroupViewModel;
if (source == target ||
target?.TreeGroupViewModel.GroupType != LayerEffectRoot ||
@@ -397,8 +398,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
if (dropInfo.InsertIndex == 1)
return;
var source = dropInfo.Data as LayerPropertyGroupViewModel;
var target = dropInfo.TargetItem as LayerPropertyGroupViewModel;
LayerPropertyGroupViewModel source = dropInfo.Data as LayerPropertyGroupViewModel;
LayerPropertyGroupViewModel target = dropInfo.TargetItem as LayerPropertyGroupViewModel;
if (source == target ||
target?.TreeGroupViewModel.GroupType != LayerEffectRoot ||
@@ -430,8 +431,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
private void ApplyCurrentEffectsOrder()
{
var order = 1;
foreach (var groupViewModel in LayerPropertyGroups.Where(p => p.TreeGroupViewModel.GroupType == LayerEffectRoot))
int order = 1;
foreach (LayerPropertyGroupViewModel groupViewModel in LayerPropertyGroups.Where(p => p.TreeGroupViewModel.GroupType == LayerEffectRoot))
{
groupViewModel.UpdateOrder(order);
order++;
@@ -486,15 +487,15 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
public void GoToPreviousFrame()
{
var frameTime = 1000.0 / SettingsService.GetSetting("Core.TargetFrameRate", 25).Value;
var newTime = Math.Max(0, Math.Round((ProfileEditorService.CurrentTime.TotalMilliseconds - frameTime) / frameTime) * frameTime);
double frameTime = 1000.0 / SettingsService.GetSetting("Core.TargetFrameRate", 25).Value;
double newTime = Math.Max(0, Math.Round((ProfileEditorService.CurrentTime.TotalMilliseconds - frameTime) / frameTime) * frameTime);
ProfileEditorService.CurrentTime = TimeSpan.FromMilliseconds(newTime);
}
public void GoToNextFrame()
{
var frameTime = 1000.0 / SettingsService.GetSetting("Core.TargetFrameRate", 25).Value;
var newTime = Math.Round((ProfileEditorService.CurrentTime.TotalMilliseconds + frameTime) / frameTime) * frameTime;
double frameTime = 1000.0 / SettingsService.GetSetting("Core.TargetFrameRate", 25).Value;
double newTime = Math.Round((ProfileEditorService.CurrentTime.TotalMilliseconds + frameTime) / frameTime) * frameTime;
newTime = Math.Min(newTime, CalculateEndTime().TotalMilliseconds);
ProfileEditorService.CurrentTime = TimeSpan.FromMilliseconds(newTime);
}
@@ -522,7 +523,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
private TimeSpan CalculateEndTime()
{
var keyframeViewModels = LayerPropertyGroups.SelectMany(g => g.GetAllKeyframeViewModels(false)).ToList();
List<ITimelineKeyframeViewModel> keyframeViewModels = LayerPropertyGroups.SelectMany(g => g.GetAllKeyframeViewModels(false)).ToList();
// If there are no keyframes, don't stop at all
if (!keyframeViewModels.Any())
@@ -533,7 +534,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
private TimeSpan GetCurrentSegmentStart()
{
var current = ProfileEditorService.CurrentTime;
TimeSpan current = ProfileEditorService.CurrentTime;
if (current < StartTimelineSegmentViewModel.SegmentEnd)
return StartTimelineSegmentViewModel.SegmentStart;
if (current < MainTimelineSegmentViewModel.SegmentEnd)
@@ -546,7 +547,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
private TimeSpan GetCurrentSegmentEnd()
{
var current = ProfileEditorService.CurrentTime;
TimeSpan current = ProfileEditorService.CurrentTime;
if (current < StartTimelineSegmentViewModel.SegmentEnd)
return StartTimelineSegmentViewModel.SegmentEnd;
if (current < MainTimelineSegmentViewModel.SegmentEnd)
@@ -561,7 +562,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
{
Execute.PostToUIThread(() =>
{
var newTime = ProfileEditorService.CurrentTime.Add(TimeSpan.FromSeconds(e.DeltaTime));
TimeSpan newTime = ProfileEditorService.CurrentTime.Add(TimeSpan.FromSeconds(e.DeltaTime));
if (SelectedProfileElement != null)
{
if (Repeating && RepeatTimeline)
@@ -604,9 +605,9 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
if (e.LeftButton == MouseButtonState.Pressed)
{
// Get the parent grid, need that for our position
var parent = (IInputElement) VisualTreeHelper.GetParent((DependencyObject) sender);
var x = Math.Max(0, e.GetPosition(parent).X);
var newTime = TimeSpan.FromSeconds(x / ProfileEditorService.PixelsPerSecond);
IInputElement parent = (IInputElement) VisualTreeHelper.GetParent((DependencyObject) sender);
double x = Math.Max(0, e.GetPosition(parent).X);
TimeSpan newTime = TimeSpan.FromSeconds(x / ProfileEditorService.PixelsPerSecond);
// Round the time to something that fits the current zoom level
if (ProfileEditorService.PixelsPerSecond < 200)
@@ -619,8 +620,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
// If holding down shift, snap to the closest segment or keyframe
if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))
{
var snapTimes = LayerPropertyGroups.SelectMany(g => g.GetAllKeyframeViewModels(true)).Select(k => k.Position).ToList();
var snappedTime = ProfileEditorService.SnapToTimeline(newTime, TimeSpan.FromMilliseconds(1000f / ProfileEditorService.PixelsPerSecond * 5), true, false, snapTimes);
List<TimeSpan> snapTimes = LayerPropertyGroups.SelectMany(g => g.GetAllKeyframeViewModels(true)).Select(k => k.Position).ToList();
TimeSpan snappedTime = ProfileEditorService.SnapToTimeline(newTime, TimeSpan.FromMilliseconds(1000f / ProfileEditorService.PixelsPerSecond * 5), true, false, snapTimes);
ProfileEditorService.CurrentTime = snappedTime;
return;
}
@@ -628,7 +629,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
// If holding down control, round to the closest 50ms
if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
{
var roundedTime = TimeSpan.FromMilliseconds(Math.Round(newTime.TotalMilliseconds / 50.0) * 50.0);
TimeSpan roundedTime = TimeSpan.FromMilliseconds(Math.Round(newTime.TotalMilliseconds / 50.0) * 50.0);
ProfileEditorService.CurrentTime = roundedTime;
return;
}
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Reflection;
using Artemis.Core;
using Artemis.UI.Ninject.Factories;
using Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline;
@@ -56,7 +57,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
{
TimelineGroupViewModel.Dispose();
LayerPropertyGroup.VisibilityChanged -= LayerPropertyGroupOnVisibilityChanged;
foreach (var child in Children)
foreach (PropertyChangedBase child in Children)
{
if (child is IDisposable disposableChild)
disposableChild.Dispose();
@@ -71,11 +72,11 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
public List<ITimelineKeyframeViewModel> GetAllKeyframeViewModels(bool expandedOnly)
{
var result = new List<ITimelineKeyframeViewModel>();
List<ITimelineKeyframeViewModel> result = new List<ITimelineKeyframeViewModel>();
if (expandedOnly && !IsExpanded)
return result;
foreach (var child in Children)
foreach (PropertyChangedBase child in Children)
{
if (child is LayerPropertyViewModel layerPropertyViewModel)
result.AddRange(layerPropertyViewModel.TimelinePropertyViewModel.GetAllKeyframeViewModels());
@@ -94,7 +95,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
/// <param name="end">The position at which to start removing keyframes, if null this will end at the last keyframe</param>
public virtual void WipeKeyframes(TimeSpan? start, TimeSpan? end)
{
foreach (var child in Children)
foreach (PropertyChangedBase child in Children)
{
if (child is LayerPropertyViewModel layerPropertyViewModel)
layerPropertyViewModel.TimelinePropertyViewModel.WipeKeyframes(start, end);
@@ -114,7 +115,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
/// <param name="amount">The amount to shift the keyframes for</param>
public void ShiftKeyframes(TimeSpan? start, TimeSpan? end, TimeSpan amount)
{
foreach (var child in Children)
foreach (PropertyChangedBase child in Children)
{
if (child is LayerPropertyViewModel layerPropertyViewModel)
layerPropertyViewModel.TimelinePropertyViewModel.ShiftKeyframes(start, end, amount);
@@ -134,16 +135,16 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties
{
// Get all properties and property groups and create VMs for them
// The group has methods for getting this without reflection but then we lose the order of the properties as they are defined on the group
foreach (var propertyInfo in LayerPropertyGroup.GetType().GetProperties())
foreach (PropertyInfo 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);
PropertyDescriptionAttribute propertyAttribute = (PropertyDescriptionAttribute) Attribute.GetCustomAttribute(propertyInfo, typeof(PropertyDescriptionAttribute));
PropertyGroupDescriptionAttribute groupAttribute = (PropertyGroupDescriptionAttribute) Attribute.GetCustomAttribute(propertyInfo, typeof(PropertyGroupDescriptionAttribute));
object? value = propertyInfo.GetValue(LayerPropertyGroup);
// Create VMs for properties on the group
if (propertyAttribute != null && value is ILayerProperty layerProperty)
{
var layerPropertyViewModel = _layerPropertyVmFactory.LayerPropertyViewModel(layerProperty);
LayerPropertyViewModel layerPropertyViewModel = _layerPropertyVmFactory.LayerPropertyViewModel(layerProperty);
// After creation ensure a supported input VM was found, if not, discard the VM
if (!layerPropertyViewModel.TreePropertyViewModel.HasPropertyInputViewModel)
layerPropertyViewModel.Dispose();
@@ -71,23 +71,23 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline.Controls
base.OnRender(drawingContext);
UpdateTimeScale();
var linePen = new Pen(Fill, 1);
var width = HorizontalOffset + VisibleWidth;
var frameStart = 0;
Pen linePen = new Pen(Fill, 1);
double width = HorizontalOffset + VisibleWidth;
int frameStart = 0;
var units = PixelsPerSecond / _subd1;
var offsetUnits = frameStart * PixelsPerSecond % units;
double units = PixelsPerSecond / _subd1;
double offsetUnits = frameStart * PixelsPerSecond % units;
// Labels
var count = (width + offsetUnits) / units;
for (var i = 0; i < count; i++)
double count = (width + offsetUnits) / units;
for (int i = 0; i < count; i++)
{
var x = i * units - offsetUnits;
double x = i * units - offsetUnits;
// Add a 100px margin to allow the text to partially render when needed
if (x < HorizontalOffset - 100 || x > HorizontalOffset + width)
continue;
var t = TimeSpan.FromSeconds((i * units - offsetUnits) / PixelsPerSecond + frameStart);
TimeSpan t = TimeSpan.FromSeconds((i * units - offsetUnits) / PixelsPerSecond + frameStart);
// 0.00 is always formatted as 0.00
if (t == TimeSpan.Zero)
RenderLabel(drawingContext, "0.00", x);
@@ -102,9 +102,9 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline.Controls
// Large ticks
units = PixelsPerSecond / _subd2;
count = (width + offsetUnits) / units;
for (var i = 0; i < count; i++)
for (int i = 0; i < count; i++)
{
var x = i * units - offsetUnits;
double x = i * units - offsetUnits;
if (x == 0 && OffsetFirstValue)
drawingContext.DrawLine(linePen, new Point(1, 20), new Point(1, 30));
else if (x > HorizontalOffset && x < HorizontalOffset + width)
@@ -112,13 +112,13 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline.Controls
}
// Small ticks
var mul = _subd3 / _subd2;
double mul = _subd3 / _subd2;
units = PixelsPerSecond / _subd3;
count = (width + offsetUnits) / units;
for (var i = 0; i < count; i++)
for (int i = 0; i < count; i++)
{
if (Math.Abs(i % mul) < 0.001) continue;
var x = i * units - offsetUnits;
double x = i * units - offsetUnits;
if (x > HorizontalOffset && x < HorizontalOffset + width)
drawingContext.DrawLine(linePen, new Point(x, 25), new Point(x, 30));
}
@@ -126,8 +126,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline.Controls
private void RenderLabel(DrawingContext drawingContext, string text, double x)
{
var typeFace = new Typeface(FontFamily, new FontStyle(), new FontWeight(), new FontStretch());
var formattedText = new FormattedText(text, CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, typeFace, 9, Fill, null, VisualTreeHelper.GetDpi(this).PixelsPerDip);
Typeface typeFace = new Typeface(FontFamily, new FontStyle(), new FontWeight(), new FontStretch());
FormattedText formattedText = new FormattedText(text, CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, typeFace, 9, Fill, null, VisualTreeHelper.GetDpi(this).PixelsPerDip);
if (x == 0 && OffsetFirstValue)
drawingContext.DrawText(formattedText, new Point(2, 5));
else
@@ -71,7 +71,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline.Dialogs
public static TimeSpan CreateTime(string s)
{
var parts = s.Split(".");
string[] parts = s.Split(".");
// Only seconds provided
if (parts.Length == 1)
@@ -19,10 +19,10 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
Description = easingFunction.Humanize();
EasingPoints = new PointCollection();
for (var i = 1; i <= 10; i++)
for (int i = 1; i <= 10; i++)
{
var x = i;
var y = Easings.Interpolate(i / 10.0, EasingFunction) * 10;
int x = i;
double y = Easings.Interpolate(i / 10.0, EasingFunction) * 10;
EasingPoints.Add(new Point(x, y));
}
}
@@ -55,7 +55,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
_profileEditorService.PixelsPerSecondChanged -= ProfileEditorServiceOnPixelsPerSecondChanged;
LayerPropertyKeyframe.PropertyChanged -= LayerPropertyKeyframeOnPropertyChanged;
foreach (var timelineEasingViewModel in EasingViewModels)
foreach (TimelineEasingViewModel timelineEasingViewModel in EasingViewModels)
timelineEasingViewModel.EasingModeSelected -= TimelineEasingViewModelOnEasingModeSelected;
}
@@ -87,7 +87,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
.Cast<Easings.Functions>()
.Select(e => new TimelineEasingViewModel(e, e == LayerPropertyKeyframe.EasingFunction)));
foreach (var timelineEasingViewModel in EasingViewModels)
foreach (TimelineEasingViewModel timelineEasingViewModel in EasingViewModels)
timelineEasingViewModel.EasingModeSelected += TimelineEasingViewModelOnEasingModeSelected;
}
@@ -105,7 +105,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
{
LayerPropertyKeyframe.EasingFunction = easingViewModel.EasingFunction;
// Set every selection to false except on the VM that made the change
foreach (var propertyTrackEasingViewModel in EasingViewModels.Where(vm => vm != easingViewModel))
foreach (TimelineEasingViewModel propertyTrackEasingViewModel in EasingViewModels.Where(vm => vm != easingViewModel))
propertyTrackEasingViewModel.IsEasingModeSelected = false;
_profileEditorService.UpdateSelectedProfileElement();
@@ -162,14 +162,14 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
public void Copy()
{
var newKeyframe = new LayerPropertyKeyframe<T>(
LayerPropertyKeyframe<T> newKeyframe = new LayerPropertyKeyframe<T>(
LayerPropertyKeyframe.Value,
LayerPropertyKeyframe.Position,
LayerPropertyKeyframe.EasingFunction,
LayerPropertyKeyframe.LayerProperty
);
// If possible, shift the keyframe to the right by 11 pixels
var desiredPosition = newKeyframe.Position + TimeSpan.FromMilliseconds(1000f / _profileEditorService.PixelsPerSecond * 11);
TimeSpan desiredPosition = newKeyframe.Position + TimeSpan.FromMilliseconds(1000f / _profileEditorService.PixelsPerSecond * 11);
if (desiredPosition <= newKeyframe.LayerProperty.ProfileElement.TimelineLength)
newKeyframe.Position = desiredPosition;
// Otherwise if possible shift it to the left by 11 pixels
@@ -44,8 +44,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
start ??= TimeSpan.Zero;
end ??= TimeSpan.MaxValue;
var toShift = LayerProperty.Keyframes.Where(k => k.Position >= start && k.Position < end).ToList();
foreach (var keyframe in toShift)
List<LayerPropertyKeyframe<T>> toShift = LayerProperty.Keyframes.Where(k => k.Position >= start && k.Position < end).ToList();
foreach (LayerPropertyKeyframe<T> keyframe in toShift)
LayerProperty.RemoveKeyframe(keyframe);
UpdateKeyframes();
@@ -56,8 +56,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
start ??= TimeSpan.Zero;
end ??= TimeSpan.MaxValue;
var toShift = LayerProperty.Keyframes.Where(k => k.Position >= start && k.Position < end).ToList();
foreach (var keyframe in toShift)
List<LayerPropertyKeyframe<T>> toShift = LayerProperty.Keyframes.Where(k => k.Position >= start && k.Position < end).ToList();
foreach (LayerPropertyKeyframe<T> keyframe in toShift)
keyframe.Position += amount;
UpdateKeyframes();
@@ -90,9 +90,9 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
// Only show keyframes if they are enabled
if (LayerProperty.KeyframesEnabled)
{
var keyframes = LayerProperty.Keyframes.ToList();
var toRemove = Items.Where(t => !keyframes.Contains(t.LayerPropertyKeyframe)).ToList();
foreach (var timelineKeyframeViewModel in toRemove)
List<LayerPropertyKeyframe<T>> keyframes = LayerProperty.Keyframes.ToList();
List<TimelineKeyframeViewModel<T>> toRemove = Items.Where(t => !keyframes.Contains(t.LayerPropertyKeyframe)).ToList();
foreach (TimelineKeyframeViewModel<T> timelineKeyframeViewModel in toRemove)
timelineKeyframeViewModel.Dispose();
Items.RemoveRange(toRemove);
@@ -104,7 +104,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
else
Items.Clear();
foreach (var timelineKeyframeViewModel in Items)
foreach (TimelineKeyframeViewModel<T> timelineKeyframeViewModel in Items)
timelineKeyframeViewModel.Update();
}
}
@@ -197,10 +197,10 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
public void DisableSegment()
{
var startSegmentEnd = SelectedProfileElement.StartSegmentLength;
var mainSegmentEnd = SelectedProfileElement.StartSegmentLength + SelectedProfileElement.MainSegmentLength;
TimeSpan startSegmentEnd = SelectedProfileElement.StartSegmentLength;
TimeSpan mainSegmentEnd = SelectedProfileElement.StartSegmentLength + SelectedProfileElement.MainSegmentLength;
var oldSegmentLength = SegmentLength;
TimeSpan oldSegmentLength = SegmentLength;
if (Segment == SegmentViewModelType.Start)
{
@@ -264,10 +264,10 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
return;
// Get the parent scroll viewer, need that for our position
var parent = VisualTreeUtilities.FindParent<ScrollViewer>((DependencyObject) sender, "TimelineHeaderScrollViewer");
ScrollViewer parent = VisualTreeUtilities.FindParent<ScrollViewer>((DependencyObject) sender, "TimelineHeaderScrollViewer");
var x = Math.Max(0, e.GetPosition(parent).X);
var newTime = TimeSpan.FromSeconds(x / ProfileEditorService.PixelsPerSecond);
double x = Math.Max(0, e.GetPosition(parent).X);
TimeSpan newTime = TimeSpan.FromSeconds(x / ProfileEditorService.PixelsPerSecond);
// Round the time to something that fits the current zoom level
if (ProfileEditorService.PixelsPerSecond < 200)
@@ -280,7 +280,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
// If holding down shift, snap to the closest element on the timeline
if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))
{
var keyframeTimes = LayerPropertyGroups.SelectMany(g => g.GetAllKeyframeViewModels(true)).Select(k => k.Position).ToList();
List<TimeSpan> keyframeTimes = LayerPropertyGroups.SelectMany(g => g.GetAllKeyframeViewModels(true)).Select(k => k.Position).ToList();
newTime = ProfileEditorService.SnapToTimeline(newTime, TimeSpan.FromMilliseconds(1000f / ProfileEditorService.PixelsPerSecond * 5), false, true, keyframeTimes);
}
// If holding down control, round to the closest 50ms
@@ -292,7 +292,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
public void UpdateLength(TimeSpan newTime)
{
var oldSegmentLength = SegmentLength;
TimeSpan oldSegmentLength = SegmentLength;
if (Segment == SegmentViewModelType.Start)
{
if (newTime < TimeSpan.FromMilliseconds(100))
@@ -361,7 +361,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
public void ShiftNextSegment(TimeSpan amount)
{
var segmentEnd = TimeSpan.Zero;
TimeSpan segmentEnd = TimeSpan.Zero;
if (Segment == SegmentViewModelType.Start)
segmentEnd = SelectedProfileElement.StartSegmentLength;
else if (Segment == SegmentViewModelType.Main)
@@ -374,13 +374,13 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
private void WipeKeyframes(TimeSpan? start, TimeSpan? end)
{
foreach (var layerPropertyGroupViewModel in LayerPropertyGroups)
foreach (LayerPropertyGroupViewModel layerPropertyGroupViewModel in LayerPropertyGroups)
layerPropertyGroupViewModel.WipeKeyframes(start, end);
}
private void ShiftKeyframes(TimeSpan? start, TimeSpan? end, TimeSpan amount)
{
foreach (var layerPropertyGroupViewModel in LayerPropertyGroups)
foreach (LayerPropertyGroupViewModel layerPropertyGroupViewModel in LayerPropertyGroups)
layerPropertyGroupViewModel.ShiftKeyframes(start, end, amount);
}
}
@@ -102,7 +102,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
// if (e.LeftButton == MouseButtonState.Released)
// return;
var viewModel = (sender as Ellipse)?.DataContext as ITimelineKeyframeViewModel;
ITimelineKeyframeViewModel viewModel = (sender as Ellipse)?.DataContext as ITimelineKeyframeViewModel;
if (viewModel == null)
return;
@@ -153,15 +153,15 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
public void Copy(ITimelineKeyframeViewModel viewModel)
{
// viewModel.Copy();
var keyframeViewModels = GetAllKeyframeViewModels();
foreach (var keyframeViewModel in keyframeViewModels.Where(k => k.IsSelected))
List<ITimelineKeyframeViewModel> keyframeViewModels = GetAllKeyframeViewModels();
foreach (ITimelineKeyframeViewModel keyframeViewModel in keyframeViewModels.Where(k => k.IsSelected))
keyframeViewModel.Copy();
}
public void Delete(ITimelineKeyframeViewModel viewModel)
{
var keyframeViewModels = GetAllKeyframeViewModels();
foreach (var keyframeViewModel in keyframeViewModels.Where(k => k.IsSelected))
List<ITimelineKeyframeViewModel> keyframeViewModels = GetAllKeyframeViewModels();
foreach (ITimelineKeyframeViewModel keyframeViewModel in keyframeViewModels.Where(k => k.IsSelected))
keyframeViewModel.Delete();
}
@@ -170,8 +170,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
private TimeSpan GetCursorTime(Point position)
{
// Get the parent grid, need that for our position
var x = Math.Max(0, position.X);
var time = TimeSpan.FromSeconds(x / _profileEditorService.PixelsPerSecond);
double x = Math.Max(0, position.X);
TimeSpan time = TimeSpan.FromSeconds(x / _profileEditorService.PixelsPerSecond);
// Round the time to something that fits the current zoom level
if (_profileEditorService.PixelsPerSecond < 200)
@@ -185,7 +185,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
// Take a tolerance of 5 pixels (half a keyframe width)
if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))
{
var tolerance = 1000f / _profileEditorService.PixelsPerSecond * 5;
float tolerance = 1000f / _profileEditorService.PixelsPerSecond * 5;
if (Math.Abs(_profileEditorService.CurrentTime.TotalMilliseconds - time.TotalMilliseconds) < tolerance)
time = _profileEditorService.CurrentTime;
else if (Math.Abs(_profileEditorService.SelectedProfileElement.StartSegmentLength.TotalMilliseconds - time.TotalMilliseconds) < tolerance)
@@ -204,8 +204,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
// Ensure the selection rectangle doesn't show, the view isn't aware of different types of dragging
SelectionRectangle.Rect = new Rect();
var keyframeViewModels = GetAllKeyframeViewModels();
foreach (var keyframeViewModel in keyframeViewModels.Where(k => k.IsSelected))
List<ITimelineKeyframeViewModel> keyframeViewModels = GetAllKeyframeViewModels();
foreach (ITimelineKeyframeViewModel keyframeViewModel in keyframeViewModels.Where(k => k.IsSelected))
keyframeViewModel.SaveOffsetToKeyframe(sourceKeyframeViewModel);
if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))
@@ -221,7 +221,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
sourceKeyframeViewModel.UpdatePosition(cursorTime);
foreach (var keyframeViewModel in keyframeViewModels.Where(k => k.IsSelected))
foreach (ITimelineKeyframeViewModel keyframeViewModel in keyframeViewModels.Where(k => k.IsSelected))
keyframeViewModel.ApplyOffsetToKeyframe(sourceKeyframeViewModel);
_profileEditorService.UpdateProfilePreview();
@@ -230,8 +230,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
public void ReleaseSelectedKeyframes()
{
var keyframeViewModels = GetAllKeyframeViewModels();
foreach (var keyframeViewModel in keyframeViewModels.Where(k => k.IsSelected))
List<ITimelineKeyframeViewModel> keyframeViewModels = GetAllKeyframeViewModels();
foreach (ITimelineKeyframeViewModel keyframeViewModel in keyframeViewModels.Where(k => k.IsSelected))
keyframeViewModel.ReleaseMovement();
}
@@ -266,13 +266,13 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
if (!_mouseDragging)
return;
var position = e.GetPosition((IInputElement) sender);
var selectedRect = new Rect(_mouseDragStartPoint, position);
Point position = e.GetPosition((IInputElement) sender);
Rect selectedRect = new Rect(_mouseDragStartPoint, position);
SelectionRectangle.Rect = selectedRect;
var keyframeViewModels = GetAllKeyframeViewModels();
var selectedKeyframes = HitTestUtilities.GetHitViewModels<ITimelineKeyframeViewModel>((Visual) sender, SelectionRectangle);
foreach (var keyframeViewModel in keyframeViewModels)
List<ITimelineKeyframeViewModel> keyframeViewModels = GetAllKeyframeViewModels();
List<ITimelineKeyframeViewModel> selectedKeyframes = HitTestUtilities.GetHitViewModels<ITimelineKeyframeViewModel>((Visual) sender, SelectionRectangle);
foreach (ITimelineKeyframeViewModel keyframeViewModel in keyframeViewModels)
keyframeViewModel.IsSelected = selectedKeyframes.Contains(keyframeViewModel);
_mouseDragging = false;
@@ -284,8 +284,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
{
if (_mouseDragging && e.LeftButton == MouseButtonState.Pressed)
{
var position = e.GetPosition((IInputElement) sender);
var selectedRect = new Rect(_mouseDragStartPoint, position);
Point position = e.GetPosition((IInputElement) sender);
Rect selectedRect = new Rect(_mouseDragStartPoint, position);
SelectionRectangle.Rect = selectedRect;
e.Handled = true;
}
@@ -293,10 +293,10 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
public void SelectKeyframe(ITimelineKeyframeViewModel clicked, bool selectBetween, bool toggle)
{
var keyframeViewModels = GetAllKeyframeViewModels();
List<ITimelineKeyframeViewModel> keyframeViewModels = GetAllKeyframeViewModels();
if (selectBetween)
{
var selectedIndex = keyframeViewModels.FindIndex(k => k.IsSelected);
int selectedIndex = keyframeViewModels.FindIndex(k => k.IsSelected);
// If nothing is selected, select only the clicked
if (selectedIndex == -1)
{
@@ -304,18 +304,18 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
return;
}
foreach (var keyframeViewModel in keyframeViewModels)
foreach (ITimelineKeyframeViewModel keyframeViewModel in keyframeViewModels)
keyframeViewModel.IsSelected = false;
var clickedIndex = keyframeViewModels.IndexOf(clicked);
int clickedIndex = keyframeViewModels.IndexOf(clicked);
if (clickedIndex < selectedIndex)
{
foreach (var keyframeViewModel in keyframeViewModels.Skip(clickedIndex).Take(selectedIndex - clickedIndex + 1))
foreach (ITimelineKeyframeViewModel keyframeViewModel in keyframeViewModels.Skip(clickedIndex).Take(selectedIndex - clickedIndex + 1))
keyframeViewModel.IsSelected = true;
}
else
{
foreach (var keyframeViewModel in keyframeViewModels.Skip(selectedIndex).Take(clickedIndex - selectedIndex + 1))
foreach (ITimelineKeyframeViewModel keyframeViewModel in keyframeViewModels.Skip(selectedIndex).Take(clickedIndex - selectedIndex + 1))
keyframeViewModel.IsSelected = true;
}
}
@@ -327,7 +327,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
else
{
// Only select the clicked keyframe
foreach (var keyframeViewModel in keyframeViewModels)
foreach (ITimelineKeyframeViewModel keyframeViewModel in keyframeViewModels)
keyframeViewModel.IsSelected = false;
clicked.IsSelected = true;
}
@@ -335,8 +335,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Timeline
private List<ITimelineKeyframeViewModel> GetAllKeyframeViewModels()
{
var viewModels = new List<ITimelineKeyframeViewModel>();
foreach (var layerPropertyGroupViewModel in LayerPropertyGroups)
List<ITimelineKeyframeViewModel> viewModels = new List<ITimelineKeyframeViewModel>();
foreach (LayerPropertyGroupViewModel layerPropertyGroupViewModel in LayerPropertyGroups)
viewModels.AddRange(layerPropertyGroupViewModel.GetAllKeyframeViewModels(false));
return viewModels;
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using Artemis.Core;
using Artemis.Core.LayerBrushes;
using Artemis.Core.LayerEffects;
@@ -53,22 +54,22 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Tree
public void OpenBrushSettings()
{
var layerBrush = LayerPropertyGroup.LayerBrush;
var configurationViewModel = layerBrush.ConfigurationDialog;
BaseLayerBrush layerBrush = LayerPropertyGroup.LayerBrush;
LayerBrushConfigurationDialog configurationViewModel = layerBrush.ConfigurationDialog;
if (configurationViewModel == null)
return;
try
{
// Limit to one constructor, there's no need to have more and it complicates things anyway
var constructors = configurationViewModel.Type.GetConstructors();
ConstructorInfo[] constructors = configurationViewModel.Type.GetConstructors();
if (constructors.Length != 1)
throw new ArtemisUIException("Brush configuration dialogs must have exactly one constructor");
// Find the BaseLayerBrush parameter, it is required by the base constructor so its there for sure
var brushParameter = constructors.First().GetParameters().First(p => typeof(BaseLayerBrush).IsAssignableFrom(p.ParameterType));
var argument = new ConstructorArgument(brushParameter.Name, layerBrush);
var viewModel = (BrushConfigurationViewModel) layerBrush.PluginInfo.Kernel.Get(configurationViewModel.Type, argument);
ParameterInfo brushParameter = constructors.First().GetParameters().First(p => typeof(BaseLayerBrush).IsAssignableFrom(p.ParameterType));
ConstructorArgument argument = new ConstructorArgument(brushParameter.Name, layerBrush);
BrushConfigurationViewModel viewModel = (BrushConfigurationViewModel) layerBrush.PluginInfo.Kernel.Get(configurationViewModel.Type, argument);
_windowManager.ShowDialog(new LayerBrushSettingsWindowViewModel(viewModel));
}
@@ -80,21 +81,21 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Tree
public void OpenEffectSettings()
{
var layerEffect = LayerPropertyGroup.LayerEffect;
var configurationViewModel = layerEffect.ConfigurationDialog;
BaseLayerEffect layerEffect = LayerPropertyGroup.LayerEffect;
LayerEffectConfigurationDialog configurationViewModel = layerEffect.ConfigurationDialog;
if (configurationViewModel == null)
return;
try
{
// Limit to one constructor, there's no need to have more and it complicates things anyway
var constructors = configurationViewModel.Type.GetConstructors();
ConstructorInfo[] constructors = configurationViewModel.Type.GetConstructors();
if (constructors.Length != 1)
throw new ArtemisUIException("Effect configuration dialogs must have exactly one constructor");
var effectParameter = constructors.First().GetParameters().First(p => typeof(BaseLayerEffect).IsAssignableFrom(p.ParameterType));
var argument = new ConstructorArgument(effectParameter.Name, layerEffect);
var viewModel = (EffectConfigurationViewModel) layerEffect.PluginInfo.Kernel.Get(configurationViewModel.Type, argument);
ParameterInfo effectParameter = constructors.First().GetParameters().First(p => typeof(BaseLayerEffect).IsAssignableFrom(p.ParameterType));
ConstructorArgument argument = new ConstructorArgument(effectParameter.Name, layerEffect);
EffectConfigurationViewModel viewModel = (EffectConfigurationViewModel) layerEffect.PluginInfo.Kernel.Get(configurationViewModel.Type, argument);
_windowManager.ShowDialog(new LayerEffectSettingsWindowViewModel(viewModel));
}
catch (Exception e)
@@ -106,7 +107,7 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Tree
public async void RenameEffect()
{
var result = await _dialogService.ShowDialogAt<RenameViewModel>(
object result = await _dialogService.ShowDialogAt<RenameViewModel>(
"PropertyTreeDialogHost",
new Dictionary<string, object>
{
@@ -138,8 +139,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Tree
public double GetDepth()
{
var depth = 0;
var current = LayerPropertyGroup.Parent;
int depth = 0;
LayerPropertyGroup current = LayerPropertyGroup.Parent;
while (current != null)
{
depth++;
@@ -39,8 +39,8 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Tree
public bool HasDataBinding => LayerProperty.HasDataBinding;
public double GetDepth()
{
var depth = 0;
var current = LayerProperty.LayerPropertyGroup;
int depth = 0;
LayerPropertyGroup current = LayerProperty.LayerPropertyGroup;
while (current != null)
{
depth++;
@@ -27,12 +27,12 @@ namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.Tree
return;
e.Handled = true;
var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta)
MouseWheelEventArgs eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta)
{
RoutedEvent = UIElement.MouseWheelEvent,
Source = sender
};
var parent = ((Control) sender).Parent as UIElement;
UIElement parent = ((Control) sender).Parent as UIElement;
parent?.RaiseEvent(eventArg);
}
}
@@ -144,24 +144,24 @@ namespace Artemis.UI.Screens.ProfileEditor
public ProfileDescriptor CreateProfile(string name)
{
var profile = _profileService.CreateProfileDescriptor(Module, name);
ProfileDescriptor profile = _profileService.CreateProfileDescriptor(Module, name);
Profiles.Add(profile);
return profile;
}
public async Task AddProfile()
{
var result = await DialogService.ShowDialog<ProfileCreateViewModel>();
object result = await DialogService.ShowDialog<ProfileCreateViewModel>();
if (result is string name)
{
var newProfile = CreateProfile(name);
ProfileDescriptor newProfile = CreateProfile(name);
SelectedProfile = newProfile;
}
}
public async Task DeleteProfile(ProfileDescriptor profileDescriptor)
{
var result = await DialogService.ShowConfirmDialog(
bool result = await DialogService.ShowConfirmDialog(
"Delete profile",
$"Are you sure you want to delete '{profileDescriptor.Name}'? This cannot be undone."
);
@@ -172,7 +172,7 @@ namespace Artemis.UI.Screens.ProfileEditor
public async Task DeleteActiveProfile()
{
var result = await DialogService.ShowConfirmDialog(
bool result = await DialogService.ShowConfirmDialog(
"Delete active profile",
"Are you sure you want to delete your currently active profile? This cannot be undone."
);
@@ -191,7 +191,7 @@ namespace Artemis.UI.Screens.ProfileEditor
public async Task ImportProfile()
{
var result = await DialogService.ShowDialog<ProfileImportViewModel>(new Dictionary<string, object>
object result = await DialogService.ShowDialog<ProfileImportViewModel>(new Dictionary<string, object>
{
{"profileModule", Module}
});
@@ -207,8 +207,8 @@ namespace Artemis.UI.Screens.ProfileEditor
public void Undo()
{
// Expanded status is also undone because undoing works a bit crude, that's annoying
var beforeGroups = LayerPropertiesViewModel.GetAllLayerPropertyGroupViewModels();
var expandedPaths = beforeGroups.Where(g => g.IsExpanded).Select(g => g.LayerPropertyGroup.Path).ToList();
List<LayerPropertyGroupViewModel> beforeGroups = LayerPropertiesViewModel.GetAllLayerPropertyGroupViewModels();
List<string> expandedPaths = beforeGroups.Where(g => g.IsExpanded).Select(g => g.LayerPropertyGroup.Path).ToList();
if (!_profileEditorService.UndoUpdateProfile())
{
@@ -217,7 +217,7 @@ namespace Artemis.UI.Screens.ProfileEditor
}
// Restore the expanded status
foreach (var allLayerPropertyGroupViewModel in LayerPropertiesViewModel.GetAllLayerPropertyGroupViewModels())
foreach (LayerPropertyGroupViewModel allLayerPropertyGroupViewModel in LayerPropertiesViewModel.GetAllLayerPropertyGroupViewModels())
allLayerPropertyGroupViewModel.IsExpanded = expandedPaths.Contains(allLayerPropertyGroupViewModel.LayerPropertyGroup.Path);
_snackbarMessageQueue.Enqueue("Undid profile update", "REDO", Redo);
@@ -226,8 +226,8 @@ namespace Artemis.UI.Screens.ProfileEditor
public void Redo()
{
// Expanded status is also undone because undoing works a bit crude, that's annoying
var beforeGroups = LayerPropertiesViewModel.GetAllLayerPropertyGroupViewModels();
var expandedPaths = beforeGroups.Where(g => g.IsExpanded).Select(g => g.LayerPropertyGroup.Path).ToList();
List<LayerPropertyGroupViewModel> beforeGroups = LayerPropertiesViewModel.GetAllLayerPropertyGroupViewModels();
List<string> expandedPaths = beforeGroups.Where(g => g.IsExpanded).Select(g => g.LayerPropertyGroup.Path).ToList();
if (!_profileEditorService.RedoUpdateProfile())
{
@@ -236,7 +236,7 @@ namespace Artemis.UI.Screens.ProfileEditor
}
// Restore the expanded status
foreach (var allLayerPropertyGroupViewModel in LayerPropertiesViewModel.GetAllLayerPropertyGroupViewModels())
foreach (LayerPropertyGroupViewModel allLayerPropertyGroupViewModel in LayerPropertiesViewModel.GetAllLayerPropertyGroupViewModels())
allLayerPropertyGroupViewModel.IsExpanded = expandedPaths.Contains(allLayerPropertyGroupViewModel.LayerPropertyGroup.Path);
_snackbarMessageQueue.Enqueue("Redid profile update", "UNDO", Undo);
@@ -273,10 +273,10 @@ namespace Artemis.UI.Screens.ProfileEditor
if (SelectedProfile == profileDescriptor && !CanDeleteActiveProfile)
return;
var index = Profiles.IndexOf(profileDescriptor);
int index = Profiles.IndexOf(profileDescriptor);
// Get a new active profile
var newActiveProfile = index - 1 > -1 ? Profiles[index - 1] : Profiles[index + 1];
ProfileDescriptor newActiveProfile = index - 1 > -1 ? Profiles[index - 1] : Profiles[index + 1];
// Activate the new active profile
SelectedProfile = newActiveProfile;
@@ -293,9 +293,9 @@ namespace Artemis.UI.Screens.ProfileEditor
if (SelectedProfile == null)
return;
var changeTask = _profileService.ActivateProfileAnimated(SelectedProfile);
Task<Profile> changeTask = _profileService.ActivateProfileAnimated(SelectedProfile);
_profileEditorService.ChangeSelectedProfile(null);
var profile = await changeTask;
Profile profile = await changeTask;
_profileEditorService.ChangeSelectedProfile(profile);
});
}
@@ -43,7 +43,7 @@ namespace Artemis.UI.Screens.ProfileEditor.ProfileTree
public void DragOver(IDropInfo dropInfo)
{
var dragDropType = GetDragDropType(dropInfo);
DragDropType dragDropType = GetDragDropType(dropInfo);
switch (dragDropType)
{
@@ -61,10 +61,10 @@ namespace Artemis.UI.Screens.ProfileEditor.ProfileTree
public void Drop(IDropInfo dropInfo)
{
var source = (TreeItemViewModel) dropInfo.Data;
var target = (TreeItemViewModel) dropInfo.TargetItem;
TreeItemViewModel source = (TreeItemViewModel) dropInfo.Data;
TreeItemViewModel target = (TreeItemViewModel) dropInfo.TargetItem;
var dragDropType = GetDragDropType(dropInfo);
DragDropType dragDropType = GetDragDropType(dropInfo);
switch (dragDropType)
{
case DragDropType.Add:
@@ -111,7 +111,7 @@ namespace Artemis.UI.Screens.ProfileEditor.ProfileTree
private void CreateRootFolderViewModel()
{
_updatingTree = true;
var firstChild = _profileEditorService.SelectedProfile?.Children?.FirstOrDefault();
ProfileElement firstChild = _profileEditorService.SelectedProfile?.Children?.FirstOrDefault();
if (!(firstChild is Folder folder))
{
ActivateItem(null);
@@ -131,12 +131,12 @@ namespace Artemis.UI.Screens.ProfileEditor.ProfileTree
private static DragDropType GetDragDropType(IDropInfo dropInfo)
{
var source = (TreeItemViewModel) dropInfo.Data;
var target = (TreeItemViewModel) dropInfo.TargetItem;
TreeItemViewModel source = (TreeItemViewModel) dropInfo.Data;
TreeItemViewModel target = (TreeItemViewModel) dropInfo.TargetItem;
if (source == target)
return DragDropType.None;
var parent = target;
TreeItemViewModel parent = target;
while (parent != null)
{
if (parent == source)
@@ -190,7 +190,7 @@ namespace Artemis.UI.Screens.ProfileEditor.ProfileTree
SelectedTreeItem = null;
else
{
var match = ActiveItem.GetAllChildren().FirstOrDefault(vm => vm.ProfileElement == e.RenderProfileElement);
TreeItemViewModel match = ActiveItem.GetAllChildren().FirstOrDefault(vm => vm.ProfileElement == e.RenderProfileElement);
if (match != null)
SelectedTreeItem = match;
}
@@ -55,8 +55,8 @@ namespace Artemis.UI.Screens.ProfileEditor.ProfileTree.TreeItem
public List<TreeItemViewModel> GetAllChildren()
{
var children = new List<TreeItemViewModel>();
foreach (var childFolder in Items)
List<TreeItemViewModel> children = new List<TreeItemViewModel>();
foreach (TreeItemViewModel childFolder in Items)
{
// Add all children in this element
children.Add(childFolder);
@@ -69,8 +69,8 @@ namespace Artemis.UI.Screens.ProfileEditor.ProfileTree.TreeItem
public void SetElementInFront(TreeItemViewModel source)
{
var sourceParent = (TreeItemViewModel) source.Parent;
var parent = (TreeItemViewModel) Parent;
TreeItemViewModel sourceParent = (TreeItemViewModel) source.Parent;
TreeItemViewModel parent = (TreeItemViewModel) Parent;
// If the parents are different, remove the element from the old parent and add it to the new parent
if (source.Parent != Parent)
@@ -89,8 +89,8 @@ namespace Artemis.UI.Screens.ProfileEditor.ProfileTree.TreeItem
public void SetElementBehind(TreeItemViewModel source)
{
var sourceParent = (TreeItemViewModel) source.Parent;
var parent = (TreeItemViewModel) Parent;
TreeItemViewModel sourceParent = (TreeItemViewModel) source.Parent;
TreeItemViewModel parent = (TreeItemViewModel) Parent;
if (source.Parent != Parent)
{
sourceParent.RemoveExistingElement(source);
@@ -129,7 +129,7 @@ namespace Artemis.UI.Screens.ProfileEditor.ProfileTree.TreeItem
if (!SupportsChildren)
throw new ArtemisUIException("Cannot add a folder to a profile element of type " + ProfileElement.GetType().Name);
var _ = new Folder(ProfileElement, "New folder");
Folder _ = new Folder(ProfileElement, "New folder");
_profileEditorService.UpdateSelectedProfile();
}
@@ -138,7 +138,7 @@ namespace Artemis.UI.Screens.ProfileEditor.ProfileTree.TreeItem
if (!SupportsChildren)
throw new ArtemisUIException("Cannot add a layer to a profile element of type " + ProfileElement.GetType().Name);
var layer = new Layer(ProfileElement, "New layer");
Layer layer = new Layer(ProfileElement, "New layer");
layer.ChangeLayerBrush(_layerBrushService.GetDefaultLayerBrush());
layer.AddLeds(_surfaceService.ActiveSurface.Devices.SelectMany(d => d.Leds));
_profileEditorService.UpdateSelectedProfile();
@@ -148,7 +148,7 @@ namespace Artemis.UI.Screens.ProfileEditor.ProfileTree.TreeItem
// ReSharper disable once UnusedMember.Global - Called from view
public async Task RenameElement()
{
var result = await _dialogService.ShowDialogAt<RenameViewModel>(
object result = await _dialogService.ShowDialogAt<RenameViewModel>(
"ProfileTreeDialog",
new Dictionary<string, object>
{
@@ -166,7 +166,7 @@ namespace Artemis.UI.Screens.ProfileEditor.ProfileTree.TreeItem
// ReSharper disable once UnusedMember.Global - Called from view
public async Task DeleteElement()
{
var result = await _dialogService.ShowConfirmDialogAt(
bool result = await _dialogService.ShowConfirmDialogAt(
"ProfileTreeDialog",
"Delete profile element",
"Are you sure?"
@@ -176,7 +176,7 @@ namespace Artemis.UI.Screens.ProfileEditor.ProfileTree.TreeItem
return;
// Farewell, cruel world
var parent = (TreeItemViewModel) Parent;
TreeItemViewModel parent = (TreeItemViewModel) Parent;
ProfileElement.Parent?.RemoveChild(ProfileElement);
parent.RemoveExistingElement(this);
@@ -187,15 +187,15 @@ namespace Artemis.UI.Screens.ProfileEditor.ProfileTree.TreeItem
public void UpdateProfileElements()
{
// Remove VMs that are no longer a child
var toRemove = Items.Where(c => c.ProfileElement.Parent != ProfileElement).ToList();
foreach (var treeItemViewModel in toRemove)
List<TreeItemViewModel> toRemove = Items.Where(c => c.ProfileElement.Parent != ProfileElement).ToList();
foreach (TreeItemViewModel treeItemViewModel in toRemove)
Items.Remove(treeItemViewModel);
// Order the children
var vmsList = Items.OrderBy(v => v.ProfileElement.Order).ToList();
for (var index = 0; index < vmsList.Count; index++)
List<TreeItemViewModel> vmsList = Items.OrderBy(v => v.ProfileElement.Order).ToList();
for (int index = 0; index < vmsList.Count; index++)
{
var profileElementViewModel = vmsList[index];
TreeItemViewModel profileElementViewModel = vmsList[index];
if (Items.IndexOf(profileElementViewModel) != index)
((BindableCollection<TreeItemViewModel>) Items).Move(Items.IndexOf(profileElementViewModel), index);
}
@@ -204,8 +204,8 @@ namespace Artemis.UI.Screens.ProfileEditor.ProfileTree.TreeItem
if (ProfileElement.Children == null)
return;
var newChildren = new List<TreeItemViewModel>();
foreach (var profileElement in ProfileElement.Children.OrderBy(c => c.Order))
List<TreeItemViewModel> newChildren = new List<TreeItemViewModel>();
foreach (ProfileElement profileElement in ProfileElement.Children.OrderBy(c => c.Order))
{
if (profileElement is Folder folder)
{
@@ -223,7 +223,7 @@ namespace Artemis.UI.Screens.ProfileEditor.ProfileTree.TreeItem
return;
// Add the new children in one call, prevent extra UI events
foreach (var treeItemViewModel in newChildren)
foreach (TreeItemViewModel treeItemViewModel in newChildren)
{
treeItemViewModel.UpdateProfileElements();
Items.Add(treeItemViewModel);
@@ -127,8 +127,8 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization
Execute.PostToUIThread(() =>
{
var bounds = _layerEditorService.GetLayerBounds(Layer);
var shapeGeometry = Geometry.Empty;
Rect bounds = _layerEditorService.GetLayerBounds(Layer);
Geometry shapeGeometry = Geometry.Empty;
switch (Layer.LayerShape)
{
case EllipseShape _:
@@ -159,22 +159,22 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization
private Geometry CreateRectangleGeometry(ArtemisLed led)
{
var rect = led.RgbLed.AbsoluteLedRectangle.ToWindowsRect(1);
Rect rect = led.RgbLed.AbsoluteLedRectangle.ToWindowsRect(1);
return new RectangleGeometry(rect);
}
private Geometry CreateCircleGeometry(ArtemisLed led)
{
var rect = led.RgbLed.AbsoluteLedRectangle.ToWindowsRect(1);
Rect rect = led.RgbLed.AbsoluteLedRectangle.ToWindowsRect(1);
return new EllipseGeometry(rect);
}
private Geometry CreateCustomGeometry(ArtemisLed led, double deflateAmount)
{
var rect = led.RgbLed.AbsoluteLedRectangle.ToWindowsRect(1);
Rect rect = led.RgbLed.AbsoluteLedRectangle.ToWindowsRect(1);
try
{
var geometry = Geometry.Combine(
PathGeometry geometry = Geometry.Combine(
Geometry.Empty,
Geometry.Parse(led.RgbLed.ShapeData),
GeometryCombineMode.Union,
@@ -195,7 +195,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization
OnlyShowSelectedShape.Save();
HighlightSelectedLayer.Save();
foreach (var canvasViewModel in CanvasViewModels)
foreach (CanvasViewModel canvasViewModel in CanvasViewModels)
canvasViewModel.Dispose();
CanvasViewModels.Clear();
@@ -209,19 +209,19 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization
private void ApplyActiveProfile()
{
var layerViewModels = CanvasViewModels.Where(vm => vm is ProfileLayerViewModel).Cast<ProfileLayerViewModel>().ToList();
var layers = _profileEditorService.SelectedProfile?.GetAllLayers() ?? new List<Layer>();
List<ProfileLayerViewModel> layerViewModels = CanvasViewModels.Where(vm => vm is ProfileLayerViewModel).Cast<ProfileLayerViewModel>().ToList();
List<Layer> layers = _profileEditorService.SelectedProfile?.GetAllLayers() ?? new List<Layer>();
// Add new layers missing a VM
foreach (var layer in layers)
foreach (Layer layer in layers)
{
if (layerViewModels.All(vm => vm.Layer != layer))
CanvasViewModels.Add(_profileLayerVmFactory.Create(layer, this));
}
// Remove layers that no longer exist
var toRemove = layerViewModels.Where(vm => !layers.Contains(vm.Layer));
foreach (var profileLayerViewModel in toRemove)
IEnumerable<ProfileLayerViewModel> toRemove = layerViewModels.Where(vm => !layers.Contains(vm.Layer));
foreach (ProfileLayerViewModel profileLayerViewModel in toRemove)
{
profileLayerViewModel.Dispose();
CanvasViewModels.Remove(profileLayerViewModel);
@@ -341,7 +341,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization
public void InverseSelection()
{
var current = SelectedLeds.ToList();
List<ArtemisLed> current = SelectedLeds.ToList();
SelectedLeds.Clear();
SelectedLeds.AddRange(Devices.SelectMany(d => d.Leds).Except(current));
}
@@ -62,7 +62,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
ShapeAnchor = _layerEditorService.GetLayerAnchorPosition(layer).ToSKPoint();
Execute.PostToUIThread(() =>
{
var shapeGeometry = new RectangleGeometry(_layerEditorService.GetLayerBounds(layer))
RectangleGeometry shapeGeometry = new RectangleGeometry(_layerEditorService.GetLayerBounds(layer))
{
Transform = _layerEditorService.GetLayerTransformGroup(layer)
};
@@ -99,15 +99,15 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
if (!_rotating || !(ProfileEditorService.SelectedProfileElement is Layer layer))
return;
var previousDragAngle = _previousDragAngle;
var newRotation = CalculateAngle(layer, sender, e.MouseEventArgs);
float previousDragAngle = _previousDragAngle;
float newRotation = CalculateAngle(layer, sender, e.MouseEventArgs);
_previousDragAngle = newRotation;
// Allow the user to rotate the shape in increments of 5
if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))
newRotation = (float) Math.Round(newRotation / 5f) * 5f;
var difference = newRotation - previousDragAngle;
float difference = newRotation - previousDragAngle;
if (difference < -350)
difference += 360;
else if (difference > 350)
@@ -136,7 +136,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
if (_isResizing || !(ProfileEditorService.SelectedProfileElement is Layer layer))
return;
var dragStart = GetRelativePosition(sender, e.MouseEventArgs).ToSKPoint();
SKPoint dragStart = GetRelativePosition(sender, e.MouseEventArgs).ToSKPoint();
_dragOffset = _layerEditorService.GetDragOffset(layer, dragStart);
_dragStart = dragStart + _dragOffset;
_dragStartScale = layer.Transform.Scale.CurrentValue;
@@ -156,7 +156,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
return;
float width, height;
var position = GetRelativePosition(sender, e.MouseEventArgs).ToSKPoint() + _dragOffset;
SKPoint position = GetRelativePosition(sender, e.MouseEventArgs).ToSKPoint() + _dragOffset;
switch (e.ShapeControlPoint)
{
case ShapeControlPoint.TopLeft:
@@ -198,8 +198,8 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
// Make the sides even if shift is held down
if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift) && e.ShapeControlPoint < ShapeControlPoint.TopCenter)
{
var bounds = _layerEditorService.GetLayerBounds(layer);
var smallestSide = Math.Min(bounds.Width * width, bounds.Height * height);
Rect bounds = _layerEditorService.GetLayerBounds(layer);
double smallestSide = Math.Min(bounds.Width * width, bounds.Height * height);
width = (float) Math.Round(1.0 / bounds.Width * smallestSide, 2, MidpointRounding.AwayFromZero);
height = (float) Math.Round(1.0 / bounds.Height * smallestSide, 2, MidpointRounding.AwayFromZero);
}
@@ -211,13 +211,13 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
private float HorizontalResize(Layer layer, SKPoint position, ResizeOrigin origin)
{
// Apply rotation to the mouse
var points = UnTransformPoints(new[] {position, _dragStart}, layer, ShapeAnchor, false);
SKPoint[] points = UnTransformPoints(new[] {position, _dragStart}, layer, ShapeAnchor, false);
position = points[0];
var dragStart = points[1];
SKPoint dragStart = points[1];
var shapePath = _layerEditorService.GetLayerPath(layer, true, false, false);
var scalePerPixel = 1f / shapePath.Bounds.Width;
var anchorDistance = origin == ResizeOrigin.Left
SKPath shapePath = _layerEditorService.GetLayerPath(layer, true, false, false);
float scalePerPixel = 1f / shapePath.Bounds.Width;
float anchorDistance = origin == ResizeOrigin.Left
? shapePath.Bounds.Left - ShapeAnchor.X
: shapePath.Bounds.Right - ShapeAnchor.X;
@@ -226,10 +226,10 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
if (Math.Abs(anchorDistance) < 0.001)
return _dragStartScale.Width;
var anchorOffset = anchorDistance / shapePath.Bounds.Width;
float anchorOffset = anchorDistance / shapePath.Bounds.Width;
var pixelsToAdd = (position - dragStart).X / anchorOffset;
var scaleToAdd = scalePerPixel * pixelsToAdd * 100f;
float pixelsToAdd = (position - dragStart).X / anchorOffset;
float scaleToAdd = scalePerPixel * pixelsToAdd * 100f;
return (float) Math.Round(Math.Max(0, _dragStartScale.Width + scaleToAdd), 2, MidpointRounding.AwayFromZero);
}
@@ -237,13 +237,13 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
private float VerticalResize(Layer layer, SKPoint position, ResizeOrigin origin)
{
// Apply rotation to the mouse
var points = UnTransformPoints(new[] {position, _dragStart}, layer, ShapeAnchor, false);
SKPoint[] points = UnTransformPoints(new[] {position, _dragStart}, layer, ShapeAnchor, false);
position = points[0];
var dragStart = points[1];
SKPoint dragStart = points[1];
var shapePath = _layerEditorService.GetLayerPath(layer, true, false, false);
var scalePerPixel = 1f / shapePath.Bounds.Height;
var anchorDistance = origin == ResizeOrigin.Top
SKPath shapePath = _layerEditorService.GetLayerPath(layer, true, false, false);
float scalePerPixel = 1f / shapePath.Bounds.Height;
float anchorDistance = origin == ResizeOrigin.Top
? shapePath.Bounds.Top - ShapeAnchor.Y
: shapePath.Bounds.Bottom - ShapeAnchor.Y;
@@ -252,10 +252,10 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
if (Math.Abs(anchorDistance) < 0.001)
return _dragStartScale.Width;
var anchorOffset = anchorDistance / shapePath.Bounds.Height;
float anchorOffset = anchorDistance / shapePath.Bounds.Height;
var pixelsToAdd = (position - dragStart).Y / anchorOffset;
var scaleToAdd = scalePerPixel * pixelsToAdd * 100f;
float pixelsToAdd = (position - dragStart).Y / anchorOffset;
float scaleToAdd = scalePerPixel * pixelsToAdd * 100f;
return (float) Math.Round(Math.Max(0, _dragStartScale.Height + scaleToAdd), 2, MidpointRounding.AwayFromZero);
}
@@ -277,18 +277,18 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
if (e.ShapeControlPoint == ShapeControlPoint.LayerShape)
{
var dragStart = GetRelativePosition(sender, e.MouseEventArgs).ToSKPoint();
SKPoint dragStart = GetRelativePosition(sender, e.MouseEventArgs).ToSKPoint();
_dragOffset = _layerEditorService.GetDragOffset(layer, dragStart);
_dragStart = dragStart + _dragOffset;
_movingShape = true;
}
else if (e.ShapeControlPoint == ShapeControlPoint.Anchor)
{
var dragStartPosition = GetRelativePosition(sender, e.MouseEventArgs).ToSKPoint();
SKPoint dragStartPosition = GetRelativePosition(sender, e.MouseEventArgs).ToSKPoint();
// Mouse doesn't care about rotation so get the layer path without rotation
var path = _layerEditorService.GetLayerPath(layer, true, true, false);
var topLeft = path.Points[0];
SKPath path = _layerEditorService.GetLayerPath(layer, true, true, false);
SKPoint topLeft = path.Points[0];
// Measure from the top-left of the shape (without rotation)
_dragOffset = topLeft + (dragStartPosition - topLeft);
// Get the absolute layer anchor and make it relative to the unrotated shape
@@ -320,7 +320,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
if (!(ProfileEditorService.SelectedProfileElement is Layer layer))
return;
var position = GetRelativePosition(sender, e).ToSKPoint() + _dragOffset;
SKPoint position = GetRelativePosition(sender, e).ToSKPoint() + _dragOffset;
// Allow the user to move the shape only horizontally or vertically when holding down shift
if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))
{
@@ -347,7 +347,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
}
// Scale down the resulting position and make it relative
var scaled = _layerEditorService.GetScaledPoint(layer, position, true);
SKPoint scaled = _layerEditorService.GetScaledPoint(layer, position, true);
// Round and update the position property
layer.Transform.Position.SetCurrentValue(RoundPoint(scaled, 3), ProfileEditorService.CurrentTime);
@@ -360,22 +360,22 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
return;
// The start anchor is relative to an unrotated version of the shape
var start = _dragStartAnchor;
SKPoint start = _dragStartAnchor;
// Add the current position to the start anchor to determine the new position
var current = start + (GetRelativePosition(sender, e).ToSKPoint() - _dragOffset);
SKPoint current = start + (GetRelativePosition(sender, e).ToSKPoint() - _dragOffset);
// In order to keep the mouse movement unrotated, counter-act the active rotation
var countered = UnTransformPoints(new[] {start, current}, layer, start, true);
SKPoint[] countered = UnTransformPoints(new[] {start, current}, layer, start, true);
// If shift is held down, round down to 1 decimal to allow moving the anchor in big increments
var decimals = Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift) ? 1 : 3;
var scaled = RoundPoint(_layerEditorService.GetScaledPoint(layer, countered[1], false), decimals);
int decimals = Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift) ? 1 : 3;
SKPoint scaled = RoundPoint(_layerEditorService.GetScaledPoint(layer, countered[1], false), decimals);
// Update the anchor point, this causes the shape to move
layer.Transform.AnchorPoint.SetCurrentValue(scaled, ProfileEditorService.CurrentTime);
// TopLeft is not updated yet and acts as a snapshot of the top-left before changing the anchor
var path = _layerEditorService.GetLayerPath(layer, true, true, true);
SKPath path = _layerEditorService.GetLayerPath(layer, true, true, true);
// Calculate the (scaled) difference between the old and now position
var difference = _layerEditorService.GetScaledPoint(layer, _topLeft - path.Points[0], false);
SKPoint difference = _layerEditorService.GetScaledPoint(layer, _topLeft - path.Points[0], false);
// Apply the difference so that the shape effectively stays in place
layer.Transform.Position.SetCurrentValue(layer.Transform.Position.CurrentValue + difference, ProfileEditorService.CurrentTime);
@@ -393,7 +393,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
private SKPoint[] UnTransformPoints(SKPoint[] skPoints, Layer layer, SKPoint pivot, bool includeScale)
{
using var counterRotatePath = new SKPath();
using SKPath counterRotatePath = new SKPath();
counterRotatePath.AddPoly(skPoints, false);
counterRotatePath.Transform(SKMatrix.MakeRotationDegrees(layer.Transform.Rotation.CurrentValue * -1, pivot.X, pivot.Y));
if (includeScale)
@@ -404,18 +404,18 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
private Point GetRelativePosition(object sender, MouseEventArgs mouseEventArgs)
{
var parent = VisualTreeHelper.GetParent((DependencyObject) sender);
DependencyObject parent = VisualTreeHelper.GetParent((DependencyObject) sender);
return mouseEventArgs.GetPosition((IInputElement) parent);
}
private float CalculateAngle(Layer layer, object mouseEventSender, MouseEventArgs mouseEvent)
{
var layerBounds = _layerEditorService.GetLayerBounds(layer);
var start = _layerEditorService.GetLayerAnchorPosition(layer);
var arrival = GetRelativePosition(mouseEventSender, mouseEvent);
Rect layerBounds = _layerEditorService.GetLayerBounds(layer);
Point start = _layerEditorService.GetLayerAnchorPosition(layer);
Point arrival = GetRelativePosition(mouseEventSender, mouseEvent);
var radian = (float) Math.Atan2(start.Y - arrival.Y, start.X - arrival.X);
var angle = radian * (180f / (float) Math.PI);
float radian = (float) Math.Atan2(start.Y - arrival.Y, start.X - arrival.X);
float angle = radian * (180f / (float) Math.PI);
if (angle < 0f)
angle += 360f;
@@ -1,4 +1,5 @@
using System.IO;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Input;
@@ -14,7 +15,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
public SelectionRemoveToolViewModel(ProfileViewModel profileViewModel, IProfileEditorService profileEditorService) : base(profileViewModel, profileEditorService)
{
using (var stream = new MemoryStream(Resources.aero_pen_min))
using (MemoryStream stream = new MemoryStream(Resources.aero_pen_min))
{
Cursor = new Cursor(stream);
}
@@ -30,18 +31,18 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
{
base.MouseUp(sender, e);
var position = ProfileViewModel.PanZoomViewModel.GetRelativeMousePosition(sender, e);
var selectedRect = new Rect(MouseDownStartPosition, position);
Point position = ProfileViewModel.PanZoomViewModel.GetRelativeMousePosition(sender, e);
Rect selectedRect = new Rect(MouseDownStartPosition, position);
// Get selected LEDs
var selectedLeds = ProfileViewModel.GetLedsInRectangle(selectedRect);
List<ArtemisLed> selectedLeds = ProfileViewModel.GetLedsInRectangle(selectedRect);
ProfileViewModel.SelectedLeds.Clear();
ProfileViewModel.SelectedLeds.AddRange(selectedLeds);
// Apply the selection to the selected layer layer
if (ProfileEditorService.SelectedProfileElement is Layer layer)
{
var remainingLeds = layer.Leds.Except(selectedLeds).ToList();
List<ArtemisLed> remainingLeds = layer.Leds.Except(selectedLeds).ToList();
layer.ClearLeds();
layer.AddLeds(remainingLeds);
@@ -58,9 +59,9 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
return;
}
var position = ProfileViewModel.PanZoomViewModel.GetRelativeMousePosition(sender, e);
var selectedRect = new Rect(MouseDownStartPosition, position);
var selectedLeds = ProfileViewModel.GetLedsInRectangle(selectedRect);
Point position = ProfileViewModel.PanZoomViewModel.GetRelativeMousePosition(sender, e);
Rect selectedRect = new Rect(MouseDownStartPosition, position);
List<ArtemisLed> selectedLeds = ProfileViewModel.GetLedsInRectangle(selectedRect);
// Unless shift is held down, clear the current selection
if (!Keyboard.IsKeyDown(Key.LeftShift) && !Keyboard.IsKeyDown(Key.RightShift))
@@ -20,7 +20,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
ILayerBrushService layerBrushService) : base(profileViewModel, profileEditorService)
{
_layerBrushService = layerBrushService;
using (var stream = new MemoryStream(Resources.aero_crosshair))
using (MemoryStream stream = new MemoryStream(Resources.aero_crosshair))
{
Cursor = new Cursor(stream);
}
@@ -36,11 +36,11 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
{
base.MouseUp(sender, e);
var position = ProfileViewModel.PanZoomViewModel.GetRelativeMousePosition(sender, e);
var selectedRect = new Rect(MouseDownStartPosition, position);
Point position = ProfileViewModel.PanZoomViewModel.GetRelativeMousePosition(sender, e);
Rect selectedRect = new Rect(MouseDownStartPosition, position);
// Get selected LEDs
var selectedLeds = ProfileViewModel.GetLedsInRectangle(selectedRect);
List<ArtemisLed> selectedLeds = ProfileViewModel.GetLedsInRectangle(selectedRect);
// Apply the selection to the selected layer layer
if (ProfileEditorService.SelectedProfileElement is Layer layer)
@@ -62,7 +62,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
// If no folder selected, apply it to a new layer in the root folder
else
{
var rootFolder = ProfileEditorService.SelectedProfile.GetRootFolder();
Folder rootFolder = ProfileEditorService.SelectedProfile.GetRootFolder();
CreateLayer(rootFolder, selectedLeds);
}
}
@@ -76,9 +76,9 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
return;
}
var position = ProfileViewModel.PanZoomViewModel.GetRelativeMousePosition(sender, e);
var selectedRect = new Rect(MouseDownStartPosition, position);
var selectedLeds = ProfileViewModel.GetLedsInRectangle(selectedRect);
Point position = ProfileViewModel.PanZoomViewModel.GetRelativeMousePosition(sender, e);
Rect selectedRect = new Rect(MouseDownStartPosition, position);
List<ArtemisLed> selectedLeds = ProfileViewModel.GetLedsInRectangle(selectedRect);
// Unless shift is held down, clear the current selection
if (!Keyboard.IsKeyDown(Key.LeftShift) && !Keyboard.IsKeyDown(Key.RightShift))
@@ -90,7 +90,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
private void CreateLayer(Folder folder, List<ArtemisLed> selectedLeds)
{
var newLayer = new Layer(folder, "New layer");
Layer newLayer = new Layer(folder, "New layer");
newLayer.ChangeLayerBrush(_layerBrushService.GetDefaultLayerBrush());
newLayer.AddLeds(selectedLeds);
ProfileEditorService.ChangeSelectedProfileElement(newLayer);
@@ -73,7 +73,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.Tools
protected Rect GetSquareRectBetweenPoints(Point start, Point end)
{
// Find the shortest side
var size = Math.Min(Math.Abs(start.X - end.X), Math.Abs(start.Y - end.Y));
double size = Math.Min(Math.Abs(start.X - end.X), Math.Abs(start.Y - end.Y));
// There's probably a very elegant way to do this, and this is not it
if (end.X < start.X && end.Y < start.Y)
@@ -87,7 +87,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.UserControls
private static void ZoomChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var layerShapeControl = (LayerShapeControl) d;
LayerShapeControl layerShapeControl = (LayerShapeControl) d;
layerShapeControl.SetCurrentValue(ZoomProperty, e.NewValue);
layerShapeControl.UpdateDimensions();
@@ -95,7 +95,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.UserControls
private static void ShapePathChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var layerShapeControl = (LayerShapeControl) d;
LayerShapeControl layerShapeControl = (LayerShapeControl) d;
layerShapeControl.SetCurrentValue(ShapePathProperty, e.NewValue);
layerShapeControl.UpdatePositions();
@@ -103,7 +103,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.UserControls
private static void ShapeAnchorChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var layerShapeControl = (LayerShapeControl) d;
LayerShapeControl layerShapeControl = (LayerShapeControl) d;
layerShapeControl.SetCurrentValue(ShapeAnchorProperty, e.NewValue);
layerShapeControl.UpdateShapeAnchor();
@@ -111,7 +111,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.UserControls
private static void ShapeGeometryChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var layerShapeControl = (LayerShapeControl) d;
LayerShapeControl layerShapeControl = (LayerShapeControl) d;
layerShapeControl.SetCurrentValue(ShapeGeometryProperty, e.NewValue);
layerShapeControl.UpdateShapeGeometry();
@@ -161,14 +161,14 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.UserControls
private void UpdateControlPosition(UIElement control, SKPoint point1, SKPoint point2)
{
var point = new SKPoint((point1.X + point2.X) / 2, (point1.Y + point2.Y) / 2);
SKPoint point = new SKPoint((point1.X + point2.X) / 2, (point1.Y + point2.Y) / 2);
UpdateControlPosition(control, point);
}
private void UpdateRotateDimensions(Shape rotateControl)
{
var controlSize = Math.Max(10 / Zoom, 4);
var rotateSize = controlSize * 8;
double controlSize = Math.Max(10 / Zoom, 4);
double rotateSize = controlSize * 8;
rotateControl.Width = rotateSize;
rotateControl.Height = rotateSize;
@@ -177,7 +177,7 @@ namespace Artemis.UI.Screens.ProfileEditor.Visualization.UserControls
private void UpdateResizeDimensions(Shape resizeControl)
{
var controlSize = Math.Max(10 / Zoom, 4);
double controlSize = Math.Max(10 / Zoom, 4);
resizeControl.Width = controlSize;
resizeControl.Height = controlSize;
+7 -7
View File
@@ -64,7 +64,7 @@ namespace Artemis.UI.Screens
ActiveItem = SidebarViewModel.SelectedItem;
ActiveItemReady = true;
var versionAttribute = typeof(RootViewModel).Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>();
AssemblyInformationalVersionAttribute? versionAttribute = typeof(RootViewModel).Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>();
WindowTitle = $"Artemis {versionAttribute?.InformationalVersion}";
}
@@ -96,7 +96,7 @@ namespace Artemis.UI.Screens
public void WindowDeactivated()
{
var windowState = ((Window) View).WindowState;
WindowState windowState = ((Window) View).WindowState;
if (windowState == WindowState.Minimized)
return;
@@ -185,12 +185,12 @@ namespace Artemis.UI.Screens
private void ChangeMaterialColors(ApplicationColorScheme colorScheme)
{
var paletteHelper = new PaletteHelper();
var theme = paletteHelper.GetTheme();
PaletteHelper paletteHelper = new PaletteHelper();
ITheme theme = paletteHelper.GetTheme();
theme.SetBaseTheme(colorScheme == ApplicationColorScheme.Dark ? Theme.Dark : Theme.Light);
paletteHelper.SetTheme(theme);
var extensionsPaletteHelper = new MaterialDesignExtensions.Themes.PaletteHelper();
MaterialDesignExtensions.Themes.PaletteHelper extensionsPaletteHelper = new MaterialDesignExtensions.Themes.PaletteHelper();
extensionsPaletteHelper.SetLightDark(colorScheme == ApplicationColorScheme.Dark);
}
@@ -213,7 +213,7 @@ namespace Artemis.UI.Screens
protected override void OnViewLoaded()
{
var window = (MaterialWindow) View;
MaterialWindow window = (MaterialWindow) View;
if (_windowSize.Value != null)
_windowSize.Value.ApplyToWindow(window);
else
@@ -253,7 +253,7 @@ namespace Artemis.UI.Screens
MainMessageQueue = null;
_frameTimeUpdateTimer.Stop();
var window = (MaterialWindow) View;
MaterialWindow window = (MaterialWindow) View;
_windowSize.Value ??= new WindowSize();
_windowSize.Value.ApplyFromWindow(window);
_windowSize.Save();
@@ -63,11 +63,11 @@ namespace Artemis.UI.Screens.Settings.Debug.Tabs
try
{
using (var skiaImage = SKImage.FromPixels(e.BitmapBrush.Bitmap.PeekPixels()))
using (SKImage skiaImage = SKImage.FromPixels(e.BitmapBrush.Bitmap.PeekPixels()))
{
var info = new SKImageInfo(skiaImage.Width, skiaImage.Height);
SKImageInfo info = new SKImageInfo(skiaImage.Width, skiaImage.Height);
writeableBitmap.Lock();
using (var pixmap = new SKPixmap(info, writeableBitmap.BackBuffer, writeableBitmap.BackBufferStride))
using (SKPixmap pixmap = new SKPixmap(info, writeableBitmap.BackBuffer, writeableBitmap.BackBufferStride))
{
skiaImage.ReadPixels(pixmap, 0, 0);
}
@@ -1,4 +1,5 @@
using System.Linq;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Artemis.Core.Services;
using Artemis.UI.Ninject.Factories;
@@ -28,8 +29,8 @@ namespace Artemis.UI.Screens.Settings.Tabs.Devices
Items.Clear();
await Task.Delay(200);
var instances = _surfaceService.ActiveSurface.Devices.Select(d => _settingsVmFactory.CreateDeviceSettingsViewModel(d)).ToList();
foreach (var deviceSettingsViewModel in instances)
List<DeviceSettingsViewModel> instances = _surfaceService.ActiveSurface.Devices.Select(d => _settingsVmFactory.CreateDeviceSettingsViewModel(d)).ToList();
foreach (DeviceSettingsViewModel deviceSettingsViewModel in instances)
Items.Add(deviceSettingsViewModel);
});
@@ -36,17 +36,17 @@ namespace Artemis.UI.Screens.Settings.Tabs.General
LogLevels = new BindableCollection<ValueDescription>(EnumUtilities.GetAllValuesAndDescriptions(typeof(LogEventLevel)));
ColorSchemes = new BindableCollection<ValueDescription>(EnumUtilities.GetAllValuesAndDescriptions(typeof(ApplicationColorScheme)));
RenderScales = new List<Tuple<string, double>> {new Tuple<string, double>("10%", 0.1)};
for (var i = 25; i <= 100; i += 25)
for (int i = 25; i <= 100; i += 25)
RenderScales.Add(new Tuple<string, double>(i + "%", i / 100.0));
TargetFrameRates = new List<Tuple<string, int>>();
for (var i = 10; i <= 30; i += 5)
for (int i = 10; i <= 30; i += 5)
TargetFrameRates.Add(new Tuple<string, int>(i + " FPS", i));
// Anything else is kinda broken right now
SampleSizes = new List<int> {1, 9};
var layerBrushProviders = pluginService.GetPluginsOfType<LayerBrushProvider>();
List<LayerBrushProvider> layerBrushProviders = pluginService.GetPluginsOfType<LayerBrushProvider>();
LayerBrushDescriptors = new BindableCollection<LayerBrushDescriptor>(layerBrushProviders.SelectMany(l => l.LayerBrushDescriptors));
_defaultLayerBrushDescriptor = _settingsService.GetSetting("ProfileEditor.DefaultLayerBrushDescriptor", new LayerBrushReference
@@ -221,8 +221,8 @@ namespace Artemis.UI.Screens.Settings.Tabs.General
{
try
{
var autoRunFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Startup), "Artemis.lnk");
var executableFile = Constants.ExecutablePath;
string autoRunFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Startup), "Artemis.lnk");
string executableFile = Constants.ExecutablePath;
if (File.Exists(autoRunFile))
File.Delete(autoRunFile);
@@ -44,9 +44,9 @@ namespace Artemis.UI.Screens.Settings.Tabs.Modules
if (dropInfo.TargetItem == dropInfo.Data)
return;
var viewModel = (ModuleOrderModuleViewModel) dropInfo.Data;
var targetCollection = (BindableCollection<ModuleOrderModuleViewModel>) dropInfo.TargetCollection;
var insertIndex = dropInfo.InsertIndex;
ModuleOrderModuleViewModel viewModel = (ModuleOrderModuleViewModel) dropInfo.Data;
BindableCollection<ModuleOrderModuleViewModel> targetCollection = (BindableCollection<ModuleOrderModuleViewModel>) dropInfo.TargetCollection;
int insertIndex = dropInfo.InsertIndex;
ModulePriorityCategory category;
if (targetCollection == NormalModules)
@@ -76,7 +76,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.Modules
OverlayModules.Clear();
OverlayModules.AddRange(_modules.Where(m => m.Module.PriorityCategory == ModulePriorityCategory.Overlay).OrderBy(m => m.Module.Priority));
foreach (var moduleOrderModuleViewModel in _modules)
foreach (ModuleOrderModuleViewModel moduleOrderModuleViewModel in _modules)
moduleOrderModuleViewModel.Update();
}
}
@@ -1,4 +1,5 @@
using System.Linq;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Artemis.Core.Services;
using Artemis.UI.Ninject.Factories;
@@ -28,8 +29,8 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
Items.Clear();
await Task.Delay(200);
var instances = _pluginService.GetAllPluginInfo().Select(p => _settingsVmFactory.CreatePluginSettingsViewModel(p.Instance)).ToList();
foreach (var pluginSettingsViewModel in instances)
List<PluginSettingsViewModel> instances = _pluginService.GetAllPluginInfo().Select(p => _settingsVmFactory.CreatePluginSettingsViewModel(p.Instance)).ToList();
foreach (PluginSettingsViewModel pluginSettingsViewModel in instances)
Items.Add(pluginSettingsViewModel);
});
@@ -2,6 +2,7 @@
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using Artemis.Core;
using Artemis.Core.DataModelExpansions;
@@ -17,6 +18,7 @@ using Ninject;
using Ninject.Parameters;
using Serilog;
using Stylet;
using Module = Artemis.Core.Modules.Module;
namespace Artemis.UI.Screens.Settings.Tabs.Plugins
{
@@ -80,20 +82,20 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
public void OpenSettings()
{
var configurationViewModel = Plugin.ConfigurationDialog;
PluginConfigurationDialog configurationViewModel = Plugin.ConfigurationDialog;
if (configurationViewModel == null)
return;
try
{
// Limit to one constructor, there's no need to have more and it complicates things anyway
var constructors = configurationViewModel.Type.GetConstructors();
ConstructorInfo[] constructors = configurationViewModel.Type.GetConstructors();
if (constructors.Length != 1)
throw new ArtemisUIException("Plugin configuration dialogs must have exactly one constructor");
var pluginParameter = constructors.First().GetParameters().First(p => typeof(Plugin).IsAssignableFrom(p.ParameterType));
var plugin = new ConstructorArgument(pluginParameter.Name, Plugin);
var viewModel = (PluginConfigurationViewModel) PluginInfo.Kernel.Get(configurationViewModel.Type, plugin);
ParameterInfo pluginParameter = constructors.First().GetParameters().First(p => typeof(Plugin).IsAssignableFrom(p.ParameterType));
ConstructorArgument plugin = new ConstructorArgument(pluginParameter.Name, Plugin);
PluginConfigurationViewModel viewModel = (PluginConfigurationViewModel) PluginInfo.Kernel.Get(configurationViewModel.Type, plugin);
_windowManager.ShowDialog(new PluginSettingsWindowViewModel(viewModel, Icon));
}
catch (Exception e)
@@ -136,7 +138,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
{
if (PluginInfo.Icon != null)
{
var parsedIcon = Enum.TryParse<PackIconKind>(PluginInfo.Icon, true, out var iconEnum);
bool parsedIcon = Enum.TryParse<PackIconKind>(PluginInfo.Icon, true, out PackIconKind iconEnum);
if (parsedIcon)
return iconEnum;
}
@@ -203,10 +205,10 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
private async Task DisableDeviceProvider()
{
var restart = false;
bool restart = false;
// If any plugin already requires a restart, don't ask the user again
var restartQueued = _pluginService.GetAllPluginInfo().Any(p => p.Instance != null && !p.Enabled && p.Instance.Enabled);
bool restartQueued = _pluginService.GetAllPluginInfo().Any(p => p.Instance != null && !p.Enabled && p.Instance.Enabled);
// If the plugin isn't enabled (load failed), it can be disabled without a restart
if (!restartQueued && Plugin.Enabled)
{
@@ -84,9 +84,9 @@ namespace Artemis.UI.Screens.Shared
public void ProcessMouseScroll(object sender, MouseWheelEventArgs e)
{
var relative = GetRelativeMousePosition(sender, e);
var absoluteX = relative.X * Zoom + PanX;
var absoluteY = relative.Y * Zoom + PanY;
Point relative = GetRelativeMousePosition(sender, e);
double absoluteX = relative.X * Zoom + PanX;
double absoluteY = relative.Y * Zoom + PanY;
if (e.Delta > 0)
Zoom *= 1.1;
@@ -120,8 +120,8 @@ namespace Artemis.UI.Screens.Shared
if (LastPanPosition == null)
LastPanPosition = e.GetPosition((IInputElement) sender);
var position = e.GetPosition((IInputElement) sender);
var delta = LastPanPosition - position;
Point position = e.GetPosition((IInputElement) sender);
Vector? delta = LastPanPosition - position;
if (LimitToZero)
{
@@ -152,7 +152,7 @@ namespace Artemis.UI.Screens.Shared
public Rect TransformContainingRect(Rect rect)
{
// Create the same transform group the view is using
var transformGroup = new TransformGroup();
TransformGroup transformGroup = new TransformGroup();
transformGroup.Children.Add(new ScaleTransform(Zoom, Zoom));
transformGroup.Children.Add(new TranslateTransform(PanX, PanY));
@@ -168,7 +168,7 @@ namespace Artemis.UI.Screens.Shared
private void SetZoomFromPercentage(double value)
{
var newZoom = value / 100;
double newZoom = value / 100;
// Focus towards the center of the zoomed area
PanX += newZoom - Zoom;
PanY += newZoom - Zoom;
@@ -117,8 +117,8 @@ namespace Artemis.UI.Screens.Sidebar
// Add all activated modules
SidebarItems.Add(new DividerNavigationItem());
SidebarItems.Add(new SubheaderNavigationItem {Subheader = "Modules"});
var modules = _pluginService.GetPluginsOfType<Module>().ToList();
foreach (var module in modules)
List<Module> modules = _pluginService.GetPluginsOfType<Module>().ToList();
foreach (Module module in modules)
AddModule(module);
// Select the top item, which will be one of the defaults
@@ -149,13 +149,13 @@ namespace Artemis.UI.Screens.Sidebar
else
{
// Icon is provided as string to avoid having to reference MaterialDesignThemes
var parsedIcon = Enum.TryParse<PackIconKind>(module.DisplayIcon, true, out var iconEnum);
bool parsedIcon = Enum.TryParse<PackIconKind>(module.DisplayIcon, true, out PackIconKind iconEnum);
if (parsedIcon == false)
iconEnum = PackIconKind.QuestionMarkCircle;
icon = iconEnum;
}
var sidebarItem = new FirstLevelNavigationItem {Icon = icon, Label = module.DisplayName};
FirstLevelNavigationItem sidebarItem = new FirstLevelNavigationItem {Icon = icon, Label = module.DisplayName};
SidebarItems.Add(sidebarItem);
SidebarModules.Add(sidebarItem, module);
}
@@ -166,7 +166,7 @@ namespace Artemis.UI.Screens.Sidebar
if (SidebarModules.All(io => io.Value != module))
return;
var existing = SidebarModules.First(io => io.Value == module);
KeyValuePair<INavigationItem, Module> existing = SidebarModules.First(io => io.Value == module);
SidebarItems.Remove(existing.Key);
SidebarModules.Remove(existing.Key);
}
@@ -176,7 +176,7 @@ namespace Artemis.UI.Screens.Sidebar
if (!IsSidebarOpen)
return;
var activeModules = SidebarModules.Count(m => m.Value.IsActivated);
int activeModules = SidebarModules.Count(m => m.Value.IsActivated);
ActiveModules = activeModules == 1 ? "1 active module" : $"{activeModules} active modules";
}
@@ -101,7 +101,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
public ArtemisSurface CreateSurfaceConfiguration(string name)
{
var config = _surfaceService.CreateSurfaceConfiguration(name);
ArtemisSurface config = _surfaceService.CreateSurfaceConfiguration(name);
Execute.PostToUIThread(() => SurfaceConfigurations.Add(config));
return config;
}
@@ -119,10 +119,10 @@ namespace Artemis.UI.Screens.SurfaceEditor
private void LoadSurfaceConfigurations()
{
// Get surface configs
var configs = _surfaceService.SurfaceConfigurations.ToList();
List<ArtemisSurface> configs = _surfaceService.SurfaceConfigurations.ToList();
// Get the active config, if empty, create a default config
var activeConfig = _surfaceService.ActiveSurface;
ArtemisSurface activeConfig = _surfaceService.ActiveSurface;
if (activeConfig == null)
{
activeConfig = CreateSurfaceConfiguration("Default");
@@ -134,7 +134,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
{
// Populate the UI collection
SurfaceConfigurations.Clear();
foreach (var surfaceConfiguration in configs)
foreach (ArtemisSurface surfaceConfiguration in configs)
SurfaceConfigurations.Add(surfaceConfiguration);
// Set the active config
@@ -149,14 +149,14 @@ namespace Artemis.UI.Screens.SurfaceEditor
{
lock (Devices)
{
var existing = Devices.ToList();
var deviceViewModels = new List<SurfaceDeviceViewModel>();
List<SurfaceDeviceViewModel> existing = Devices.ToList();
List<SurfaceDeviceViewModel> deviceViewModels = new List<SurfaceDeviceViewModel>();
// Add missing/update existing
foreach (var surfaceDeviceConfiguration in SelectedSurface.Devices.OrderBy(d => d.ZIndex).ToList())
foreach (ArtemisDevice surfaceDeviceConfiguration in SelectedSurface.Devices.OrderBy(d => d.ZIndex).ToList())
{
// Create VMs for missing devices
var viewModel = existing.FirstOrDefault(vm => vm.Device.RgbDevice == surfaceDeviceConfiguration.RgbDevice);
SurfaceDeviceViewModel viewModel = existing.FirstOrDefault(vm => vm.Device.RgbDevice == surfaceDeviceConfiguration.RgbDevice);
if (viewModel == null)
viewModel = new SurfaceDeviceViewModel(surfaceDeviceConfiguration);
// Update existing devices
@@ -195,7 +195,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
public async Task DeleteSurfaceConfiguration(ArtemisSurface surface)
{
var result = await _dialogService.ShowConfirmDialogAt(
bool result = await _dialogService.ShowConfirmDialogAt(
"SurfaceListDialogHost",
"Delete surface configuration",
"Are you sure you want to delete\nthis surface configuration?"
@@ -209,7 +209,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
public async Task AddSurfaceConfiguration()
{
var result = await _dialogService.ShowDialogAt<SurfaceCreateViewModel>("SurfaceListDialogHost");
object result = await _dialogService.ShowDialogAt<SurfaceCreateViewModel>("SurfaceListDialogHost");
if (result is string name)
CreateSurfaceConfiguration(name);
}
@@ -226,9 +226,9 @@ namespace Artemis.UI.Screens.SurfaceEditor
public void BringToFront(SurfaceDeviceViewModel surfaceDeviceViewModel)
{
Devices.Move(Devices.IndexOf(surfaceDeviceViewModel), Devices.Count - 1);
for (var i = 0; i < Devices.Count; i++)
for (int i = 0; i < Devices.Count; i++)
{
var deviceViewModel = Devices[i];
SurfaceDeviceViewModel deviceViewModel = Devices[i];
deviceViewModel.Device.ZIndex = i + 1;
}
@@ -237,13 +237,13 @@ namespace Artemis.UI.Screens.SurfaceEditor
public void BringForward(SurfaceDeviceViewModel surfaceDeviceViewModel)
{
var currentIndex = Devices.IndexOf(surfaceDeviceViewModel);
var newIndex = Math.Min(currentIndex + 1, Devices.Count - 1);
int currentIndex = Devices.IndexOf(surfaceDeviceViewModel);
int newIndex = Math.Min(currentIndex + 1, Devices.Count - 1);
Devices.Move(currentIndex, newIndex);
for (var i = 0; i < Devices.Count; i++)
for (int i = 0; i < Devices.Count; i++)
{
var deviceViewModel = Devices[i];
SurfaceDeviceViewModel deviceViewModel = Devices[i];
deviceViewModel.Device.ZIndex = i + 1;
}
@@ -253,9 +253,9 @@ namespace Artemis.UI.Screens.SurfaceEditor
public void SendToBack(SurfaceDeviceViewModel surfaceDeviceViewModel)
{
Devices.Move(Devices.IndexOf(surfaceDeviceViewModel), 0);
for (var i = 0; i < Devices.Count; i++)
for (int i = 0; i < Devices.Count; i++)
{
var deviceViewModel = Devices[i];
SurfaceDeviceViewModel deviceViewModel = Devices[i];
deviceViewModel.Device.ZIndex = i + 1;
}
@@ -264,12 +264,12 @@ namespace Artemis.UI.Screens.SurfaceEditor
public void SendBackward(SurfaceDeviceViewModel surfaceDeviceViewModel)
{
var currentIndex = Devices.IndexOf(surfaceDeviceViewModel);
var newIndex = Math.Max(currentIndex - 1, 0);
int currentIndex = Devices.IndexOf(surfaceDeviceViewModel);
int newIndex = Math.Max(currentIndex - 1, 0);
Devices.Move(currentIndex, newIndex);
for (var i = 0; i < Devices.Count; i++)
for (int i = 0; i < Devices.Count; i++)
{
var deviceViewModel = Devices[i];
SurfaceDeviceViewModel deviceViewModel = Devices[i];
deviceViewModel.Device.ZIndex = i + 1;
}
@@ -278,7 +278,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
public async Task ViewProperties(SurfaceDeviceViewModel surfaceDeviceViewModel)
{
var madeChanges = await _dialogService.ShowDialog<SurfaceDeviceConfigViewModel>(new Dictionary<string, object>
object madeChanges = await _dialogService.ShowDialog<SurfaceDeviceConfigViewModel>(new Dictionary<string, object>
{
{"surfaceDeviceViewModel", surfaceDeviceViewModel}
});
@@ -305,8 +305,8 @@ namespace Artemis.UI.Screens.SurfaceEditor
if (IsPanKeyDown() || e.ChangedButton == MouseButton.Right)
return;
var position = e.GetPosition((IInputElement) sender);
var relative = PanZoomViewModel.GetRelativeMousePosition(sender, e);
Point position = e.GetPosition((IInputElement) sender);
Point relative = PanZoomViewModel.GetRelativeMousePosition(sender, e);
if (e.LeftButton == MouseButtonState.Pressed)
StartMouseDrag(position, relative);
else
@@ -324,8 +324,8 @@ namespace Artemis.UI.Screens.SurfaceEditor
return;
}
var position = e.GetPosition((IInputElement) sender);
var relative = PanZoomViewModel.GetRelativeMousePosition(sender, e);
Point position = e.GetPosition((IInputElement) sender);
Point relative = PanZoomViewModel.GetRelativeMousePosition(sender, e);
if (_mouseDragStatus == MouseDragStatus.Dragging)
MoveSelected(relative);
else if (_mouseDragStatus == MouseDragStatus.Selecting)
@@ -335,7 +335,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
private void StartMouseDrag(Point position, Point relative)
{
// If drag started on top of a device, initialise dragging
var device = Devices.LastOrDefault(d => PanZoomViewModel.TransformContainingRect(d.DeviceRectangle).Contains(position));
SurfaceDeviceViewModel device = Devices.LastOrDefault(d => PanZoomViewModel.TransformContainingRect(d.DeviceRectangle).Contains(position));
if (device != null)
{
_rgbService.IsRenderPaused = true;
@@ -345,14 +345,14 @@ namespace Artemis.UI.Screens.SurfaceEditor
{
if (!Keyboard.IsKeyDown(Key.LeftShift) && !Keyboard.IsKeyDown(Key.RightShift))
{
foreach (var others in Devices)
foreach (SurfaceDeviceViewModel others in Devices)
others.SelectionStatus = SelectionStatus.None;
}
device.SelectionStatus = SelectionStatus.Selected;
}
foreach (var selectedDevice in Devices.Where(d => d.SelectionStatus == SelectionStatus.Selected))
foreach (SurfaceDeviceViewModel selectedDevice in Devices.Where(d => d.SelectionStatus == SelectionStatus.Selected))
selectedDevice.StartMouseDrag(relative);
}
// Start multi-selection
@@ -370,8 +370,8 @@ namespace Artemis.UI.Screens.SurfaceEditor
{
if (_mouseDragStatus != MouseDragStatus.Dragging)
{
var selectedRect = new Rect(_mouseDragStartPoint, position);
foreach (var device in Devices)
Rect selectedRect = new Rect(_mouseDragStartPoint, position);
foreach (SurfaceDeviceViewModel device in Devices)
{
if (PanZoomViewModel.TransformContainingRect(device.DeviceRectangle).IntersectsWith(selectedRect))
device.SelectionStatus = SelectionStatus.Selected;
@@ -391,10 +391,10 @@ namespace Artemis.UI.Screens.SurfaceEditor
if (IsPanKeyDown())
return;
var selectedRect = new Rect(_mouseDragStartPoint, position);
Rect selectedRect = new Rect(_mouseDragStartPoint, position);
SelectionRectangle.Rect = selectedRect;
foreach (var device in Devices)
foreach (SurfaceDeviceViewModel device in Devices)
{
if (PanZoomViewModel.TransformContainingRect(device.DeviceRectangle).IntersectsWith(selectedRect))
device.SelectionStatus = SelectionStatus.Selected;
@@ -405,7 +405,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
private void MoveSelected(Point position)
{
foreach (var device in Devices.Where(d => d.SelectionStatus == SelectionStatus.Selected))
foreach (SurfaceDeviceViewModel device in Devices.Where(d => d.SelectionStatus == SelectionStatus.Selected))
device.UpdateMouseDrag(position);
}
@@ -53,8 +53,8 @@ namespace Artemis.UI.Screens.SurfaceEditor.Visualization
public void UpdateMouseDrag(Point mousePosition)
{
var roundedX = Math.Round((mousePosition.X + _dragOffsetX) / 10, 0, MidpointRounding.AwayFromZero) * 10;
var roundedY = Math.Round((mousePosition.Y + _dragOffsetY) / 10, 0, MidpointRounding.AwayFromZero) * 10;
double roundedX = Math.Round((mousePosition.X + _dragOffsetX) / 10, 0, MidpointRounding.AwayFromZero) * 10;
double roundedY = Math.Round((mousePosition.Y + _dragOffsetY) / 10, 0, MidpointRounding.AwayFromZero) * 10;
Device.X = Math.Max(0, roundedX);
Device.Y = Math.Max(0, roundedY);
}
+3 -3
View File
@@ -25,8 +25,8 @@ namespace Artemis.UI.Screens
_debugService = debugService;
CanShowRootViewModel = true;
var autoRunning = Bootstrapper.StartupArguments.Contains("--autorun");
var showOnAutoRun = settingsService.GetSetting("UI.ShowOnStartup", true).Value;
bool autoRunning = Bootstrapper.StartupArguments.Contains("--autorun");
bool showOnAutoRun = settingsService.GetSetting("UI.ShowOnStartup", true).Value;
if (!autoRunning || showOnAutoRun)
{
ShowSplashScreen();
@@ -54,7 +54,7 @@ namespace Artemis.UI.Screens
{
_splashViewModel?.RequestClose();
_splashViewModel = null;
var rootViewModel = _kernel.Get<RootViewModel>();
RootViewModel rootViewModel = _kernel.Get<RootViewModel>();
rootViewModel.Closed += RootViewModelOnClosed;
_windowManager.ShowWindow(rootViewModel);
});