1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00

Removed factories in favor of a new WindowService

Fixed layer selection issues in profile editor
This commit is contained in:
SpoinkyNL 2016-11-06 17:27:36 +01:00
parent 73ab4b3fce
commit a40728244a
23 changed files with 152 additions and 142 deletions

View File

@ -226,10 +226,6 @@
<HintPath>..\packages\Ninject.Extensions.Conventions.3.2.0.0\lib\net45-full\Ninject.Extensions.Conventions.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Ninject.Extensions.Factory, Version=3.2.0.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7, processorArchitecture=MSIL">
<HintPath>..\packages\Ninject.Extensions.Factory.3.2.1.0\lib\net45-full\Ninject.Extensions.Factory.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Ninject.Extensions.Logging, Version=3.2.0.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7, processorArchitecture=MSIL">
<HintPath>..\packages\Ninject.Extensions.Logging.3.2.3.0\lib\net45-full\Ninject.Extensions.Logging.dll</HintPath>
<Private>True</Private>
@ -337,8 +333,6 @@
<Compile Include="Events\KeyboardChangedEventArgs.cs" />
<Compile Include="Events\RazerColorArrayChanged.cs" />
<Compile Include="Events\RazerColorsChangedEventArgs.cs" />
<Compile Include="InjectionFactories\ILayerEditorVmFactory.cs" />
<Compile Include="InjectionFactories\IProfileEditorVmFactory.cs" />
<Compile Include="InjectionModules\DeviceModules.cs" />
<Compile Include="InjectionModules\EffectModules.cs" />
<Compile Include="InjectionModules\ProfileModules.cs" />
@ -545,6 +539,7 @@
</Compile>
<Compile Include="Services\DialogService.cs" />
<Compile Include="Services\MetroDialogService.cs" />
<Compile Include="Services\WindowService.cs" />
<Compile Include="Settings\EffectSettings.cs" />
<Compile Include="Settings\GameSettings.cs" />
<Compile Include="Settings\GeneralSettings.cs" />

View File

@ -153,7 +153,7 @@ namespace Artemis.DeviceProviders.Logitech.Utilities
{
if (b.Width > 21 || b.Height > 6)
b = ResizeImage(b, 21, 6);
b.Save(@"D:\Gebruiker folder\Mijn afbeeldingen\BitmapOutput\test.bmp");
var rect = new Rectangle(0, 0, b.Width, b.Height);
var bitmapData = b.LockBits(rect, ImageLockMode.ReadWrite, b.PixelFormat);

View File

@ -1,11 +0,0 @@
using Artemis.Models.Interfaces;
using Artemis.Profiles.Layers.Models;
using Artemis.ViewModels.Profiles;
namespace Artemis.InjectionFactories
{
public interface ILayerEditorVmFactory
{
LayerEditorViewModel CreateLayerEditorVm(IDataModel dataModel, LayerModel layer);
}
}

View File

@ -1,11 +0,0 @@
using Artemis.Managers;
using Artemis.Models;
using Artemis.ViewModels.Profiles;
namespace Artemis.InjectionFactories
{
public interface IProfileEditorVmFactory
{
ProfileEditorViewModel CreateProfileEditorVm(MainManager mainManager, EffectModel gameModel, string lastProfile);
}
}

View File

@ -1,11 +1,9 @@
using Artemis.InjectionFactories;
using Artemis.Modules.Effects.ProfilePreview;
using Artemis.Modules.Effects.ProfilePreview;
using Artemis.Services;
using Artemis.ViewModels;
using Artemis.ViewModels.Abstract;
using Artemis.ViewModels.Profiles;
using Caliburn.Micro;
using Ninject.Extensions.Factory;
using Ninject.Modules;
namespace Artemis.InjectionModules
@ -16,9 +14,8 @@ namespace Artemis.InjectionModules
{
// ViewModels
Bind<IScreen>().To<ShellViewModel>().InSingletonScope();
Bind<IProfileEditorVmFactory>().ToFactory();
Bind<ILayerEditorVmFactory>().ToFactory();
Bind<ProfileViewModel>().ToSelf();
Bind<ProfileEditorViewModel>().ToSelf();
Bind<DebugViewModel>().ToSelf().InSingletonScope();
Bind<BaseViewModel>().To<WelcomeViewModel>().InSingletonScope();
@ -31,6 +28,7 @@ namespace Artemis.InjectionModules
// Services
Bind<MetroDialogService>().ToSelf().InSingletonScope();
Bind<WindowService>().ToSelf().InSingletonScope();
}
}
}

