private void AddExpressionGroup(QueryExpressionGroup group = null, int atIndex = -1) { if (group == null) { group = new QueryExpressionGroup(Builder); } group.AddExpression(); if (group.NestedExpressions.Count == 1) { group.AddExpression(); } group.Deleting += NestedGroupOnDeleting; group.ConvertingToExpression += GroupOnConvertingToExpression; group.ExpressionChanged += (sender, args) => ExpressionChanged?.Invoke(sender, args); if (atIndex >= 0) { NestedExpressions.Insert(atIndex, group); ExpressionStackPanel.Children.Insert(atIndex, group); } else { NestedExpressions.Add(group); ExpressionStackPanel.Children.Add(group); } OnNestedExpressionsChanged(); }
public void SetValue(dynamic value) { if (value == null) { return; } if (ValueTextBox.Visibility == Visibility.Visible) { ValueTextBox.Text = value.ToString(); } if (ValueComboBox.Visibility == Visibility.Visible) { ValueComboBox.SelectedItem = value; } if (ValueDatePicker.Visibility == Visibility.Visible) { ValueDatePicker.SelectedDate = value; } if (ValueNumericTextBox.Visibility == Visibility.Visible) { ValueNumericTextBox.SetValue(value); } ExpressionChanged?.Invoke(this, EventArgs.Empty); }
private void OnNestedExpressionsChanged() { if (IsRootGroup && NestedExpressions.Count > 0) { var firstExpression = NestedExpressions[0] as QueryExpression; if (firstExpression != null) { firstExpression.RemoveButton.IsEnabled = NestedExpressions.Count > 1; } } GroupMenuButton.Visibility = NestedExpressions.Count > 1 ? Visibility.Visible : Visibility.Collapsed; if (NestedExpressions.Count > 1) { Bracket.Visibility = Visibility.Visible; } if (NestedExpressions.Count == 1) { GroupMenuButton.Visibility = Visibility.Collapsed; Bracket.Visibility = Visibility.Collapsed; } if (NestedExpressions.Count == 0) { Delete(this, new RoutedEventArgs()); } ExpressionChanged?.Invoke(this, EventArgs.Empty); }
public QueryExpression AddExpression(QueryExpression expression = null, int atIndex = -1) { if (expression == null) { expression = new QueryExpression(this); } else { expression.ParentGroup = this; } expression.SetFields(Builder.Fields); expression.RemoveClicked += ExpressionOnRemoveClicked; expression.ConvertToGroupClicked += ExpressionOnConvertToGroupClicked; expression.ExpressionChanged += (sender, args) => ExpressionChanged?.Invoke(sender, args); if (atIndex >= 0) { NestedExpressions.Insert(atIndex, expression); ExpressionStackPanel.Children.Insert(atIndex, expression); } else { NestedExpressions.Add(expression); ExpressionStackPanel.Children.Add(expression); } OnNestedExpressionsChanged(); return(expression); }
/// <summary> /// Replaces the current IEvaluatable with the one on the clipboard /// </summary> private void PasteButton_Click(object sender, RoutedEventArgs e) { if (Global.Clipboard is IEvaluatable clipboardContents && MessageBox.Show("Are you sure you wish to REPLACE this expression with the one on your clipboard?", "Confirm paste", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { var @new = clipboardContents.Clone(); // We clone again when pasting so that if the user pastes it in two places, they aren't the same object ExpressionChanged?.Invoke(this, new ExpressionChangeEventArgs { OldExpression = Expression, NewExpression = @new }); Expression = @new; } }
private void scintilla_TextChanged(object sender, EventArgs e) { lock (this) { changed = true; isModified = true; syntaxTimer.Stop(); runTimer.Stop(); } ExpressionChanged?.Invoke(this, false); // changed, not evaluated syntaxTimer.Start(); runTimer.Start(); }
private QueryExpressionGroup AddSingleExpressionGroup(QueryExpressionGroup group = null) { if (group == null) { group = new QueryExpressionGroup(Builder); } group.Deleting += NestedGroupOnDeleting; group.ConvertingToExpression += GroupOnConvertingToExpression; group.ExpressionChanged += (sender, args) => ExpressionChanged?.Invoke(sender, args); NestedExpressions.Add(group); ExpressionStackPanel.Children.Add(group); OnNestedExpressionsChanged(); return(group); }
internal void Evaluate(bool forced = false) { if (!forced && Paused) { return; } isModified = false; try { if (currentFile == null) { Result = "Please select a file!"; ExpressionChanged?.Invoke(this, true); } else { string expression = scintilla.Text?.Replace("\r\n", "\n") ?? ""; if (string.IsNullOrWhiteSpace(expression)) { Result = expression; ExpressionChanged?.Invoke(this, true); } else { Task.Run(() => { Stopwatch sw = Stopwatch.StartNew(); Result = jrAPI.resolveExpression(currentFile, expression); sw.Stop(); APItime = TimeSpan.FromTicks(sw.ElapsedTicks).TotalMilliseconds; if (!changed) { ExpressionChanged?.Invoke(this, true); } }); } } } catch (Exception ex) { Result = $"Expression error, please check!\n\n{ex}"; ExpressionChanged?.Invoke(this, true); } }
private void FieldList_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { var field = FieldList.SelectedItem as Field; if (field == null) { return; } var operations = Operation.StandardOperations; OperationList.ItemsSource = operations.Where(o => o.IsValid(field.FieldType)); OperationList.SelectedIndex = 0; SetValueInput(); ExpressionChanged?.Invoke(this, EventArgs.Empty); }
// Fires when the expression selection combobox changes. Creates a new expression to replace the old one. private void ExpressionSelection_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (settingTypeSelection) { return; // Do nothing if the source is NOT from the combobox being changed (we dont want to create a new instance when it's being set from Binding) } var selectedType = (Type)expressionSelection.SelectedValue; // The SelectedValue (NOT SelectedItem) of the combobox references a Type that implements IEvaluatable. if (selectedType == null || Expression == null || selectedType == Expression.GetType()) { return; // Do nothing if the types are the same. } var newExpression = (IEvaluatable)Activator.CreateInstance(selectedType); // Create an instance from the selected type ExpressionChanged?.Invoke(this, new ExpressionChangeEventArgs { OldExpression = Expression, NewExpression = newExpression }); Expression = newExpression; }
/// <summary> /// 注册改变事件 /// </summary> /// <param name="expressionChanged"></param> public void RegisterExpChangedEvent(ExpressionChanged expressionChanged) { m_expressionChanged = expressionChanged; }
private void ValueTextBox_OnPreviewKeyUp(object sender, KeyEventArgs e) { ExpressionChanged?.Invoke(this, EventArgs.Empty); }
private void Value_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { ExpressionChanged?.Invoke(this, EventArgs.Empty); }
private void OperationList_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { SetValueInput(); ExpressionChanged?.Invoke(this, EventArgs.Empty); }
private void OperatorButton_OnClick(object sender, RoutedEventArgs e) { GroupMenuButton.Content = ((MenuItem)sender).Header; GroupMenuButton.IsOpen = false; ExpressionChanged?.Invoke(this, EventArgs.Empty); }
private void OnExpressionChanged(object sender, EventArgs e) { ExpressionChanged?.Invoke(this, EventArgs.Empty); }