forked from openlp/openlp
first working example with unilanguage tags handling
This commit is contained in:
parent
18f43fc858
commit
02c1bd4413
@ -228,7 +228,14 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
self.verseListWidget.clear()
|
self.verseListWidget.clear()
|
||||||
self.verseListWidget.setRowCount(0)
|
self.verseListWidget.setRowCount(0)
|
||||||
if self.song.verse_order:
|
if self.song.verse_order:
|
||||||
self.verseOrderEdit.setText(self.song.verse_order)
|
# we translate verse order
|
||||||
|
translated = []
|
||||||
|
for verse in self.song.verse_order.split():
|
||||||
|
verseindex = VerseType.from_tag(verse[0])
|
||||||
|
versetype = VerseType.Translations[verseindex][0]
|
||||||
|
versetag = verse[1:]
|
||||||
|
translated.append(u'%s%s' % (versetype, versetag))
|
||||||
|
self.verseOrderEdit.setText(u' '.join(translated))
|
||||||
else:
|
else:
|
||||||
self.verseOrderEdit.setText(u'')
|
self.verseOrderEdit.setText(u'')
|
||||||
if self.song.comments:
|
if self.song.comments:
|
||||||
@ -256,6 +263,20 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
for count, verse in enumerate(verseList):
|
for count, verse in enumerate(verseList):
|
||||||
self.verseListWidget.setRowCount(
|
self.verseListWidget.setRowCount(
|
||||||
self.verseListWidget.rowCount() + 1)
|
self.verseListWidget.rowCount() + 1)
|
||||||
|
# this takes care of silently migrating from old or any markup
|
||||||
|
# if we entirely trusted the database, this should
|
||||||
|
# be unnecessary in the future
|
||||||
|
vtype = verse[0][u'type']
|
||||||
|
index = None
|
||||||
|
if len(vtype) > 1:
|
||||||
|
index = VerseType.from_translated_string(vtype)
|
||||||
|
if index is None:
|
||||||
|
index = VerseType.from_string(vtype)
|
||||||
|
if index is None:
|
||||||
|
index = VerseType.from_tag(vtype)
|
||||||
|
if index is None:
|
||||||
|
index = VerseType.Other
|
||||||
|
verse[0][u'type'] = VerseType.Tags[index]
|
||||||
variant = u'%s:%s' % (verse[0][u'type'], verse[0][u'label'])
|
variant = u'%s:%s' % (verse[0][u'type'], verse[0][u'label'])
|
||||||
item = QtGui.QTableWidgetItem(verse[1])
|
item = QtGui.QTableWidgetItem(verse[1])
|
||||||
item.setData(QtCore.Qt.UserRole, QtCore.QVariant(variant))
|
item.setData(QtCore.Qt.UserRole, QtCore.QVariant(variant))
|
||||||
@ -267,7 +288,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
self.verseListWidget.rowCount() + 1)
|
self.verseListWidget.rowCount() + 1)
|
||||||
item = QtGui.QTableWidgetItem(verse)
|
item = QtGui.QTableWidgetItem(verse)
|
||||||
variant = u'%s:%s' % \
|
variant = u'%s:%s' % \
|
||||||
(VerseType.to_string(VerseType.Verse), unicode(count + 1))
|
(VerseType.Tags[VerseType.Verse], unicode(count + 1))
|
||||||
item.setData(QtCore.Qt.UserRole, QtCore.QVariant(variant))
|
item.setData(QtCore.Qt.UserRole, QtCore.QVariant(variant))
|
||||||
self.verseListWidget.setItem(count, 0, item)
|
self.verseListWidget.setItem(count, 0, item)
|
||||||
self.verseListWidget.resizeRowsToContents()
|
self.verseListWidget.resizeRowsToContents()
|
||||||
@ -299,7 +320,8 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
item = self.verseListWidget.item(row, 0)
|
item = self.verseListWidget.item(row, 0)
|
||||||
data = unicode(item.data(QtCore.Qt.UserRole).toString())
|
data = unicode(item.data(QtCore.Qt.UserRole).toString())
|
||||||
bit = data.split(u':')
|
bit = data.split(u':')
|
||||||
rowTag = u'%s%s' % (bit[0][0:1], bit[1])
|
bit[0] = VerseType.Translations[VerseType.from_tag(bit[0])][0]
|
||||||
|
rowTag = u'%s%s' % (bit[0], bit[1])
|
||||||
rowLabel.append(rowTag)
|
rowLabel.append(rowTag)
|
||||||
self.verseListWidget.setVerticalHeaderLabels(rowLabel)
|
self.verseListWidget.setVerticalHeaderLabels(rowLabel)
|
||||||
|
|
||||||
@ -467,7 +489,9 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
for row in range(0, self.verseListWidget.rowCount()):
|
for row in range(0, self.verseListWidget.rowCount()):
|
||||||
item = self.verseListWidget.item(row, 0)
|
item = self.verseListWidget.item(row, 0)
|
||||||
field = unicode(item.data(QtCore.Qt.UserRole).toString())
|
field = unicode(item.data(QtCore.Qt.UserRole).toString())
|
||||||
verse_list += u'---[%s]---\n' % field
|
versetype, versenum = field.split(u':')
|
||||||
|
versetype = VerseType.to_translated_string(versetype)
|
||||||
|
verse_list += u'---[%s:%s]---\n' % (versetype, versenum)
|
||||||
verse_list += item.text()
|
verse_list += item.text()
|
||||||
verse_list += u'\n'
|
verse_list += u'\n'
|
||||||
self.verse_form.setVerse(verse_list)
|
self.verse_form.setVerse(verse_list)
|
||||||
@ -483,9 +507,18 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
for count, parts in enumerate(match.split(u']---\n')):
|
for count, parts in enumerate(match.split(u']---\n')):
|
||||||
if len(parts) > 1:
|
if len(parts) > 1:
|
||||||
if count == 0:
|
if count == 0:
|
||||||
# make sure the tag is correctly cased
|
# handling carefully user inputted versetags
|
||||||
variant = u'%s%s' % \
|
separator = parts.find(u':')
|
||||||
(parts[0:1].upper(), parts[1:].lower())
|
if separator >= 0:
|
||||||
|
verse = parts[0:separator].strip()
|
||||||
|
subVerse = parts[separator+1:].strip()
|
||||||
|
else:
|
||||||
|
verse = parts
|
||||||
|
verseIndex = VerseType.from_loose_input(verse)
|
||||||
|
verseType = VerseType.Tags[verseIndex]
|
||||||
|
if not len(subVerse):
|
||||||
|
subVerse = u'1'
|
||||||
|
variant = u'%s:%s' % (verseType, subVerse)
|
||||||
else:
|
else:
|
||||||
if parts.endswith(u'\n'):
|
if parts.endswith(u'\n'):
|
||||||
parts = parts.rstrip(u'\n')
|
parts = parts.rstrip(u'\n')
|
||||||
@ -543,9 +576,13 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
order_names = unicode(self.verseOrderEdit.text()).split()
|
order_names = unicode(self.verseOrderEdit.text()).split()
|
||||||
for item in order_names:
|
for item in order_names:
|
||||||
if len(item) == 1:
|
if len(item) == 1:
|
||||||
order.append(item.lower() + u'1')
|
order.append(VerseType.Tags[VerseType.from_translated_tag(
|
||||||
|
item)] + u'1')
|
||||||
else:
|
else:
|
||||||
order.append(item.lower())
|
versetag = VerseType.Tags[
|
||||||
|
VerseType.from_translated_tag(item[0])]
|
||||||
|
versenum = item[1:].lower()
|
||||||
|
order.append(u'%s%s' % (versetag, versenum))
|
||||||
verses = []
|
verses = []
|
||||||
verse_names = []
|
verse_names = []
|
||||||
for index in range (0, self.verseListWidget.rowCount()):
|
for index in range (0, self.verseListWidget.rowCount()):
|
||||||
@ -561,7 +598,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
self.verseOrderEdit.setFocus()
|
self.verseOrderEdit.setFocus()
|
||||||
valid = verses.pop(0)
|
valid = verses.pop(0)
|
||||||
for verse in verses:
|
for verse in verses:
|
||||||
valid = valid + u', ' + verse
|
valid = valid + u', ' + verse.upper()
|
||||||
critical_error_message_box(
|
critical_error_message_box(
|
||||||
message=unicode(translate('SongsPlugin.EditSongForm',
|
message=unicode(translate('SongsPlugin.EditSongForm',
|
||||||
'The verse order is invalid. There is no verse '
|
'The verse order is invalid. There is no verse '
|
||||||
@ -572,12 +609,16 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
if verse not in order:
|
if verse not in order:
|
||||||
self.songTabWidget.setCurrentIndex(0)
|
self.songTabWidget.setCurrentIndex(0)
|
||||||
self.verseOrderEdit.setFocus()
|
self.verseOrderEdit.setFocus()
|
||||||
|
versetype, versenum = verse_names[count].split(u':')
|
||||||
|
verseindex = VerseType.from_tag(versetype)
|
||||||
|
versetype = VerseType.Translations[verseindex][0]
|
||||||
|
versename = u'%s%s' % (versetype, versenum)
|
||||||
answer = QtGui.QMessageBox.warning(self,
|
answer = QtGui.QMessageBox.warning(self,
|
||||||
translate('SongsPlugin.EditSongForm', 'Warning'),
|
translate('SongsPlugin.EditSongForm', 'Warning'),
|
||||||
unicode(translate('SongsPlugin.EditSongForm',
|
unicode(translate('SongsPlugin.EditSongForm',
|
||||||
'You have not used %s anywhere in the verse '
|
'You have not used %s anywhere in the verse '
|
||||||
'order. Are you sure you want to save the song '
|
'order. Are you sure you want to save the song '
|
||||||
'like this?')) % verse_names[count].replace(u':', u' '),
|
'like this?')) % versename,
|
||||||
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
|
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
|
||||||
if answer == QtGui.QMessageBox.No:
|
if answer == QtGui.QMessageBox.No:
|
||||||
return False
|
return False
|
||||||
@ -684,7 +725,14 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
else:
|
else:
|
||||||
self.song.search_title = self.song.title
|
self.song.search_title = self.song.title
|
||||||
self.song.comments = unicode(self.commentsEdit.toPlainText())
|
self.song.comments = unicode(self.commentsEdit.toPlainText())
|
||||||
self.song.verse_order = unicode(self.verseOrderEdit.text())
|
ordertext = unicode(self.verseOrderEdit.text())
|
||||||
|
order = []
|
||||||
|
for item in ordertext.split():
|
||||||
|
versetag = VerseType.Tags[
|
||||||
|
VerseType.from_translated_tag(item[0])]
|
||||||
|
versenum = item[1:].lower()
|
||||||
|
order.append(u'%s%s' % (versetag, versenum))
|
||||||
|
self.song.verse_order = u' '.join(order)
|
||||||
self.song.ccli_number = unicode(self.CCLNumberEdit.text())
|
self.song.ccli_number = unicode(self.CCLNumberEdit.text())
|
||||||
self.song.song_number = unicode(self.songBookNumberEdit.text())
|
self.song.song_number = unicode(self.songBookNumberEdit.text())
|
||||||
book_name = unicode(self.songBookComboBox.currentText())
|
book_name = unicode(self.songBookComboBox.currentText())
|
||||||
|
@ -71,18 +71,18 @@ class Ui_EditVerseDialog(object):
|
|||||||
self.verseTypeLabel.setText(
|
self.verseTypeLabel.setText(
|
||||||
translate('SongsPlugin.EditVerseForm', '&Verse type:'))
|
translate('SongsPlugin.EditVerseForm', '&Verse type:'))
|
||||||
self.verseTypeComboBox.setItemText(0,
|
self.verseTypeComboBox.setItemText(0,
|
||||||
VerseType.to_string(VerseType.Verse))
|
VerseType.Translations[VerseType.Verse])
|
||||||
self.verseTypeComboBox.setItemText(1,
|
self.verseTypeComboBox.setItemText(1,
|
||||||
VerseType.to_string(VerseType.Chorus))
|
VerseType.Translations[VerseType.Chorus])
|
||||||
self.verseTypeComboBox.setItemText(2,
|
self.verseTypeComboBox.setItemText(2,
|
||||||
VerseType.to_string(VerseType.Bridge))
|
VerseType.Translations[VerseType.Bridge])
|
||||||
self.verseTypeComboBox.setItemText(3,
|
self.verseTypeComboBox.setItemText(3,
|
||||||
VerseType.to_string(VerseType.PreChorus))
|
VerseType.Translations[VerseType.PreChorus])
|
||||||
self.verseTypeComboBox.setItemText(4,
|
self.verseTypeComboBox.setItemText(4,
|
||||||
VerseType.to_string(VerseType.Intro))
|
VerseType.Translations[VerseType.Intro])
|
||||||
self.verseTypeComboBox.setItemText(5,
|
self.verseTypeComboBox.setItemText(5,
|
||||||
VerseType.to_string(VerseType.Ending))
|
VerseType.Translations[VerseType.Ending])
|
||||||
self.verseTypeComboBox.setItemText(6,
|
self.verseTypeComboBox.setItemText(6,
|
||||||
VerseType.to_string(VerseType.Other))
|
VerseType.Translations[VerseType.Other])
|
||||||
self.insertButton.setText(
|
self.insertButton.setText(
|
||||||
translate('SongsPlugin.EditVerseForm', '&Insert'))
|
translate('SongsPlugin.EditVerseForm', '&Insert'))
|
||||||
|
@ -57,7 +57,7 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
|||||||
QtCore.QObject.connect(self.verseTypeComboBox,
|
QtCore.QObject.connect(self.verseTypeComboBox,
|
||||||
QtCore.SIGNAL(u'currentIndexChanged(int)'),
|
QtCore.SIGNAL(u'currentIndexChanged(int)'),
|
||||||
self.onVerseTypeComboBoxChanged)
|
self.onVerseTypeComboBoxChanged)
|
||||||
self.verse_regex = re.compile(r'---\[([-\w]+):([\d]+)\]---')
|
self.verse_regex = re.compile(r'---\[(.+):(.+)\]---')
|
||||||
|
|
||||||
def contextMenu(self, point):
|
def contextMenu(self, point):
|
||||||
item = self.serviceManagerList.itemAt(point)
|
item = self.serviceManagerList.itemAt(point)
|
||||||
@ -70,8 +70,8 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
|||||||
|
|
||||||
def onInsertButtonClicked(self):
|
def onInsertButtonClicked(self):
|
||||||
verse_type = self.verseTypeComboBox.currentIndex()
|
verse_type = self.verseTypeComboBox.currentIndex()
|
||||||
if VerseType.to_string(verse_type) is not None:
|
if VerseType.to_translated_string(verse_type) is not None:
|
||||||
self.insertVerse(VerseType.to_string(verse_type),
|
self.insertVerse(VerseType.to_translated_string(verse_type),
|
||||||
self.verseNumberBox.value())
|
self.verseNumberBox.value())
|
||||||
|
|
||||||
def onVerseTypeComboBoxChanged(self):
|
def onVerseTypeComboBoxChanged(self):
|
||||||
@ -81,7 +81,8 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
|||||||
"""
|
"""
|
||||||
position = self.verseTextEdit.textCursor().position()
|
position = self.verseTextEdit.textCursor().position()
|
||||||
text = unicode(self.verseTextEdit.toPlainText())
|
text = unicode(self.verseTextEdit.toPlainText())
|
||||||
verse_type = VerseType.to_string(self.verseTypeComboBox.currentIndex())
|
verse_type = VerseType.Translations[
|
||||||
|
self.verseTypeComboBox.currentIndex()]
|
||||||
if not text:
|
if not text:
|
||||||
return
|
return
|
||||||
position = text.rfind(u'---[%s' % verse_type, 0, position)
|
position = text.rfind(u'---[%s' % verse_type, 0, position)
|
||||||
@ -97,7 +98,11 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
|||||||
if match:
|
if match:
|
||||||
verse_type = match.group(1)
|
verse_type = match.group(1)
|
||||||
verse_number = int(match.group(2))
|
verse_number = int(match.group(2))
|
||||||
verse_type_index = VerseType.from_string(verse_type)
|
verse_type_index = VerseType.from_translated_string(verse_type)
|
||||||
|
if verse_type_index is None:
|
||||||
|
verse_type_index = VerseType.from_string(verse_type)
|
||||||
|
if verse_type_index is None:
|
||||||
|
verse_type_index = VerseType.from_tag(verse_type)
|
||||||
if verse_type_index is not None:
|
if verse_type_index is not None:
|
||||||
self.verseNumberBox.setValue(verse_number)
|
self.verseNumberBox.setValue(verse_number)
|
||||||
|
|
||||||
@ -125,24 +130,25 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
|||||||
if match:
|
if match:
|
||||||
verse_type = match.group(1)
|
verse_type = match.group(1)
|
||||||
verse_number = int(match.group(2))
|
verse_number = int(match.group(2))
|
||||||
verse_type_index = VerseType.from_string(verse_type)
|
verse_type_index = VerseType.from_loose_input(verse_type)
|
||||||
if verse_type_index is not None:
|
if verse_type_index is not None:
|
||||||
self.verseTypeComboBox.setCurrentIndex(verse_type_index)
|
self.verseTypeComboBox.setCurrentIndex(verse_type_index)
|
||||||
self.verseNumberBox.setValue(verse_number)
|
self.verseNumberBox.setValue(verse_number)
|
||||||
|
|
||||||
def setVerse(self, text, single=False,
|
def setVerse(self, text, single=False,
|
||||||
tag=u'%s:1' % VerseType.to_string(VerseType.Verse)):
|
tag=u'%s:1' % VerseType.tag(VerseType.Verse)):
|
||||||
self.hasSingleVerse = single
|
self.hasSingleVerse = single
|
||||||
if single:
|
if single:
|
||||||
verse_type, verse_number = tag.split(u':')
|
verse_type, verse_number = tag.split(u':')
|
||||||
verse_type_index = VerseType.from_string(verse_type)
|
verse_type_index = VerseType.from_tag(verse_type)
|
||||||
if verse_type_index is not None:
|
if verse_type_index is not None:
|
||||||
self.verseTypeComboBox.setCurrentIndex(verse_type_index)
|
self.verseTypeComboBox.setCurrentIndex(verse_type_index)
|
||||||
self.verseNumberBox.setValue(int(verse_number))
|
self.verseNumberBox.setValue(int(verse_number))
|
||||||
self.insertButton.setVisible(False)
|
self.insertButton.setVisible(False)
|
||||||
else:
|
else:
|
||||||
if not text:
|
if not text:
|
||||||
text = u'---[%s:1]---\n' % VerseType.to_string(VerseType.Verse)
|
text = u'---[%s:1]---\n' % \
|
||||||
|
VerseType.to_translated_string(VerseType.Verse)
|
||||||
self.verseTypeComboBox.setCurrentIndex(0)
|
self.verseTypeComboBox.setCurrentIndex(0)
|
||||||
self.verseNumberBox.setValue(1)
|
self.verseNumberBox.setValue(1)
|
||||||
self.insertButton.setVisible(True)
|
self.insertButton.setVisible(True)
|
||||||
@ -152,14 +158,14 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
|||||||
|
|
||||||
def getVerse(self):
|
def getVerse(self):
|
||||||
return self.verseTextEdit.toPlainText(), \
|
return self.verseTextEdit.toPlainText(), \
|
||||||
VerseType.to_string(self.verseTypeComboBox.currentIndex()), \
|
VerseType.Tags[self.verseTypeComboBox.currentIndex()], \
|
||||||
unicode(self.verseNumberBox.value())
|
unicode(self.verseNumberBox.value())
|
||||||
|
|
||||||
def getVerseAll(self):
|
def getVerseAll(self):
|
||||||
text = self.verseTextEdit.toPlainText()
|
text = self.verseTextEdit.toPlainText()
|
||||||
if not text.startsWith(u'---['):
|
if not text.startsWith(u'---['):
|
||||||
text = u'---[%s:1]---\n%s' % (VerseType.to_string(VerseType.Verse),
|
text = u'---[%s:1]---\n%s' % \
|
||||||
text)
|
(VerseType.to_translated_string(VerseType.Verse), text)
|
||||||
return text
|
return text
|
||||||
|
|
||||||
def accept(self):
|
def accept(self):
|
||||||
|
@ -56,121 +56,138 @@ class VerseType(object):
|
|||||||
u'Ending',
|
u'Ending',
|
||||||
u'Other']
|
u'Other']
|
||||||
Translations = [
|
Translations = [
|
||||||
translate('SongsPlugin.VerseType', 'Verse'),
|
unicode(translate('SongsPlugin.VerseType', 'Verse')),
|
||||||
translate('SongsPlugin.VerseType', 'Chorus'),
|
unicode(translate('SongsPlugin.VerseType', 'Chorus')),
|
||||||
translate('SongsPlugin.VerseType', 'Bridge'),
|
unicode(translate('SongsPlugin.VerseType', 'Bridge')),
|
||||||
translate('SongsPlugin.VerseType', 'Pre-Chorus'),
|
unicode(translate('SongsPlugin.VerseType', 'Pre-Chorus')),
|
||||||
translate('SongsPlugin.VerseType', 'Intro'),
|
unicode(translate('SongsPlugin.VerseType', 'Intro')),
|
||||||
translate('SongsPlugin.VerseType', 'Ending'),
|
unicode(translate('SongsPlugin.VerseType', 'Ending')),
|
||||||
translate('SongsPlugin.VerseType', 'Other')]
|
unicode(translate('SongsPlugin.VerseType', 'Other'))]
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def tag(verse_type, strict=False):
|
def tag(verse_type):
|
||||||
"""
|
"""
|
||||||
Return a string for a given VerseType tag
|
Return a string for a given VerseType tag
|
||||||
|
|
||||||
``verse_type``
|
``verse_type``
|
||||||
The verse type to return a string for
|
The verse type to return a string for
|
||||||
|
|
||||||
``strict``
|
|
||||||
If strict, False is returned instead of Other, when not found
|
|
||||||
"""
|
"""
|
||||||
if isinstance(verse_type, int):
|
if isinstance(verse_type, int):
|
||||||
if verse_type >=0 and verse_type <= 6:
|
try:
|
||||||
return VerseType.Tags[verse_type]
|
return VerseType.Tags[verse_type]
|
||||||
else:
|
except:
|
||||||
return self.returnvalue(VerseType.Tags, strict)
|
return
|
||||||
elif verse_type[0].lower() in VerseType.Tags:
|
elif verse_type[0].lower() in VerseType.Tags:
|
||||||
return verse_type[0].lower()
|
return verse_type[0].lower()
|
||||||
else:
|
|
||||||
return VerseType.returnvalue(VerseType.Tags, strict)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def to_string(verse_type, strict=False):
|
def to_string(verse_type):
|
||||||
"""
|
"""
|
||||||
Return a string for a given VerseType Name
|
Return a string for a given VerseType Name
|
||||||
|
|
||||||
``verse_type``
|
``verse_type``
|
||||||
The type to return a string for
|
The type to return a string for
|
||||||
|
|
||||||
``strict``
|
|
||||||
If strict, False is returned instead of Other, when not found
|
|
||||||
"""
|
"""
|
||||||
if isinstance(verse_type, int):
|
if isinstance(verse_type, int):
|
||||||
if verse_type >=0 and verse_type <= 6:
|
try:
|
||||||
return VerseType.Names[verse_type]
|
return VerseType.Names[verse_type]
|
||||||
else:
|
except:
|
||||||
return self.returnvalue(VerseType.Names, strict)
|
return
|
||||||
else:
|
else:
|
||||||
verse_type = verse_type[0].lower()
|
verse_type = verse_type[0].lower()
|
||||||
for num, tag in enumerate(VerseType.Tags):
|
for num, tag in enumerate(VerseType.Tags):
|
||||||
if verse_type == tag:
|
if verse_type == tag:
|
||||||
return VerseType.Names[num]
|
return VerseType.Names[num]
|
||||||
return VerseType.returnvalue(VerseType.Names, strict)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def to_translated_string(verse_type, strict=False):
|
def to_translated_string(verse_type):
|
||||||
"""
|
"""
|
||||||
Return a string for a given VerseType Name
|
Return a string for a given VerseType Name
|
||||||
|
|
||||||
``verse_type``
|
``verse_type``
|
||||||
The type to return a string for
|
The type to return a string for
|
||||||
|
|
||||||
``strict``
|
|
||||||
If strict, False is returned instead of Other, when not found
|
|
||||||
"""
|
"""
|
||||||
if isinstance(verse_type, int):
|
if isinstance(verse_type, int):
|
||||||
if verse_type >=0 and verse_type <= 6:
|
try:
|
||||||
return VerseType.Translations[verse_type]
|
return VerseType.Translations[verse_type]
|
||||||
else:
|
except:
|
||||||
return self.returnvalue(VerseType.Translations, strict)
|
return
|
||||||
else:
|
else:
|
||||||
verse_type = verse_type[0].lower()
|
verse_type = verse_type[0].lower()
|
||||||
for num, tag in enumerate(VerseType.Tags):
|
for num, tag in enumerate(VerseType.Tags):
|
||||||
if verse_type == tag:
|
if verse_type == tag:
|
||||||
return VerseType.Translations[num]
|
return VerseType.Translations[num]
|
||||||
return VerseType.returnvalue(VerseType.Translations, strict)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_string(verse_type, strict=False):
|
def from_tag(verse_type):
|
||||||
|
"""
|
||||||
|
Return the VerseType for a given tag
|
||||||
|
|
||||||
|
``verse_type``
|
||||||
|
The string to return a VerseType for
|
||||||
|
"""
|
||||||
|
verse_type = verse_type[0].lower()
|
||||||
|
for num, string in enumerate(VerseType.Tags):
|
||||||
|
if verse_type == string:
|
||||||
|
return num
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def from_translated_tag(verse_type):
|
||||||
|
"""
|
||||||
|
Return the VerseType for a given tag
|
||||||
|
|
||||||
|
``verse_type``
|
||||||
|
The string to return a VerseType for
|
||||||
|
"""
|
||||||
|
verse_type = verse_type[0].lower()
|
||||||
|
for num, string in enumerate(VerseType.Translations):
|
||||||
|
if verse_type == string[0].lower():
|
||||||
|
return num
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def from_string(verse_type):
|
||||||
"""
|
"""
|
||||||
Return the VerseType for a given string
|
Return the VerseType for a given string
|
||||||
|
|
||||||
``verse_type``
|
``verse_type``
|
||||||
The string to return a VerseType for
|
The string to return a VerseType for
|
||||||
|
|
||||||
``strict``
|
|
||||||
If strict, False is returned instead of Other, when not found
|
|
||||||
"""
|
"""
|
||||||
verse_type = verse_type.lower()
|
verse_type = verse_type.lower()
|
||||||
for num, string in enumerate(VerseType.Names):
|
for num, string in enumerate(VerseType.Names):
|
||||||
if verse_type == string:
|
if verse_type == string.lower():
|
||||||
return num
|
return num
|
||||||
return VerseType.returnvalue(range(0,7), strict)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_translated_string(verse_type, strict=False):
|
def from_translated_string(verse_type):
|
||||||
"""
|
"""
|
||||||
Return the VerseType for a given string
|
Return the VerseType for a given string
|
||||||
|
|
||||||
``verse_type``
|
``verse_type``
|
||||||
The string to return a VerseType for
|
The string to return a VerseType for
|
||||||
|
|
||||||
``strict``
|
|
||||||
If strict, False is returned instead of Other, when not found
|
|
||||||
"""
|
"""
|
||||||
verse_type = verse_type.lower()
|
verse_type = verse_type.lower()
|
||||||
for num, translation in enumerate(VerseType.Translations):
|
for num, translation in enumerate(VerseType.Translations):
|
||||||
if verse_type == translation:
|
if verse_type == translation.lower():
|
||||||
return num
|
return num
|
||||||
return VerseType.returnvalue(range(0,7), strict)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def returnvalue(lst, strict):
|
def from_loose_input(verse_type):
|
||||||
if strict:
|
"""
|
||||||
return False
|
Return the VerseType for a given string, Other if not found
|
||||||
else:
|
|
||||||
return lst[VerseType.Other]
|
``verse_type``
|
||||||
|
The string to return a VerseType for
|
||||||
|
"""
|
||||||
|
verseIndex = None
|
||||||
|
if len(verse_type) > 1:
|
||||||
|
verseIndex = VerseType.from_translated_string(verse_type)
|
||||||
|
if verseIndex is None:
|
||||||
|
verseIndex = VerseType.from_string(verse_type)
|
||||||
|
if verseIndex is None:
|
||||||
|
verseIndex = VerseType.from_translated_tag(verse_type)
|
||||||
|
elif verseIndex is None:
|
||||||
|
verseIndex = VerseType.from_tag(verse_type)
|
||||||
|
return verseIndex
|
||||||
|
|
||||||
def retrieve_windows_encoding(recommendation=None):
|
def retrieve_windows_encoding(recommendation=None):
|
||||||
"""
|
"""
|
||||||
|
@ -36,7 +36,7 @@ from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \
|
|||||||
from openlp.core.lib.ui import UiStrings
|
from openlp.core.lib.ui import UiStrings
|
||||||
from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm, \
|
from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm, \
|
||||||
SongImportForm, SongExportForm
|
SongImportForm, SongExportForm
|
||||||
from openlp.plugins.songs.lib import OpenLyrics, SongXML
|
from openlp.plugins.songs.lib import OpenLyrics, SongXML, VerseType
|
||||||
from openlp.plugins.songs.lib.db import Author, Song
|
from openlp.plugins.songs.lib.db import Author, Song
|
||||||
from openlp.core.lib.searchedit import SearchEdit
|
from openlp.core.lib.searchedit import SearchEdit
|
||||||
|
|
||||||
@ -344,22 +344,26 @@ class SongMediaItem(MediaManagerItem):
|
|||||||
if song.lyrics.startswith(u'<?xml version='):
|
if song.lyrics.startswith(u'<?xml version='):
|
||||||
verseList = SongXML().get_verses(song.lyrics)
|
verseList = SongXML().get_verses(song.lyrics)
|
||||||
# no verse list or only 1 space (in error)
|
# no verse list or only 1 space (in error)
|
||||||
if not song.verse_order or not song.verse_order.strip():
|
if not song.verse_order.strip():
|
||||||
for verse in verseList:
|
for verse in verseList:
|
||||||
verseTag = u'%s:%s' % (
|
verseindex = VerseType.from_tag(verse[0][u'type'])
|
||||||
verse[0][u'type'], verse[0][u'label'])
|
versetype = VerseType.Translations[verseindex][0]
|
||||||
|
verseTag = u'%s:%s' % (versetype, verse[0][u'label'])
|
||||||
service_item.add_from_text(
|
service_item.add_from_text(
|
||||||
verse[1][:30], unicode(verse[1]), verseTag)
|
verse[1][:30], unicode(verse[1]), verseTag)
|
||||||
else:
|
else:
|
||||||
# Loop through the verse list and expand the song accordingly.
|
# Loop through the verse list and expand the song accordingly.
|
||||||
for order in song.verse_order.upper().split():
|
print song.verse_order
|
||||||
|
for order in song.verse_order.lower().split():
|
||||||
if len(order) == 0:
|
if len(order) == 0:
|
||||||
break
|
break
|
||||||
for verse in verseList:
|
for verse in verseList:
|
||||||
if verse[0][u'type'][0] == order[0] and \
|
if verse[0][u'type'][0] == order[0] and \
|
||||||
(verse[0][u'label'] == order[1:] or not order[1:]):
|
(verse[0][u'label'] == order[1:] or not order[1:]):
|
||||||
|
verseindex = VerseType.from_tag(verse[0][u'type'])
|
||||||
|
versetype = VerseType.Translations[verseindex][0]
|
||||||
verseTag = u'%s:%s' % \
|
verseTag = u'%s:%s' % \
|
||||||
(verse[0][u'type'], verse[0][u'label'])
|
(versetype, verse[0][u'label'])
|
||||||
service_item.add_from_text(
|
service_item.add_from_text(
|
||||||
verse[1][:30], verse[1], verseTag)
|
verse[1][:30], verse[1], verseTag)
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user