123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- using PixiEditor.Helpers;
- using PixiEditor.Models.Controllers;
- using PixiEditor.Models.Controllers.Shortcuts;
- using System;
- using System.Windows.Input;
- namespace PixiEditor.ViewModels.SubViewModels.Main
- {
- public class IoViewModel : SubViewModel<ViewModelMain>
- {
- public RelayCommand MouseMoveCommand { get; set; }
- public RelayCommand MouseDownCommand { get; set; }
- public RelayCommand MouseUpCommand { get; set; }
- public RelayCommand KeyDownCommand { get; set; }
- public RelayCommand KeyUpCommand { get; set; }
- private bool restoreToolOnKeyUp = false;
- private MouseInputFilter filter = new();
- public IoViewModel(ViewModelMain owner)
- : base(owner)
- {
- MouseDownCommand = new RelayCommand(filter.MouseDown);
- MouseMoveCommand = new RelayCommand(filter.MouseMove);
- MouseUpCommand = new RelayCommand(filter.MouseUp);
- GlobalMouseHook.OnMouseUp += filter.MouseUp;
- KeyDownCommand = new RelayCommand(OnKeyDown);
- KeyUpCommand = new RelayCommand(OnKeyUp);
- filter.OnMouseDown += OnMouseDown;
- filter.OnMouseMove += OnMouseMove;
- filter.OnMouseUp += OnMouseUp;
- }
- private void OnKeyDown(object parameter)
- {
- KeyEventArgs args = (KeyEventArgs)parameter;
- if (args.IsRepeat && !restoreToolOnKeyUp && Owner.ShortcutController.LastShortcut != null &&
- Owner.ShortcutController.LastShortcut.Command == Owner.ToolsSubViewModel.SelectToolCommand)
- {
- restoreToolOnKeyUp = true;
- ShortcutController.BlockShortcutExecution = true;
- }
- Owner.ShortcutController.KeyPressed(args.Key, Keyboard.Modifiers);
- if (Owner.BitmapManager.ActiveDocument != null)
- Owner.BitmapManager.InputTarget.OnKeyDown(args.Key);
- }
- private void OnKeyUp(object parameter)
- {
- KeyEventArgs args = (KeyEventArgs)parameter;
- if (restoreToolOnKeyUp && Owner.ShortcutController.LastShortcut != null &&
- Owner.ShortcutController.LastShortcut.ShortcutKey == args.Key)
- {
- restoreToolOnKeyUp = false;
- Owner.ToolsSubViewModel.SetActiveTool(Owner.ToolsSubViewModel.LastActionTool);
- ShortcutController.BlockShortcutExecution = false;
- }
- if (Owner.BitmapManager.ActiveDocument != null)
- Owner.BitmapManager.InputTarget.OnKeyUp(args.Key);
- }
- private void OnMouseDown(object sender, MouseButton button)
- {
- if (button == MouseButton.Left)
- {
- BitmapManager bitmapManager = Owner.BitmapManager;
- var activeDocument = bitmapManager.ActiveDocument;
- if (activeDocument == null)
- return;
- bitmapManager.InputTarget.OnLeftMouseButtonDown(activeDocument.MouseXOnCanvas, activeDocument.MouseYOnCanvas);
- }
- }
- private void OnMouseMove(object sender, EventArgs args)
- {
- var activeDocument = Owner.BitmapManager.ActiveDocument;
- if (activeDocument == null)
- return;
- Owner.BitmapManager.InputTarget.OnMouseMove(activeDocument.MouseXOnCanvas, activeDocument.MouseYOnCanvas);
- }
- private void OnMouseUp(object sender, MouseButton button)
- {
- if (Owner.BitmapManager.ActiveDocument == null)
- return;
- if (button == MouseButton.Left)
- Owner.BitmapManager.InputTarget.OnLeftMouseButtonUp();
- }
- }
- }
|