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.ui.lib import SpellTextEdit
from openlp.core.lib import build_icon, translate from openlp.core.lib import build_icon, translate
from openlp.core.lib.ui import UiStrings, create_button_box from openlp.core.lib.ui import UiStrings, create_button_box
from openlp.core.common import Settings
from openlp.plugins.songs.lib import VerseType 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.addWidget(self.insert_button)
self.verse_type_layout.addStretch() self.verse_type_layout.addStretch()
self.dialog_layout.addLayout(self.verse_type_layout) self.dialog_layout.addLayout(self.verse_type_layout)
self.transpose_layout = QtWidgets.QHBoxLayout() if Settings().value('songs/enable chords'):
self.transpose_layout.setObjectName('transpose_layout') self.transpose_layout = QtWidgets.QHBoxLayout()
self.transpose_label = QtWidgets.QLabel(edit_verse_dialog) self.transpose_layout.setObjectName('transpose_layout')
self.transpose_label.setObjectName('transpose_label') self.transpose_label = QtWidgets.QLabel(edit_verse_dialog)
self.transpose_layout.addWidget(self.transpose_label) self.transpose_label.setObjectName('transpose_label')
self.transpose_up_button = QtWidgets.QPushButton(edit_verse_dialog) self.transpose_layout.addWidget(self.transpose_label)
self.transpose_up_button.setIcon(build_icon(':/services/service_up.png')) self.transpose_up_button = QtWidgets.QPushButton(edit_verse_dialog)
self.transpose_up_button.setObjectName('transpose_up') self.transpose_up_button.setIcon(build_icon(':/services/service_up.png'))
self.transpose_layout.addWidget(self.transpose_up_button) self.transpose_up_button.setObjectName('transpose_up')
self.transpose_down_button = QtWidgets.QPushButton(edit_verse_dialog) self.transpose_layout.addWidget(self.transpose_up_button)
self.transpose_down_button.setIcon(build_icon(':/services/service_down.png')) self.transpose_down_button = QtWidgets.QPushButton(edit_verse_dialog)
self.transpose_down_button.setObjectName('transpose_down') self.transpose_down_button.setIcon(build_icon(':/services/service_down.png'))
self.transpose_layout.addWidget(self.transpose_down_button) self.transpose_down_button.setObjectName('transpose_down')
self.dialog_layout.addLayout(self.transpose_layout) 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.button_box = create_button_box(edit_verse_dialog, 'button_box', ['cancel', 'ok'])
self.dialog_layout.addWidget(self.button_box) self.dialog_layout.addWidget(self.button_box)
self.retranslateUi(edit_verse_dialog) self.retranslateUi(edit_verse_dialog)
@ -96,6 +98,7 @@ class Ui_EditVerseDialog(object):
self.insert_button.setText(translate('SongsPlugin.EditVerseForm', '&Insert')) self.insert_button.setText(translate('SongsPlugin.EditVerseForm', '&Insert'))
self.insert_button.setToolTip(translate('SongsPlugin.EditVerseForm', self.insert_button.setToolTip(translate('SongsPlugin.EditVerseForm',
'Split a slide into two by inserting a verse splitter.')) 'Split a slide into two by inserting a verse splitter.'))
self.transpose_label.setText(translate('SongsPlugin.EditVerseForm', 'Transpose:')) if Settings().value('songs/enable chords'):
self.transpose_up_button.setText(translate('SongsPlugin.EditVerseForm', 'Up')) self.transpose_label.setText(translate('SongsPlugin.EditVerseForm', 'Transpose:'))
self.transpose_down_button.setText(translate('SongsPlugin.EditVerseForm', 'Down')) 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.plugins.songs.lib import VerseType, transpose_lyrics
from openlp.core.lib.ui import critical_error_message_box 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 from .editversedialog import Ui_EditVerseDialog
log = logging.getLogger(__name__) 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.split_button.clicked.connect(self.on_split_button_clicked)
self.verse_text_edit.cursorPositionChanged.connect(self.on_cursor_position_changed) 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.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) if Settings().value('songs/enable chords'):
self.transpose_up_button.clicked.connect(self.on_transepose_up_button_clicked) 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): def insert_verse(self, verse_tag, verse_num=1):
""" """
@ -208,3 +209,20 @@ class EditVerseForm(QtWidgets.QDialog, Ui_EditVerseDialog):
if not text.startswith('---['): if not text.startswith('---['):
text = '---[{tag}:1]---\n{text}'.format(tag=VerseType.translated_names[VerseType.Verse], text=text) text = '---[{tag}:1]---\n{text}'.format(tag=VerseType.translated_names[VerseType.Verse], text=text)
return 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()