StructureMemberIsVisible_Change.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using PixiEditor.ChangeableDocument.Changeables;
  2. using PixiEditor.ChangeableDocument.ChangeInfos;
  3. using PixiEditor.ChangeableDocument.ChangeInfos.Properties;
  4. namespace PixiEditor.ChangeableDocument.Changes.Properties;
  5. internal class StructureMemberIsVisible_Change : Change
  6. {
  7. private bool? originalIsVisible;
  8. private bool newIsVisible;
  9. private Guid targetMember;
  10. [GenerateMakeChangeAction]
  11. public StructureMemberIsVisible_Change(bool isVisible, Guid memberGuid)
  12. {
  13. this.targetMember = memberGuid;
  14. this.newIsVisible = isVisible;
  15. }
  16. public override void Initialize(Document target)
  17. {
  18. var member = target.FindMemberOrThrow(targetMember);
  19. originalIsVisible = member.IsVisible;
  20. }
  21. public override IChangeInfo? Apply(Document target, out bool ignoreInUndo)
  22. {
  23. // don't record layer/folder visibility changes - it's just more convenient this way
  24. ignoreInUndo = true;
  25. if (originalIsVisible == newIsVisible)
  26. return null;
  27. target.FindMemberOrThrow(targetMember).IsVisible = newIsVisible;
  28. return new StructureMemberIsVisible_ChangeInfo() { GuidValue = targetMember };
  29. }
  30. public override IChangeInfo? Revert(Document target)
  31. {
  32. target.FindMemberOrThrow(targetMember).IsVisible = originalIsVisible!.Value;
  33. return new StructureMemberIsVisible_ChangeInfo() { GuidValue = targetMember };
  34. }
  35. }