From 332d9fa6f0512ec58986dddcd8c5691ee61d1553 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 26 May 2010 18:34:25 +0100 Subject: [PATCH 01/15] Comments --- openlp/core/lib/__init__.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index ee18e98af..d9a2cf6b4 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -48,8 +48,7 @@ def translate(context, text, comment=None): ``text`` The text to put into the translation tables for translation. """ - return QtCore.QCoreApplication.translate(context, text, - comment) + return QtCore.QCoreApplication.translate(context, text, comment) def get_text_file_string(text_file): """ From 903293521923ce744865740d4c679ca1bc98c66b Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 26 May 2010 18:36:06 +0100 Subject: [PATCH 02/15] Fix tags --- openlp/plugins/songs/lib/mediaitem.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 2bf72e9b9..adddaada9 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -323,9 +323,9 @@ class SongMediaItem(MediaManagerItem): #no verse list or only 1 space (in error) if not song.verse_order or not song.verse_order.strip(): for verse in verseList: - verseTag = u'%s:%s' % (verse[0][u'type'], verse[0][u'label']) + verse_tag = u'%s:%s' % (verse[0][u'type'], verse[0][u'label']) service_item.add_from_text(\ - verse[1][:30], unicode(verse[1]), verseTag) + verse[1][:30], unicode(verse[1]), verse_tag) else: #Loop through the verse list and expand the song accordingly. for order in song.verse_order.upper().split(u' '): @@ -337,16 +337,16 @@ class SongMediaItem(MediaManagerItem): or verse[0][u'type'] == "Chorus": if verse[0][u'label'] == order[1:] and \ verse[0][u'type'][0] == order[0]: - verseTag = u'%s:%s' % \ + verse_tag = u'%s:%s' % \ (verse[0][u'type'], verse[0][u'label']) service_item.add_from_text\ - (verse[1][:30], verse[1], verseTag) + (verse[1][:30], verse[1], verse_tag) else: if verse[0][u'type'][0] == order[0]: - verseTag = u'%s:%s' % \ + verse_tag = u'%s:%s' % \ (verse[0][u'type'], verse[0][u'label']) service_item.add_from_text\ - (verse[1][:30], verse[1], verseTag) + (verse[1][:30], verse[1], verse_tag) else: verses = song.lyrics.split(u'\n\n') for slide in verses: From 2143a2418223e7951b00ab314a67ef15247d44c0 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 5 Jun 2010 14:28:34 +0100 Subject: [PATCH 03/15] tidy ups --- openlp/plugins/songs/forms/editverseform.py | 2 -- openlp/plugins/songs/lib/mediaitem.py | 12 ++++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 6dbe21cea..2efd773b2 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -97,8 +97,6 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): QtCore.SIGNAL(u'cursorPositionChanged()'), self.onCursorPositionChanged ) -# QtCore.QObject.connect(self.VerseListComboBox, -# QtCore.SIGNAL(u'activated(int)'), self.onVerseComboChanged) self.verse_regex = re.compile(r'---\[([-\w]+):([\d]+)\]---') def insertVerse(self, title, num=1): diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 78b954375..6bcfa9f68 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -324,10 +324,10 @@ class SongMediaItem(MediaManagerItem): #no verse list or only 1 space (in error) if not song.verse_order or not song.verse_order.strip(): for verse in verseList: - verse_tag = u'%s:%s' % ( + verseTag = u'%s:%s' % ( verse[0][u'type'], verse[0][u'label']) service_item.add_from_text(\ - verse[1][:30], unicode(verse[1]), verse_tag) + verse[1][:30], unicode(verse[1]), verseTag) else: #Loop through the verse list and expand the song accordingly. for order in song.verse_order.upper().split(u' '): @@ -339,16 +339,16 @@ class SongMediaItem(MediaManagerItem): or verse[0][u'type'] == "Chorus": if verse[0][u'label'] == order[1:] and \ verse[0][u'type'][0] == order[0]: - verse_tag = u'%s:%s' % \ + verseTag = u'%s:%s' % \ (verse[0][u'type'], verse[0][u'label']) service_item.add_from_text\ - (verse[1][:30], verse[1], verse_tag) + (verse[1][:30], verse[1], verseTag) else: if verse[0][u'type'][0] == order[0]: - verse_tag = u'%s:%s' % \ + verseTag = u'%s:%s' % \ (verse[0][u'type'], verse[0][u'label']) service_item.add_from_text\ - (verse[1][:30], verse[1], verse_tag) + (verse[1][:30], verse[1], verseTag) else: verses = song.lyrics.split(u'\n\n') for slide in verses: From c022e6a89f0052d323352b2440a16f8029567869 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 5 Jun 2010 15:29:06 +0100 Subject: [PATCH 04/15] Fix cursor position --- openlp/plugins/songs/forms/editverseform.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 2efd773b2..9543a4e7d 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -161,6 +161,7 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): self.InsertButton.setVisible(True) self.VerseTextEdit.setPlainText(text) self.VerseTextEdit.setFocus(QtCore.Qt.OtherFocusReason) + self.VerseTextEdit.moveCursor(QtGui.QTextCursor.End) def getVerse(self): return self.VerseTextEdit.toPlainText(), \ @@ -173,4 +174,3 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): text = u'---[Verse:1]---\n%s' % text return text - From 61b4850941f4af7deb0e5d860d623280b1b3e4cf Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 5 Jun 2010 16:31:07 +0100 Subject: [PATCH 05/15] Clean up slidecontroller --- openlp/core/ui/slidecontroller.py | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 014498767..73aad2247 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -537,17 +537,9 @@ class SlideController(QtGui.QWidget): if self.serviceItem.is_text(): if frame[u'verseTag']: bits = frame[u'verseTag'].split(u':') - tag = None - #If verse handle verse number else tag only - if bits[0] == self.trUtf8('Verse') or \ - 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] + tag = u'%s\n%s' % (bits[0][0], bits[1][0:] ) + tag1 = u'%s%s' % (bits[0][0], bits[1][0:] ) + row = tag else: row += 1 if self.isLive and frame[u'verseTag'] is not None: From 7bf8e71acfae20234cc8848303b882fac645e49e Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 5 Jun 2010 16:46:14 +0100 Subject: [PATCH 06/15] Song editing cleaned up --- openlp/plugins/songs/forms/editsongform.py | 15 +++--------- openlp/plugins/songs/lib/mediaitem.py | 28 +++++++++++----------- 2 files changed, 17 insertions(+), 26 deletions(-) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index ce22f6345..e64c64a6b 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -469,27 +469,18 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.SongTabWidget.setCurrentIndex(1) self.AuthorsListView.setFocus() #split the verse list by space and mark lower case for testing - taglist = unicode(self.trUtf8(' bitped')) + taglist = unicode(self.trUtf8(' bitpedvc')) for verse in unicode(self.VerseOrderEdit.text()).lower().split(u' '): if len(verse) > 1: - if (verse[0:1] == u'%s' % self.trUtf8('v') or - verse[0:1] == u'%s' % self.trUtf8('c')) \ + if taglist.find(verse[0:1]) > -1 \ and verse[1:].isdigit(): 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: self.SongTabWidget.setCurrentIndex(0) self.VerseOrderEdit.setFocus() return False, \ 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'' def onTitleEditItemLostFocus(self): diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 6bcfa9f68..0e111e387 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -335,20 +335,20 @@ class SongMediaItem(MediaManagerItem): break for verse in verseList: if verse[1]: - if verse[0][u'type'] == "Verse" \ - or verse[0][u'type'] == "Chorus": - if verse[0][u'label'] == order[1:] and \ - 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: - 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) +# if verse[0][u'type'] == "Verse" \ +# or verse[0][u'type'] == "Chorus": + if verse[0][u'label'] == order[1:] and \ + 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: +# 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: verses = song.lyrics.split(u'\n\n') for slide in verses: From 8da2167ebe1992b5c06cc1535998b532f6758bba Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 5 Jun 2010 17:06:39 +0100 Subject: [PATCH 07/15] Live generation cleaned up --- openlp/plugins/songs/lib/mediaitem.py | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 0e111e387..a803bff0f 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -334,21 +334,12 @@ class SongMediaItem(MediaManagerItem): if len(order) == 0: break for verse in verseList: - if verse[1]: -# if verse[0][u'type'] == "Verse" \ -# or verse[0][u'type'] == "Chorus": - if verse[0][u'label'] == order[1:] and \ - 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: -# 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) + if verse[0][u'label'] == order[1:] and \ + 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: verses = song.lyrics.split(u'\n\n') for slide in verses: From 9d4cb86a6e53168e0ccc2dd7e3d7586db86a54d4 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 5 Jun 2010 18:48:26 +0100 Subject: [PATCH 08/15] Verse Translations part 1 --- openlp/plugins/songs/forms/editversedialog.py | 5 +++-- openlp/plugins/songs/forms/editverseform.py | 9 +++++---- openlp/plugins/songs/lib/__init__.py | 13 +++++++++++++ 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/openlp/plugins/songs/forms/editversedialog.py b/openlp/plugins/songs/forms/editversedialog.py index d7a059215..164eb9177 100644 --- a/openlp/plugins/songs/forms/editversedialog.py +++ b/openlp/plugins/songs/forms/editversedialog.py @@ -25,6 +25,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import translate +from openlp.plugins.songs.lib import TagNames class Ui_EditVerseDialog(object): def setupUi(self, EditVerseDialog): @@ -92,8 +93,8 @@ class Ui_EditVerseDialog(object): def retranslateUi(self, EditVerseDialog): EditVerseDialog.setWindowTitle(translate('EditVerseForm', 'Edit Verse')) self.VerseTypeLabel.setText(translate('EditVerseForm', 'Verse Type:')) - self.VerseTypeComboBox.setItemText(0, translate('EditVerseForm', 'Verse')) - self.VerseTypeComboBox.setItemText(1, translate('EditVerseForm', 'Chorus')) + self.VerseTypeComboBox.setItemText(0, TagNames.verse) + self.VerseTypeComboBox.setItemText(1, TagNames.chorus) self.VerseTypeComboBox.setItemText(2, translate('EditVerseForm', 'Bridge')) self.VerseTypeComboBox.setItemText(3, translate('EditVerseForm', 'Pre-Chorus')) self.VerseTypeComboBox.setItemText(4, translate('EditVerseForm', 'Intro')) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 9543a4e7d..c4adf3d3b 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -29,6 +29,7 @@ import logging from PyQt4 import QtCore, QtGui from editversedialog import Ui_EditVerseDialog +from openlp.plugins.songs.lib import TagNames log = logging.getLogger(__name__) @@ -44,9 +45,9 @@ class VerseType(object): @staticmethod def to_string(verse_type): if verse_type == VerseType.Verse: - return u'Verse' + return TagNames.verse elif verse_type == VerseType.Chorus: - return u'Chorus' + return TagNames.chorus elif verse_type == VerseType.Bridge: return u'Bridge' elif verse_type == VerseType.PreChorus: @@ -61,9 +62,9 @@ class VerseType(object): @staticmethod def from_string(verse_type): verse_type = verse_type.lower() - if verse_type == u'verse': + if verse_type == TagNames.lower_verse: return VerseType.Verse - elif verse_type == u'chorus': + elif verse_type == TagNames.lower_chorus: return VerseType.Chorus elif verse_type == u'bridge': return VerseType.Bridge diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index 3825a4abf..0f3705a55 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -23,9 +23,22 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### +from openlp.core.lib import translate + +class TagNames(object): + verse = translate('TagNames','Verse') + chorus = translate('TagNames','Chorus') + lower_verse = translate('TagNames','verse') + lower_chorus = translate('TagNames','chorus') + + from manager import SongManager from songstab import SongsTab from mediaitem import SongMediaItem from sofimport import SofImport from oooimport import OooImport from songimport import SongImport +from openlp.core.lib import translate + + + From af3932f1823b8751411d4ecb9caf5df8aba62ff5 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 5 Jun 2010 21:00:50 +0100 Subject: [PATCH 09/15] Verse Translations part 2 - revised --- openlp/plugins/songs/forms/__init__.py | 46 +++++++++++++++ openlp/plugins/songs/forms/editversedialog.py | 9 +-- openlp/plugins/songs/forms/editverseform.py | 58 +++---------------- openlp/plugins/songs/lib/__init__.py | 12 ---- 4 files changed, 59 insertions(+), 66 deletions(-) diff --git a/openlp/plugins/songs/forms/__init__.py b/openlp/plugins/songs/forms/__init__.py index 1073b6866..824465348 100644 --- a/openlp/plugins/songs/forms/__init__.py +++ b/openlp/plugins/songs/forms/__init__.py @@ -23,6 +23,52 @@ # 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('SongTags', 'Verse') + elif verse_type == VerseType.Chorus: + return translate('SongTags', 'Chorus') + elif verse_type == VerseType.Bridge: + return translate('SongTags', '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 == translate('SongTags', 'verse'): + return VerseType.Verse + elif verse_type == translate('SongTags', 'chorus'): + return VerseType.Chorus + elif verse_type == translate('SongTags', '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 + from authorsform import AuthorsForm from topicsform import TopicsForm from songbookform import SongBookForm diff --git a/openlp/plugins/songs/forms/editversedialog.py b/openlp/plugins/songs/forms/editversedialog.py index 164eb9177..42f1f1cac 100644 --- a/openlp/plugins/songs/forms/editversedialog.py +++ b/openlp/plugins/songs/forms/editversedialog.py @@ -24,8 +24,9 @@ ############################################################################### from PyQt4 import QtCore, QtGui + from openlp.core.lib import translate -from openlp.plugins.songs.lib import TagNames +from openlp.plugins.songs.forms import VerseType class Ui_EditVerseDialog(object): def setupUi(self, EditVerseDialog): @@ -93,9 +94,9 @@ class Ui_EditVerseDialog(object): def retranslateUi(self, EditVerseDialog): EditVerseDialog.setWindowTitle(translate('EditVerseForm', 'Edit Verse')) self.VerseTypeLabel.setText(translate('EditVerseForm', 'Verse Type:')) - self.VerseTypeComboBox.setItemText(0, TagNames.verse) - self.VerseTypeComboBox.setItemText(1, TagNames.chorus) - self.VerseTypeComboBox.setItemText(2, translate('EditVerseForm', 'Bridge')) + self.VerseTypeComboBox.setItemText(0, VerseType.to_string(VerseType.Verse)) + self.VerseTypeComboBox.setItemText(1, VerseType.to_string(VerseType.Chorus)) + self.VerseTypeComboBox.setItemText(2, VerseType.to_string(VerseType.Bridge)) self.VerseTypeComboBox.setItemText(3, translate('EditVerseForm', 'Pre-Chorus')) self.VerseTypeComboBox.setItemText(4, translate('EditVerseForm', 'Intro')) self.VerseTypeComboBox.setItemText(5, translate('EditVerseForm', 'Ending')) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index c4adf3d3b..4e57c2497 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -28,56 +28,12 @@ import logging from PyQt4 import QtCore, QtGui +from openlp.plugins.songs.forms import VerseType + from editversedialog import Ui_EditVerseDialog -from openlp.plugins.songs.lib import TagNames 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 TagNames.verse - elif verse_type == VerseType.Chorus: - return TagNames.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 == TagNames.lower_verse: - return VerseType.Verse - elif verse_type == TagNames.lower_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): """ This is the form that is used to edit the verses of the song. @@ -111,11 +67,13 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): self.VerseTextEdit.insertPlainText(u'\n') verse_type = self.VerseTypeComboBox.currentIndex() 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: - self.insertVerse('Chorus', self.VerseNumberBox.value()) + self.insertVerse(VerseType.to_string(VerseType.Chorus), + self.VerseNumberBox.value()) elif verse_type == VerseType.Bridge: - self.insertVerse('Bridge') + self.insertVerse(VerseType.to_string(VerseType.Bridge)) elif verse_type == VerseType.PreChorus: self.insertVerse('Pre-Chorus') elif verse_type == VerseType.Intro: @@ -172,6 +130,6 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): def getVerseAll(self): text = self.VerseTextEdit.toPlainText() 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 diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index 0f3705a55..bbb9260c6 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -23,22 +23,10 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -from openlp.core.lib import translate - -class TagNames(object): - verse = translate('TagNames','Verse') - chorus = translate('TagNames','Chorus') - lower_verse = translate('TagNames','verse') - lower_chorus = translate('TagNames','chorus') - - from manager import SongManager from songstab import SongsTab from mediaitem import SongMediaItem from sofimport import SofImport from oooimport import OooImport from songimport import SongImport -from openlp.core.lib import translate - - From 3bfa515c1284085a69237eead037738dc63238a1 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 5 Jun 2010 21:12:13 +0100 Subject: [PATCH 10/15] Verse Translations part 2 - fixed --- openlp/plugins/songs/forms/__init__.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/openlp/plugins/songs/forms/__init__.py b/openlp/plugins/songs/forms/__init__.py index 824465348..41d91582b 100644 --- a/openlp/plugins/songs/forms/__init__.py +++ b/openlp/plugins/songs/forms/__init__.py @@ -37,11 +37,11 @@ class VerseType(object): @staticmethod def to_string(verse_type): if verse_type == VerseType.Verse: - return translate('SongTags', 'Verse') + return translate('VerseType', 'Verse') elif verse_type == VerseType.Chorus: - return translate('SongTags', 'Chorus') + return translate('VerseType', 'Chorus') elif verse_type == VerseType.Bridge: - return translate('SongTags', 'Bridge') + return translate('VerseType', 'Bridge') elif verse_type == VerseType.PreChorus: return u'Pre-Chorus' elif verse_type == VerseType.Intro: @@ -54,11 +54,11 @@ class VerseType(object): @staticmethod def from_string(verse_type): verse_type = verse_type.lower() - if verse_type == translate('SongTags', 'verse'): + if verse_type == translate('VerseType', 'verse'): return VerseType.Verse - elif verse_type == translate('SongTags', 'chorus'): + elif verse_type == translate('VerseType', 'chorus'): return VerseType.Chorus - elif verse_type == translate('SongTags', 'bridge'): + elif verse_type == translate('VerseType', 'bridge'): return VerseType.Bridge elif verse_type == u'pre-chorus': return VerseType.PreChorus From e06556489ee618b28101dda16a15b2ce108149bf Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 6 Jun 2010 07:40:08 +0100 Subject: [PATCH 11/15] Finish converting tags --- openlp/plugins/songs/forms/__init__.py | 16 ++++++++-------- openlp/plugins/songs/forms/editversedialog.py | 9 ++++----- openlp/plugins/songs/forms/editverseform.py | 12 ++++++------ 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/openlp/plugins/songs/forms/__init__.py b/openlp/plugins/songs/forms/__init__.py index 41d91582b..064dbf6c9 100644 --- a/openlp/plugins/songs/forms/__init__.py +++ b/openlp/plugins/songs/forms/__init__.py @@ -43,13 +43,13 @@ class VerseType(object): elif verse_type == VerseType.Bridge: return translate('VerseType', 'Bridge') elif verse_type == VerseType.PreChorus: - return u'Pre-Chorus' + return translate('VerseType', 'Pre-Chorus') elif verse_type == VerseType.Intro: - return u'Intro' + return translate('VerseType', 'Intro') elif verse_type == VerseType.Ending: - return u'Ending' + return translate('VerseType', 'Ending') elif verse_type == VerseType.Other: - return u'Other' + return translate('VerseType', 'Other') @staticmethod def from_string(verse_type): @@ -60,13 +60,13 @@ class VerseType(object): return VerseType.Chorus elif verse_type == translate('VerseType', 'bridge'): return VerseType.Bridge - elif verse_type == u'pre-chorus': + elif verse_type == translate('VerseType', 'pre-chorus'): return VerseType.PreChorus - elif verse_type == u'intro': + elif verse_type == translate('VerseType', 'intro'): return VerseType.Intro - elif verse_type == u'ending': + elif verse_type == translate('VerseType', 'ending'): return VerseType.Ending - elif verse_type == u'other': + elif verse_type == translate('VerseType', 'other'): return VerseType.Other from authorsform import AuthorsForm diff --git a/openlp/plugins/songs/forms/editversedialog.py b/openlp/plugins/songs/forms/editversedialog.py index 42f1f1cac..dd62348db 100644 --- a/openlp/plugins/songs/forms/editversedialog.py +++ b/openlp/plugins/songs/forms/editversedialog.py @@ -97,10 +97,9 @@ class Ui_EditVerseDialog(object): self.VerseTypeComboBox.setItemText(0, VerseType.to_string(VerseType.Verse)) self.VerseTypeComboBox.setItemText(1, VerseType.to_string(VerseType.Chorus)) self.VerseTypeComboBox.setItemText(2, VerseType.to_string(VerseType.Bridge)) - self.VerseTypeComboBox.setItemText(3, translate('EditVerseForm', 'Pre-Chorus')) - self.VerseTypeComboBox.setItemText(4, translate('EditVerseForm', 'Intro')) - self.VerseTypeComboBox.setItemText(5, translate('EditVerseForm', 'Ending')) - self.VerseTypeComboBox.setItemText(6, translate('EditVerseForm', 'Other')) + self.VerseTypeComboBox.setItemText(3, VerseType.to_string(VerseType.PreChorus)) + self.VerseTypeComboBox.setItemText(4, VerseType.to_string(VerseType.Intro)) + self.VerseTypeComboBox.setItemText(5, VerseType.to_string(VerseType.Ending)) + self.VerseTypeComboBox.setItemText(6, VerseType.to_string(VerseType.Other)) self.InsertButton.setText(translate('EditVerseForm', 'Insert')) - diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 4e57c2497..92122305a 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -75,13 +75,13 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): elif verse_type == VerseType.Bridge: self.insertVerse(VerseType.to_string(VerseType.Bridge)) elif verse_type == VerseType.PreChorus: - self.insertVerse('Pre-Chorus') + self.insertVerse(VerseType.to_string(VerseType.PreChorus)) elif verse_type == VerseType.Intro: - self.insertVerse('Intro') + self.insertVerse(VerseType.to_string(VerseType.Intro)) elif verse_type == VerseType.Ending: - self.insertVerse('Ending') + self.insertVerse(VerseType.to_string(VerseType.Ending)) elif verse_type == VerseType.Other: - self.insertVerse('Other') + self.insertVerse(VerseType.to_string(VerseType.Other)) def onCursorPositionChanged(self): position = self.VerseTextEdit.textCursor().position() @@ -106,7 +106,7 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): self.VerseTypeComboBox.setCurrentIndex(VerseType.from_string(verse_type)) 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: verse_type, verse_number = tag.split(u':') self.VerseTypeComboBox.setCurrentIndex(VerseType.from_string(verse_type)) @@ -114,7 +114,7 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): self.InsertButton.setVisible(False) else: if not text: - text = u'---[Verse:1]---\n' + text = u'---[%s:1]---\n' % VerseType.to_string(VerseType.Verse) self.VerseTypeComboBox.setCurrentIndex(0) self.VerseNumberBox.setValue(1) self.InsertButton.setVisible(True) From 4714502f67aedcf98e25a64f69d9a8f525f2513a Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 6 Jun 2010 08:28:07 +0100 Subject: [PATCH 12/15] Clean up song imports --- openlp/plugins/songs/forms/editverseform.py | 3 +- openlp/plugins/songs/lib/songimport.py | 97 +++++++++++---------- 2 files changed, 51 insertions(+), 49 deletions(-) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 92122305a..eb74cfd84 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -106,7 +106,8 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): self.VerseTypeComboBox.setCurrentIndex(VerseType.from_string(verse_type)) self.VerseNumberBox.setValue(verse_number) - def setVerse(self, text, single=False, tag=u'%s:1' % VerseType.to_string(VerseType.Verse)): + def setVerse(self, text, single=False, + tag=u'%s:1' % VerseType.to_string(VerseType.Verse)): if single: verse_type, verse_number = tag.split(u':') self.VerseTypeComboBox.setCurrentIndex(VerseType.from_string(verse_type)) diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index 08f39954e..7985bf828 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -29,20 +29,21 @@ from PyQt4 import QtGui from openlp.core.lib import SongXMLBuilder from openlp.plugins.songs.lib.models import Song, Author, Topic, Book - +from openlp.plugins.songs.forms import VerseType + class SongImport(object): """ 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 - 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 """ def __init__(self, song_manager): """ Initialise and create defaults for properties - + song_manager is an instance of a SongManager, through which all database access is performed """ @@ -53,13 +54,13 @@ class SongImport(object): self.copyright = u'' self.comment = u'' self.theme_name = u'' - self.ccli_number = u'' - self.authors = [] - self.topics = [] - self.song_book_name = u'' - self.song_book_pub = u'' - self.verse_order_list = [] - self.verses = [] + self.ccli_number = u'' + self.authors = [] + self.topics = [] + self.song_book_name = u'' + self.song_book_pub = u'' + self.verse_order_list = [] + self.verses = [] self.versecount = 0 self.choruscount = 0 self.copyright_string = unicode(QtGui.QApplication.translate( \ @@ -128,39 +129,39 @@ class SongImport(object): copyright_found = True self.add_copyright(line) else: - self.parse_author(line) - return + self.parse_author(line) + return if len(lines) == 1: self.parse_author(lines[0]) return if not self.get_title(): self.set_title(lines[0]) self.add_verse(text) - + def get_title(self): """ Return the title """ return self.title - + def get_copyright(self): """ Return the copyright """ return self.copyright - + def get_song_number(self): - """ - Return the song number + """ + Return the song number """ return self.song_number - + def set_title(self, title): """ Set the title """ self.title = title - + def set_alternate_title(self, title): """ Set the alternate title @@ -168,11 +169,11 @@ class SongImport(object): self.alternate_title = title def set_song_number(self, song_number): - """ + """ Set the song number """ self.song_number = song_number - + def set_song_book(self, song_book, publisher): """ Set the song book name and publisher @@ -181,7 +182,7 @@ class SongImport(object): self.song_book_pub = publisher def add_copyright(self, copyright): - """ + """ Build the copyright field """ if self.copyright.find(copyright) >= 0: @@ -194,7 +195,7 @@ class SongImport(object): """ Add the author. OpenLP stores them individually so split by 'and', '&' 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". """ for author in text.split(u','): @@ -210,13 +211,13 @@ class SongImport(object): self.add_author(author2) def add_author(self, author): - """ + """ Add an author to the list """ if author in self.authors: return self.authors.append(author) - + def add_verse(self, verse, versetag=None): """ 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 It will also attempt to detect duplicates. In this case it will just add to the verse order - """ + """ for (oldversetag, oldverse) in self.verses: if oldverse.strip() == verse.strip(): self.verse_order_list.append(oldversetag) @@ -253,22 +254,22 @@ class SongImport(object): def check_complete(self): """ 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 """ if self.title == u'' or len(self.verses) == 0: return False else: return True - - def remove_punctuation(self, text): + + def remove_punctuation(self, text): """ Remove punctuation from the string for searchable fields """ for character in string.punctuation: text = text.replace(character, u'') return text - + def finish(self): """ 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.commit_song() #self.print_song() - + def commit_song(self): """ Write the song and it's fields to disk @@ -293,27 +294,27 @@ class SongImport(object): sxml.add_lyrics_to_song() for (versetag, versetext) in self.verses: if versetag[0] == u'C': - versetype = u'Chorus' + versetype = VerseType.to_string(VerseType.Chorus) elif versetag[0] == u'V': - versetype = u'Verse' + versetype = VerseType.to_string(VerseType.Verse) elif versetag[0] == u'B': - versetype = u'Bridge' + versetype = VerseType.to_string(VerseType.Bridge) elif versetag[0] == u'I': - versetype = u'Intro' + versetype = VerseType.to_string(VerseType.Intro) elif versetag[0] == u'P': - versetype = u'Prechorus' + versetype = VerseType.to_string(VerseType.PreChorus) elif versetag[0] == u'E': - versetype = u'Ending' + versetype = VerseType.to_string(VerseType.Ending) else: - versetype = u'Other' + versetype = VerseType.to_string(VerseType.Other) sxml.add_verse_to_lyrics(versetype, versetag[1:], versetext) song.search_lyrics += u' ' + self.remove_punctuation(versetext) song.lyrics = unicode(sxml.extract_xml(), u'utf-8') song.verse_order = u' '.join(self.verse_order_list) song.copyright = self.copyright - song.comment = self.comment - song.theme_name = self.theme_name - song.ccli_number = self.ccli_number + song.comment = self.comment + song.theme_name = self.theme_name + song.ccli_number = self.ccli_number for authortext in self.authors: author = self.manager.get_author_by_name(authortext) if author is None: @@ -339,15 +340,15 @@ class SongImport(object): self.manager.save_topic(topic) song.topics.append(topictext) self.manager.save_song(song) - + def print_song(self): - """ - For debugging + """ + For debugging """ print u'========================================' \ + u'========================================' - print u'TITLE: ' + self.title - print u'ALT TITLE: ' + self.alternate_title + print u'TITLE: ' + self.title + print u'ALT TITLE: ' + self.alternate_title for (versetag, versetext) in self.verses: print u'VERSE ' + versetag + u': ' + versetext print u'ORDER: ' + u' '.join(self.verse_order_list) @@ -361,7 +362,7 @@ class SongImport(object): print u'BOOK PUBLISHER: ' + self.song_book_pub if self.song_number: print u'NUMBER: ' + self.song_number - for topictext in self.topics: + for topictext in self.topics: print u'TOPIC: ' + topictext if self.comment: print u'COMMENT: ' + self.comment @@ -369,5 +370,5 @@ class SongImport(object): print u'THEME: ' + self.theme_name if self.ccli_number: print u'CCLI: ' + self.ccli_number - + From 0e5450f9d12e6b9d8be7235a79766b4c5e2f6068 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 6 Jun 2010 13:39:13 +0100 Subject: [PATCH 13/15] Fix tag error --- openlp/plugins/songs/forms/editsongform.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index e64c64a6b..aa0cff73e 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -469,7 +469,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.SongTabWidget.setCurrentIndex(1) self.AuthorsListView.setFocus() #split the verse list by space and mark lower case for testing - taglist = unicode(self.trUtf8(' bitpedvc')) + taglist = unicode(self.trUtf8(' bitpeovc')) for verse in unicode(self.VerseOrderEdit.text()).lower().split(u' '): if len(verse) > 1: if taglist.find(verse[0:1]) > -1 \ From 950dc73d2b9a1ab49f1c48fb6a7893715db1b9c8 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 6 Jun 2010 17:25:39 +0100 Subject: [PATCH 14/15] try again and fix from last merge --- openlp/plugins/songs/forms/__init__.py | 5 +++-- openlp/plugins/songs/lib/mediaitem.py | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/openlp/plugins/songs/forms/__init__.py b/openlp/plugins/songs/forms/__init__.py index 064dbf6c9..45d12fd90 100644 --- a/openlp/plugins/songs/forms/__init__.py +++ b/openlp/plugins/songs/forms/__init__.py @@ -33,11 +33,12 @@ class VerseType(object): Intro = 4 Ending = 5 Other = 6 + verse_string = u'verse' @staticmethod def to_string(verse_type): if verse_type == VerseType.Verse: - return translate('VerseType', 'Verse') + return translate('VerseType', VerseType.verse_string.title()) elif verse_type == VerseType.Chorus: return translate('VerseType', 'Chorus') elif verse_type == VerseType.Bridge: @@ -54,7 +55,7 @@ class VerseType(object): @staticmethod def from_string(verse_type): verse_type = verse_type.lower() - if verse_type == translate('VerseType', 'verse'): + if verse_type == translate('VerseType', VerseType.verse_string): return VerseType.Verse elif verse_type == translate('VerseType', 'chorus'): return VerseType.Chorus diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 4764f4f54..25b8a7d8d 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -198,8 +198,8 @@ class SongMediaItem(MediaManagerItem): self.ListView.clear() for author in searchresults: for song in author.songs: - song_detail = unicode(self.trUtf8('%s (%s)') % \ - (author.display_name, song.title) + song_detail = unicode(self.trUtf8('%s (%s)') % + (author.display_name, song.title)) song_name = QtGui.QListWidgetItem(song_detail) song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id)) self.ListView.addItem(song_name) From b624ba0ed0fd0b4acbf91aec9e93a64d772b9fa1 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 6 Jun 2010 18:03:48 +0100 Subject: [PATCH 15/15] Fixed for now - could be better --- openlp/plugins/songs/forms/__init__.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/openlp/plugins/songs/forms/__init__.py b/openlp/plugins/songs/forms/__init__.py index 45d12fd90..90b983b97 100644 --- a/openlp/plugins/songs/forms/__init__.py +++ b/openlp/plugins/songs/forms/__init__.py @@ -33,12 +33,11 @@ class VerseType(object): Intro = 4 Ending = 5 Other = 6 - verse_string = u'verse' @staticmethod def to_string(verse_type): if verse_type == VerseType.Verse: - return translate('VerseType', VerseType.verse_string.title()) + return translate('VerseType', 'Verse') elif verse_type == VerseType.Chorus: return translate('VerseType', 'Chorus') elif verse_type == VerseType.Bridge: @@ -55,19 +54,19 @@ class VerseType(object): @staticmethod def from_string(verse_type): verse_type = verse_type.lower() - if verse_type == translate('VerseType', VerseType.verse_string): + if verse_type == unicode(VerseType.to_string(VerseType.Verse)).lower(): return VerseType.Verse - elif verse_type == translate('VerseType', 'chorus'): + elif verse_type == unicode(VerseType.to_string(VerseType.Chorus)).lower(): return VerseType.Chorus - elif verse_type == translate('VerseType', 'bridge'): + elif verse_type == unicode(VerseType.to_string(VerseType.Bridge)).lower(): return VerseType.Bridge - elif verse_type == translate('VerseType', 'pre-chorus'): + elif verse_type == unicode(VerseType.to_string(VerseType.PreChorus)).lower(): return VerseType.PreChorus - elif verse_type == translate('VerseType', 'intro'): + elif verse_type == unicode(VerseType.to_string(VerseType.Intro)).lower(): return VerseType.Intro - elif verse_type == translate('VerseType', 'ending'): + elif verse_type == unicode(VerseType.to_string(VerseType.Ending)).lower(): return VerseType.Ending - elif verse_type == translate('VerseType', 'other'): + elif verse_type == unicode(VerseType.to_string(VerseType.Other)).lower(): return VerseType.Other from authorsform import AuthorsForm