forked from openlp/openlp
- fixes bug #1170435 (We should not warn when verse order is empty)
bzr-revno: 2260 Fixes: https://launchpad.net/bugs/1170435
This commit is contained in:
commit
f4b9ffc481
@ -275,7 +275,6 @@ class Ui_EditSongDialog(object):
|
|||||||
self.bottom_layout.setObjectName(u'bottom_layout')
|
self.bottom_layout.setObjectName(u'bottom_layout')
|
||||||
self.warning_label = QtGui.QLabel(edit_song_dialog)
|
self.warning_label = QtGui.QLabel(edit_song_dialog)
|
||||||
self.warning_label.setObjectName(u'warning_label')
|
self.warning_label.setObjectName(u'warning_label')
|
||||||
self.warning_label.setVisible(False)
|
|
||||||
self.bottom_layout.addWidget(self.warning_label)
|
self.bottom_layout.addWidget(self.warning_label)
|
||||||
self.button_box = create_button_box(edit_song_dialog, u'button_box', [u'cancel', u'save'])
|
self.button_box = create_button_box(edit_song_dialog, u'button_box', [u'cancel', u'save'])
|
||||||
self.bottom_layout.addWidget(self.button_box)
|
self.bottom_layout.addWidget(self.button_box)
|
||||||
@ -323,8 +322,10 @@ class Ui_EditSongDialog(object):
|
|||||||
self.from_media_button.setText(translate('SongsPlugin.EditSongForm', 'Add &Media'))
|
self.from_media_button.setText(translate('SongsPlugin.EditSongForm', 'Add &Media'))
|
||||||
self.audio_remove_button.setText(translate('SongsPlugin.EditSongForm', '&Remove'))
|
self.audio_remove_button.setText(translate('SongsPlugin.EditSongForm', '&Remove'))
|
||||||
self.audio_remove_all_button.setText(translate('SongsPlugin.EditSongForm', 'Remove &All'))
|
self.audio_remove_all_button.setText(translate('SongsPlugin.EditSongForm', 'Remove &All'))
|
||||||
self.warning_label.setText(
|
self.not_all_verses_used_warning = \
|
||||||
translate('SongsPlugin.EditSongForm', '<strong>Warning:</strong> Not all of the verses are in use.'))
|
translate('SongsPlugin.EditSongForm', '<strong>Warning:</strong> Not all of the verses are in use.')
|
||||||
|
self.no_verse_order_entered_warning = \
|
||||||
|
translate('SongsPlugin.EditSongForm', '<strong>Warning:</strong> You have not entered a verse order.')
|
||||||
|
|
||||||
|
|
||||||
def create_combo_box(parent, name):
|
def create_combo_box(parent, name):
|
||||||
|
@ -456,6 +456,8 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
self.title_edit.setFocus()
|
self.title_edit.setFocus()
|
||||||
# Hide or show the preview button.
|
# Hide or show the preview button.
|
||||||
self.preview_button.setVisible(preview)
|
self.preview_button.setVisible(preview)
|
||||||
|
# Check if all verse tags are used.
|
||||||
|
self.on_verse_order_text_changed(self.verse_order_edit.text())
|
||||||
|
|
||||||
def tag_rows(self):
|
def tag_rows(self):
|
||||||
"""
|
"""
|
||||||
@ -683,21 +685,33 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
self.verse_edit_button.setEnabled(False)
|
self.verse_edit_button.setEnabled(False)
|
||||||
self.verse_delete_button.setEnabled(False)
|
self.verse_delete_button.setEnabled(False)
|
||||||
|
|
||||||
|
|
||||||
def on_verse_order_text_changed(self, text):
|
def on_verse_order_text_changed(self, text):
|
||||||
verses = []
|
"""
|
||||||
verse_names = []
|
Checks if the verse order is complete or missing. Shows a error message according to the state of the verse
|
||||||
order = self._extract_verse_order(text)
|
order.
|
||||||
|
|
||||||
|
``text``
|
||||||
|
The text of the verse order edit (ignored).
|
||||||
|
"""
|
||||||
|
# Extract all verses which were used in the order.
|
||||||
|
verses_in_order = self._extract_verse_order(self.verse_order_edit.text())
|
||||||
|
# Find the verses which were not used in the order.
|
||||||
|
verses_not_used = []
|
||||||
for index in range(self.verse_list_widget.rowCount()):
|
for index in range(self.verse_list_widget.rowCount()):
|
||||||
verse = self.verse_list_widget.item(index, 0)
|
verse = self.verse_list_widget.item(index, 0)
|
||||||
verse = verse.data(QtCore.Qt.UserRole)
|
verse = verse.data(QtCore.Qt.UserRole)
|
||||||
if verse not in verse_names:
|
if verse not in verses_in_order:
|
||||||
verses.append(verse)
|
|
||||||
verse_names.append(u'%s%s' % (VerseType.translated_tag(verse[0]), verse[1:]))
|
|
||||||
verses_not_used = []
|
|
||||||
for verse in verses:
|
|
||||||
if not verse in order:
|
|
||||||
verses_not_used.append(verse)
|
verses_not_used.append(verse)
|
||||||
self.warning_label.setVisible(len(verses_not_used) > 0)
|
# Set the label text.
|
||||||
|
label_text = u''
|
||||||
|
# No verse order was entered.
|
||||||
|
if not verses_in_order:
|
||||||
|
label_text = self.no_verse_order_entered_warning
|
||||||
|
# The verse order does not contain all verses.
|
||||||
|
elif verses_not_used:
|
||||||
|
label_text = self.not_all_verses_used_warning
|
||||||
|
self.warning_label.setText(label_text)
|
||||||
|
|
||||||
def on_copyright_insert_button_triggered(self):
|
def on_copyright_insert_button_triggered(self):
|
||||||
text = self.copyright_edit.text()
|
text = self.copyright_edit.text()
|
||||||
|
@ -45,3 +45,66 @@ class TestEditSongForm(TestCase):
|
|||||||
|
|
||||||
def is_verse_edit_form_executed_test(self):
|
def is_verse_edit_form_executed_test(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def verse_order_no_warning_test(self):
|
||||||
|
"""
|
||||||
|
Test if the verse order warning is not shown
|
||||||
|
"""
|
||||||
|
# GIVEN: Mocked methods.
|
||||||
|
given_verse_order = u'V1 V2'
|
||||||
|
self.form.verse_list_widget.rowCount = MagicMock(return_value=2)
|
||||||
|
# Mock out the verse.
|
||||||
|
first_verse = MagicMock()
|
||||||
|
first_verse.data = MagicMock(return_value=u'V1')
|
||||||
|
second_verse = MagicMock()
|
||||||
|
second_verse.data = MagicMock(return_value= u'V2')
|
||||||
|
self.form.verse_list_widget.item = MagicMock(side_effect=[first_verse, second_verse])
|
||||||
|
self.form._extract_verse_order = MagicMock(return_value=given_verse_order.split())
|
||||||
|
|
||||||
|
# WHEN: Call the method.
|
||||||
|
self.form.on_verse_order_text_changed(given_verse_order)
|
||||||
|
|
||||||
|
# THEN: No text should be shown.
|
||||||
|
assert self.form.warning_label.text() == u'', u'There should be no warning.'
|
||||||
|
|
||||||
|
def verse_order_incomplete_warning_test(self):
|
||||||
|
"""
|
||||||
|
Test if the verse-order-incomple warning is shown
|
||||||
|
"""
|
||||||
|
# GIVEN: Mocked methods.
|
||||||
|
given_verse_order = u'V1'
|
||||||
|
self.form.verse_list_widget.rowCount = MagicMock(return_value=2)
|
||||||
|
# Mock out the verse.
|
||||||
|
first_verse = MagicMock()
|
||||||
|
first_verse.data = MagicMock(return_value=u'V1')
|
||||||
|
second_verse = MagicMock()
|
||||||
|
second_verse.data = MagicMock(return_value= u'V2')
|
||||||
|
self.form.verse_list_widget.item = MagicMock(side_effect=[first_verse, second_verse])
|
||||||
|
self.form._extract_verse_order = MagicMock(return_value=[given_verse_order])
|
||||||
|
|
||||||
|
# WHEN: Call the method.
|
||||||
|
self.form.on_verse_order_text_changed(given_verse_order)
|
||||||
|
|
||||||
|
# THEN: The verse-order-incomplete text should be shown.
|
||||||
|
assert self.form.warning_label.text() == self.form.not_all_verses_used_warning, \
|
||||||
|
u'The verse-order-incomplete warning should be shown.'
|
||||||
|
|
||||||
|
def bug_1170435_test(self):
|
||||||
|
"""
|
||||||
|
Regression test for bug 1170435 (test if "no verse order" message is shown)
|
||||||
|
"""
|
||||||
|
# GIVEN: Mocked methods.
|
||||||
|
given_verse_order = u''
|
||||||
|
self.form.verse_list_widget.rowCount = MagicMock(return_value=1)
|
||||||
|
# Mock out the verse. (We want a verse type to be returned).
|
||||||
|
mocked_verse = MagicMock()
|
||||||
|
mocked_verse.data = MagicMock(return_value=u'V1')
|
||||||
|
self.form.verse_list_widget.item = MagicMock(return_value=mocked_verse)
|
||||||
|
self.form._extract_verse_order = MagicMock(return_value=[])
|
||||||
|
self.form.verse_order_edit.text = MagicMock(return_value=given_verse_order)
|
||||||
|
# WHEN: Call the method.
|
||||||
|
self.form.on_verse_order_text_changed(given_verse_order)
|
||||||
|
|
||||||
|
# THEN: The no-verse-order message should be shown.
|
||||||
|
assert self.form.warning_label.text() == self.form.no_verse_order_entered_warning, \
|
||||||
|
u'The no-verse-order message should be shown.'
|
||||||
|
Loading…
Reference in New Issue
Block a user