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:
parent
73ab4b3fce
commit
a40728244a
@ -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" />
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
|
||||
@ -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";
|
||||
|
||||
|
||||
@ -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";
|
||||
|
||||
|
||||
@ -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";
|
||||
|
||||
|
||||
@ -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";
|
||||
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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";
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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";
|
||||
}
|
||||
|
||||
@ -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";
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
32
Artemis/Artemis/Services/WindowService.cs
Normal file
32
Artemis/Artemis/Services/WindowService.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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" />
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user