コード例 #1
0
        public void DeselectAll()
        {
            foreach (var item in RenderingEngine.CurrentProject.Items)
            {
                item.IsSelected = false;
            }
            CurrentSelection.Clear();

            foreach (var item in RenderingEngine.CurrentProject.Connections)
            {
                item.IsSelected = false;
            }
            CurrentSelectionConnection.Clear();
        }
コード例 #2
0
        private void MouseServiceOnMouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                MouseRightDownMoveTranslationPositionLast = e.Location;
            }

            if (e.Button == MouseButtons.Left)
            {
                StartSelectionRectangle       = false;
                MouseLeftDownMovePositionLast = RenderingEngine.TranslatedMousePosition;
                MouseLeftDownPositionLast     = RenderingEngine.TranslatedMousePosition;

                if (!StartDrag)
                {
                    Input  = null;
                    Output = null;

                    var mouseOverItems       = RenderingEngine.CurrentProject.Items.Where(x => x.IsMouseOver).ToList();
                    var mouseOverConnections = RenderingEngine.CurrentProject.Connections.Where(x => x.IsMouseOver).ToList();

                    if (mouseOverItems.Count == 0 && mouseOverConnections.Count == 0)
                    {
                        DeselectAll();
                    }

                    if (mouseOverItems.Count > 0)
                    {
                        foreach (var selectedItem in mouseOverItems)
                        {
                            if (!CurrentSelection.Contains(selectedItem))
                            {
                                DeselectAll();
                                CurrentSelection.Add(selectedItem);
                            }
                            selectedItem.IsSelected = true;

                            List <InputOutputBase> inputOutputs = new List <InputOutputBase>();

                            inputOutputs.AddRange(selectedItem.Inputs);
                            inputOutputs.AddRange(selectedItem.Outputs);

                            var mouseOverInputOutput = inputOutputs.FirstOrDefault(x => x.IsMouseOver);

                            if (mouseOverInputOutput != null)
                            {
                                if (mouseOverInputOutput is InputBase)
                                {
                                    Input = new InputOutputSelector(selectedItem, mouseOverInputOutput);
                                }
                                if (mouseOverInputOutput is OutputBase)
                                {
                                    Output = new InputOutputSelector(selectedItem, mouseOverInputOutput);
                                }
                            }
                        }
                    }

                    if (mouseOverConnections.Count > 0)
                    {
                        foreach (var selectedItem in mouseOverConnections)
                        {
                            if (!CurrentSelectionConnection.Contains(selectedItem))
                            {
                                DeselectAll();
                                CurrentSelectionConnection.Add(selectedItem);
                            }
                            selectedItem.IsSelected = true;
                        }
                    }
                }

                if (!SelectedItemsAvailable)
                {
                    StartSelectionRectangle = true;
                    SelectionRectangleStart = e.Location;
                }
                StartDrag = true;
            }

            if (e.Button == MouseButtons.Middle)
            {
                MouseMiddleDownMovePositionLast = e.Location;
            }
        }