diff --git a/Artemis/Artemis/Artemis.csproj b/Artemis/Artemis/Artemis.csproj
index 13d87422d..8d31a8a77 100644
--- a/Artemis/Artemis/Artemis.csproj
+++ b/Artemis/Artemis/Artemis.csproj
@@ -321,6 +321,7 @@
+
diff --git a/Artemis/Artemis/DeviceProviders/Artemis/NoneKeyboard.cs b/Artemis/Artemis/DeviceProviders/Artemis/NoneKeyboard.cs
new file mode 100644
index 000000000..9aa51c19b
--- /dev/null
+++ b/Artemis/Artemis/DeviceProviders/Artemis/NoneKeyboard.cs
@@ -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;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Artemis/Artemis/InjectionModules/DeviceModules.cs b/Artemis/Artemis/InjectionModules/DeviceModules.cs
index 46839dd26..de64108ce 100644
--- a/Artemis/Artemis/InjectionModules/DeviceModules.cs
+++ b/Artemis/Artemis/InjectionModules/DeviceModules.cs
@@ -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().To().InSingletonScope();
Bind().To().InSingletonScope();
Bind().To().InSingletonScope();
Bind().To().InSingletonScope();
diff --git a/Artemis/Artemis/Modules/Effects/ProfilePreview/ProfilePreviewModel.cs b/Artemis/Artemis/Modules/Effects/ProfilePreview/ProfilePreviewModel.cs
index 2fb32ec1b..0b258f5fe 100644
--- a/Artemis/Artemis/Modules/Effects/ProfilePreview/ProfilePreviewModel.cs
+++ b/Artemis/Artemis/Modules/Effects/ProfilePreview/ProfilePreviewModel.cs
@@ -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
diff --git a/Artemis/Artemis/Profiles/Layers/Types/Generic/GenericType.cs b/Artemis/Artemis/Profiles/Layers/Types/Generic/GenericType.cs
index 0bd9b6dc0..97fde86e3 100644
--- a/Artemis/Artemis/Profiles/Layers/Types/Generic/GenericType.cs
+++ b/Artemis/Artemis/Profiles/Layers/Types/Generic/GenericType.cs
@@ -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;
diff --git a/Artemis/Artemis/Resources/Keyboards/default-profiles.zip b/Artemis/Artemis/Resources/Keyboards/default-profiles.zip
index c31d8020a..5713033cc 100644
Binary files a/Artemis/Artemis/Resources/Keyboards/default-profiles.zip and b/Artemis/Artemis/Resources/Keyboards/default-profiles.zip differ
diff --git a/Artemis/Artemis/ViewModels/Flyouts/FlyoutSettingsViewModel.cs b/Artemis/Artemis/ViewModels/Flyouts/FlyoutSettingsViewModel.cs
index 215b23bde..c038d47ba 100644
--- a/Artemis/Artemis/ViewModels/Flyouts/FlyoutSettingsViewModel.cs
+++ b/Artemis/Artemis/ViewModels/Flyouts/FlyoutSettingsViewModel.cs
@@ -70,11 +70,7 @@ namespace Artemis.ViewModels.Flyouts
{
get
{
- var collection = new BindableCollection
- (MainManager.DeviceManager.KeyboardProviders.Select(k => k.Name));
-
- collection.Insert(0, "None");
- return collection;
+ return new BindableCollection(MainManager.DeviceManager.KeyboardProviders.Select(k => k.Name));
}
}
diff --git a/Artemis/Artemis/ViewModels/Profiles/ProfileViewModel.cs b/Artemis/Artemis/ViewModels/Profiles/ProfileViewModel.cs
index 47605c4f7..6dce58e43 100644
--- a/Artemis/Artemis/ViewModels/Profiles/ProfileViewModel.cs
+++ b/Artemis/Artemis/ViewModels/Profiles/ProfileViewModel.cs
@@ -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);