/// <summary>
        /// Event invoked when the value of the name of the function being created is changed.
        /// Invokes the <see cref="SomethingChanged"/> event and verifies that the input is valid.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void functionID_TextChanged(object sender, TextChangedEventArgs e)
        {
            SomethingChanged?.Invoke(this, EventArgs.Empty);
            var textBox = sender as TextBox;

            if (textBox.Text != "")
            {
                if (textBox.SelectionStart == 1)
                {
                    if (textBox.SelectionStart > 0 && (!(Char.IsLetter(textBox.Text[textBox.SelectionStart - 1]) ||
                                                         textBox.Text[textBox.SelectionStart - 1] == '_')))
                    {
                        int pos = textBox.SelectionStart - 1;
                        textBox.Text           = textBox.Text.Remove(pos, 1);
                        textBox.SelectionStart = pos;
                    }
                }
                else
                {
                    if (textBox.SelectionStart > 0 && (!(Char.IsLetterOrDigit(textBox.Text[textBox.SelectionStart - 1]) ||
                                                         textBox.Text[textBox.SelectionStart - 1] == '_')))
                    {
                        int pos = textBox.SelectionStart - 1;
                        textBox.Text           = textBox.Text.Remove(pos, 1);
                        textBox.SelectionStart = pos;
                    }
                }
            }
        }
示例#2
0
        public Component()
        {
            _connection = new Connection()
                          .DisposedBy(this);

            _counter = new CounterDisposable(() => SomethingChanged?.Invoke(this, EventArgs.Empty));
        }
示例#3
0
 private void FSW_Changed(object sender, FileSystemEventArgs e)
 {
     this.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() =>
     {
         zeichneGrid(Ordner);
     }));
     SomethingChanged?.Invoke(this, new MyEventArgs()
     {
     });
 }
示例#4
0
        /// <summary>
        /// Event invoked when the button to add a parameter is clicked.
        /// Creates a new <see cref="Values"/> object and adds the parameter visually.
        /// Invokes the <see cref="SomethingChanged"/> event.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void AddParameter(object sender, RoutedEventArgs e)
        {
            SomethingChanged?.Invoke(this, EventArgs.Empty);

            Grid   containerGrid = new Grid();
            Values newValue      = new Values();

            containerGrid.Children.Add(newValue);

            Parameters.Items.Add(containerGrid);
        }
示例#5
0
        /// <summary>
        /// Event invoked when the action of an asset changes.
        /// Invokes <see cref="SomethingChanged"/>.
        /// Updates the UI to reflect this change.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MethodChosenChanged(object sender, SelectionChangedEventArgs e)
        {
            SomethingChanged?.Invoke(this, EventArgs.Empty);

            var    list           = sender as ComboBox;
            var    parametersList = Parameters as ListView;
            Grid   containerGrid  = new Grid();
            Values newValue       = new Values();

            if (list != null && parametersList != null)
            {
                parametersList.Items.Clear();
                switch (list.SelectedIndex)
                {
                case 0:
                    break;

                case 1:
                    newValue.SetChangeText("Displacement in X");
                    containerGrid.Children.Add(newValue);
                    parametersList.Items.Add(containerGrid);
                    break;

                case 2:
                    newValue.SetChangeText("Displacement in Y");
                    containerGrid.Children.Add(newValue);
                    parametersList.Items.Add(containerGrid);
                    break;

                case 3:
                    newValue.SetChangeText("Degrees");
                    containerGrid.Children.Add(newValue);
                    parametersList.Items.Add(containerGrid);
                    break;

                case 4:
                    newValue.SetChangeText("X");
                    containerGrid.Children.Add(newValue);
                    parametersList.Items.Add(containerGrid);

                    Grid   containerGridY = new Grid();
                    Values newValueY      = new Values();
                    newValueY.SetChangeText("Y");
                    containerGridY.Children.Add(newValueY);
                    parametersList.Items.Add(containerGridY);
                    break;

                default:
                    break;
                }
            }
        }
