| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- using Client.MirSounds;
- namespace Client.MirControls
- {
- public class MirButton : MirImageControl
- {
- #region Font Colour
- public virtual Color FontColour
- {
- get
- {
- if (_label != null && !_label.IsDisposed)
- return _label.ForeColour;
- return Color.Empty;
- }
- set
- {
- if (_label != null && !_label.IsDisposed)
- _label.ForeColour = value;
- }
- }
- #endregion
- #region Hover Index
- private int _hoverIndex;
- public int HoverIndex
- {
- get { return _hoverIndex; }
- set
- {
- if (_hoverIndex == value)
- return;
- _hoverIndex = value;
- OnHoverIndexChanged();
- }
- }
- public event EventHandler HoverIndexChanged;
- private void OnHoverIndexChanged()
- {
- if (HoverIndexChanged != null)
- HoverIndexChanged.Invoke(this, EventArgs.Empty);
- }
- #endregion
- #region Index
- public override int Index
- {
- get
- {
- if (!Enabled)
- return _disabledIndex >= 0 ? _disabledIndex : base.Index;
- if (_pressedIndex >= 0 && ActiveControl == this && MouseControl == this)
- return _pressedIndex;
- if (_hoverIndex >= 0 && MouseControl == this)
- return _hoverIndex;
- return base.Index;
- }
- set { base.Index = value; }
- }
- #endregion
- #region Label
- protected MirLabel _label;
- #endregion
- #region CenterText
- protected bool _center;
- public virtual bool CenterText
- {
- get
- {
- return _center;
- }
- set
- {
- _center = value;
- if (_center)
- {
- _label.Size = Size;
- _label.DrawFormat = TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter;
- }
- else
- _label.AutoSize = true;
- }
- }
- #endregion
- #region Pressed Index
- private int _pressedIndex;
- public int PressedIndex
- {
- set
- {
- if (_pressedIndex == value)
- return;
- _pressedIndex = value;
- OnPressedIndexChanged();
- }
- get { return _pressedIndex; }
- }
- public event EventHandler PressedIndexChanged;
- private void OnPressedIndexChanged()
- {
- if (PressedIndexChanged != null)
- PressedIndexChanged.Invoke(this, EventArgs.Empty);
- }
- #endregion
- #region Disabled Index
- private int _disabledIndex;
- public int DisabledIndex
- {
- set
- {
- if (_disabledIndex == value)
- return;
- _disabledIndex = value;
- OnDisabledIndexChanged();
- }
- get { return _disabledIndex; }
- }
- public event EventHandler DisabledIndexChanged;
- private void OnDisabledIndexChanged()
- {
- if (DisabledIndexChanged != null)
- DisabledIndexChanged.Invoke(this, EventArgs.Empty);
- }
- #endregion
- #region Size
- protected override void OnSizeChanged()
- {
- base.OnSizeChanged();
- if (_label != null && !_label.IsDisposed)
- _label.Size = Size;
- }
- #endregion
- #region Text
- public virtual string Text
- {
- set
- {
- if (_label == null || _label.IsDisposed)
- return;
- _label.Text = value;
- _label.Visible = !string.IsNullOrEmpty(value);
- }
- }
- #endregion
- public bool OnlyDrawWhenActive;
- public MirButton()
- {
- HoverIndex = -1;
- PressedIndex = -1;
- DisabledIndex = -1;
- Sound = SoundList.ButtonB;
- _label = new MirLabel
- {
- NotControl = true,
- Parent = this,
- //Font = new Font("Constantia", 8, FontStyle.Italic),
- //OutLine = true,
- //OutLineColour = Color.FromArgb(255, 70, 50, 30),
- };
- }
- protected internal override void DrawControl()
- {
- if (OnlyDrawWhenActive && ActiveControl != this && MouseControl != this)
- return;
- base.DrawControl();
- }
- protected override void Highlight()
- {
- Redraw();
- base.Highlight();
- }
- protected override void Activate()
- {
- Redraw();
- base.Activate();
- }
- protected override void Dehighlight()
- {
- Redraw();
- base.Dehighlight();
- }
- protected override void Deactivate()
- {
- Redraw();
- base.Deactivate();
- }
- #region Disposable
- protected override void Dispose(bool disposing)
- {
- base.Dispose(disposing);
- if (!disposing) return;
- HoverIndexChanged = null;
- _hoverIndex = 0;
- if (_label != null && !_label.IsDisposed)
- _label.Dispose();
- _label = null;
- PressedIndexChanged = null;
- _pressedIndex = 0;
- DisabledIndexChanged = null;
- _disabledIndex = 0;
- }
- #endregion
- }
- }
|