1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2026-01-01 18:23:32 +00:00

Disable layers by default when Toggle Enable keybind is first keybind

Layer editor move and resize selected layer when underneath other layers
Fix copy-paste crash
This commit is contained in:
SpoinkyNL 2017-04-30 22:34:11 +02:00
parent 954f4864d8
commit 5c8968a32d
5 changed files with 545 additions and 520 deletions

View File

@ -61,7 +61,7 @@ namespace Artemis
} }
// If there is another type of of IInputControl get the non-scaled position - or do some processing to get a scaled position, whatever needs to happen // If there is another type of of IInputControl get the non-scaled position - or do some processing to get a scaled position, whatever needs to happen
if ((e != null) && (input != null)) if (e != null && input != null)
return e.GetPosition(input).X; return e.GetPosition(input).X;
// Return 0 if no processing could be done // Return 0 if no processing could be done
@ -98,7 +98,7 @@ namespace Artemis
logger.Info("Artemis was run using the autorun shortcut, sleeping for 15 sec."); logger.Info("Artemis was run using the autorun shortcut, sleeping for 15 sec.");
Thread.Sleep(15000); Thread.Sleep(15000);
} }
InputHook.Start();
_kernel = new StandardKernel(new BaseModules(), new ManagerModules()); _kernel = new StandardKernel(new BaseModules(), new ManagerModules());
_kernel.Bind<IWindowManager>().To<WindowManager>().InSingletonScope(); _kernel.Bind<IWindowManager>().To<WindowManager>().InSingletonScope();
@ -145,6 +145,7 @@ namespace Artemis
protected override void OnStartup(object sender, StartupEventArgs e) protected override void OnStartup(object sender, StartupEventArgs e)
{ {
DisplayRootViewFor<ShellViewModel>(); DisplayRootViewFor<ShellViewModel>();
InputHook.Start();
} }
} }
} }

View File

@ -63,9 +63,15 @@ namespace Artemis.Profiles.Layers.Models
switch (ToggleType) switch (ToggleType)
{ {
case ToggleType.Enable: case ToggleType.Enable:
// Apply RenderAllowed only if this is the first keybind
if (index == 0)
layerModel.RenderAllowed = false;
action = () => layerModel.RenderAllowed = true; action = () => layerModel.RenderAllowed = true;
break; break;
case ToggleType.Disable: case ToggleType.Disable:
// Apply RenderAllowed only if this is the first keybind
if (index == 0)
layerModel.RenderAllowed = false;
action = () => layerModel.RenderAllowed = false; action = () => layerModel.RenderAllowed = false;
break; break;
case ToggleType.Toggle: case ToggleType.Toggle:

View File

@ -324,7 +324,7 @@ namespace Artemis.ViewModels
public void LayerToClipboard() public void LayerToClipboard()
{ {
if (SelectedLayer == null || !ActiveWindowHelper.MainWindowActive) if (SelectedLayer == null || !ActiveWindowHelper.MainWindowActive || !IsActive)
return; return;
// Probably not how the cool kids do it but leveraging on JsonConvert gives flawless serialization // Probably not how the cool kids do it but leveraging on JsonConvert gives flawless serialization
@ -333,9 +333,11 @@ namespace Artemis.ViewModels
public void ClipboardToLayer() public void ClipboardToLayer()
{ {
if (!ActiveWindowHelper.MainWindowActive) if (!ActiveWindowHelper.MainWindowActive || !IsActive)
return; return;
try
{
GeneralHelpers.ExecuteSta(() => GeneralHelpers.ExecuteSta(() =>
{ {
var data = (string) Clipboard.GetData("layer"); var data = (string) Clipboard.GetData("layer");
@ -356,6 +358,11 @@ namespace Artemis.ViewModels
Execute.OnUIThread(() => UpdateLayerList(layerModel)); Execute.OnUIThread(() => UpdateLayerList(layerModel));
}); });
} }
catch (Exception)
{
// ignored
}
}
private void UpdateLayerList(LayerModel selectModel) private void UpdateLayerList(LayerModel selectModel)
{ {
@ -665,7 +672,7 @@ namespace Artemis.ViewModels
return; return;
var pos = GetScaledPosition(e); var pos = GetScaledPosition(e);
var hoverLayer = GetLayers().Where(l => l.MustDraw()).FirstOrDefault(l => l.Properties.PropertiesRect(1).Contains(pos.X, pos.Y)); var hoverLayer = GetHoverLayer(pos.X, pos.Y);
if (hoverLayer != null) if (hoverLayer != null)
SelectedLayer = hoverLayer; SelectedLayer = hoverLayer;
@ -681,7 +688,7 @@ namespace Artemis.ViewModels
return; return;
var pos = GetScaledPosition(e); var pos = GetScaledPosition(e);
var hoverLayer = GetLayers().Where(l => l.MustDraw()).FirstOrDefault(l => l.Properties.PropertiesRect(1).Contains(pos.X, pos.Y)); var hoverLayer = GetHoverLayer(pos.X, pos.Y);
HandleDragging(e, pos.X, pos.Y, hoverLayer); HandleDragging(e, pos.X, pos.Y, hoverLayer);
@ -703,6 +710,8 @@ namespace Artemis.ViewModels
KeyboardPreviewCursor = Cursors.Hand; KeyboardPreviewCursor = Cursors.Hand;
} }
private Point GetScaledPosition(MouseEventArgs e) private Point GetScaledPosition(MouseEventArgs e)
{ {
var previewSettings = _deviceManager.ActiveKeyboard.PreviewSettings; var previewSettings = _deviceManager.ActiveKeyboard.PreviewSettings;
@ -723,6 +732,15 @@ namespace Artemis.ViewModels
return pos; return pos;
} }
private LayerModel GetHoverLayer(double x, double y)
{
// Prefer the selected layer as the hover layer even if it's underneath something else
if (SelectedLayer != null && SelectedLayer.Properties.PropertiesRect(1).Contains(x, y))
return SelectedLayer;
return GetLayers().Where(l => l.MustDraw()).FirstOrDefault(l => l.Properties.PropertiesRect(1).Contains(x, y));
}
public Cursor KeyboardPreviewCursor public Cursor KeyboardPreviewCursor
{ {
get { return _keyboardPreviewCursor; } get { return _keyboardPreviewCursor; }