forked from openlp/openlp
commit
ce2bab50cd
|
@ -537,17 +537,9 @@ class SlideController(QtGui.QWidget):
|
||||||
if self.serviceItem.is_text():
|
if self.serviceItem.is_text():
|
||||||
if frame[u'verseTag']:
|
if frame[u'verseTag']:
|
||||||
bits = frame[u'verseTag'].split(u':')
|
bits = frame[u'verseTag'].split(u':')
|
||||||
tag = None
|
tag = u'%s\n%s' % (bits[0][0], bits[1][0:] )
|
||||||
#If verse handle verse number else tag only
|
tag1 = u'%s%s' % (bits[0][0], bits[1][0:] )
|
||||||
if bits[0] == self.trUtf8('Verse') or \
|
row = tag
|
||||||
bits[0] == self.trUtf8('Chorus'):
|
|
||||||
tag = u'%s\n%s' % (bits[0][0], bits[1][0:] )
|
|
||||||
tag1 = u'%s%s' % (bits[0][0], bits[1][0:] )
|
|
||||||
row = tag
|
|
||||||
else:
|
|
||||||
tag = bits[0]
|
|
||||||
tag1 = tag
|
|
||||||
row = bits[0][0:1]
|
|
||||||
else:
|
else:
|
||||||
row += 1
|
row += 1
|
||||||
if self.isLive and frame[u'verseTag'] is not None:
|
if self.isLive and frame[u'verseTag'] is not None:
|
||||||
|
|
|
@ -23,6 +23,52 @@
|
||||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
|
from openlp.core.lib import translate
|
||||||
|
|
||||||
|
class VerseType(object):
|
||||||
|
Verse = 0
|
||||||
|
Chorus = 1
|
||||||
|
Bridge = 2
|
||||||
|
PreChorus = 3
|
||||||
|
Intro = 4
|
||||||
|
Ending = 5
|
||||||
|
Other = 6
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def to_string(verse_type):
|
||||||
|
if verse_type == VerseType.Verse:
|
||||||
|
return translate('VerseType', 'Verse')
|
||||||
|
elif verse_type == VerseType.Chorus:
|
||||||
|
return translate('VerseType', 'Chorus')
|
||||||
|
elif verse_type == VerseType.Bridge:
|
||||||
|
return translate('VerseType', 'Bridge')
|
||||||
|
elif verse_type == VerseType.PreChorus:
|
||||||
|
return translate('VerseType', 'Pre-Chorus')
|
||||||
|
elif verse_type == VerseType.Intro:
|
||||||
|
return translate('VerseType', 'Intro')
|
||||||
|
elif verse_type == VerseType.Ending:
|
||||||
|
return translate('VerseType', 'Ending')
|
||||||
|
elif verse_type == VerseType.Other:
|
||||||
|
return translate('VerseType', 'Other')
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def from_string(verse_type):
|
||||||
|
verse_type = verse_type.lower()
|
||||||
|
if verse_type == unicode(VerseType.to_string(VerseType.Verse)).lower():
|
||||||
|
return VerseType.Verse
|
||||||
|
elif verse_type == unicode(VerseType.to_string(VerseType.Chorus)).lower():
|
||||||
|
return VerseType.Chorus
|
||||||
|
elif verse_type == unicode(VerseType.to_string(VerseType.Bridge)).lower():
|
||||||
|
return VerseType.Bridge
|
||||||
|
elif verse_type == unicode(VerseType.to_string(VerseType.PreChorus)).lower():
|
||||||
|
return VerseType.PreChorus
|
||||||
|
elif verse_type == unicode(VerseType.to_string(VerseType.Intro)).lower():
|
||||||
|
return VerseType.Intro
|
||||||
|
elif verse_type == unicode(VerseType.to_string(VerseType.Ending)).lower():
|
||||||
|
return VerseType.Ending
|
||||||
|
elif verse_type == unicode(VerseType.to_string(VerseType.Other)).lower():
|
||||||
|
return VerseType.Other
|
||||||
|
|
||||||
from authorsform import AuthorsForm
|
from authorsform import AuthorsForm
|
||||||
from topicsform import TopicsForm
|
from topicsform import TopicsForm
|
||||||
from songbookform import SongBookForm
|
from songbookform import SongBookForm
|
||||||
|
|
|
@ -471,27 +471,18 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
||||||
self.SongTabWidget.setCurrentIndex(1)
|
self.SongTabWidget.setCurrentIndex(1)
|
||||||
self.AuthorsListView.setFocus()
|
self.AuthorsListView.setFocus()
|
||||||
#split the verse list by space and mark lower case for testing
|
#split the verse list by space and mark lower case for testing
|
||||||
taglist = unicode(self.trUtf8(' bitpeo'))
|
taglist = unicode(self.trUtf8(' bitpeovc'))
|
||||||
for verse in unicode(self.VerseOrderEdit.text()).lower().split(u' '):
|
for verse in unicode(self.VerseOrderEdit.text()).lower().split(u' '):
|
||||||
if len(verse) > 1:
|
if len(verse) > 1:
|
||||||
if (verse[0:1] == u'%s' % self.trUtf8('v') or
|
if taglist.find(verse[0:1]) > -1 \
|
||||||
verse[0:1] == u'%s' % self.trUtf8('c')) \
|
|
||||||
and verse[1:].isdigit():
|
and verse[1:].isdigit():
|
||||||
pass
|
pass
|
||||||
else:
|
|
||||||
self.SongTabWidget.setCurrentIndex(0)
|
|
||||||
self.VerseOrderEdit.setFocus()
|
|
||||||
return False, \
|
|
||||||
self.trUtf8('Invalid verse entry - Vx or Cx')
|
|
||||||
else:
|
|
||||||
if taglist.find(verse) > -1:
|
|
||||||
pass
|
|
||||||
else:
|
else:
|
||||||
self.SongTabWidget.setCurrentIndex(0)
|
self.SongTabWidget.setCurrentIndex(0)
|
||||||
self.VerseOrderEdit.setFocus()
|
self.VerseOrderEdit.setFocus()
|
||||||
return False, \
|
return False, \
|
||||||
self.trUtf8(\
|
self.trUtf8(\
|
||||||
'Invalid verse entry, values must be I,B,T,P,E,O,Vx,Cx')
|
'Invalid verse entry, values must be I,B,T,P,E,O,V,C followed by a number')
|
||||||
return True, u''
|
return True, u''
|
||||||
|
|
||||||
def onTitleEditItemLostFocus(self):
|
def onTitleEditItemLostFocus(self):
|
||||||
|
|
|
@ -24,7 +24,9 @@
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.lib import translate
|
from openlp.core.lib import translate
|
||||||
|
from openlp.plugins.songs.forms import VerseType
|
||||||
|
|
||||||
class Ui_EditVerseDialog(object):
|
class Ui_EditVerseDialog(object):
|
||||||
def setupUi(self, EditVerseDialog):
|
def setupUi(self, EditVerseDialog):
|
||||||
|
@ -92,13 +94,12 @@ class Ui_EditVerseDialog(object):
|
||||||
def retranslateUi(self, EditVerseDialog):
|
def retranslateUi(self, EditVerseDialog):
|
||||||
EditVerseDialog.setWindowTitle(translate('EditVerseForm', 'Edit Verse'))
|
EditVerseDialog.setWindowTitle(translate('EditVerseForm', 'Edit Verse'))
|
||||||
self.VerseTypeLabel.setText(translate('EditVerseForm', 'Verse Type:'))
|
self.VerseTypeLabel.setText(translate('EditVerseForm', 'Verse Type:'))
|
||||||
self.VerseTypeComboBox.setItemText(0, translate('EditVerseForm', 'Verse'))
|
self.VerseTypeComboBox.setItemText(0, VerseType.to_string(VerseType.Verse))
|
||||||
self.VerseTypeComboBox.setItemText(1, translate('EditVerseForm', 'Chorus'))
|
self.VerseTypeComboBox.setItemText(1, VerseType.to_string(VerseType.Chorus))
|
||||||
self.VerseTypeComboBox.setItemText(2, translate('EditVerseForm', 'Bridge'))
|
self.VerseTypeComboBox.setItemText(2, VerseType.to_string(VerseType.Bridge))
|
||||||
self.VerseTypeComboBox.setItemText(3, translate('EditVerseForm', 'Pre-Chorus'))
|
self.VerseTypeComboBox.setItemText(3, VerseType.to_string(VerseType.PreChorus))
|
||||||
self.VerseTypeComboBox.setItemText(4, translate('EditVerseForm', 'Intro'))
|
self.VerseTypeComboBox.setItemText(4, VerseType.to_string(VerseType.Intro))
|
||||||
self.VerseTypeComboBox.setItemText(5, translate('EditVerseForm', 'Ending'))
|
self.VerseTypeComboBox.setItemText(5, VerseType.to_string(VerseType.Ending))
|
||||||
self.VerseTypeComboBox.setItemText(6, translate('EditVerseForm', 'Other'))
|
self.VerseTypeComboBox.setItemText(6, VerseType.to_string(VerseType.Other))
|
||||||
self.InsertButton.setText(translate('EditVerseForm', 'Insert'))
|
self.InsertButton.setText(translate('EditVerseForm', 'Insert'))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -28,55 +28,12 @@ import logging
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
|
from openlp.plugins.songs.forms import VerseType
|
||||||
|
|
||||||
from editversedialog import Ui_EditVerseDialog
|
from editversedialog import Ui_EditVerseDialog
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
class VerseType(object):
|
|
||||||
Verse = 0
|
|
||||||
Chorus = 1
|
|
||||||
Bridge = 2
|
|
||||||
PreChorus = 3
|
|
||||||
Intro = 4
|
|
||||||
Ending = 5
|
|
||||||
Other = 6
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def to_string(verse_type):
|
|
||||||
if verse_type == VerseType.Verse:
|
|
||||||
return u'Verse'
|
|
||||||
elif verse_type == VerseType.Chorus:
|
|
||||||
return u'Chorus'
|
|
||||||
elif verse_type == VerseType.Bridge:
|
|
||||||
return u'Bridge'
|
|
||||||
elif verse_type == VerseType.PreChorus:
|
|
||||||
return u'Pre-Chorus'
|
|
||||||
elif verse_type == VerseType.Intro:
|
|
||||||
return u'Intro'
|
|
||||||
elif verse_type == VerseType.Ending:
|
|
||||||
return u'Ending'
|
|
||||||
elif verse_type == VerseType.Other:
|
|
||||||
return u'Other'
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def from_string(verse_type):
|
|
||||||
verse_type = verse_type.lower()
|
|
||||||
if verse_type == u'verse':
|
|
||||||
return VerseType.Verse
|
|
||||||
elif verse_type == u'chorus':
|
|
||||||
return VerseType.Chorus
|
|
||||||
elif verse_type == u'bridge':
|
|
||||||
return VerseType.Bridge
|
|
||||||
elif verse_type == u'pre-chorus':
|
|
||||||
return VerseType.PreChorus
|
|
||||||
elif verse_type == u'intro':
|
|
||||||
return VerseType.Intro
|
|
||||||
elif verse_type == u'ending':
|
|
||||||
return VerseType.Ending
|
|
||||||
elif verse_type == u'other':
|
|
||||||
return VerseType.Other
|
|
||||||
|
|
||||||
|
|
||||||
class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
||||||
"""
|
"""
|
||||||
This is the form that is used to edit the verses of the song.
|
This is the form that is used to edit the verses of the song.
|
||||||
|
@ -97,8 +54,6 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
||||||
QtCore.SIGNAL(u'cursorPositionChanged()'),
|
QtCore.SIGNAL(u'cursorPositionChanged()'),
|
||||||
self.onCursorPositionChanged
|
self.onCursorPositionChanged
|
||||||
)
|
)
|
||||||
# QtCore.QObject.connect(self.VerseListComboBox,
|
|
||||||
# QtCore.SIGNAL(u'activated(int)'), self.onVerseComboChanged)
|
|
||||||
self.verse_regex = re.compile(r'---\[([-\w]+):([\d]+)\]---')
|
self.verse_regex = re.compile(r'---\[([-\w]+):([\d]+)\]---')
|
||||||
|
|
||||||
def insertVerse(self, title, num=1):
|
def insertVerse(self, title, num=1):
|
||||||
|
@ -112,19 +67,21 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
||||||
self.VerseTextEdit.insertPlainText(u'\n')
|
self.VerseTextEdit.insertPlainText(u'\n')
|
||||||
verse_type = self.VerseTypeComboBox.currentIndex()
|
verse_type = self.VerseTypeComboBox.currentIndex()
|
||||||
if verse_type == VerseType.Verse:
|
if verse_type == VerseType.Verse:
|
||||||
self.insertVerse('Verse', self.VerseNumberBox.value())
|
self.insertVerse(VerseType.to_string(VerseType.Verse),
|
||||||
|
self.VerseNumberBox.value())
|
||||||
elif verse_type == VerseType.Chorus:
|
elif verse_type == VerseType.Chorus:
|
||||||
self.insertVerse('Chorus', self.VerseNumberBox.value())
|
self.insertVerse(VerseType.to_string(VerseType.Chorus),
|
||||||
|
self.VerseNumberBox.value())
|
||||||
elif verse_type == VerseType.Bridge:
|
elif verse_type == VerseType.Bridge:
|
||||||
self.insertVerse('Bridge')
|
self.insertVerse(VerseType.to_string(VerseType.Bridge))
|
||||||
elif verse_type == VerseType.PreChorus:
|
elif verse_type == VerseType.PreChorus:
|
||||||
self.insertVerse('Pre-Chorus')
|
self.insertVerse(VerseType.to_string(VerseType.PreChorus))
|
||||||
elif verse_type == VerseType.Intro:
|
elif verse_type == VerseType.Intro:
|
||||||
self.insertVerse('Intro')
|
self.insertVerse(VerseType.to_string(VerseType.Intro))
|
||||||
elif verse_type == VerseType.Ending:
|
elif verse_type == VerseType.Ending:
|
||||||
self.insertVerse('Ending')
|
self.insertVerse(VerseType.to_string(VerseType.Ending))
|
||||||
elif verse_type == VerseType.Other:
|
elif verse_type == VerseType.Other:
|
||||||
self.insertVerse('Other')
|
self.insertVerse(VerseType.to_string(VerseType.Other))
|
||||||
|
|
||||||
def onCursorPositionChanged(self):
|
def onCursorPositionChanged(self):
|
||||||
position = self.VerseTextEdit.textCursor().position()
|
position = self.VerseTextEdit.textCursor().position()
|
||||||
|
@ -149,7 +106,8 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
||||||
self.VerseTypeComboBox.setCurrentIndex(VerseType.from_string(verse_type))
|
self.VerseTypeComboBox.setCurrentIndex(VerseType.from_string(verse_type))
|
||||||
self.VerseNumberBox.setValue(verse_number)
|
self.VerseNumberBox.setValue(verse_number)
|
||||||
|
|
||||||
def setVerse(self, text, single=False, tag=u'Verse:1'):
|
def setVerse(self, text, single=False,
|
||||||
|
tag=u'%s:1' % VerseType.to_string(VerseType.Verse)):
|
||||||
if single:
|
if single:
|
||||||
verse_type, verse_number = tag.split(u':')
|
verse_type, verse_number = tag.split(u':')
|
||||||
self.VerseTypeComboBox.setCurrentIndex(VerseType.from_string(verse_type))
|
self.VerseTypeComboBox.setCurrentIndex(VerseType.from_string(verse_type))
|
||||||
|
@ -157,12 +115,13 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
||||||
self.InsertButton.setVisible(False)
|
self.InsertButton.setVisible(False)
|
||||||
else:
|
else:
|
||||||
if not text:
|
if not text:
|
||||||
text = u'---[Verse:1]---\n'
|
text = u'---[%s:1]---\n' % VerseType.to_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)
|
||||||
self.VerseTextEdit.setPlainText(text)
|
self.VerseTextEdit.setPlainText(text)
|
||||||
self.VerseTextEdit.setFocus(QtCore.Qt.OtherFocusReason)
|
self.VerseTextEdit.setFocus(QtCore.Qt.OtherFocusReason)
|
||||||
|
self.VerseTextEdit.moveCursor(QtGui.QTextCursor.End)
|
||||||
|
|
||||||
def getVerse(self):
|
def getVerse(self):
|
||||||
return self.VerseTextEdit.toPlainText(), \
|
return self.VerseTextEdit.toPlainText(), \
|
||||||
|
@ -172,7 +131,6 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
||||||
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'---[Verse:1]---\n%s' % text
|
text = u'---[%s:1]---\n%s' % (VerseType.to_string(VerseType.Verse), text)
|
||||||
return text
|
return text
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -29,3 +29,4 @@ from mediaitem import SongMediaItem
|
||||||
from sofimport import SofImport
|
from sofimport import SofImport
|
||||||
from oooimport import OooImport
|
from oooimport import OooImport
|
||||||
from songimport import SongImport
|
from songimport import SongImport
|
||||||
|
|
||||||
|
|
|
@ -198,8 +198,8 @@ class SongMediaItem(MediaManagerItem):
|
||||||
self.ListView.clear()
|
self.ListView.clear()
|
||||||
for author in searchresults:
|
for author in searchresults:
|
||||||
for song in author.songs:
|
for song in author.songs:
|
||||||
song_detail = unicode(self.trUtf8('%s (%s)') % \
|
song_detail = unicode(self.trUtf8('%s (%s)') %
|
||||||
(author.display_name, song.title)
|
(author.display_name, song.title))
|
||||||
song_name = QtGui.QListWidgetItem(song_detail)
|
song_name = QtGui.QListWidgetItem(song_detail)
|
||||||
song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id))
|
song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id))
|
||||||
self.ListView.addItem(song_name)
|
self.ListView.addItem(song_name)
|
||||||
|
@ -329,21 +329,12 @@ class SongMediaItem(MediaManagerItem):
|
||||||
if len(order) == 0:
|
if len(order) == 0:
|
||||||
break
|
break
|
||||||
for verse in verseList:
|
for verse in verseList:
|
||||||
if verse[1]:
|
if verse[0][u'label'] == order[1:] and \
|
||||||
if verse[0][u'type'] == "Verse" \
|
verse[0][u'type'][0] == order[0]:
|
||||||
or verse[0][u'type'] == "Chorus":
|
verseTag = u'%s:%s' % \
|
||||||
if verse[0][u'label'] == order[1:] and \
|
(verse[0][u'type'], verse[0][u'label'])
|
||||||
verse[0][u'type'][0] == order[0]:
|
service_item.add_from_text\
|
||||||
verseTag = u'%s:%s' % \
|
(verse[1][:30], verse[1], verseTag)
|
||||||
(verse[0][u'type'], verse[0][u'label'])
|
|
||||||
service_item.add_from_text\
|
|
||||||
(verse[1][:30], verse[1], verseTag)
|
|
||||||
else:
|
|
||||||
if verse[0][u'type'][0] == order[0]:
|
|
||||||
verseTag = u'%s:%s' % \
|
|
||||||
(verse[0][u'type'], verse[0][u'label'])
|
|
||||||
service_item.add_from_text\
|
|
||||||
(verse[1][:30], verse[1], verseTag)
|
|
||||||
else:
|
else:
|
||||||
verses = song.lyrics.split(u'\n\n')
|
verses = song.lyrics.split(u'\n\n')
|
||||||
for slide in verses:
|
for slide in verses:
|
||||||
|
|
|
@ -29,20 +29,21 @@ from PyQt4 import QtGui
|
||||||
|
|
||||||
from openlp.core.lib import SongXMLBuilder
|
from openlp.core.lib import SongXMLBuilder
|
||||||
from openlp.plugins.songs.lib.models import Song, Author, Topic, Book
|
from openlp.plugins.songs.lib.models import Song, Author, Topic, Book
|
||||||
|
from openlp.plugins.songs.forms import VerseType
|
||||||
|
|
||||||
class SongImport(object):
|
class SongImport(object):
|
||||||
"""
|
"""
|
||||||
Helper class for import a song from a third party source into OpenLP
|
Helper class for import a song from a third party source into OpenLP
|
||||||
|
|
||||||
This class just takes the raw strings, and will work out for itself
|
This class just takes the raw strings, and will work out for itself
|
||||||
whether the authors etc already exist and add them or refer to them
|
whether the authors etc already exist and add them or refer to them
|
||||||
as necessary
|
as necessary
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, song_manager):
|
def __init__(self, song_manager):
|
||||||
"""
|
"""
|
||||||
Initialise and create defaults for properties
|
Initialise and create defaults for properties
|
||||||
|
|
||||||
song_manager is an instance of a SongManager, through which all
|
song_manager is an instance of a SongManager, through which all
|
||||||
database access is performed
|
database access is performed
|
||||||
"""
|
"""
|
||||||
|
@ -53,13 +54,13 @@ class SongImport(object):
|
||||||
self.copyright = u''
|
self.copyright = u''
|
||||||
self.comment = u''
|
self.comment = u''
|
||||||
self.theme_name = u''
|
self.theme_name = u''
|
||||||
self.ccli_number = u''
|
self.ccli_number = u''
|
||||||
self.authors = []
|
self.authors = []
|
||||||
self.topics = []
|
self.topics = []
|
||||||
self.song_book_name = u''
|
self.song_book_name = u''
|
||||||
self.song_book_pub = u''
|
self.song_book_pub = u''
|
||||||
self.verse_order_list = []
|
self.verse_order_list = []
|
||||||
self.verses = []
|
self.verses = []
|
||||||
self.versecount = 0
|
self.versecount = 0
|
||||||
self.choruscount = 0
|
self.choruscount = 0
|
||||||
self.copyright_string = unicode(QtGui.QApplication.translate( \
|
self.copyright_string = unicode(QtGui.QApplication.translate( \
|
||||||
|
@ -128,39 +129,39 @@ class SongImport(object):
|
||||||
copyright_found = True
|
copyright_found = True
|
||||||
self.add_copyright(line)
|
self.add_copyright(line)
|
||||||
else:
|
else:
|
||||||
self.parse_author(line)
|
self.parse_author(line)
|
||||||
return
|
return
|
||||||
if len(lines) == 1:
|
if len(lines) == 1:
|
||||||
self.parse_author(lines[0])
|
self.parse_author(lines[0])
|
||||||
return
|
return
|
||||||
if not self.get_title():
|
if not self.get_title():
|
||||||
self.set_title(lines[0])
|
self.set_title(lines[0])
|
||||||
self.add_verse(text)
|
self.add_verse(text)
|
||||||
|
|
||||||
def get_title(self):
|
def get_title(self):
|
||||||
"""
|
"""
|
||||||
Return the title
|
Return the title
|
||||||
"""
|
"""
|
||||||
return self.title
|
return self.title
|
||||||
|
|
||||||
def get_copyright(self):
|
def get_copyright(self):
|
||||||
"""
|
"""
|
||||||
Return the copyright
|
Return the copyright
|
||||||
"""
|
"""
|
||||||
return self.copyright
|
return self.copyright
|
||||||
|
|
||||||
def get_song_number(self):
|
def get_song_number(self):
|
||||||
"""
|
"""
|
||||||
Return the song number
|
Return the song number
|
||||||
"""
|
"""
|
||||||
return self.song_number
|
return self.song_number
|
||||||
|
|
||||||
def set_title(self, title):
|
def set_title(self, title):
|
||||||
"""
|
"""
|
||||||
Set the title
|
Set the title
|
||||||
"""
|
"""
|
||||||
self.title = title
|
self.title = title
|
||||||
|
|
||||||
def set_alternate_title(self, title):
|
def set_alternate_title(self, title):
|
||||||
"""
|
"""
|
||||||
Set the alternate title
|
Set the alternate title
|
||||||
|
@ -168,11 +169,11 @@ class SongImport(object):
|
||||||
self.alternate_title = title
|
self.alternate_title = title
|
||||||
|
|
||||||
def set_song_number(self, song_number):
|
def set_song_number(self, song_number):
|
||||||
"""
|
"""
|
||||||
Set the song number
|
Set the song number
|
||||||
"""
|
"""
|
||||||
self.song_number = song_number
|
self.song_number = song_number
|
||||||
|
|
||||||
def set_song_book(self, song_book, publisher):
|
def set_song_book(self, song_book, publisher):
|
||||||
"""
|
"""
|
||||||
Set the song book name and publisher
|
Set the song book name and publisher
|
||||||
|
@ -181,7 +182,7 @@ class SongImport(object):
|
||||||
self.song_book_pub = publisher
|
self.song_book_pub = publisher
|
||||||
|
|
||||||
def add_copyright(self, copyright):
|
def add_copyright(self, copyright):
|
||||||
"""
|
"""
|
||||||
Build the copyright field
|
Build the copyright field
|
||||||
"""
|
"""
|
||||||
if self.copyright.find(copyright) >= 0:
|
if self.copyright.find(copyright) >= 0:
|
||||||
|
@ -194,7 +195,7 @@ class SongImport(object):
|
||||||
"""
|
"""
|
||||||
Add the author. OpenLP stores them individually so split by 'and', '&'
|
Add the author. OpenLP stores them individually so split by 'and', '&'
|
||||||
and comma.
|
and comma.
|
||||||
However need to check for "Mr and Mrs Smith" and turn it to
|
However need to check for "Mr and Mrs Smith" and turn it to
|
||||||
"Mr Smith" and "Mrs Smith".
|
"Mr Smith" and "Mrs Smith".
|
||||||
"""
|
"""
|
||||||
for author in text.split(u','):
|
for author in text.split(u','):
|
||||||
|
@ -210,13 +211,13 @@ class SongImport(object):
|
||||||
self.add_author(author2)
|
self.add_author(author2)
|
||||||
|
|
||||||
def add_author(self, author):
|
def add_author(self, author):
|
||||||
"""
|
"""
|
||||||
Add an author to the list
|
Add an author to the list
|
||||||
"""
|
"""
|
||||||
if author in self.authors:
|
if author in self.authors:
|
||||||
return
|
return
|
||||||
self.authors.append(author)
|
self.authors.append(author)
|
||||||
|
|
||||||
def add_verse(self, verse, versetag=None):
|
def add_verse(self, verse, versetag=None):
|
||||||
"""
|
"""
|
||||||
Add a verse. This is the whole verse, lines split by \n
|
Add a verse. This is the whole verse, lines split by \n
|
||||||
|
@ -224,7 +225,7 @@ class SongImport(object):
|
||||||
choruses itself) or None, where it will assume verse
|
choruses itself) or None, where it will assume verse
|
||||||
It will also attempt to detect duplicates. In this case it will just
|
It will also attempt to detect duplicates. In this case it will just
|
||||||
add to the verse order
|
add to the verse order
|
||||||
"""
|
"""
|
||||||
for (oldversetag, oldverse) in self.verses:
|
for (oldversetag, oldverse) in self.verses:
|
||||||
if oldverse.strip() == verse.strip():
|
if oldverse.strip() == verse.strip():
|
||||||
self.verse_order_list.append(oldversetag)
|
self.verse_order_list.append(oldversetag)
|
||||||
|
@ -253,22 +254,22 @@ class SongImport(object):
|
||||||
def check_complete(self):
|
def check_complete(self):
|
||||||
"""
|
"""
|
||||||
Check the mandatory fields are entered (i.e. title and a verse)
|
Check the mandatory fields are entered (i.e. title and a verse)
|
||||||
Author not checked here, if no author then "Author unknown" is
|
Author not checked here, if no author then "Author unknown" is
|
||||||
automatically added
|
automatically added
|
||||||
"""
|
"""
|
||||||
if self.title == u'' or len(self.verses) == 0:
|
if self.title == u'' or len(self.verses) == 0:
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def remove_punctuation(self, text):
|
def remove_punctuation(self, text):
|
||||||
"""
|
"""
|
||||||
Remove punctuation from the string for searchable fields
|
Remove punctuation from the string for searchable fields
|
||||||
"""
|
"""
|
||||||
for character in string.punctuation:
|
for character in string.punctuation:
|
||||||
text = text.replace(character, u'')
|
text = text.replace(character, u'')
|
||||||
return text
|
return text
|
||||||
|
|
||||||
def finish(self):
|
def finish(self):
|
||||||
"""
|
"""
|
||||||
All fields have been set to this song. Write it away
|
All fields have been set to this song. Write it away
|
||||||
|
@ -277,7 +278,7 @@ class SongImport(object):
|
||||||
self.authors.append(u'Author unknown')
|
self.authors.append(u'Author unknown')
|
||||||
self.commit_song()
|
self.commit_song()
|
||||||
#self.print_song()
|
#self.print_song()
|
||||||
|
|
||||||
def commit_song(self):
|
def commit_song(self):
|
||||||
"""
|
"""
|
||||||
Write the song and it's fields to disk
|
Write the song and it's fields to disk
|
||||||
|
@ -293,27 +294,27 @@ class SongImport(object):
|
||||||
sxml.add_lyrics_to_song()
|
sxml.add_lyrics_to_song()
|
||||||
for (versetag, versetext) in self.verses:
|
for (versetag, versetext) in self.verses:
|
||||||
if versetag[0] == u'C':
|
if versetag[0] == u'C':
|
||||||
versetype = u'Chorus'
|
versetype = VerseType.to_string(VerseType.Chorus)
|
||||||
elif versetag[0] == u'V':
|
elif versetag[0] == u'V':
|
||||||
versetype = u'Verse'
|
versetype = VerseType.to_string(VerseType.Verse)
|
||||||
elif versetag[0] == u'B':
|
elif versetag[0] == u'B':
|
||||||
versetype = u'Bridge'
|
versetype = VerseType.to_string(VerseType.Bridge)
|
||||||
elif versetag[0] == u'I':
|
elif versetag[0] == u'I':
|
||||||
versetype = u'Intro'
|
versetype = VerseType.to_string(VerseType.Intro)
|
||||||
elif versetag[0] == u'P':
|
elif versetag[0] == u'P':
|
||||||
versetype = u'Prechorus'
|
versetype = VerseType.to_string(VerseType.PreChorus)
|
||||||
elif versetag[0] == u'E':
|
elif versetag[0] == u'E':
|
||||||
versetype = u'Ending'
|
versetype = VerseType.to_string(VerseType.Ending)
|
||||||
else:
|
else:
|
||||||
versetype = u'Other'
|
versetype = VerseType.to_string(VerseType.Other)
|
||||||
sxml.add_verse_to_lyrics(versetype, versetag[1:], versetext)
|
sxml.add_verse_to_lyrics(versetype, versetag[1:], versetext)
|
||||||
song.search_lyrics += u' ' + self.remove_punctuation(versetext)
|
song.search_lyrics += u' ' + self.remove_punctuation(versetext)
|
||||||
song.lyrics = unicode(sxml.extract_xml(), u'utf-8')
|
song.lyrics = unicode(sxml.extract_xml(), u'utf-8')
|
||||||
song.verse_order = u' '.join(self.verse_order_list)
|
song.verse_order = u' '.join(self.verse_order_list)
|
||||||
song.copyright = self.copyright
|
song.copyright = self.copyright
|
||||||
song.comment = self.comment
|
song.comment = self.comment
|
||||||
song.theme_name = self.theme_name
|
song.theme_name = self.theme_name
|
||||||
song.ccli_number = self.ccli_number
|
song.ccli_number = self.ccli_number
|
||||||
for authortext in self.authors:
|
for authortext in self.authors:
|
||||||
author = self.manager.get_author_by_name(authortext)
|
author = self.manager.get_author_by_name(authortext)
|
||||||
if author is None:
|
if author is None:
|
||||||
|
@ -339,15 +340,15 @@ class SongImport(object):
|
||||||
self.manager.save_topic(topic)
|
self.manager.save_topic(topic)
|
||||||
song.topics.append(topictext)
|
song.topics.append(topictext)
|
||||||
self.manager.save_song(song)
|
self.manager.save_song(song)
|
||||||
|
|
||||||
def print_song(self):
|
def print_song(self):
|
||||||
"""
|
"""
|
||||||
For debugging
|
For debugging
|
||||||
"""
|
"""
|
||||||
print u'========================================' \
|
print u'========================================' \
|
||||||
+ u'========================================'
|
+ u'========================================'
|
||||||
print u'TITLE: ' + self.title
|
print u'TITLE: ' + self.title
|
||||||
print u'ALT TITLE: ' + self.alternate_title
|
print u'ALT TITLE: ' + self.alternate_title
|
||||||
for (versetag, versetext) in self.verses:
|
for (versetag, versetext) in self.verses:
|
||||||
print u'VERSE ' + versetag + u': ' + versetext
|
print u'VERSE ' + versetag + u': ' + versetext
|
||||||
print u'ORDER: ' + u' '.join(self.verse_order_list)
|
print u'ORDER: ' + u' '.join(self.verse_order_list)
|
||||||
|
@ -361,7 +362,7 @@ class SongImport(object):
|
||||||
print u'BOOK PUBLISHER: ' + self.song_book_pub
|
print u'BOOK PUBLISHER: ' + self.song_book_pub
|
||||||
if self.song_number:
|
if self.song_number:
|
||||||
print u'NUMBER: ' + self.song_number
|
print u'NUMBER: ' + self.song_number
|
||||||
for topictext in self.topics:
|
for topictext in self.topics:
|
||||||
print u'TOPIC: ' + topictext
|
print u'TOPIC: ' + topictext
|
||||||
if self.comment:
|
if self.comment:
|
||||||
print u'COMMENT: ' + self.comment
|
print u'COMMENT: ' + self.comment
|
||||||
|
@ -369,5 +370,5 @@ class SongImport(object):
|
||||||
print u'THEME: ' + self.theme_name
|
print u'THEME: ' + self.theme_name
|
||||||
if self.ccli_number:
|
if self.ccli_number:
|
||||||
print u'CCLI: ' + self.ccli_number
|
print u'CCLI: ' + self.ccli_number
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue