void InitPitchPointContextMenu() { pitchCxtMenu = new ContextMenu(); pitchCxtMenu.Background = Brushes.White; pitchCxtMenu.Items.Add(new MenuItem() { Header = "Ease In/Out" }); pitchCxtMenu.Items.Add(new MenuItem() { Header = "Linear" }); pitchCxtMenu.Items.Add(new MenuItem() { Header = "Ease In" }); pitchCxtMenu.Items.Add(new MenuItem() { Header = "Ease Out" }); pitchCxtMenu.Items.Add(new MenuItem() { Header = "Snap to Previous Note" }); pitchCxtMenu.Items.Add(new MenuItem() { Header = "Delete Point" }); pitchCxtMenu.Items.Add(new MenuItem() { Header = "Add Point" }); pitHitContainer = new PitchPointHitTestResultContainer(); pitchShapeDelegate = (_o, _e) => { var o = _o as MenuItem; var pitHit = pitHitContainer.Result; if (o == pitchCxtMenu.Items[4]) { DocManager.Inst.StartUndoGroup(); DocManager.Inst.ExecuteCmd(new SnapPitchPointCommand(pitHit.Note)); DocManager.Inst.EndUndoGroup(); } else if (o == pitchCxtMenu.Items[5]) { DocManager.Inst.StartUndoGroup(); DocManager.Inst.ExecuteCmd(new DeletePitchPointCommand(midiVM.Part, pitHit.Note, pitHit.Index)); DocManager.Inst.EndUndoGroup(); } else if (o == pitchCxtMenu.Items[6]) { DocManager.Inst.StartUndoGroup(); DocManager.Inst.ExecuteCmd(new AddPitchPointCommand(pitHit.Note, new PitchPoint(pitHit.X, pitHit.Y), pitHit.Index + 1)); DocManager.Inst.EndUndoGroup(); } else { PitchPointShape shape = o == pitchCxtMenu.Items[0] ? PitchPointShape.io : o == pitchCxtMenu.Items[2] ? PitchPointShape.i : o == pitchCxtMenu.Items[3] ? PitchPointShape.o : PitchPointShape.l; DocManager.Inst.StartUndoGroup(); DocManager.Inst.ExecuteCmd(new ChangePitchPointShapeCommand(pitHit.Note.PitchBend.Points[pitHit.Index], shape)); DocManager.Inst.EndUndoGroup(); } }; foreach (var item in pitchCxtMenu.Items) { var _item = item as MenuItem; if (_item != null) { _item.Click += pitchShapeDelegate; } } }
void InitPitchPointContextMenu() { pitchCxtMenu = new ContextMenu(); pitchCxtMenu.Background = Brushes.White; pitchCxtMenu.Items.Add(new MenuItem() { Header = "Ease In/Out" }); pitchCxtMenu.Items.Add(new MenuItem() { Header = "Linear" }); pitchCxtMenu.Items.Add(new MenuItem() { Header = "Ease In" }); pitchCxtMenu.Items.Add(new MenuItem() { Header = "Ease Out" }); pitchCxtMenu.Items.Add(new MenuItem() { Header = "Snap to Previous Note" }); pitchCxtMenu.Items.Add(new MenuItem() { Header = "Delete Point" }); pitchCxtMenu.Items.Add(new MenuItem() { Header = "Add Point" }); pitHitContainer = new PitchPointHitTestResultContainer(); pitchShapeDelegate = (_o, _e) => { var o = _o as MenuItem; var pitHit = pitHitContainer.Result; if (o == pitchCxtMenu.Items[4]) { DocManager.Inst.StartUndoGroup(); DocManager.Inst.ExecuteCmd(new SnapPitchPointCommand(pitHit.Note)); DocManager.Inst.EndUndoGroup(); } else if (o == pitchCxtMenu.Items[5]) { DocManager.Inst.StartUndoGroup(); DocManager.Inst.ExecuteCmd(new DeletePitchPointCommand(midiVM.Part, pitHit.Note, pitHit.Index)); DocManager.Inst.EndUndoGroup(); } else if (o == pitchCxtMenu.Items[6]) { DocManager.Inst.StartUndoGroup(); DocManager.Inst.ExecuteCmd(new AddPitchPointCommand(pitHit.Note, new PitchPoint(pitHit.X, pitHit.Y), pitHit.Index + 1)); DocManager.Inst.EndUndoGroup(); } else { PitchPointShape shape = o == pitchCxtMenu.Items[0] ? PitchPointShape.io : o == pitchCxtMenu.Items[2] ? PitchPointShape.i : o == pitchCxtMenu.Items[3] ? PitchPointShape.o : PitchPointShape.l; DocManager.Inst.StartUndoGroup(); DocManager.Inst.ExecuteCmd(new ChangePitchPointShapeCommand(pitHit.Note.PitchBend.Points[pitHit.Index], shape)); DocManager.Inst.EndUndoGroup(); } }; foreach (var item in pitchCxtMenu.Items) { var _item = item as MenuItem; if (_item != null) _item.Click += pitchShapeDelegate; } }