protected virtual void OnExpressionChanged(IExpressionView obj) { Action <IExpressionView> handler = ExpressionChanged; if (handler != null) { handler(obj); } }
private async Task ReEvaluate() { _lastRequestTime = DateTime.Now; if (_isEvaluating) { return; } DateTime initialRequesetTime = _lastRequestTime; _isEvaluating = true; LineExpression[] expressions = _processingView.Expressions.TakeWhile(r => r.IsValid) .Select(r => new LineExpression(r.Name, r.Expression)) .ToArray(); string input = _processingView.ExampleText; Argument[] results = await Task.Factory.StartNew(delegate { var processor = new Processor(_provider, expressions); return(processor.Parse(input).All.ToArray()); }); _isEvaluating = false; for (int i = 1; i < results.Length; i++) { IValue value = results[i].ArgumentValue; IExpressionView expression = _processingView.Expressions.FirstOrDefault(e => e.Name == results[i].Name); if (expression == null) { continue; } if (value.HasError) { expression.Value = "#ERR"; expression.Error = value.ErrorMessage; } else { expression.Value = value.UntypedValue.ToString(); expression.Error = null; } } if (initialRequesetTime != _lastRequestTime) { await ReEvaluate(); } }
public ExpressionViewPresenter(IExpressionView view) { _view = view; _view.ExpressionTextBox.TextChanged += ExpressionTextBox_TextChanged; _view.ExpressionTextBox.KeyPress += ExpressionTextBox_KeyPress; SharedViewState.Instance.PropertyChanged += (o, e) => { if (e.PropertyName == nameof(SharedViewState.Instance.CurrentView)) { _view.Visible = !(SharedViewState.Instance.CurrentView == ViewName.Scripting || SharedViewState.Instance.CurrentView == ViewName.CustomFunctions); } }; }
public ExpressionViewPresenter(IExpressionView view, ISharedViewState sharedViewState, IModeDeterminer modeDeterminer) { _view = view; _sharedViewState = sharedViewState; this.modeDeterminer = modeDeterminer; _view.ExpressionTextBox.TextChanged += ExpressionTextBox_TextChanged; _view.ExpressionTextBox.KeyPress += ExpressionTextBox_KeyPress; _sharedViewState.PropertyChanged += (o, e) => { if (e.PropertyName == nameof(_sharedViewState.CurrentView)) { _view.Visible = !(_sharedViewState.CurrentView == ViewName.Scripting || _sharedViewState.CurrentView == ViewName.CustomFunctions); } }; }
private void SingleExpressionChanged(IExpressionView expressionView) { timChangeTimer.Start(); }
private async void HandleExpressionChanged(IExpressionView expressionView) { await ReEvaluate(); }