From 536a91967565f2bdac097993773256d33b3af6f7 Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Thu, 20 Apr 2017 22:23:17 +0200 Subject: [PATCH] Hide transpose buttons if chords are disabled, and check for invalid chords on verseedit close. --- openlp/plugins/songs/forms/editversedialog.py | 37 ++++++++++--------- openlp/plugins/songs/forms/editverseform.py | 24 ++++++++++-- 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/openlp/plugins/songs/forms/editversedialog.py b/openlp/plugins/songs/forms/editversedialog.py index 9afbba1f4..e87d1d4ea 100644 --- a/openlp/plugins/songs/forms/editversedialog.py +++ b/openlp/plugins/songs/forms/editversedialog.py @@ -25,6 +25,7 @@ from PyQt5 import QtWidgets from openlp.core.ui.lib import SpellTextEdit from openlp.core.lib import build_icon, translate from openlp.core.lib.ui import UiStrings, create_button_box +from openlp.core.common import Settings from openlp.plugins.songs.lib import VerseType @@ -63,20 +64,21 @@ class Ui_EditVerseDialog(object): self.verse_type_layout.addWidget(self.insert_button) self.verse_type_layout.addStretch() self.dialog_layout.addLayout(self.verse_type_layout) - self.transpose_layout = QtWidgets.QHBoxLayout() - self.transpose_layout.setObjectName('transpose_layout') - self.transpose_label = QtWidgets.QLabel(edit_verse_dialog) - self.transpose_label.setObjectName('transpose_label') - self.transpose_layout.addWidget(self.transpose_label) - self.transpose_up_button = QtWidgets.QPushButton(edit_verse_dialog) - self.transpose_up_button.setIcon(build_icon(':/services/service_up.png')) - self.transpose_up_button.setObjectName('transpose_up') - self.transpose_layout.addWidget(self.transpose_up_button) - self.transpose_down_button = QtWidgets.QPushButton(edit_verse_dialog) - self.transpose_down_button.setIcon(build_icon(':/services/service_down.png')) - self.transpose_down_button.setObjectName('transpose_down') - self.transpose_layout.addWidget(self.transpose_down_button) - self.dialog_layout.addLayout(self.transpose_layout) + if Settings().value('songs/enable chords'): + self.transpose_layout = QtWidgets.QHBoxLayout() + self.transpose_layout.setObjectName('transpose_layout') + self.transpose_label = QtWidgets.QLabel(edit_verse_dialog) + self.transpose_label.setObjectName('transpose_label') + self.transpose_layout.addWidget(self.transpose_label) + self.transpose_up_button = QtWidgets.QPushButton(edit_verse_dialog) + self.transpose_up_button.setIcon(build_icon(':/services/service_up.png')) + self.transpose_up_button.setObjectName('transpose_up') + self.transpose_layout.addWidget(self.transpose_up_button) + self.transpose_down_button = QtWidgets.QPushButton(edit_verse_dialog) + self.transpose_down_button.setIcon(build_icon(':/services/service_down.png')) + self.transpose_down_button.setObjectName('transpose_down') + self.transpose_layout.addWidget(self.transpose_down_button) + self.dialog_layout.addLayout(self.transpose_layout) self.button_box = create_button_box(edit_verse_dialog, 'button_box', ['cancel', 'ok']) self.dialog_layout.addWidget(self.button_box) self.retranslateUi(edit_verse_dialog) @@ -96,6 +98,7 @@ class Ui_EditVerseDialog(object): self.insert_button.setText(translate('SongsPlugin.EditVerseForm', '&Insert')) self.insert_button.setToolTip(translate('SongsPlugin.EditVerseForm', 'Split a slide into two by inserting a verse splitter.')) - self.transpose_label.setText(translate('SongsPlugin.EditVerseForm', 'Transpose:')) - self.transpose_up_button.setText(translate('SongsPlugin.EditVerseForm', 'Up')) - self.transpose_down_button.setText(translate('SongsPlugin.EditVerseForm', 'Down')) + if Settings().value('songs/enable chords'): + self.transpose_label.setText(translate('SongsPlugin.EditVerseForm', 'Transpose:')) + self.transpose_up_button.setText(translate('SongsPlugin.EditVerseForm', 'Up')) + self.transpose_down_button.setText(translate('SongsPlugin.EditVerseForm', 'Down')) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 55a2dfcc6..f033f47d9 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -27,7 +27,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets from openlp.plugins.songs.lib import VerseType, transpose_lyrics from openlp.core.lib.ui import critical_error_message_box -from openlp.core.common import translate +from openlp.core.common import translate, Settings from .editversedialog import Ui_EditVerseDialog log = logging.getLogger(__name__) @@ -50,8 +50,9 @@ class EditVerseForm(QtWidgets.QDialog, Ui_EditVerseDialog): self.split_button.clicked.connect(self.on_split_button_clicked) self.verse_text_edit.cursorPositionChanged.connect(self.on_cursor_position_changed) self.verse_type_combo_box.currentIndexChanged.connect(self.on_verse_type_combo_box_changed) - self.transpose_down_button.clicked.connect(self.on_transepose_down_button_clicked) - self.transpose_up_button.clicked.connect(self.on_transepose_up_button_clicked) + if Settings().value('songs/enable chords'): + self.transpose_down_button.clicked.connect(self.on_transepose_down_button_clicked) + self.transpose_up_button.clicked.connect(self.on_transepose_up_button_clicked) def insert_verse(self, verse_tag, verse_num=1): """ @@ -208,3 +209,20 @@ class EditVerseForm(QtWidgets.QDialog, Ui_EditVerseDialog): if not text.startswith('---['): text = '---[{tag}:1]---\n{text}'.format(tag=VerseType.translated_names[VerseType.Verse], text=text) return text + + def accept(self): + """ + Test if any invalid chords has been entered before closing the verse editor + """ + if Settings().value('songs/enable chords'): + try: + transposed_lyrics = 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()