Exemplo n.º 1
0
        private void Rectangle_MouseDown(object sender, MouseButtonEventArgs e)
        {
            Rectangle             rect = (Rectangle)sender;
            Point                 pos  = e.GetPosition(rect);
            SelectableBoundingBox sbb  = (SelectableBoundingBox)rect.DataContext;


            if (e.ClickCount == 2)
            {
                if (_rectDoubleClick != null)
                {
                    _rectDoubleClick(this, new RectMouseEventArgs((SelectableBoundingBox)((Rectangle)sender).DataContext));
                }
            }

            _editingState = GetMouseOverState(sbb, pos);
            if (_editingState != EditingState.None)
            {
                rect.CaptureMouse();
            }
            else
            {
                sbb.IsSelected = !sbb.IsSelected;

                if (_rectangleSelectionChanged != null)
                {
                    _rectangleSelectionChanged(sbb, null);
                }
            }
        }
Exemplo n.º 2
0
 private void CloseTruePositive_Click(object sender, RoutedEventArgs e)
 {
     if (_rectClosed != null)
     {
         SelectableBoundingBox sb = (SelectableBoundingBox)((Button)sender).DataContext;
         _rectClosed(sb, e);
     }
 }
Exemplo n.º 3
0
        void bigger_Click(object sender, RoutedEventArgs e)
        {
            MenuItem menuitem         = sender as MenuItem;
            SelectableBoundingBox sbb = menuitem.DataContext as SelectableBoundingBox;

            if (_lookBiggerClick != null)
            {
                _lookBiggerClick(sbb, new RectMouseEventArgs(sbb));
            }
        }
Exemplo n.º 4
0
        private void NonEditableRectangle_MouseDown(object sender, MouseButtonEventArgs e)
        {
            if (e.ClickCount == 2)
            {
                if (_rectDoubleClick != null)
                {
                    _rectDoubleClick(this, new RectMouseEventArgs((SelectableBoundingBox)((Rectangle)sender).DataContext));
                }
            }

            Rectangle             rect = (Rectangle)sender;
            SelectableBoundingBox sbb  = (SelectableBoundingBox)rect.DataContext;

            if (e.ChangedButton == MouseButton.Right)
            {
                //ContextMenu menu = new ContextMenu();
                //MenuItem bigger = new MenuItem();
                //bigger.Header = "View Parent";

                //MenuItem smaller = new MenuItem();
                //smaller.Header = "View Children";

                //Separator sep = new Separator();

                //MenuItem delete = new MenuItem();
                //delete.Header = "Delete Prototype";

                //bigger.Click += bigger_Click;
                //smaller.Click += smaller_Click;
                //menu.Items.Add(bigger);
                //menu.Items.Add(smaller);
                //menu.Items.Add(sep);
                //menu.Items.Add(delete);

                //rect.ContextMenu = menu;
                //rect.ContextMenu.Visibility = System.Windows.Visibility.Visible;
            }
            else
            {
                sbb.IsSelected = !sbb.IsSelected;

                if (_rectMouseUp != null)
                {
                    _rectMouseUp(this, new RectMouseEventArgs((SelectableBoundingBox)rect.DataContext));
                }

                if (_rectangleSelectionChanged != null)
                {
                    _rectangleSelectionChanged(sbb, null);
                }
            }
        }
Exemplo n.º 5
0
        private EditingState GetMouseOverState(SelectableBoundingBox sbb, Point pos)
        {
            if (pos.X <= c_rectCornerSize && pos.Y > c_rectCornerSize && pos.Y < sbb.Height - c_rectCornerSize)
            {
                return(EditingState.Left);
            }

            else if (pos.X >= sbb.Width - c_rectCornerSize && pos.Y > c_rectCornerSize && pos.Y < sbb.Height - c_rectCornerSize)
            {
                return(EditingState.Width);
            }
            else if (pos.Y <= c_rectCornerSize && pos.X > c_rectCornerSize && pos.X < sbb.Width - c_rectCornerSize)
            {
                return(EditingState.Top);
            }
            else if (pos.Y >= sbb.Height - c_rectCornerSize && pos.X > c_rectCornerSize && pos.X < sbb.Width - c_rectCornerSize)
            {
                return(EditingState.Height);
            }
            else if (pos.X <= c_rectCornerSize && pos.Y >= sbb.Height - c_rectCornerSize)
            {
                return(EditingState.LeftAndHeight);
            }
            else if (pos.X >= sbb.Width - c_rectCornerSize && pos.Y <= c_rectCornerSize)
            {
                return(EditingState.TopAndWidth);
            }
            else if (pos.X >= sbb.Width - c_rectCornerSize && pos.Y >= sbb.Height - c_rectCornerSize)
            {
                return(EditingState.WidthAndHeight);
            }
            else if (pos.X <= c_rectCornerSize && pos.Y <= c_rectCornerSize)
            {
                return(EditingState.TopAndLeft);
            }
            else
            {
                return(EditingState.None);
            }
        }
