using System.Runtime.InteropServices; using Decal.Interop.Controls; using Decal.Interop.Inject; using CmdDestroy = Decal.Interop.Inject.ICommandEvents_DestroyEventHandler; using CmdHit = Decal.Interop.Inject.ICommandEvents_HitEventHandler; using CmdUnhit = Decal.Interop.Inject.ICommandEvents_UnhitEventHandler; using CmdAccepted = Decal.Interop.Inject.ICommandEvents_AcceptedEventHandler; using CmdCanceled = Decal.Interop.Inject.ICommandEvents_CanceledEventHandler; namespace Decal.DecalControls { [ComVisible(true)] [Guid("AE4525BE-81D1-40FB-9170-77172077EB49")] [ClassInterface(ClassInterfaceType.None)] [ComSourceInterfaces("Decal.Interop.Inject.ICommandEvents\0\0")] [ProgId("DecalControls.PushButton")] public class PushButtonImpl : ControlBase, IPushButton { public event CmdDestroy Destroy; public event CmdHit Hit; public event CmdUnhit Unhit; public event CmdAccepted Accepted; public event CmdCanceled Canceled; private IImageCache _image; private IFontCache _font; private string _text = ""; private int _faceColor; private int _textColor; public IImageCache Image { get => _image; set { _image = value; Invalidate(); } } public IFontCache Font { get => _font; set { _font = value; Invalidate(); } } public string Text { get => _text; set { _text = value; Invalidate(); } } public int FaceColor { get => _faceColor; set { _faceColor = value; Invalidate(); } } public int TextColor { get => _textColor; set { _textColor = value; Invalidate(); } } protected override void OnDestroy() => Destroy?.Invoke(ID); internal void FireHit() => Hit?.Invoke(ID); internal void FireUnhit() => Unhit?.Invoke(ID); internal void FireAccepted() => Accepted?.Invoke(ID); internal void FireCanceled() => Canceled?.Invoke(ID); } }