Tool.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using PixiEditor.Helpers;
  2. using PixiEditor.Helpers.Extensions;
  3. using PixiEditor.Models.Controllers;
  4. using PixiEditor.Models.Tools.ToolSettings;
  5. using PixiEditor.Models.Tools.ToolSettings.Toolbars;
  6. using System.Windows.Input;
  7. using SkiaSharp;
  8. namespace PixiEditor.Models.Tools
  9. {
  10. public abstract class Tool : NotifyableObject
  11. {
  12. public Key ShortcutKey { get; set; }
  13. public virtual string ToolName => GetType().Name.Replace("Tool", string.Empty);
  14. public virtual string DisplayName => ToolName.AddSpacesBeforeUppercaseLetters();
  15. public virtual string ImagePath => $"/Images/Tools/{ToolName}Image.png";
  16. public virtual bool HideHighlight { get; }
  17. public virtual bool RequiresPreciseMouseData { get; }
  18. public abstract string Tooltip { get; }
  19. public string ActionDisplay
  20. {
  21. get => actionDisplay;
  22. set
  23. {
  24. actionDisplay = value;
  25. RaisePropertyChanged("ActionDisplay");
  26. }
  27. }
  28. public bool IsActive
  29. {
  30. get => isActive;
  31. set
  32. {
  33. isActive = value;
  34. RaisePropertyChanged("IsActive");
  35. }
  36. }
  37. public Cursor Cursor { get; set; } = Cursors.Arrow;
  38. public Toolbar Toolbar { get; set; } = new EmptyToolbar();
  39. public ToolSession Session { get; set; }
  40. private bool isActive;
  41. private string actionDisplay = string.Empty;
  42. public virtual void OnKeyDown(Key key) { }
  43. public virtual void OnKeyUp(Key key) { }
  44. public virtual void BeforeUse() { }
  45. /// <summary>
  46. /// Called when the tool finished executing
  47. /// </summary>
  48. /// <param name="sessionRect">A rectangle which was created during session</param>
  49. public virtual void AfterUse(SKRectI sessionRect) { }
  50. public virtual void UpdateActionDisplay(bool ctrlIsDown, bool shiftIsDown, bool altIsDown) { }
  51. }
  52. }