示例#6
0
        /// <summary>
        /// Event invoked when the delete button of an instruction block is clicked.
        /// Gets the parent element of the instruction block and removes the block from its children list.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            SomethingChanged?.Invoke(this, EventArgs.Empty);
            var parent = VisualTreeHelper.GetParent(sender as Button);

            while (parent.GetType() != typeof(ListViewItem))
            {
                parent = VisualTreeHelper.GetParent(parent);
            }

            ListView     listView = ItemsControl.ItemsControlFromItemContainer(parent) as ListView;
            ListViewItem lvi      = (parent as ListViewItem);

            listView.Items.Remove(lvi.Content);
        }
示例#7
0
        /// <summary>
        /// Event invoked when the value of a numeric constant changes.
        /// Verifies that the number is valid and invokes <see cref="SomethingChanged"/>.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ConstantNumber_TextChanged(object sender, TextChangedEventArgs e)
        {
            SomethingChanged?.Invoke(this, EventArgs.Empty);
            var textBox = sender as TextBox;

            if (textBox.Text != "")
            {
                if (textBox.SelectionStart > 0 && (!(Char.IsDigit(textBox.Text[textBox.SelectionStart - 1]))))
                {
                    int pos = textBox.SelectionStart - 1;
                    textBox.Text           = textBox.Text.Remove(pos, 1);
                    textBox.SelectionStart = pos;
                }
            }
        }
        /// <summary>
        /// Event invoked when a Block is dropped on the ListView.
        /// Gets the index in which the element was dropped and inserts a new
        /// <see cref="CreateVariable"/> block in that position.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TargetListView_Drop(object sender, DragEventArgs e)
        {
            ListView lv    = sender as ListView;
            int      index = 0;

            if (!dropped)
            {
                // In the foreach loop we will check in which index (height intervals) from 0 to Count the new item was placed.
                // If it was not placed in any of these intervals, then it must have been placed below the last index.
                index = lv.Items.Count;

                Point pos = e.GetPosition(lv);
                pos.Y += scrollViewer.VerticalOffset;

                // Debug.WriteLine("X: " + pos.X + ", Y: " + pos.Y + ", offset: " + scrollViewer.VerticalOffset);
                int count       = 0;
                int totalHeight = 0;

                foreach (UserControl item in lv.Items)
                {
                    // Debug.WriteLine("Min: " + totalHeight + ", Max: " + (int)(totalHeight + item.ActualHeight));

                    if (pos.Y > totalHeight && pos.Y < totalHeight + item.ActualHeight)
                    {
                        index = count;
                        break;
                    }

                    totalHeight += (int)(item.ActualHeight);
                    count++;
                }

                if (e.DataView.Properties.ContainsKey("CreateVariable"))
                {
                    lv.Items.Insert(index, new CreateVariable());
                    SomethingChanged?.Invoke(this, EventArgs.Empty);
                }
                ListView_SuspendDragAndDrop();
                dropped = true;
            }

            VariableListView.CanReorderItems = true;
        }
 /// <summary>
 /// Event invoked when a drag operation starts over this list view.
 /// Invokes the <see cref="SomethingChanged"/> event.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 private void VariableListView_DragStarting(UIElement sender, DragStartingEventArgs args)
 {
     SomethingChanged?.Invoke(this, EventArgs.Empty);
 }
示例#10
0
 protected virtual void OnSomethingChanged(IToolRegion args)
 {
     SomethingChanged?.Invoke(this, args);
 }