View File

@ -1,43 +1,48 @@
using System.ComponentModel;
using Artemis.InjectionFactories;
using Artemis.Managers;
using Artemis.Modules.Effects.ProfilePreview;
using Artemis.ViewModels.Abstract;
using Artemis.ViewModels.Profiles;
using Ninject;
using Ninject.Parameters;
namespace Artemis.Modules.Effects.WindowsProfile
{
// TODO: This effect is a hybrid between a regular effect and a game, may want to clean this up
public sealed class WindowsProfileViewModel : EffectViewModel
{
public WindowsProfileViewModel(MainManager main, IProfileEditorVmFactory pFactory,
ProfilePreviewModel profilePreviewModel, WindowsProfileModel model) : base(main, model)
public WindowsProfileViewModel(MainManager main, IKernel kernel, ProfilePreviewModel profilePreviewModel,
WindowsProfileModel model) : base(main, model)
{
DisplayName = "Windows Profile";
PFactory = pFactory;
ProfilePreviewModel = profilePreviewModel;
EffectSettings = ((WindowsProfileModel) EffectModel).Settings;
ProfileEditor = PFactory.CreateProfileEditorVm(main, (WindowsProfileModel) EffectModel,
((WindowsProfileSettings) EffectSettings).LastProfile);
IParameter[] args =
{
new ConstructorArgument("mainManager", main),
new ConstructorArgument("gameModel", (WindowsProfileModel) EffectModel),
new ConstructorArgument("lastProfile", ((WindowsProfileSettings) EffectSettings).LastProfile)
};
ProfileEditor = kernel.Get<ProfileEditorViewModel>(args);
ProfilePreviewModel.Profile = ProfileEditor.SelectedProfile;
ProfileEditor.PropertyChanged += ProfileUpdater;
MainManager.EffectManager.EffectModels.Add(EffectModel);
}
public ProfileEditorViewModel ProfileEditor { get; set; }
public IProfileEditorVmFactory PFactory { get; set; }
public ProfilePreviewModel ProfilePreviewModel { get; set; }
private void ProfileUpdater(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName != "SelectedProfile" && IsActive)
if ((e.PropertyName != "SelectedProfile") && IsActive)
return;
EffectModel.Profile = ProfileEditor.SelectedProfile;
ProfilePreviewModel.Profile = ProfileEditor.SelectedProfile;
if (e.PropertyName != "SelectedProfile" || !ProfileEditor.ProfileViewModel.Activated ||
ProfileEditor.ProfileViewModel.SelectedProfile == null)
if ((e.PropertyName != "SelectedProfile") || !ProfileEditor.ProfileViewModel.Activated ||
(ProfileEditor.ProfileViewModel.SelectedProfile == null))
return;
((WindowsProfileSettings) EffectSettings).LastProfile = ProfileEditor.ProfileViewModel.SelectedProfile.Name;
EffectSettings.Save();

View File

@ -1,6 +1,6 @@
using System.IO;
using System.Windows.Forms;
using Artemis.InjectionFactories;
using Ninject;
using Artemis.Managers;
using Artemis.Properties;
using Artemis.Utilities;
@ -10,8 +10,8 @@ namespace Artemis.Modules.Games.CounterStrike
{
public sealed class CounterStrikeViewModel : GameViewModel
{
public CounterStrikeViewModel(MainManager main, IProfileEditorVmFactory pFactory, CounterStrikeModel model)
: base(main, model, pFactory)
public CounterStrikeViewModel(MainManager main, IKernel kernel, CounterStrikeModel model)
: base(main, model, kernel)
{
DisplayName = "CS:GO";

View File

@ -1,6 +1,6 @@
using System.IO;
using System.Windows.Forms;
using Artemis.InjectionFactories;
using Ninject;
using Artemis.Managers;
using Artemis.Properties;
using Artemis.Utilities;
@ -10,8 +10,8 @@ namespace Artemis.Modules.Games.Dota2
{
public sealed class Dota2ViewModel : GameViewModel
{
public Dota2ViewModel(MainManager main, IProfileEditorVmFactory pFactory, Dota2Model model)
: base(main, model, pFactory)
public Dota2ViewModel(MainManager main, IKernel kernel, Dota2Model model)
: base(main, model, kernel)
{
DisplayName = "Dota 2";

View File

@ -1,7 +1,7 @@
using System;
using System.IO;
using System.Windows.Forms;
using Artemis.InjectionFactories;
using Ninject;
using Artemis.Managers;
using Artemis.Properties;
using Artemis.Utilities;
@ -11,8 +11,8 @@ namespace Artemis.Modules.Games.EurotruckSimulator2
{
public sealed class EurotruckSimulator2ViewModel : GameViewModel
{
public EurotruckSimulator2ViewModel(MainManager main, IProfileEditorVmFactory pFactory,
EurotruckSimulator2Model model) : base(main, model, pFactory)
public EurotruckSimulator2ViewModel(MainManager main, IKernel kernel,
EurotruckSimulator2Model model) : base(main, model, kernel)
{
DisplayName = "ETS 2";

View File

@ -1,6 +1,6 @@
using System.IO;
using System.Windows.Forms;
using Artemis.InjectionFactories;
using Ninject;
using Artemis.Managers;
using Artemis.Utilities.DataReaders;
using Artemis.ViewModels.Abstract;
@ -10,8 +10,8 @@ namespace Artemis.Modules.Games.Overwatch
{
public sealed class OverwatchViewModel : GameViewModel
{
public OverwatchViewModel(MainManager main, IProfileEditorVmFactory pFactory, OverwatchModel model)
: base(main, model, pFactory)
public OverwatchViewModel(MainManager main, IKernel kernel, OverwatchModel model)
: base(main, model, kernel)
{
DisplayName = "Overwatch";

View File

@ -1,5 +1,5 @@
using Artemis.DAL;
using Artemis.InjectionFactories;
using Ninject;
using Artemis.Managers;
using Artemis.Settings;
using Artemis.Utilities;
@ -11,8 +11,8 @@ namespace Artemis.Modules.Games.RocketLeague
{
private string _versionText;
public RocketLeagueViewModel(MainManager main, IProfileEditorVmFactory pFactory, RocketLeagueModel model)
: base(main, model, pFactory)
public RocketLeagueViewModel(MainManager main, IKernel kernel, RocketLeagueModel model)
: base(main, model, kernel)
{
DisplayName = "Rocket League";
SetVersionText();

View File

@ -1,4 +1,4 @@
using Artemis.InjectionFactories;
using Ninject;
using Artemis.Managers;
using Artemis.ViewModels.Abstract;
@ -6,8 +6,8 @@ namespace Artemis.Modules.Games.TheDivision
{
public sealed class TheDivisionViewModel : GameViewModel
{
public TheDivisionViewModel(MainManager main, IProfileEditorVmFactory pFactory, TheDivisionModel model)
: base(main, model, pFactory)
public TheDivisionViewModel(MainManager main, IKernel kernel, TheDivisionModel model)
: base(main, model, kernel)
{
DisplayName = "The Division";
}

View File

@ -5,7 +5,7 @@ using System.Linq;
using System.Reflection;
using System.Windows.Forms;
using Artemis.DAL;
using Artemis.InjectionFactories;
using Ninject;
using Artemis.Managers;
using Artemis.Properties;
using Artemis.Utilities;
@ -17,8 +17,8 @@ namespace Artemis.Modules.Games.UnrealTournament
{
public sealed class UnrealTournamentViewModel : GameViewModel
{
public UnrealTournamentViewModel(MainManager main, IProfileEditorVmFactory pFactory, UnrealTournamentModel model)
: base(main, model, pFactory)
public UnrealTournamentViewModel(MainManager main, IKernel kernel, UnrealTournamentModel model)
: base(main, model, kernel)
{
DisplayName = "Unreal Tournament";
MainManager.EffectManager.EffectModels.Add(GameModel);

View File

@ -5,7 +5,7 @@ using System.IO.Compression;
using System.Linq;
using System.Reflection;
using System.Windows.Forms;
using Artemis.InjectionFactories;
using Ninject;
using Artemis.Managers;
using Artemis.Properties;
using Artemis.Utilities;
@ -15,8 +15,8 @@ namespace Artemis.Modules.Games.Witcher3
{
public sealed class Witcher3ViewModel : GameViewModel
{
public Witcher3ViewModel(MainManager main, IProfileEditorVmFactory pFactory, Witcher3Model model)
: base(main, model, pFactory)
public Witcher3ViewModel(MainManager main, IKernel kernel, Witcher3Model model)
: base(main, model, kernel)
{
DisplayName = "The Witcher 3";
}

View File

@ -1,4 +1,4 @@
using Artemis.InjectionFactories;
using Ninject;
using Artemis.Managers;
using Artemis.ViewModels.Abstract;
@ -6,8 +6,8 @@ namespace Artemis.Modules.Games.WoW
{
public sealed class WoWViewModel : GameViewModel
{
public WoWViewModel(MainManager main, IProfileEditorVmFactory pFactory, WoWModel model)
: base(main, model, pFactory)
public WoWViewModel(MainManager main, IKernel kernel, WoWModel model)
: base(main, model, kernel)
{
DisplayName = "WoW";
}

View File

@ -53,7 +53,10 @@ namespace Artemis.Profiles.Lua
{
lock (LuaEventsWrapper.InvokeLock)
{
LuaScript.DoString(ProfileModel.LuaScript);
lock (LuaScript)
{
LuaScript.DoString(ProfileModel.LuaScript);
}
}
}
catch (InternalErrorException e)
@ -139,18 +142,21 @@ namespace Artemis.Profiles.Lua
public static void Clear()
{
// Clear old fields/properties
_keyboardProvider = null;
ProfileModel = null;
LuaKeyboardWrapper?.Dispose();
LuaKeyboardWrapper = null;
lock (LuaScript)
{
// Clear old fields/properties
_keyboardProvider = null;
ProfileModel = null;
LuaKeyboardWrapper?.Dispose();
LuaKeyboardWrapper = null;
LuaScript.Globals.Clear();
LuaScript.Registry.Clear();
LuaScript.Registry.RegisterConstants();
LuaScript.Registry.RegisterCoreModules(CoreModules.Preset_SoftSandbox);
LuaScript.Globals.RegisterConstants();
LuaScript.Globals.RegisterCoreModules(CoreModules.Preset_SoftSandbox);
LuaScript.Globals.Clear();
LuaScript.Registry.Clear();
LuaScript.Registry.RegisterConstants();
LuaScript.Registry.RegisterCoreModules(CoreModules.Preset_SoftSandbox);
LuaScript.Globals.RegisterConstants();
LuaScript.Globals.RegisterCoreModules(CoreModules.Preset_SoftSandbox);
}
}
}
}

View File

@ -219,5 +219,21 @@ namespace Artemis.Profiles
LuaWrapper.Clear();
}
}
public LayerModel AddLayer(LayerModel afterLayer)
{
// Create a new layer
var layer = LayerModel.CreateLayer();
if (afterLayer!= null)
afterLayer.InsertAfter(layer);
else
{
Layers.Add(layer);
FixOrder();
}
return layer;
}
}
}

View File

@ -0,0 +1,32 @@
using Caliburn.Micro;
using Ninject;
using Ninject.Parameters;
namespace Artemis.Services
{
public class WindowService
{
private readonly IKernel _kernel;
public WindowService(IKernel kernel)
{
_kernel = kernel;
}
public void ShowWindow<T>(params IParameter[] param) where T : class
{
var windowManager = new WindowManager();
var viewModel = _kernel.Get<T>(param);
windowManager.ShowWindow(viewModel);
}
public void ShowDialog<T>(params IParameter[] param) where T : class
{
var windowManager = new WindowManager();
var viewModel = _kernel.Get<T>(param);
windowManager.ShowDialog(viewModel);
}
}
}

View File

@ -1,5 +1,4 @@
using System.ComponentModel;
using Artemis.InjectionFactories;
using Artemis.Managers;
using Artemis.Models;
using Artemis.Modules.Effects.ProfilePreview;
@ -9,6 +8,7 @@ using Artemis.ViewModels.Profiles;
using Caliburn.Micro;
using Ninject;
using Ninject.Extensions.Logging;
using Ninject.Parameters;
namespace Artemis.ViewModels.Abstract
{
@ -16,14 +16,19 @@ namespace Artemis.ViewModels.Abstract
{
private GameSettings _gameSettings;
protected GameViewModel(MainManager mainManager, GameModel gameModel, IProfileEditorVmFactory pFactory)
protected GameViewModel(MainManager mainManager, GameModel gameModel, IKernel kernel)
{
MainManager = mainManager;
GameModel = gameModel;
PFactory = pFactory;
GameSettings = gameModel.Settings;
ProfileEditor = PFactory.CreateProfileEditorVm(mainManager, gameModel, GameSettings.LastProfile);
IParameter[] args =
{
new ConstructorArgument("mainManager", mainManager),
new ConstructorArgument("gameModel", gameModel),
new ConstructorArgument("lastProfile", GameSettings.LastProfile)
};
ProfileEditor = kernel.Get<ProfileEditorViewModel>(args);
GameModel.Profile = ProfileEditor.SelectedProfile;
ProfileEditor.PropertyChanged += ProfileUpdater;
}
@ -37,8 +42,6 @@ namespace Artemis.ViewModels.Abstract
[Inject]
public MetroDialogService DialogService { get; set; }
public IProfileEditorVmFactory PFactory { get; set; }
public ProfileEditorViewModel ProfileEditor { get; set; }
public GameModel GameModel { get; set; }
@ -89,14 +92,14 @@ namespace Artemis.ViewModels.Abstract
private void ProfileUpdater(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName != "SelectedProfile" && IsActive)
if ((e.PropertyName != "SelectedProfile") && IsActive)
return;
GameModel.Profile = ProfileEditor.SelectedProfile;
ProfilePreviewModel.Profile = ProfileEditor.SelectedProfile;
if (e.PropertyName != "SelectedProfile" || !ProfileEditor.ProfileViewModel.Activated ||
ProfileEditor.ProfileViewModel.SelectedProfile == null)
if ((e.PropertyName != "SelectedProfile") || !ProfileEditor.ProfileViewModel.Activated ||
(ProfileEditor.ProfileViewModel.SelectedProfile == null))
return;
GameSettings.LastProfile = ProfileEditor.ProfileViewModel.SelectedProfile.Name;
GameSettings.Save();

View File

@ -5,7 +5,6 @@ using System.IO;
using System.Linq;
using Artemis.Models.Interfaces;
using Artemis.Profiles.Layers.Abstract;
using Artemis.Profiles.Layers.Conditions;
using Artemis.Profiles.Layers.Interfaces;
using Artemis.Profiles.Layers.Models;
using Artemis.Profiles.Layers.Types.Keyboard;
@ -205,7 +204,7 @@ namespace Artemis.ViewModels.Profiles
ProposedLayer.Properties.Conditions.Add(conditionViewModel.LayerConditionModel);
// If not a keyboard, ignore size and position
if (ProposedLayer.LayerType.DrawType != DrawType.Keyboard || !ProposedLayer.LayerType.ShowInEdtor)
if ((ProposedLayer.LayerType.DrawType != DrawType.Keyboard) || !ProposedLayer.LayerType.ShowInEdtor)
{
ProposedLayer.Properties.Width = Layer.Properties.Width;
ProposedLayer.Properties.Height = Layer.Properties.Height;
@ -213,7 +212,7 @@ namespace Artemis.ViewModels.Profiles
ProposedLayer.Properties.Y = Layer.Properties.Y;
ProposedLayer.Properties.Contain = Layer.Properties.Contain;
}
// Ignore the children, can't just temporarily add them to the proposed layer because
// that would upset the child layers' relations (sounds like Dr. Phil amirite?)
var currentObj = Clone(Layer);

View File

@ -11,7 +11,6 @@ using System.Windows.Media;
using Artemis.DAL;
using Artemis.DeviceProviders;
using Artemis.Events;
using Artemis.InjectionFactories;
using Artemis.Managers;
using Artemis.Models;
using Artemis.Profiles;
@ -25,6 +24,7 @@ using Caliburn.Micro;
using GongSolutions.Wpf.DragDrop;
using MahApps.Metro.Controls.Dialogs;
using Ninject;
using Ninject.Parameters;
using DragDropEffects = System.Windows.DragDropEffects;
using IDropTarget = GongSolutions.Wpf.DragDrop.IDropTarget;
using MouseEventArgs = System.Windows.Input.MouseEventArgs;
@ -36,7 +36,6 @@ namespace Artemis.ViewModels.Profiles
public sealed class ProfileEditorViewModel : Screen, IDropTarget
{
private readonly EffectModel _gameModel;
private readonly ILayerEditorVmFactory _layerEditorVmFactory;
private readonly MainManager _mainManager;
private readonly Timer _saveTimer;
private ImageSource _keyboardPreview;
@ -46,16 +45,16 @@ namespace Artemis.ViewModels.Profiles
private ProfileModel _selectedProfile;
public ProfileEditorViewModel(MainManager mainManager, EffectModel gameModel, ProfileViewModel profileViewModel,
MetroDialogService dialogService, string lastProfile, ILayerEditorVmFactory layerEditorVmFactory)
MetroDialogService dialogService, WindowService windowService, string lastProfile)
{
_mainManager = mainManager;
_gameModel = gameModel;
_layerEditorVmFactory = layerEditorVmFactory;
ProfileNames = new BindableCollection<string>();
Layers = new BindableCollection<LayerModel>();
ProfileViewModel = profileViewModel;
DialogService = dialogService;
WindowService = windowService;
LastProfile = lastProfile;
PropertyChanged += EditorStateHandler;
@ -71,6 +70,8 @@ namespace Artemis.ViewModels.Profiles
[Inject]
public MetroDialogService DialogService { get; set; }
public WindowService WindowService { get; set; }
public string LastProfile { get; set; }
public ProfileViewModel ProfileViewModel { get; set; }
@ -104,10 +105,10 @@ namespace Artemis.ViewModels.Profiles
public string SelectedProfileName
{
get { return SelectedProfile.Name; }
get { return SelectedProfile?.Name; }
set
{
if (value == SelectedProfile.Name)
if (value == SelectedProfile?.Name)
return;
SelectedProfile = ProfileProvider.GetProfile(
@ -295,20 +296,11 @@ namespace Artemis.ViewModels.Profiles
if (layer == null)
return;
IWindowManager manager = new WindowManager();
var editorVm = _layerEditorVmFactory.CreateLayerEditorVm(_gameModel.DataModel, layer);
dynamic settings = new ExpandoObject();
var icon = ImageUtilities.GenerateWindowIcon();
settings.Title = "Artemis | Edit " + layer.Name;
settings.Icon = icon;
manager.ShowDialog(editorVm, null, settings);
//// The layer editor VM may have created a new instance of the layer, reapply it to the list
//layer.Replace(editorVm.Layer);
//layer = editorVm.Layer;
IParameter[] args = {
new ConstructorArgument("dataModel", _gameModel.DataModel),
new ConstructorArgument("layer", layer)
};
WindowService.ShowDialog<LayerEditorViewModel>(args);
// If the layer was a folder, but isn't anymore, assign it's children to it's parent.
if (!(layer.LayerType is FolderType) && layer.Children.Any())
@ -339,18 +331,9 @@ namespace Artemis.ViewModels.Profiles
if (SelectedProfile == null)
return null;
// Create a new layer
var layer = LayerModel.CreateLayer();
if (ProfileViewModel.SelectedLayer != null)
ProfileViewModel.SelectedLayer.InsertAfter(layer);
else
{
SelectedProfile.Layers.Add(layer);
SelectedProfile.FixOrder();
}
var layer = SelectedProfile.AddLayer(ProfileViewModel.SelectedLayer);
UpdateLayerList(layer);
return layer;
}

View File

@ -206,8 +206,7 @@ namespace Artemis.ViewModels.Profiles
}
/// <summary>
/// Second handler for clicking, selects a the layer the user clicked on
/// if the used clicked on an empty spot, deselects the current layer
/// Second handler for clicking, selects a the layer the user clicked on.
/// </summary>
/// <param name="e"></param>
public void MouseUpKeyboardPreview(MouseButtonEventArgs e)
@ -229,7 +228,8 @@ namespace Artemis.ViewModels.Profiles
var hoverLayer = GetLayers().Where(l => l.MustDraw())
.FirstOrDefault(l => l.Properties.GetRect(1).Contains(x, y));
SelectedLayer = hoverLayer;
if (hoverLayer != null)
SelectedLayer = hoverLayer;
}
/// <summary>
@ -341,7 +341,7 @@ namespace Artemis.ViewModels.Profiles
if (ShowAll)
return SelectedProfile.GetRenderLayers(new ProfilePreviewDataModel(), false, true);
if (SelectedLayer == null)
if (SelectedLayer == null || !SelectedLayer.Enabled)
return new EditableList<LayerModel>();
if (SelectedLayer.LayerType is FolderType)
@ -355,21 +355,17 @@ namespace Artemis.ViewModels.Profiles
private List<LayerModel> GetLayers()
{
if (ShowAll)
return SelectedProfile.GetLayers();
if (SelectedLayer == null)
return new List<LayerModel>();
lock (SelectedLayer)
{
// Get the layers that must be drawn
List<LayerModel> drawLayers;
if (ShowAll)
drawLayers = SelectedProfile.GetLayers();
else if (SelectedLayer.LayerType is FolderType)
drawLayers = SelectedLayer.GetLayers().ToList();
else
drawLayers = new List<LayerModel> {SelectedLayer};
return drawLayers;
if (SelectedLayer.LayerType is FolderType)
return SelectedLayer.GetLayers().ToList();
return new List<LayerModel> {SelectedLayer};
}
}

View File

@ -18,7 +18,6 @@
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net461" />
<package id="Ninject" version="3.2.2.0" targetFramework="net452" />
<package id="Ninject.Extensions.Conventions" version="3.2.0.0" targetFramework="net461" />
<package id="Ninject.Extensions.Factory" version="3.2.1.0" targetFramework="net452" />
<package id="Ninject.Extensions.Logging" version="3.2.3.0" targetFramework="net452" />
<package id="Ninject.Extensions.Logging.nlog4" version="3.2.3.0" targetFramework="net452" />
<package id="NLog" version="4.3.10" targetFramework="net461" />