Hide transpose buttons if chords are disabled, and check for invalid chords on verseedit close.

This commit is contained in:
Tomas Groth 2017-04-20 22:23:17 +02:00
parent 6e9520c8b0
commit 536a919675
2 changed files with 41 additions and 20 deletions

View File

@ -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'))

View File

@ -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()