示例#11
0
 /// <summary>
 /// Event invoked when the selection of an asset's attribute changes.
 /// Invokes <see cref="SomethingChanged"/>.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void AssetAttributeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     SomethingChanged?.Invoke(this, EventArgs.Empty);
 }
        /// <summary>
        /// Event invoked when the button to add a new parameter is clicked.
        /// Invokes the <see cref="SomethingChanged"/> event and initializes
        /// a new ComboBox and TextBox for the new parameter field.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void AddParameter(object sender, RoutedEventArgs e)
        {
            SomethingChanged?.Invoke(this, EventArgs.Empty);
            var DataType = new ComboBox
            {
                FontFamily = new FontFamily("Segoe UI Light"),
                FontWeight = FontWeights.Light,
                HorizontalContentAlignment = HorizontalAlignment.Center,
                HorizontalAlignment        = HorizontalAlignment.Stretch,
                VerticalAlignment          = VerticalAlignment.Center,
                Margin = new Thickness(0, 0, -10, 0),
                Width  = double.NaN,
            };

            DataType.SelectionChanged += DataType_SelectionChanged;

            ComboBoxItem number = new ComboBoxItem
            {
                Content  = "number",
                TabIndex = 0
            };
            ComboBoxItem text = new ComboBoxItem
            {
                Content  = "text",
                TabIndex = 1
            };
            ComboBoxItem boolean = new ComboBoxItem
            {
                Content  = "boolean",
                TabIndex = 2
            };

            DataType.Items.Add(number);
            DataType.Items.Add(text);
            DataType.Items.Add(boolean);

            DataType.SelectedIndex = 0;

            Parameters.Items.Add(DataType);

            var ParameterName = new TextBox
            {
                FontFamily = new FontFamily("Segoe UI Light"),
                FontWeight = FontWeights.Light,
                HorizontalContentAlignment = HorizontalAlignment.Center,
                HorizontalAlignment        = HorizontalAlignment.Stretch,
                VerticalAlignment          = VerticalAlignment.Center,
                TextAlignment   = TextAlignment.Center,
                PlaceholderText = "Parameter Here",
                Width           = double.NaN,
                InputScope      = new InputScope
                {
                    Names =
                    {
                        new InputScopeName(InputScopeNameValue.Text)
                    }
                }
            };

            ParameterName.TextChanged += ParameterName_TextChanged;

            Parameters.Items.Add(ParameterName);
        }
        /// <summary>
        /// Event invoked when a Block is dropped on the ListView.
        /// Gets the index in which the element was dropped and inserts a new
        /// Instruction block in that position.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TargetListView_Drop(object sender, DragEventArgs e)
        {
            ListView lv    = sender as ListView;
            int      index = 0;

            if (!dropped)
            {
                // In the foreach loop we will check in which index (height intervals) from 0 to Count the new item was placed.
                // If it was not placed in any of these intervals, then it must have been placed below the last index.
                index = lv.Items.Count;

                Point pos = e.GetPosition(lv);
                pos.Y += scrollViewer.VerticalOffset;

                int count       = 0;
                int totalHeight = 0;

                foreach (UserControl item in lv.Items)
                {
                    if (pos.Y > totalHeight && pos.Y < totalHeight + item.ActualHeight)
                    {
                        index = count;
                        break;
                    }

                    totalHeight += (int)(item.ActualHeight);
                    count++;
                }

                if (e.DataView.Properties.ContainsKey("AssignInstantiator"))
                {
                    lv.Items.Insert(index, new AssignBlock());
                    SomethingChanged?.Invoke(this, EventArgs.Empty);
                }
                else if (e.DataView.Properties.ContainsKey("DoInstantiator"))
                {
                    lv.Items.Insert(index, new DoBlock());
                    SomethingChanged?.Invoke(this, EventArgs.Empty);
                }
                else if (e.DataView.Properties.ContainsKey("ForInstantiator"))
                {
                    lv.Items.Insert(index, new ForBlock());
                    SomethingChanged?.Invoke(this, EventArgs.Empty);
                }
                else if (e.DataView.Properties.ContainsKey("WhileInstantiator"))
                {
                    lv.Items.Insert(index, new WhileBlock());
                    SomethingChanged?.Invoke(this, EventArgs.Empty);
                }
                else if (e.DataView.Properties.ContainsKey("IfInstantiator"))
                {
                    lv.Items.Insert(index, new IfBlock());
                    SomethingChanged?.Invoke(this, EventArgs.Empty);
                }
                else if (e.DataView.Properties.ContainsKey("StopInstantiator"))
                {
                    lv.Items.Insert(index, new StopBlock());
                    SomethingChanged?.Invoke(this, EventArgs.Empty);
                }
                else if (e.DataView.Properties.ContainsKey("ReturnStatement"))
                {
                    lv.Items.Insert(index, new ReturnBlock());
                    SomethingChanged?.Invoke(this, EventArgs.Empty);
                }
                ListView_SuspendDragAndDrop();
                dropped = true;
            }

            TargetListView.CanReorderItems = true;
        }
 /// <summary>
 /// Event invoked when a drag operation starts over this list view.
 /// Invokes the <see cref="SomethingChanged"/> event.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 private void TargetListView_DragItemsStarting(object sender, DragItemsStartingEventArgs e)
 {
     SomethingChanged?.Invoke(this, EventArgs.Empty);
 }
 /// <summary>
 /// Event invoked when the selection of a boolean operator changes.
 /// Invokes <see cref="SomethingChanged"/>.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void boolOperator_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     SomethingChanged?.Invoke(this, EventArgs.Empty);
 }
