using System; using System.Drawing; using Decal.Adapter.Support; using Decal.Interop.Inject; namespace Decal.Adapter.Wrappers; public class ButtonWrapper : ControlWrapperBase { private EventHandler evtClick; private EventHandler evtCancel; private EventHandler evtDestroy; private EventHandler evtHit; private EventHandler evtUnhit; private int myBackground; public Color Matte { get { return Util.ColorFromBGR(base.Control.Matte); } set { base.Control.Matte = Util.ColorToBGR(value); } } public int Background { get { return myBackground; } set { myBackground = value; base.Control.SetBackground(myBackground); } } public event EventHandler Click { add { if (evtClick == null) { base.Control.Accepted += ClickEvent; } evtClick = (EventHandler)Delegate.Combine(evtClick, value); } remove { evtClick = (EventHandler)Delegate.Remove(evtClick, value); if (evtClick == null) { base.Control.Accepted -= ClickEvent; } } } public event EventHandler Canceled { add { if (evtCancel == null) { base.Control.Canceled += CanceledEvent; } evtCancel = (EventHandler)Delegate.Combine(evtCancel, value); } remove { evtCancel = (EventHandler)Delegate.Remove(evtCancel, value); if (evtCancel == null) { base.Control.Canceled -= CanceledEvent; } } } public event EventHandler Destroy { add { if (evtDestroy == null) { base.Control.Destroy += DestroyEvent; } evtDestroy = (EventHandler)Delegate.Combine(evtDestroy, value); } remove { evtDestroy = (EventHandler)Delegate.Remove(evtDestroy, value); if (evtDestroy == null) { base.Control.Destroy -= DestroyEvent; } } } public event EventHandler Hit { add { if (evtHit == null) { base.Control.Hit += HitEvent; } evtHit = (EventHandler)Delegate.Combine(evtHit, value); } remove { evtHit = (EventHandler)Delegate.Remove(evtHit, value); if (evtHit == null) { base.Control.Hit -= HitEvent; } } } public event EventHandler Unhit { add { if (evtUnhit == null) { base.Control.Unhit += UnhitEvent; } evtUnhit = (EventHandler)Delegate.Combine(evtUnhit, value); } remove { evtUnhit = (EventHandler)Delegate.Remove(evtUnhit, value); if (evtUnhit == null) { base.Control.Unhit -= UnhitEvent; } } } protected override void Dispose(bool disposing) { if (disposing) { if (evtClick != null) { evtClick = (EventHandler)Delegate.Remove(evtClick, evtClick); base.Control.Accepted -= ClickEvent; } if (evtCancel != null) { evtCancel = (EventHandler)Delegate.Remove(evtCancel, evtCancel); base.Control.Canceled -= CanceledEvent; } if (evtDestroy != null) { evtDestroy = (EventHandler)Delegate.Remove(evtDestroy, evtDestroy); base.Control.Destroy -= DestroyEvent; } if (evtHit != null) { evtHit = (EventHandler)Delegate.Remove(evtHit, evtHit); base.Control.Hit -= HitEvent; } if (evtUnhit != null) { evtUnhit = (EventHandler)Delegate.Remove(evtUnhit, evtUnhit); base.Control.Unhit -= UnhitEvent; } } base.Dispose(disposing); } public void SetImages(int released, int pressed) { SetImages(0, released, pressed); } public void SetImages(int module, int released, int pressed) { base.Control.SetImages(module, released, pressed); } private void ClickEvent(int ID) { if (evtClick != null) { evtClick(this, new ControlEventArgs(ID)); } } private void UnhitEvent(int ID) { if (evtUnhit != null) { evtUnhit(this, new ControlEventArgs(ID)); } } private void HitEvent(int ID) { if (evtHit != null) { evtHit(this, new ControlEventArgs(ID)); } } private void DestroyEvent(int ID) { if (evtDestroy != null) { evtDestroy(this, new ControlEventArgs(ID)); } } private void CanceledEvent(int ID) { if (evtCancel != null) { evtCancel(this, new ControlEventArgs(ID)); } } }