Exemple #1
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
 /// <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;
     }
 }
Exemple #6
0
        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();
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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);
        }
Exemple #10
0
        // 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;
        }
Exemple #11
0
 /// <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);
        }
Exemple #15
0
 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);
 }