示例#16
0
        /// <summary>
        /// Event invoked when a Value block is dropped into this UserControl.
        /// Accepts the Drop operation and updates the UI to show the Value dropped.
        /// Invokes <see cref="SomethingChanged"/>.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Values_OnDrop(object sender, DragEventArgs e)
        {
            e.AcceptedOperation = DataPackageOperation.Copy;

            if (e.DataView.Properties.ContainsKey("ValueTemplate"))
            {
                SomethingChanged?.Invoke(this, EventArgs.Empty);
                if (e.DataView.Properties.ContainsKey("Variable"))
                {
                    selectedValueType = Utilities.ValueTypes.VariableCall;
                    var    vari             = new VariableCall();
                    Values valuePlaceHolder = sender as Values;
                    var    grid             = valuePlaceHolder.Parent as Grid;
                    if (grid != null)
                    {
                        var row    = Grid.GetRow(valuePlaceHolder);
                        var column = Grid.GetColumn(valuePlaceHolder);
                        grid.Children.Remove(valuePlaceHolder);
                        grid.Children.Add(vari);
                        Grid.SetRow(vari, row);
                        Grid.SetColumn(vari, column);
                    }
                    selectedValue = vari as VariableCall;
                }
                if (e.DataView.Properties.ContainsKey("Function"))
                {
                    selectedValueType = Utilities.ValueTypes.FunctionCall;
                    var    func             = new FunctionCall();
                    Values valuePlaceHolder = sender as Values;
                    var    grid             = valuePlaceHolder.Parent as Grid;
                    if (grid != null)
                    {
                        var row    = Grid.GetRow(valuePlaceHolder);
                        var column = Grid.GetColumn(valuePlaceHolder);
                        grid.Children.Remove(valuePlaceHolder);
                        grid.Children.Add(func);
                        Grid.SetRow(func, row);
                        Grid.SetColumn(func, column);
                    }
                    selectedValue = func as FunctionCall;
                }
                if (e.DataView.Properties.ContainsKey("NumberConstant"))
                {
                    selectedValueType = Utilities.ValueTypes.NumberConstant;
                    var    constantNumber   = new ConstantNumber();
                    Values valuePlaceHolder = sender as Values;
                    var    parent           = valuePlaceHolder.Parent as Grid;
                    if (parent != null)
                    {
                        parent = parent as Grid;
                        var row    = Grid.GetRow(valuePlaceHolder);
                        var column = Grid.GetColumn(valuePlaceHolder);
                        parent.Children.Remove(valuePlaceHolder);
                        parent.Children.Add(constantNumber);
                        Grid.SetRow(constantNumber, row);
                        Grid.SetColumn(constantNumber, column);
                    }
                    selectedValue = constantNumber as ConstantNumber;
                }
                if (e.DataView.Properties.ContainsKey("TextConstant"))
                {
                    selectedValueType = Utilities.ValueTypes.TextConstant;
                    var    constantText     = new ConstantText();
                    Values valuePlaceHolder = sender as Values;
                    var    grid             = valuePlaceHolder.Parent as Grid;
                    if (grid != null)
                    {
                        var row    = Grid.GetRow(valuePlaceHolder);
                        var column = Grid.GetColumn(valuePlaceHolder);
                        grid.Children.Remove(valuePlaceHolder);
                        grid.Children.Add(constantText);
                        Grid.SetRow(constantText, row);
                        Grid.SetColumn(constantText, column);
                    }
                    selectedValue = constantText as ConstantText;
                }
                if (e.DataView.Properties.ContainsKey("BooleanConstant"))
                {
                    selectedValueType = Utilities.ValueTypes.BooleanConstant;
                    var    constantBoolean  = new ConstantBoolean();
                    Values valuePlaceHolder = sender as Values;
                    var    grid             = valuePlaceHolder.Parent as Grid;
                    if (grid != null)
                    {
                        var row    = Grid.GetRow(valuePlaceHolder);
                        var column = Grid.GetColumn(valuePlaceHolder);
                        grid.Children.Remove(valuePlaceHolder);
                        grid.Children.Add(constantBoolean);
                        Grid.SetRow(constantBoolean, row);
                        Grid.SetColumn(constantBoolean, column);
                    }
                    selectedValue = constantBoolean as ConstantBoolean;
                }
                if (e.DataView.Properties.ContainsKey("MathExpression"))
                {
                    selectedValueType = Utilities.ValueTypes.MathExpression;
                    var    mathExp          = new MathExpression();
                    Values valuePlaceHolder = sender as Values;
                    var    grid             = valuePlaceHolder.Parent as Grid;
                    if (grid != null)
                    {
                        var row    = Grid.GetRow(valuePlaceHolder);
                        var column = Grid.GetColumn(valuePlaceHolder);
                        grid.Children.Remove(valuePlaceHolder);
                        grid.Children.Add(mathExp);
                        Grid.SetRow(mathExp, row);
                        Grid.SetColumn(mathExp, column);
                    }
                    selectedValue = mathExp as MathExpression;
                }
                if (e.DataView.Properties.ContainsKey("BooleanExpression"))
                {
                    selectedValueType = Utilities.ValueTypes.BooleanExpression;
                    var    boolExp          = new BooleanExpression();
                    Values valuePlaceHolder = sender as Values;
                    var    grid             = valuePlaceHolder.Parent as Grid;
                    if (grid != null)
                    {
                        var row    = Grid.GetRow(valuePlaceHolder);
                        var column = Grid.GetColumn(valuePlaceHolder);
                        grid.Children.Remove(valuePlaceHolder);
                        grid.Children.Add(boolExp);
                        Grid.SetRow(boolExp, row);
                        Grid.SetColumn(boolExp, column);
                    }
                    selectedValue = boolExp as BooleanExpression;
                }
                if (e.DataView.Properties.ContainsKey("ParenthesisExpression"))
                {
                    selectedValueType = Utilities.ValueTypes.Parenthesis;
                    var    parExp           = new Parenthesis();
                    Values valuePlaceHolder = sender as Values;
                    var    grid             = valuePlaceHolder.Parent as Grid;
                    if (grid != null)
                    {
                        var row    = Grid.GetRow(valuePlaceHolder);
                        var column = Grid.GetColumn(valuePlaceHolder);
                        grid.Children.Remove(valuePlaceHolder);
                        grid.Children.Add(parExp);
                        Grid.SetRow(parExp, row);
                        Grid.SetColumn(parExp, column);
                    }
                    selectedValue = parExp as Parenthesis;
                }
                if (e.DataView.Properties.ContainsKey("NegativeValue"))
                {
                    selectedValueType = Utilities.ValueTypes.Negative;
                    var    negative         = new Negative();
                    Values valuePlaceHolder = sender as Values;
                    var    grid             = valuePlaceHolder.Parent as Grid;
                    if (grid != null)
                    {
                        var row    = Grid.GetRow(valuePlaceHolder);
                        var column = Grid.GetColumn(valuePlaceHolder);
                        grid.Children.Remove(valuePlaceHolder);
                        grid.Children.Add(negative);
                        Grid.SetRow(negative, row);
                        Grid.SetColumn(negative, column);
                    }
                    selectedValue = negative as Negative;
                }
                if (e.DataView.Properties.ContainsKey("AssetProperty"))
                {
                    selectedValueType = Utilities.ValueTypes.AssetProperty;
                    var    assetProp        = new AssetAttribute();
                    Values valuePlaceHolder = sender as Values;
                    var    grid             = valuePlaceHolder.Parent as Grid;
                    if (grid != null)
                    {
                        var row    = Grid.GetRow(valuePlaceHolder);
                        var column = Grid.GetColumn(valuePlaceHolder);
                        grid.Children.Remove(valuePlaceHolder);
                        grid.Children.Add(assetProp);
                        Grid.SetRow(assetProp, row);
                        Grid.SetColumn(assetProp, column);
                    }
                    selectedValue = assetProp as AssetAttribute;
                }
                if (e.DataView.Properties.ContainsKey("AssetFunction"))
                {
                    selectedValueType = Utilities.ValueTypes.AssetFunction;
                    var    assetFunc        = new AssetFunction();
                    Values valuePlaceHolder = sender as Values;
                    var    grid             = valuePlaceHolder.Parent as Grid;
                    if (grid != null)
                    {
                        var row    = Grid.GetRow(valuePlaceHolder);
                        var column = Grid.GetColumn(valuePlaceHolder);
                        grid.Children.Remove(valuePlaceHolder);
                        grid.Children.Add(assetFunc);
                        Grid.SetRow(assetFunc, row);
                        Grid.SetColumn(assetFunc, column);
                    }
                    selectedValue = assetFunc as AssetFunction;
                }
            }
        }
 /// <summary>
 /// Event invoked when the name of a parameter changes.
 /// Invokes the <see cref="SomethingChanged"/> event.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void ParameterName_TextChanged(object sender, TextChangedEventArgs e)
 {
     SomethingChanged?.Invoke(this, EventArgs.Empty);
 }
 private void OnDurationChanged(object sender, SongDurationChangedEventArgs e)
 {
     DurationChanged?.Invoke(this, new SubscriptionsEventArgs <Song, SongDurationChangedEventArgs>(sender, e));
     SomethingChanged?.Invoke(this, new SubscriptionsEventArgs <Song, EventArgs>(sender, e));
 }
 /// <summary>
 /// Event invoked when the selection of the return data type of the function changes.
 /// Invokes the <see cref="SomethingChanged"/> event.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void functionType_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     SomethingChanged?.Invoke(this, EventArgs.Empty);
 }
示例#20
0
 /// <summary>
 /// Event invoked when the selection of a boolean constant changes.
 /// Invokes <see cref="SomethingChanged"/>.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void BooleanConstantComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     SomethingChanged?.Invoke(this, EventArgs.Empty);
 }
示例#21
0
 internal void RaiseSomethingChanged()
 {
     SomethingChanged?.Invoke();
 }
 public void ChangeSomething()
 {
     SomethingChanged?.Invoke(this, new EventArgs());
 }