/// <summary> /// Creates a toggle button. /// </summary> /// <param name="state1TriggerDelegate">Delegate to call when button is switched to state 1.</param> /// <param name="state2TriggerDelegate">Delegate to call when button is switched to state 2.</param> /// <param name="triggerType">When is button "triggered"?</param> /// <param name="initialState">Starting state of toggle button.</param> public void Initialize(System.EventHandler <System.EventArgs> state1TriggerDelegate, System.EventHandler <System.EventArgs> state2TriggerDelegate, TriggerType triggerType = TriggerType.ON_PRESS, ToggleButtonState initialState = ToggleButtonState.STATE1) { base.InitializeElement(); // Make sure element has a PressGesture component m_pressGesture = this.gameObject.AddComponentNoDupe <PressGesture>(); // No need for ReleaseGesture - this script has a different implementation for release m_triggerType = triggerType; switch (triggerType) { case TriggerType.ON_PRESS: default: AddPressDelegate(state1TriggerDelegate, ToggleButtonState.STATE1); AddPressDelegate(state2TriggerDelegate, ToggleButtonState.STATE2); break; case TriggerType.ON_RELEASE: AddReleaseDelegate(state1TriggerDelegate, ToggleButtonState.STATE1); AddReleaseDelegate(state2TriggerDelegate, ToggleButtonState.STATE2); break; } m_toggleButtonState = initialState; // Apply button sprite for the starting state m_spriteRenderer.sprite = (initialState == ToggleButtonState.STATE1) ? m_state1UnpressedSprite : m_state2UnpressedSprite; }
/// <summary> /// Sets button sprites for the specified toggle button state. /// </summary> /// <param name="state1UnpressedSprite">Unpressed sprite for state 1.</param> /// <param name="state1UnpressedSprite">Pressed sprite for state 1.</param> /// <param name="state">State to assign button sprites for.</param> public void SetSprites(Sprite unpressedSprite, Sprite pressedSprite, ToggleButtonState state) { if (state == ToggleButtonState.STATE1) { m_state1UnpressedSprite = unpressedSprite; m_state1PressedSprite = pressedSprite; } else { m_state2UnpressedSprite = unpressedSprite; m_state2PressedSprite = pressedSprite; } }
/// <summary> /// Updates the touch that is on this button. /// </summary> private void UpdateActiveTouch() { if (m_activeTouch == null) { return; } // If touch is released while over this button, trigger the release event if (!TouchManager.Instance.ActiveTouches.Contains(m_activeTouch)) { // On release, toggle between state 1 and state 2 if (IsInState1) { // Toggle to state 2 (*before* calling release delegates) m_toggleButtonState = ToggleButtonState.STATE2; // Call release delegates for state 1 foreach (System.EventHandler <System.EventArgs> releaseDelegate in m_state1ReleaseDelegateSet) { releaseDelegate(this, new System.EventArgs()); } // Update press delegates for state 2 RemoveDelegatesFromPressGesture(m_state1PressDelegateSet); AddDelegatesToPressGesture(m_state2PressDelegateSet); } else { // Toggle to state 1 (*before* calling release delegates) m_toggleButtonState = ToggleButtonState.STATE1; // Call release delegates for state 2 foreach (System.EventHandler <System.EventArgs> releaseDelegate in m_state2ReleaseDelegateSet) { releaseDelegate(this, new System.EventArgs()); } // Update press delegates for state 1 RemoveDelegatesFromPressGesture(m_state2PressDelegateSet); AddDelegatesToPressGesture(m_state1PressDelegateSet); } } // If touch is moved off this button, call the OnButtonRelease method only else if (m_activeTouch.Hit == null || m_activeTouch.Hit.Transform != this.transform) { OnButtonRelease(this, new System.EventArgs()); } }
public void DrawSlider(PaintEventArgs e, Point p, ToggleButtonState toggleState, SliderCollection slider, Font font, RightToLeft righttoLeft, bool isMouseMove, bool isMouseHover) { e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; Rectangle controlrect = new Rectangle(e.ClipRectangle.X, e.ClipRectangle.Y, slider.Width, slider.Width - 1); Rectangle t_sliderRectangle; if (!isMouseMove) { if (toggleState == ToggleButtonState.Inactive) { t_sliderRectangle = new Rectangle(e.ClipRectangle.X, e.ClipRectangle.Y, e.ClipRectangle.Height - 1, e.ClipRectangle.Height - 1); } else { t_sliderRectangle = new Rectangle(e.ClipRectangle.X + e.ClipRectangle.Width - e.ClipRectangle.Height, e.ClipRectangle.Y, e.ClipRectangle.Height - 1, e.ClipRectangle.Height - 1); } } else { t_sliderRectangle = new Rectangle(p.X, e.ClipRectangle.Y, e.ClipRectangle.Height - 1, e.ClipRectangle.Height - 1); } if (isMouseHover) { using (SolidBrush br = new SolidBrush(slider.BackColor)) { e.Graphics.FillEllipse(br, t_sliderRectangle); using (Pen pn = new Pen(Color.Gray, 2)) e.Graphics.DrawEllipse(pn, t_sliderRectangle); } } else { using (SolidBrush br = new SolidBrush(slider.BackColor)) { e.Graphics.FillEllipse(br, t_sliderRectangle); e.Graphics.DrawEllipse(Pens.Gray, t_sliderRectangle); } } }
/// <summary> /// Creates a toggle button with the specified button sprites for the two toggle button states. /// </summary> /// <param name="state1TriggerDelegate">Delegate to call when button is switched to state 1.</param> /// <param name="state2TriggerDelegate">Delegate to call when button is switched to state 2.</param> /// <param name="triggerType">When is button "triggered"?</param> /// <param name="state1UnpressedSprite">Unpressed sprite for toggle button state 1.</param> /// <param name="state1PressedSprite">Pressed sprite for toggle button state 1.</param> /// <param name="state2UnpressedSprite">Unpressed sprite for toggle button state 2.</param> /// <param name="state2PressedSprite">Pressed sprite for toggle button state 2.</param> /// <param name="initialState">Starting state of toggle button.</param> public void Initialize(System.EventHandler <System.EventArgs> state1TriggerDelegate, System.EventHandler <System.EventArgs> state2TriggerDelegate, TriggerType triggerType, Sprite state1UnpressedSprite, Sprite state1PressedSprite, Sprite state2UnpressedSprite, Sprite state2PressedSprite, ToggleButtonState initialState = ToggleButtonState.STATE1) { Initialize(state1TriggerDelegate, state2TriggerDelegate, triggerType); // If pressed sprite parameters are left empty, use the unpressed sprite if (state1PressedSprite == null) { state1PressedSprite = state1UnpressedSprite; } if (state2PressedSprite == null) { state2PressedSprite = state2UnpressedSprite; } // Set sprites for the appropriate toggle button states SetSprites(state1UnpressedSprite, state1PressedSprite, ToggleButtonState.STATE1); SetSprites(state2UnpressedSprite, state2PressedSprite, ToggleButtonState.STATE2); }
/// <summary> /// Adds button press and release sound delegates for the specified toggle button state. /// </summary> /// <returns><c>true</c>, if at least one sound delegate was added, <c>false</c> otherwise.</returns> /// <param name="pressSoundDelegate">Press sound delegate.</param> /// <param name="releaseSoundDelegate">Release sound delegate.</param> public bool AddSoundDelegates(System.EventHandler <System.EventArgs> pressSoundDelegate, System.EventHandler <System.EventArgs> releaseSoundDelegate, ToggleButtonState state) { bool delegateAdded = false; if (pressSoundDelegate != null && AddPressDelegate(pressSoundDelegate, state)) { delegateAdded = true; } if (releaseSoundDelegate != null) { if (state == ToggleButtonState.STATE1) { m_state1ButtonReleaseSoundDelegate = releaseSoundDelegate; } else { m_state2ButtonReleaseSoundDelegate = releaseSoundDelegate; } delegateAdded = true; } return(delegateAdded); }
public void SetValueSilently(ToggleButtonState value) { Control.innerHTML = value.TextOrPercentage; var n = new ClassNameLiteralSupport { Control = Control }; //if (_Value_Old != null) //{ // n.className -= _Value_Old.StyleClass; //} //n.className += value.StyleClass; _Value_Old = value; }
public void DrawButton(PaintEventArgs e, ToggleButtonState toggleState, DisplayType displayMode, Font font, ActiveStateCollection activeState, InactiveStateCollection inactiveState, RightToLeft righttoLeft, bool isMouseHover, ToggleButton togglebutton) { string displaytext = toggleState == ToggleButtonState.Active ? activeState.Text : inactiveState.Text; SizeF textsize = e.Graphics.MeasureString(displaytext, font); Rectangle controlrect = new Rectangle(e.ClipRectangle.X + 1, e.ClipRectangle.Y + 1, e.ClipRectangle.Width - 4, e.ClipRectangle.Height - 4); e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; GraphicsPath gp = new GraphicsPath(); using (LinearGradientBrush br = new LinearGradientBrush(e.ClipRectangle, ColorTranslator.FromHtml("#007feb"), ColorTranslator.FromHtml("#51a7f2"), LinearGradientMode.Vertical)) { if (controlrect.Height > 1) { gp.AddArc(controlrect.X, controlrect.Y, controlrect.Height, controlrect.Height, 180, 90); gp.AddArc(controlrect.X + controlrect.Width - controlrect.Height, controlrect.Y, controlrect.Height, controlrect.Height, 270, 90); gp.AddArc(controlrect.X + controlrect.Width - controlrect.Height, controlrect.Y + controlrect.Height - controlrect.Height, controlrect.Height, controlrect.Height, 0, 90); gp.AddArc(controlrect.X, controlrect.Y + controlrect.Height - controlrect.Height, controlrect.Height, controlrect.Height, 90, 90); gp.CloseFigure(); e.Graphics.DrawPath(new Pen(ColorTranslator.FromHtml("#002f69"), 2), gp); } } GraphicsPath gp1 = new GraphicsPath(); using (LinearGradientBrush br = new LinearGradientBrush(e.ClipRectangle, ColorTranslator.FromHtml("#007feb"), ColorTranslator.FromHtml("#51a7f2"), LinearGradientMode.Vertical)) { if (controlrect.Height > 1) { gp1.AddArc(controlrect.X, controlrect.Y + 1, controlrect.Height + 2, controlrect.Height, 180, 90); gp1.AddArc(controlrect.X + controlrect.Width - controlrect.Height, controlrect.Y, controlrect.Height, controlrect.Height, 270, 90); gp1.AddArc(controlrect.X + 1 + controlrect.Width - controlrect.Height, controlrect.Y + controlrect.Height - controlrect.Height, controlrect.Height, controlrect.Height, 0, 90); gp1.AddArc(controlrect.X, controlrect.Y + controlrect.Height - controlrect.Height, controlrect.Height, controlrect.Height, 90, 90); gp1.CloseFigure(); e.Graphics.FillPath(br, gp1); gp1.Dispose(); } } GraphicsPath gp2 = new GraphicsPath(); using (LinearGradientBrush br = new LinearGradientBrush(e.ClipRectangle, ColorTranslator.FromHtml("#51a7f2"), ColorTranslator.FromHtml("#51a7f2"), LinearGradientMode.Vertical)) { if (controlrect.Height > 1) { gp2.AddArc(controlrect.X + 5, controlrect.Y + controlrect.Height / 2, controlrect.Height - controlrect.Height / 2, controlrect.Height / 2, 180, 90); gp2.AddArc(controlrect.X + 5 + controlrect.Width - controlrect.Height, controlrect.Y + controlrect.Height / 2, controlrect.Height - controlrect.Height / 2, controlrect.Height / 2, 270, 90); gp2.AddArc(controlrect.X + 5 + controlrect.Width - controlrect.Height, controlrect.Y + controlrect.Height - controlrect.Height + controlrect.Height / 2, controlrect.Height - controlrect.Height / 2, controlrect.Height / 2, 0, 90); gp2.AddArc(controlrect.X + 5, controlrect.Y + controlrect.Height - controlrect.Height + controlrect.Height / 2, controlrect.Height - controlrect.Height / 2, controlrect.Height / 2, 90, 90); gp2.CloseFigure(); e.Graphics.FillPath(br, gp2); gp2.Dispose(); } } if (isMouseHover) { using (SolidBrush br = new SolidBrush(ColorTranslator.FromHtml("#51a7f2"))) { e.Graphics.FillPath(br, gp); } } PointF pt1 = new PointF(e.ClipRectangle.X + e.ClipRectangle.Width / 2 - textsize.Width / 2, e.ClipRectangle.Y + e.ClipRectangle.Height / 2 - textsize.Height / 2); using (SolidBrush br = new SolidBrush(activeState.ForeColor)) { if (displayMode == DisplayType.Text) { e.Graphics.DrawString(displaytext, font, br, pt1); } } gp.Dispose(); }
private void setImgState(ToggleButtonState state) { imgBrush.Viewbox = imgRects[state]; }
private void RefreshToggleState(ToggleButtonState state) { this.ToggleState = state; justRefresh = true; }
public ToggleButtonStateEventArgs(ToggleButtonState ButtonState) { }
/// <summary> /// Removes a release delegate for the specified toggle button state. /// </summary> /// <returns><c>true</c>, if release delegate was removed, <c>false</c> otherwise.</returns> /// <param name="releaseDelegate">Release delegate to remove.</param> /// <param name="state">State to remove delegate from.</param> public bool RemoveReleaseDelegate(System.EventHandler <System.EventArgs> releaseDelegate, ToggleButtonState state) { if (state == ToggleButtonState.STATE1) { return(m_state1ReleaseDelegateSet.Remove(releaseDelegate)); } return(m_state2ReleaseDelegateSet.Remove(releaseDelegate)); }
/// <summary> /// Removes a press delegate for the specified toggle button state. /// </summary> /// <returns><c>true</c>, if press delegate was removed, <c>false</c> otherwise.</returns> /// <param name="pressDelegate">Press delegate to remove.</param> /// <param name="state">State to remove delegate from.</param> public bool RemovePressDelegate(System.EventHandler <System.EventArgs> pressDelegate, ToggleButtonState state) { switch (state) { case ToggleButtonState.STATE1: default: if (m_state1PressDelegateSet.Remove(pressDelegate)) { if (IsInState1) { m_pressGesture.Pressed -= pressDelegate; } return(true); } break; case ToggleButtonState.STATE2: if (m_state2PressDelegateSet.Remove(pressDelegate)) { if (IsInState2) { m_pressGesture.Pressed -= pressDelegate; } return(true); } break; } return(false); }
internal override void ParseXEvent(System.IntPtr call, System.IntPtr client) { var callData = (Native.Motif.XmStruct.XmToggleButtonCallbackStruct) Marshal.PtrToStructure(call, typeof(Native.Motif.XmStruct.XmToggleButtonCallbackStruct )); Reason = ConvertReason(callData.reason); Set = (ToggleButtonState)callData.set; }