private void FillContextMenuToSetNoteType(ContextMenuPopupControl contextMenu, List <Note> selectedNotes)
 {
     contextMenu.AddSeparator();
     if (setNoteTypeAction.CanExecute(selectedNotes, ENoteType.Golden))
     {
         contextMenu.AddItem("Make golden",
                             () => setNoteTypeAction.ExecuteAndNotify(selectedNotes, ENoteType.Golden));
     }
     if (setNoteTypeAction.CanExecute(selectedNotes, ENoteType.Freestyle))
     {
         contextMenu.AddItem("Make freestyle",
                             () => setNoteTypeAction.ExecuteAndNotify(selectedNotes, ENoteType.Freestyle));
     }
     if (setNoteTypeAction.CanExecute(selectedNotes, ENoteType.Rap))
     {
         contextMenu.AddItem("Make rap",
                             () => setNoteTypeAction.ExecuteAndNotify(selectedNotes, ENoteType.Rap));
     }
     if (setNoteTypeAction.CanExecute(selectedNotes, ENoteType.RapGolden))
     {
         contextMenu.AddItem("Make rap-golden",
                             () => setNoteTypeAction.ExecuteAndNotify(selectedNotes, ENoteType.RapGolden));
     }
     if (setNoteTypeAction.CanExecute(selectedNotes, ENoteType.Normal))
     {
         contextMenu.AddItem("Make normal",
                             () => setNoteTypeAction.ExecuteAndNotify(selectedNotes, ENoteType.Normal));
     }
 }
    private void FillContextMenuToMoveToOtherVoice(ContextMenuPopupControl contextMenu, List <Note> selectedNotes)
    {
        bool canMoveToVoice1 = moveNotesToOtherVoiceAction.CanMoveNotesToVoice(selectedNotes, Voice.soloVoiceName, Voice.firstVoiceName);
        bool canMoveToVoice2 = moveNotesToOtherVoiceAction.CanMoveNotesToVoice(selectedNotes, Voice.secondVoiceName);

        if (canMoveToVoice1)
        {
            contextMenu.AddSeparator();
            contextMenu.AddItem("Move to player 1",
                                () => moveNotesToOtherVoiceAction.MoveNotesToVoiceAndNotify(songMeta, selectedNotes, Voice.firstVoiceName));
        }
        if (!canMoveToVoice1 && canMoveToVoice2)
        {
            contextMenu.AddSeparator();
        }
        if (canMoveToVoice2)
        {
            contextMenu.AddItem("Move to player 2",
                                () => moveNotesToOtherVoiceAction.MoveNotesToVoiceAndNotify(songMeta, selectedNotes, Voice.secondVoiceName));
        }

        if (moveNoteToOwnSentenceAction.CanMoveToOwnSentence(selectedNotes))
        {
            contextMenu.AddItem("Move to own sentence", () => moveNoteToOwnSentenceAction.MoveToOwnSentenceAndNotify(selectedNotes));
        }
    }
