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

Added NoneKeyboard to allow creating profiles without a keyboard for #141

This commit is contained in:
SpoinkyNL 2016-12-15 15:24:54 +01:00
parent 60b89cc88d
commit d777c61112
8 changed files with 101 additions and 60 deletions

View File

@ -321,6 +321,7 @@
<Compile Include="Controls\Log\MemoryEventTarget.cs" />
<Compile Include="DAL\ProfileProvider.cs" />
<Compile Include="DAL\SettingsProvider.cs" />
<Compile Include="DeviceProviders\Artemis\NoneKeyboard.cs" />
<Compile Include="DeviceProviders\CoolerMaster\MasterkeysProL.cs" />
<Compile Include="DeviceProviders\CoolerMaster\MasterkeysProS.cs" />
<Compile Include="DeviceProviders\CoolerMaster\Utilities\CmSdk.cs" />

View File

@ -0,0 +1,42 @@
using System.Drawing;
using System.Windows;
using System.Windows.Forms;
using Artemis.Properties;
namespace Artemis.DeviceProviders.Artemis
{
public class NoneKeyboard : KeyboardProvider
{
public NoneKeyboard()
{
Name = "None";
Slug = "none";
CantEnableText = "Waaaaah, this should not be happening!";
Height = 1;
Width = 1;
PreviewSettings = new PreviewSettings(984, 375, new Thickness(0, 0, 0, 0), Resources.none);
}
public override void Disable()
{
}
public override bool CanEnable()
{
return true;
}
public override void Enable()
{
}
public override void DrawBitmap(Bitmap bitmap)
{
}
public override KeyMatch? GetKeyPosition(Keys keyCode)
{
return null;
}
}
}

View File

@ -1,4 +1,5 @@
using Artemis.DeviceProviders;
using Artemis.DeviceProviders.Artemis;
using Artemis.DeviceProviders.CoolerMaster;
using Artemis.DeviceProviders.Corsair;
using Artemis.DeviceProviders.Logitech;
@ -12,6 +13,7 @@ namespace Artemis.InjectionModules
public override void Load()
{
// Keyboards
Bind<DeviceProvider>().To<NoneKeyboard>().InSingletonScope();
Bind<DeviceProvider>().To<CorsairKeyboard>().InSingletonScope();
Bind<DeviceProvider>().To<G910>().InSingletonScope();
Bind<DeviceProvider>().To<G810>().InSingletonScope();

View File

@ -62,7 +62,7 @@ namespace Artemis.Modules.Effects.ProfilePreview
var keyboardRect = DeviceManager.ActiveKeyboard.KeyboardRectangle(KeyboardScale);
using (var g = Graphics.FromImage(frame.KeyboardBitmap))
{
Profile.DrawLayers(g, renderLayers.Where(rl => rl.LayerType.DrawType == DrawType.Keyboard),
Profile?.DrawLayers(g, renderLayers.Where(rl => rl.LayerType.DrawType == DrawType.Keyboard),
DataModel, keyboardRect, true, true, "keyboard");
}
// Render mice layer-by-layer

View File

@ -23,7 +23,7 @@ namespace Artemis.Profiles.Layers.Types.Generic
var thumbnailRect = new Rect(0, 0, 18, 18);
var visual = new DrawingVisual();
using (var c = visual.RenderOpen())
c.DrawImage(ImageUtilities.BitmapToBitmapImage(Resources.headset), thumbnailRect);
c.DrawImage(ImageUtilities.BitmapToBitmapImage(Resources.generic), thumbnailRect);
var image = new DrawingImage(visual.Drawing);
return image;

View File

@ -70,11 +70,7 @@ namespace Artemis.ViewModels.Flyouts
{
get
{
var collection = new BindableCollection<string>
(MainManager.DeviceManager.KeyboardProviders.Select(k => k.Name));
collection.Insert(0, "None");
return collection;
return new BindableCollection<string>(MainManager.DeviceManager.KeyboardProviders.Select(k => k.Name));
}
}

View File

@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Timers;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
@ -45,6 +44,57 @@ namespace Artemis.ViewModels.Profiles
deviceManager.OnKeyboardChangedEvent += DeviceManagerOnOnKeyboardChangedEvent;
}
public ProfileModel SelectedProfile { get; set; }
public LayerModel SelectedLayer
{
get { return _selectedLayer; }
set
{
if (Equals(value, _selectedLayer)) return;
_selectedLayer = value;
NotifyOfPropertyChange(() => SelectedLayer);
}
}
public DrawingImage KeyboardPreview
{
get { return _keyboardPreview; }
set
{
if (Equals(value, _keyboardPreview)) return;
_keyboardPreview = value;
NotifyOfPropertyChange(() => KeyboardPreview);
}
}
public double BlurRadius
{
get { return _blurRadius; }
set
{
if (value.Equals(_blurRadius)) return;
_blurRadius = value;
NotifyOfPropertyChange(() => BlurRadius);
}
}
public bool ShowAll
{
get { return _showAll; }
set
{
if (value == _showAll) return;
_showAll = value;
NotifyOfPropertyChange(() => ShowAll);
}
}
public ImageSource KeyboardImage => ImageUtilities
.BitmapToBitmapImage(_deviceManager.ActiveKeyboard?.PreviewSettings.Image ?? Resources.none);
public bool Activated { get; set; }
private void LoopManagerOnRenderCompleted(object sender, EventArgs eventArgs)
{
if (!Activated)
@ -55,7 +105,8 @@ namespace Artemis.ViewModels.Profiles
_blurProgress = _blurProgress + 0.025;
BlurRadius = (Math.Sin(_blurProgress*Math.PI) + 1)*10 + 10;
if (SelectedProfile == null || _deviceManager.ActiveKeyboard == null)
// Besides the usual checks, also check if the ActiveKeyboard isn't the NoneKeyboard
if (SelectedProfile == null || _deviceManager.ActiveKeyboard == null || _deviceManager.ActiveKeyboard.Slug == "none")
{
var preview = new DrawingImage();
preview.Freeze();
@ -127,57 +178,6 @@ namespace Artemis.ViewModels.Profiles
KeyboardPreview = drawnPreview;
}
public ProfileModel SelectedProfile { get; set; }
public LayerModel SelectedLayer
{
get { return _selectedLayer; }
set
{
if (Equals(value, _selectedLayer)) return;
_selectedLayer = value;
NotifyOfPropertyChange(() => SelectedLayer);
}
}
public DrawingImage KeyboardPreview
{
get { return _keyboardPreview; }
set
{
if (Equals(value, _keyboardPreview)) return;
_keyboardPreview = value;
NotifyOfPropertyChange(() => KeyboardPreview);
}
}
public double BlurRadius
{
get { return _blurRadius; }
set
{
if (value.Equals(_blurRadius)) return;
_blurRadius = value;
NotifyOfPropertyChange(() => BlurRadius);
}
}
public bool ShowAll
{
get { return _showAll; }
set
{
if (value == _showAll) return;
_showAll = value;
NotifyOfPropertyChange(() => ShowAll);
}
}
public ImageSource KeyboardImage => ImageUtilities
.BitmapToBitmapImage(_deviceManager.ActiveKeyboard?.PreviewSettings.Image ?? Resources.none);
public bool Activated { get; set; }
private void DeviceManagerOnOnKeyboardChangedEvent(object sender, KeyboardChangedEventArgs e)
{
NotifyOfPropertyChange(() => KeyboardImage);