Exemplo n.º 6
0
 private int CompareRects(SelectableBoundingBox a, SelectableBoundingBox b)
 {
     return (b.Width * b.Height) - (a.Width * a.Height);
 }
Exemplo n.º 7
0
 private void RectsSnapped(IEnumerable<IBoundingBox> snappedRects)
 {
     ClearDrawnSelected();
     foreach (IBoundingBox bb in snappedRects)
     {
         SelectableBoundingBox sbb = new SelectableBoundingBox(bb.Left, bb.Top, bb.Width, bb.Height, Brushes.YellowGreen);
         UserDrawnRectangleControl.Rectangles.Add(sbb);
     }
 }
Exemplo n.º 8
0
        private void RemoveSelectedNode(SelectableBoundingBox.WithTreeNode sbb)
        {
            Tree node = sbb.TreeNode;

            sbb.Left = 0;
            sbb.TreeNode = null;
            sbb.Top = 0;
            sbb.Width = 0;
            sbb.Height = 0;
            sbb.IsSelected = false;
            sbb.Color = Brushes.Transparent;
            
            //RectangleViewerControl.Rectangles.Remove(sbb);
            PropertiesControl torem = SelectedNodes.FirstOrDefault(s => s.Node == node);
            
            

            if (torem != null)
            {
                SelectedNodes.Remove(torem);
                TreeBrowserControl.DeselectNode(node);
            }
        }
Exemplo n.º 9
0
 private void RemoveRectangles(SelectableBoundingBox.WithTreeNode.Type type)
 {
     List<SelectableBoundingBox.WithTreeNode> torem = new List<SelectableBoundingBox.WithTreeNode>();
     foreach (SelectableBoundingBox.WithTreeNode sbb in RectangleViewerControl.Rectangles)
     {
         if (sbb.CreationType == type)
             torem.Add(sbb);
     }
     
     foreach (var rem in torem)
         RemoveSelectedNode(rem);
 }
Exemplo n.º 10
0
        public void StopDragRecting()
        {
            if (_currState == State.Dragging)
            {
                _currState = State.DrawMode;
                if (!DragRect.IsEmpty && DragRect.Width > 2 && DragRect.Height > 2)
                {
                    SelectableBoundingBox sbb = new SelectableBoundingBox((int)DragRect.Left, (int)DragRect.Top, (int)DragRect.Width, (int)DragRect.Height, Brushes.YellowGreen);

                    if (Keyboard.Modifiers != ModifierKeys.Control)
                    {
                        List<BoundingBox> list = new List<BoundingBox>() { new BoundingBox(sbb.Left, sbb.Top, sbb.Width, sbb.Height) };
                        _interpreter.SnapRectangles(list, (int)FrameSlider.Value - 1);
                    }
                    else
                    {
                        UserDrawnRectangleControl.Rectangles.Add(sbb);
                    }
                }

                DragRect = Rect.Empty;
                DragRectangleControl.Visibility = Visibility.Hidden;
            }
        }
