Ejemplo n.º 1
0
 public void DeleteEvent(TimelineEvent x)
 {
     TimelineEvents.Remove(x);
     Invalidate();
 }
Ejemplo n.º 2
0
        protected override void OnMouseDown(MouseEventArgs e)
        {
            OnClick(e);
            _mouseDown = true;
            bool evtWasClicked = false;

            foreach (
                TimelineEvent evt in TimelineEvents.Where(x => x.Time >= ViewableWindow.X && x.Time <= ViewableWindow.Y))
            {
                Rectangle rect = HandleLocation(evt);
                if (rect.Contains(e.Location))
                {
                    if (
                        !((System.Windows.Input.Keyboard.GetKeyStates(System.Windows.Input.Key.LeftCtrl) &
                           System.Windows.Input.KeyStates.Down) > 0))
                    {
                        SelectedEvents.Clear();
                    }

                    evtWasClicked = true;

                    if (((System.Windows.Input.Keyboard.GetKeyStates(System.Windows.Input.Key.LeftShift) & System.Windows.Input.KeyStates.Down) > 0)
                        &&
                        !((System.Windows.Input.Keyboard.GetKeyStates(System.Windows.Input.Key.LeftCtrl) & System.Windows.Input.KeyStates.Down) > 0)
                        )
                    {
                        var newEvent = new TimelineEvent(evt.Action, evt.Parameter, (long)PixelsToTime(e.X - dividerPoint.X));
                        TimelineEvents.Add(newEvent);
                        SelectedEvents.Add(newEvent);
                    }
                    else if (((System.Windows.Input.Keyboard.GetKeyStates(System.Windows.Input.Key.LeftShift) & System.Windows.Input.KeyStates.Down) > 0)
                             &&
                             ((System.Windows.Input.Keyboard.GetKeyStates(System.Windows.Input.Key.LeftCtrl) & System.Windows.Input.KeyStates.Down) > 0)
                             )
                    {
                        var newEvents = new List <TimelineEvent>();

                        foreach (var selEvt in SelectedEvents)
                        {
                            newEvents.Add(new TimelineEvent(selEvt.Action, selEvt.Parameter, selEvt.Time));
                        }


                        TimelineEvents.AddRange(newEvents);
                        SelectedEvents.Clear();
                        SelectedEvents.AddRange(newEvents);
                    }
                    else
                    {
                        if (!SelectedEvents.Contains(evt))
                        {
                            SelectedEvents.Add(evt);
                        }
                    }
                    break;
                }
            }

            if (!evtWasClicked && !((System.Windows.Input.Keyboard.GetKeyStates(System.Windows.Input.Key.LeftCtrl) &
                                     System.Windows.Input.KeyStates.Down) > 0))
            {
                SelectedEvents.Clear();
            }

            _dragStart = e.Location;
            Invalidate();
        }