예제 #3
0
    private void FillContextMenu(ContextMenuPopupControl contextMenu)
    {
        List <Sentence> selectedSentences = new() { sentenceControl.Sentence };

        contextMenu.AddItem("Fit to notes", () => sentenceFitToNoteAction.ExecuteAndNotify(selectedSentences));
        contextMenu.AddItem("Fit to notes (all phrases)", () => sentenceFitToNoteAction.ExecuteAndNotify(SongMetaUtils.GetAllSentences(songMeta)));
        contextMenu.AddSeparator();
        contextMenu.AddItem("Delete", () => deleteSentencesAction.ExecuteAndNotify(selectedSentences));
    }
 private void FillContextMenuToMergeSentences(ContextMenuPopupControl contextMenu, List <Note> selectedNotes)
 {
     if (mergeSentencesAction.CanExecute(selectedNotes))
     {
         contextMenu.AddSeparator();
         contextMenu.AddItem("Merge sentences",
                             () => mergeSentencesAction.ExecuteAndNotify(selectedNotes, noteControl.Note));
     }
 }
 private void FillContextMenuToSplitAndMergeNotes(ContextMenuPopupControl contextMenu, List <Note> selectedNotes)
 {
     if (splitNotesAction.CanExecute(selectedNotes))
     {
         contextMenu.AddItem("Split Notes", () => splitNotesAction.ExecuteAndNotify(selectedNotes));
     }
     if (mergeNotesAction.CanExecute(selectedNotes))
     {
         contextMenu.AddItem("Merge Notes", () => mergeNotesAction.ExecuteAndNotify(selectedNotes, noteControl.Note));
     }
 }
    private void FillContextMenu(ContextMenuPopupControl contextMenu)
    {
        int beat     = (int)noteAreaControl.GetHorizontalMousePositionInBeats();
        int midiNote = noteAreaControl.GetVerticalMousePositionInMidiNote();

        contextMenu.AddItem("Fit vertical", () => noteAreaControl.FitViewportVerticalToNotes());

        Sentence sentenceAtBeat = SongMetaUtils.GetSentencesAtBeat(songMeta, beat).FirstOrDefault();

        if (sentenceAtBeat != null)
        {
            int minBeat = sentenceAtBeat.MinBeat - 1;
            int maxBeat = sentenceAtBeat.ExtendedMaxBeat + 1;
            contextMenu.AddItem("Fit horizontal to sentence ", () => noteAreaControl.FitViewportHorizontal(minBeat, maxBeat));
        }

        List <Note> selectedNotes = selectionControl.GetSelectedNotes();

        if (selectedNotes.Count > 0)
        {
            int minBeat = selectedNotes.Select(it => it.StartBeat).Min() - 1;
            int maxBeat = selectedNotes.Select(it => it.EndBeat).Max() + 1;
            contextMenu.AddItem("Fit horizontal to selection", () => noteAreaControl.FitViewportHorizontal(minBeat, maxBeat));
        }

        if (selectedNotes.Count > 0 ||
            songEditorCopyPasteManager.CopiedNotes.Count > 0)
        {
            contextMenu.AddSeparator();
            if (selectedNotes.Count > 0)
            {
                contextMenu.AddItem("Copy notes", () => songEditorCopyPasteManager.CopySelectedNotes());
            }

            if (songEditorCopyPasteManager.CopiedNotes.Count > 0)
            {
                contextMenu.AddItem("Paste notes", () => songEditorCopyPasteManager.PasteCopiedNotes());
            }
        }

        contextMenu.AddSeparator();
        contextMenu.AddItem("Add note", () => addNoteAction.ExecuteAndNotify(songMeta, beat, midiNote));

        if (selectedNotes.Count == 0)
        {
            contextMenu.AddSeparator();
            contextMenu.AddItem("Set Gap to playback position", () => setMusicGapAction.ExecuteAndNotify());
        }
    }
    private void FillContextMenu(ContextMenuPopupControl contextMenu)
    {
        if (!selectionControl.IsSelected(noteControl.Note))
        {
            selectionControl.SetSelection(new List <EditorNoteControl> {
                noteControl
            });
        }

        List <Note> selectedNotes = selectionControl.GetSelectedNotes();

        contextMenu.AddItem("Edit lyrics", () => songEditorSceneControl.StartEditingNoteText());
        FillContextMenuToSplitAndMergeNotes(contextMenu, selectedNotes);
        FillContextMenuToAddSpaceBetweenNotes(contextMenu);
        FillContextMenuToSetNoteType(contextMenu, selectedNotes);
        FillContextMenuToMergeSentences(contextMenu, selectedNotes);
        FillContextMenuToMoveToOtherSentence(contextMenu, selectedNotes);
        FillContextMenuToMoveToOtherVoice(contextMenu, selectedNotes);
        FillContextMenuToDeleteNotes(contextMenu, selectedNotes);
    }
    private void FillContextMenuToMoveToOtherSentence(ContextMenuPopupControl contextMenu, List <Note> selectedNotes)
    {
        bool canMoveToPreviousSentence = moveNoteToAdjacentSentenceAction.CanMoveToPreviousSentence(selectedNotes, noteControl.Note);
        bool canMoveToNextSentence     = moveNoteToAdjacentSentenceAction.CanMoveToNextSentence(selectedNotes, noteControl.Note);

        if (canMoveToPreviousSentence)
        {
            contextMenu.AddSeparator();
            contextMenu.AddItem("Move to previous sentence",
                                () => moveNoteToAdjacentSentenceAction.MoveToPreviousSentenceAndNotify(noteControl.Note));
        }
        if (!canMoveToPreviousSentence && canMoveToNextSentence)
        {
            contextMenu.AddSeparator();
        }
        if (canMoveToNextSentence)
        {
            contextMenu.AddItem("Move to next sentence",
                                () => moveNoteToAdjacentSentenceAction.MoveToNextSentenceAndNotify(noteControl.Note));
        }
    }
 private void FillContextMenuToDeleteNotes(ContextMenuPopupControl contextMenu, List <Note> selectedNotes)
 {
     contextMenu.AddSeparator();
     contextMenu.AddItem("Delete", () => deleteNotesAction.ExecuteAndNotify(selectedNotes));
 }
 private void FillContextMenuToAddSpaceBetweenNotes(ContextMenuPopupControl contextMenu)
 {
     contextMenu.AddSeparator();
     contextMenu.AddItem("Add space between notes", () => CreateAddSpaceBetweenNotesDialog());
 }