diff --git a/Artemis/Artemis/Artemis.csproj b/Artemis/Artemis/Artemis.csproj
index 1605a1e2e..d2fc48833 100644
--- a/Artemis/Artemis/Artemis.csproj
+++ b/Artemis/Artemis/Artemis.csproj
@@ -226,10 +226,6 @@
..\packages\Ninject.Extensions.Conventions.3.2.0.0\lib\net45-full\Ninject.Extensions.Conventions.dll
True
-
- ..\packages\Ninject.Extensions.Factory.3.2.1.0\lib\net45-full\Ninject.Extensions.Factory.dll
- True
-
..\packages\Ninject.Extensions.Logging.3.2.3.0\lib\net45-full\Ninject.Extensions.Logging.dll
True
@@ -337,8 +333,6 @@
-
-
@@ -545,6 +539,7 @@
+
diff --git a/Artemis/Artemis/DeviceProviders/Logitech/Utilities/OrionUtilities.cs b/Artemis/Artemis/DeviceProviders/Logitech/Utilities/OrionUtilities.cs
index e00020286..f39d7a27e 100644
--- a/Artemis/Artemis/DeviceProviders/Logitech/Utilities/OrionUtilities.cs
+++ b/Artemis/Artemis/DeviceProviders/Logitech/Utilities/OrionUtilities.cs
@@ -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);
diff --git a/Artemis/Artemis/InjectionFactories/ILayerEditorVmFactory.cs b/Artemis/Artemis/InjectionFactories/ILayerEditorVmFactory.cs
deleted file mode 100644
index 0f3e0609f..000000000
--- a/Artemis/Artemis/InjectionFactories/ILayerEditorVmFactory.cs
+++ /dev/null
@@ -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);
- }
-}
\ No newline at end of file
diff --git a/Artemis/Artemis/InjectionFactories/IProfileEditorVmFactory.cs b/Artemis/Artemis/InjectionFactories/IProfileEditorVmFactory.cs
deleted file mode 100644
index ef596f950..000000000
--- a/Artemis/Artemis/InjectionFactories/IProfileEditorVmFactory.cs
+++ /dev/null
@@ -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);
- }
-}
\ No newline at end of file
diff --git a/Artemis/Artemis/InjectionModules/BaseModules.cs b/Artemis/Artemis/InjectionModules/BaseModules.cs
index 0c5a73936..8ad841238 100644
--- a/Artemis/Artemis/InjectionModules/BaseModules.cs
+++ b/Artemis/Artemis/InjectionModules/BaseModules.cs
@@ -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().To().InSingletonScope();
- Bind().ToFactory();
- Bind().ToFactory();
Bind().ToSelf();
+ Bind().ToSelf();
Bind().ToSelf().InSingletonScope();
Bind().To().InSingletonScope();
@@ -31,6 +28,7 @@ namespace Artemis.InjectionModules
// Services
Bind().ToSelf().InSingletonScope();
+ Bind().ToSelf().InSingletonScope();
}
}
}
\ No newline at end of file
diff --git a/Artemis/Artemis/Modules/Effects/WindowsProfile/WindowsProfileViewModel.cs b/Artemis/Artemis/Modules/Effects/WindowsProfile/WindowsProfileViewModel.cs
index 0299cc0ee..026436cba 100644
--- a/Artemis/Artemis/Modules/Effects/WindowsProfile/WindowsProfileViewModel.cs
+++ b/Artemis/Artemis/Modules/Effects/WindowsProfile/WindowsProfileViewModel.cs
@@ -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(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();
diff --git a/Artemis/Artemis/Modules/Games/CounterStrike/CounterStrikeViewModel.cs b/Artemis/Artemis/Modules/Games/CounterStrike/CounterStrikeViewModel.cs
index fe83e2708..d32a9e759 100644
--- a/Artemis/Artemis/Modules/Games/CounterStrike/CounterStrikeViewModel.cs
+++ b/Artemis/Artemis/Modules/Games/CounterStrike/CounterStrikeViewModel.cs
@@ -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";
diff --git a/Artemis/Artemis/Modules/Games/Dota2/Dota2ViewModel.cs b/Artemis/Artemis/Modules/Games/Dota2/Dota2ViewModel.cs
index 659809370..2965c8ab3 100644
--- a/Artemis/Artemis/Modules/Games/Dota2/Dota2ViewModel.cs
+++ b/Artemis/Artemis/Modules/Games/Dota2/Dota2ViewModel.cs
@@ -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";
diff --git a/Artemis/Artemis/Modules/Games/EurotruckSimulator2/EurotruckSimulator2ViewModel.cs b/Artemis/Artemis/Modules/Games/EurotruckSimulator2/EurotruckSimulator2ViewModel.cs
index 63c125f08..99f7ec9b0 100644
--- a/Artemis/Artemis/Modules/Games/EurotruckSimulator2/EurotruckSimulator2ViewModel.cs
+++ b/Artemis/Artemis/Modules/Games/EurotruckSimulator2/EurotruckSimulator2ViewModel.cs
@@ -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";
diff --git a/Artemis/Artemis/Modules/Games/Overwatch/OverwatchViewModel.cs b/Artemis/Artemis/Modules/Games/Overwatch/OverwatchViewModel.cs
index 5882f192a..2df971da3 100644
--- a/Artemis/Artemis/Modules/Games/Overwatch/OverwatchViewModel.cs
+++ b/Artemis/Artemis/Modules/Games/Overwatch/OverwatchViewModel.cs
@@ -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";
diff --git a/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueViewModel.cs b/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueViewModel.cs
index 35a90422c..6cb8f4489 100644
--- a/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueViewModel.cs
+++ b/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueViewModel.cs
@@ -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();
diff --git a/Artemis/Artemis/Modules/Games/TheDivision/TheDivisionViewModel.cs b/Artemis/Artemis/Modules/Games/TheDivision/TheDivisionViewModel.cs
index 91f1048d9..6347cfd30 100644
--- a/Artemis/Artemis/Modules/Games/TheDivision/TheDivisionViewModel.cs
+++ b/Artemis/Artemis/Modules/Games/TheDivision/TheDivisionViewModel.cs
@@ -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";
}
diff --git a/Artemis/Artemis/Modules/Games/UnrealTournament/UnrealTournamentViewModel.cs b/Artemis/Artemis/Modules/Games/UnrealTournament/UnrealTournamentViewModel.cs
index 5df40b4a9..73da7518b 100644
--- a/Artemis/Artemis/Modules/Games/UnrealTournament/UnrealTournamentViewModel.cs
+++ b/Artemis/Artemis/Modules/Games/UnrealTournament/UnrealTournamentViewModel.cs
@@ -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);
diff --git a/Artemis/Artemis/Modules/Games/Witcher3/Witcher3ViewModel.cs b/Artemis/Artemis/Modules/Games/Witcher3/Witcher3ViewModel.cs
index 8c8d7f2ce..853e74c3c 100644
--- a/Artemis/Artemis/Modules/Games/Witcher3/Witcher3ViewModel.cs
+++ b/Artemis/Artemis/Modules/Games/Witcher3/Witcher3ViewModel.cs
@@ -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";
}
diff --git a/Artemis/Artemis/Modules/Games/WoW/WoWViewModel.cs b/Artemis/Artemis/Modules/Games/WoW/WoWViewModel.cs
index f5bffcedd..359ad9ac9 100644
--- a/Artemis/Artemis/Modules/Games/WoW/WoWViewModel.cs
+++ b/Artemis/Artemis/Modules/Games/WoW/WoWViewModel.cs
@@ -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";
}
diff --git a/Artemis/Artemis/Profiles/Lua/LuaWrapper.cs b/Artemis/Artemis/Profiles/Lua/LuaWrapper.cs
index 55ee632c6..72aa1457c 100644
--- a/Artemis/Artemis/Profiles/Lua/LuaWrapper.cs
+++ b/Artemis/Artemis/Profiles/Lua/LuaWrapper.cs
@@ -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);
+ }
}
}
}
\ No newline at end of file
diff --git a/Artemis/Artemis/Profiles/ProfileModel.cs b/Artemis/Artemis/Profiles/ProfileModel.cs
index 5098300b4..162fcbbd3 100644
--- a/Artemis/Artemis/Profiles/ProfileModel.cs
+++ b/Artemis/Artemis/Profiles/ProfileModel.cs
@@ -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;
+ }
}
}
\ No newline at end of file
diff --git a/Artemis/Artemis/Services/WindowService.cs b/Artemis/Artemis/Services/WindowService.cs
new file mode 100644
index 000000000..d391e8170
--- /dev/null
+++ b/Artemis/Artemis/Services/WindowService.cs
@@ -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(params IParameter[] param) where T : class
+ {
+ var windowManager = new WindowManager();
+ var viewModel = _kernel.Get(param);
+
+ windowManager.ShowWindow(viewModel);
+ }
+
+ public void ShowDialog(params IParameter[] param) where T : class
+ {
+ var windowManager = new WindowManager();
+ var viewModel = _kernel.Get(param);
+
+ windowManager.ShowDialog(viewModel);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Artemis/Artemis/ViewModels/Abstract/GameViewModel.cs b/Artemis/Artemis/ViewModels/Abstract/GameViewModel.cs
index d8c60c06f..7694d5b25 100644
--- a/Artemis/Artemis/ViewModels/Abstract/GameViewModel.cs
+++ b/Artemis/Artemis/ViewModels/Abstract/GameViewModel.cs
@@ -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(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();
diff --git a/Artemis/Artemis/ViewModels/Profiles/LayerEditorViewModel.cs b/Artemis/Artemis/ViewModels/Profiles/LayerEditorViewModel.cs
index aac0629c6..f6a22b203 100644
--- a/Artemis/Artemis/ViewModels/Profiles/LayerEditorViewModel.cs
+++ b/Artemis/Artemis/ViewModels/Profiles/LayerEditorViewModel.cs
@@ -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);
diff --git a/Artemis/Artemis/ViewModels/Profiles/ProfileEditorViewModel.cs b/Artemis/Artemis/ViewModels/Profiles/ProfileEditorViewModel.cs
index 29cc10dbe..25f46cab4 100644
--- a/Artemis/Artemis/ViewModels/Profiles/ProfileEditorViewModel.cs
+++ b/Artemis/Artemis/ViewModels/Profiles/ProfileEditorViewModel.cs
@@ -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();
Layers = new BindableCollection();
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(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;
}
diff --git a/Artemis/Artemis/ViewModels/Profiles/ProfileViewModel.cs b/Artemis/Artemis/ViewModels/Profiles/ProfileViewModel.cs
index c0b63b4ac..4786ea954 100644
--- a/Artemis/Artemis/ViewModels/Profiles/ProfileViewModel.cs
+++ b/Artemis/Artemis/ViewModels/Profiles/ProfileViewModel.cs
@@ -206,8 +206,7 @@ namespace Artemis.ViewModels.Profiles
}
///
- /// 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.
///
///
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;
}
///
@@ -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();
if (SelectedLayer.LayerType is FolderType)
@@ -355,21 +355,17 @@ namespace Artemis.ViewModels.Profiles
private List GetLayers()
{
+ if (ShowAll)
+ return SelectedProfile.GetLayers();
if (SelectedLayer == null)
return new List();
lock (SelectedLayer)
{
// Get the layers that must be drawn
- List drawLayers;
- if (ShowAll)
- drawLayers = SelectedProfile.GetLayers();
- else if (SelectedLayer.LayerType is FolderType)
- drawLayers = SelectedLayer.GetLayers().ToList();
- else
- drawLayers = new List {SelectedLayer};
-
- return drawLayers;
+ if (SelectedLayer.LayerType is FolderType)
+ return SelectedLayer.GetLayers().ToList();
+ return new List {SelectedLayer};
}
}
diff --git a/Artemis/Artemis/packages.config b/Artemis/Artemis/packages.config
index 3df870d76..0e4350b48 100644
--- a/Artemis/Artemis/packages.config
+++ b/Artemis/Artemis/packages.config
@@ -18,7 +18,6 @@
-