Пример #1
0
        public InterruptManagerViewModel(IGameBoy gameBoy, IDispatcher dispatcher)
        {
            _dispatcher = dispatcher;
            _gameBoy    = gameBoy;
            //_gameBoy.FrameCompleted += OnFrameCompleted;

            InterruptList.Add(new InterruptViewModel("Vertical Blank", Interrupts.VerticalBlanking, _gameBoy));
            InterruptList.Add(new InterruptViewModel("Timer Overflow", Interrupts.TimerOverflow, _gameBoy));
            InterruptList.Add(new InterruptViewModel("LCD Status", Interrupts.LCDCStatus, _gameBoy));
            InterruptList.Add(new InterruptViewModel("Button Pressed", Interrupts.P10to13TerminalNegativeEdge, _gameBoy));
            InterruptList.Add(new InterruptViewModel("Serial Transfer Completed", Interrupts.SerialIOTransferCompleted, _gameBoy));
        }
 private void InterruptList_MouseMove(object sender, MouseEventArgs e)
 {
     if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
     {
         // If the mouse moves outside the rectangle, start the drag.
         if (dragBoxFromMouseDown != null && dragBoxFromMouseDown != Rectangle.Empty &&
             !dragBoxFromMouseDown.Contains(e.X, e.Y))
         {
             // Proceed with the drag and drop, passing in the list item.
             DragDropEffects dropEffect = InterruptList.DoDragDrop(
                 InterruptList.Items[rowIndexFromMouseDown],
                 DragDropEffects.Move);
         }
     }
 }
        private void InterruptList_DragDrop(object sender, DragEventArgs e)
        {
            // グリッド内のD&Dなら並び替えをする
            // The mouse locations are relative to the screen, so they must be
            // converted to client coordinates.
            Point clientPoint = InterruptList.PointToClient(new Point(e.X, e.Y));
            // Get the row index of the item the mouse is below.
            int rowIndexOfItemUnderMouseToDrop =
                InterruptList.IndexFromPoint(new Point(clientPoint.X, clientPoint.Y));

            // If the drag operation was a move then remove and insert the row.
            if (e.Effect == DragDropEffects.Move && rowIndexOfItemUnderMouseToDrop != -1)
            {
                int    i = 0;
                int    k = 0;
                object work;
                if (rowIndexFromMouseDown < rowIndexOfItemUnderMouseToDrop)
                {
                    while (i < InterruptList.Items.Count)
                    {
                        if (InterruptList.GetSelected(i) == true)
                        {
                            work = InterruptList.Items[i - k];
                            InterruptList.Items[i - k] = InterruptList.Items[rowIndexOfItemUnderMouseToDrop];
                            InterruptList.Items[rowIndexOfItemUnderMouseToDrop] = work;
                            k++;
                        }
                        i++;
                    }
                }
                else
                {
                    i = InterruptList.Items.Count - 1;
                    k = 0;
                    while (i > 0)
                    {
                        if (InterruptList.GetSelected(i) == true)
                        {
                            work = InterruptList.Items[i + k];
                            InterruptList.Items[i + k] = InterruptList.Items[rowIndexOfItemUnderMouseToDrop];
                            InterruptList.Items[rowIndexOfItemUnderMouseToDrop] = work;
                            k++;
                        }
                        i--;
                    }
                }
            }
        }
 private void InterruptList_MouseDown(object sender, MouseEventArgs e)
 {
     // Get the index of the item the mouse is below.
     rowIndexFromMouseDown = InterruptList.IndexFromPoint(new Point(e.X, e.Y));
     if (rowIndexFromMouseDown != -1)
     {
         // Remember the point where the mouse down occurred.
         // The DragSize indicates the size that the mouse can move
         // before a drag event should be started.
         Size dragSize = SystemInformation.DragSize;
         // Create a rectangle using the DragSize, with the mouse position being
         // at the center of the rectangle.
         dragBoxFromMouseDown = new Rectangle(new Point(e.X - (dragSize.Width / 2),
                                                        e.Y - (dragSize.Height / 2)),
                                              dragSize);
     }
     else
     {
         // Reset the rectangle if the mouse is not over an item in the ListBox.
         dragBoxFromMouseDown = Rectangle.Empty;
     }
 }