public SquareRootToken () { child = BuildProperty<Token> ("Child"); child.DependencyPropertyValueChanged += HandleValueChanged; Child = new TextToken (); }
public override void Replace (Token oldToken, Token newToken) { if (oldToken == Base) Base = newToken; if (oldToken == Power) Power = newToken; }
public override void Replace (Token oldToken, Token newToken) { if (oldToken == Dividend) Dividend = newToken; if (oldToken == Divisor) Divisor = newToken; }
public ExponentiationToken () { _base = BuildProperty<Token> ("Base"); _base.DependencyPropertyValueChanged += HandleValueChanged; power = BuildProperty<Token> ("Power"); power.DependencyPropertyValueChanged += HandleValueChanged; Base = new TextToken (); Power = new TextToken (); }
public FractionToken () { dividend = BuildProperty<Token> ("Dividend"); dividend.DependencyPropertyValueChanged += HandleValueChanged; divisor = BuildProperty<Token> ("Divisor"); divisor.DependencyPropertyValueChanged += HandleValueChanged; Dividend = new TextToken (); Divisor = new TextToken (); }
private HBoxToken GetHBoxToken (Token token) { if (token.Parent is HBoxToken == false) { var parent = token.Parent; var container = new HBoxToken (); parent.Replace (token, container); container.Add (token); } return token.Parent as HBoxToken; }
public override void Replace (Token oldToken, Token newToken) { Child = newToken; }
private Area GetArea (Token token, UIElement uielement) { if (uielement == null) return null; if (uielement is FrameworkElement && (uielement as FrameworkElement).DataContext == token) return uielement as Area; for (int i = 0; i < uielement.VisualChildrenCount; i++) { var child = GetArea (token, uielement.GetVisualChild (i) as UIElement); if (child != null) return child; } return null; }
public IEnumerable<SelectionToken> Build (Token token) { if (token is HBoxToken) { var hbox = token as HBoxToken; foreach (var child in hbox.Tokens.Where(c => !IsOperator(c))) { foreach (var node in Build(child)) yield return node; } } if (token is FractionToken) { var fraction = token as FractionToken; yield return new SelectionToken (SelectionType.Left, fraction); foreach (var node in Build(fraction.Dividend)) yield return node; foreach (var node in Build(fraction.Divisor)) yield return node; yield return new SelectionToken (SelectionType.Right, fraction); } if (token is TextToken) yield return new SelectionToken (Type, token); if (token is ParenthesesToken) { var parentheses = token as ParenthesesToken; yield return new SelectionToken (SelectionType.Left, parentheses); foreach (var node in Build(parentheses.Child)) yield return node; yield return new SelectionToken (SelectionType.Right, parentheses); } if (token is ExponentiationToken) { var exponentiation = token as ExponentiationToken; yield return new SelectionToken (SelectionType.Left, exponentiation); foreach (var node in Build(exponentiation.Base)) yield return node; foreach (var node in Build(exponentiation.Power)) yield return node; yield return new SelectionToken (SelectionType.Right, exponentiation); } if (token is SquareRootToken) { var squareRoot = token as SquareRootToken; yield return new SelectionToken (SelectionType.Left, squareRoot); foreach (var node in Build(squareRoot.Child)) yield return node; yield return new SelectionToken (SelectionType.Right, squareRoot); } if (token is AbsoluteToken) { var absolute = token as AbsoluteToken; yield return new SelectionToken (SelectionType.Left, absolute); foreach (var node in Build(absolute.Child)) yield return node; yield return new SelectionToken (SelectionType.Right, absolute); } }
public SelectionToken (SelectionType type, Token token) { Type = type; Token = token; }
private bool IsOperator (Token token) { return token is PlusToken || token is MinusToken || token is MultiplicationToken; }
public abstract void Replace (Token oldToken, Token newToken);
public InsertHBinaryOperation (MathRegionViewModel region, Token operation) { Region = region; Operation = operation; }