Exemplo n.º 11
0
        private void Rectangle_MouseMove(object sender, MouseEventArgs e)
        {
            if (Visibility == System.Windows.Visibility.Visible)
            {
                Rectangle             rect = (Rectangle)sender;
                SelectableBoundingBox sbb  = (SelectableBoundingBox)rect.DataContext;
                Point pos = e.GetPosition(rect);
                switch (_editingState)
                {
                case EditingState.Left:
                    Cursor     = Cursors.SizeWE;
                    sbb.Left  += (int)pos.X;
                    sbb.Width -= (int)pos.X;
                    break;

                case EditingState.Top:
                    Cursor      = Cursors.SizeNS;
                    sbb.Top    += (int)pos.Y;
                    sbb.Height -= (int)pos.Y;
                    break;

                case EditingState.Width:
                    Cursor    = Cursors.SizeWE;
                    sbb.Width = (int)pos.X;
                    break;

                case EditingState.Height:
                    Cursor     = Cursors.SizeNS;
                    sbb.Height = (int)pos.Y;
                    break;

                case EditingState.LeftAndHeight:
                    Cursor     = Cursors.SizeNESW;
                    sbb.Left  += (int)pos.X;
                    sbb.Width -= (int)pos.X;
                    sbb.Height = (int)pos.Y;
                    break;

                case EditingState.TopAndWidth:
                    Cursor      = Cursors.SizeNESW;
                    sbb.Top    += (int)pos.Y;
                    sbb.Height -= (int)pos.Y;
                    sbb.Width   = (int)pos.X;
                    break;

                case EditingState.TopAndLeft:
                    Cursor      = Cursors.SizeNWSE;
                    sbb.Top    += (int)pos.Y;
                    sbb.Height -= (int)pos.Y;
                    sbb.Left   += (int)pos.X;
                    sbb.Width  -= (int)pos.X;
                    break;

                case EditingState.WidthAndHeight:
                    Cursor     = Cursors.SizeNWSE;
                    sbb.Width  = (int)pos.X;
                    sbb.Height = (int)pos.Y;
                    break;

                case EditingState.None:
                    EditingState mouseover = GetMouseOverState(sbb, pos);
                    switch (mouseover)
                    {
                    case EditingState.Left:
                        Cursor = Cursors.SizeWE;
                        break;

                    case EditingState.Top:
                        Cursor = Cursors.SizeNS;
                        break;

                    case EditingState.Width:
                        Cursor = Cursors.SizeWE;
                        break;

                    case EditingState.Height:
                        Cursor = Cursors.SizeNS;
                        break;

                    case EditingState.LeftAndHeight:
                        Cursor = Cursors.SizeNESW;
                        break;

                    case EditingState.TopAndWidth:
                        Cursor = Cursors.SizeNESW;
                        break;

                    case EditingState.WidthAndHeight:
                        Cursor = Cursors.SizeNWSE;
                        break;


                    case EditingState.TopAndLeft:
                        Cursor = Cursors.SizeNWSE;
                        break;

                    case EditingState.None:
                        Cursor = Cursors.Arrow;
                        break;
                    }

                    break;
                }


                if (sbb.Left < 0)
                {
                    sbb.Left = 0;
                }
                if (sbb.Top < 0)
                {
                    sbb.Top = 0;
                }
                if (sbb.Left + sbb.Width > Width)
                {
                    sbb.Width = (int)Width - sbb.Left;
                }
                if (sbb.Height + sbb.Top > Height)
                {
                    sbb.Height = (int)Height - sbb.Top;
                }
            }
        }
Exemplo n.º 12
0
        private void CloseRectButton_Click(object sender, RoutedEventArgs e)
        {
            SelectableBoundingBox sb = (SelectableBoundingBox)((Button)sender).DataContext;

            Rectangles.Remove(sb);
        }
Exemplo n.º 13
0
 public RectMouseEventArgs(SelectableBoundingBox rect)
 {
     Rect = rect;
 }
Exemplo n.º 14
0
        private EditingState GetMouseOverState(SelectableBoundingBox sbb, Point pos)
        {
            if (pos.X <= c_rectCornerSize && pos.Y > c_rectCornerSize && pos.Y < sbb.Height - c_rectCornerSize)
            {
                return EditingState.Left;  
            }

            else if (pos.X >= sbb.Width - c_rectCornerSize && pos.Y > c_rectCornerSize && pos.Y < sbb.Height - c_rectCornerSize)
            {
                return EditingState.Width;
                
            }
            else if (pos.Y <= c_rectCornerSize && pos.X > c_rectCornerSize && pos.X < sbb.Width - c_rectCornerSize)
            {
                return EditingState.Top;
                
            }
            else if (pos.Y >= sbb.Height - c_rectCornerSize && pos.X > c_rectCornerSize && pos.X < sbb.Width - c_rectCornerSize)
            {
                return EditingState.Height;
            }
            else if (pos.X <= c_rectCornerSize && pos.Y >= sbb.Height - c_rectCornerSize)
            {
                return EditingState.LeftAndHeight;
            }
            else if (pos.X >= sbb.Width - c_rectCornerSize && pos.Y <= c_rectCornerSize)
            {
                 return EditingState.TopAndWidth;
            }
            else if (pos.X >= sbb.Width - c_rectCornerSize && pos.Y >= sbb.Height - c_rectCornerSize)
            {
                return EditingState.WidthAndHeight;

            }
            else if (pos.X <= c_rectCornerSize && pos.Y <= c_rectCornerSize)
            {
                return EditingState.TopAndLeft;
            }
            else
            {
                return EditingState.None;
            }
        }
Exemplo n.º 15
0
 public RectMouseEventArgs(SelectableBoundingBox rect)
 {
     Rect = rect;
 }