def accept(self): """ Test if any invalid chords has been entered before closing the verse editor """ if Registry().get('settings').value('songs/enable chords'): try: transpose_lyrics(self.verse_text_edit.toPlainText(), 1) super(EditVerseForm, self).accept() except ValueError as ve: # Transposing failed critical_error_message_box(title=translate('SongsPlugin.EditVerseForm', 'Invalid Chord'), message=translate('SongsPlugin.EditVerseForm', 'An invalid chord was detected:\n{err_msg}' .format(err_msg=ve))) else: super(EditVerseForm, self).accept()
def test_transpose_lyrics(self, mocked_transpose_verse): """ Test that the transpose_lyrics() splits verses correctly """ # GIVEN: Lyrics with verse splitters and a mocked settings lyrics = '---[Verse:1]---\n'\ 'Amazing grace how sweet the sound\n'\ '[---]\n'\ 'That saved a wretch like me.\n'\ '---[Verse:2]---\n'\ 'I once was lost but now I\'m found.' self.settings.value.return_value = 'english' # WHEN: Transposing the lyrics transpose_lyrics(lyrics, 1) # THEN: transpose_verse should have been called mocked_transpose_verse.assert_any_call('', 1, 'english') mocked_transpose_verse.assert_any_call( '\nAmazing grace how sweet the sound\n', 1, 'english') mocked_transpose_verse.assert_any_call( '\nThat saved a wretch like me.\n', 1, 'english') mocked_transpose_verse.assert_any_call( '\nI once was lost but now I\'m found.', 1, 'english')
def on_transpose_up_button_clicked(self): """ The transpose up button clicked """ try: transposed_lyrics = transpose_lyrics(self.verse_text_edit.toPlainText(), 1) self.verse_text_edit.setPlainText(transposed_lyrics) except ValueError as ve: # Transposing failed critical_error_message_box(title=translate('SongsPlugin.EditVerseForm', 'Transposing failed'), message=translate('SongsPlugin.EditVerseForm', 'Transposing failed because of invalid chord:\n{err_msg}' .format(err_msg=ve))) return self.verse_text_edit.setFocus() self.verse_text_edit.moveCursor(QtGui.QTextCursor.End)