From e8ae29e6203f4b755acd56bbe17a0290337e56bd Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 12 Jun 2009 18:20:40 +0100 Subject: [PATCH] Add XML Lyrics handling to Songs. --- openlp/plugins/songs/forms/editsongdialog.py | 1 - openlp/plugins/songs/forms/editsongform.py | 78 +++++++++++++------- openlp/plugins/songs/lib/manager.py | 6 +- openlp/plugins/songs/lib/mediaitem.py | 16 ++-- openlp/plugins/songs/songsplugin.py | 53 +++++++------ 5 files changed, 94 insertions(+), 60 deletions(-) diff --git a/openlp/plugins/songs/forms/editsongdialog.py b/openlp/plugins/songs/forms/editsongdialog.py index 918e0d98c..c6676f0c1 100644 --- a/openlp/plugins/songs/forms/editsongdialog.py +++ b/openlp/plugins/songs/forms/editsongdialog.py @@ -102,7 +102,6 @@ class Ui_EditSongDialog(object): self.ThemeSelectionComboItem = QtGui.QComboBox(self.ThemeGroupBox) self.ThemeSelectionComboItem.setObjectName(u'ThemeSelectionComboItem') self.ThemeLayout.addWidget(self.ThemeSelectionComboItem) - self.DetailsLayout.addWidget(self.ThemeGroupBox) self.TopLayout.addWidget(self.TextWidget) self.AdditionalWidget = QtGui.QWidget(self.TopWidget) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 64acb25ac..03797df58 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -18,9 +18,10 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA """ from PyQt4 import Qt, QtCore, QtGui - +from openlp.core.lib import SongXMLBuilder, SongXMLParser from openlp.plugins.songs.forms import AuthorsForm, TopicsForm, SongBookForm, \ EditVerseForm +from openlp.plugins.songs.lib.models import Song from editsongdialog import Ui_EditSongDialog @@ -56,16 +57,10 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.song_book_form = SongBookForm(self.songmanager) self.verse_form = EditVerseForm() self.initialise() - - #self.AuthorsListView.setColumnCount(2) - #self.AuthorsListView.setColumnHidden(0, True) - #self.AuthorsListView.setColumnWidth(1, 200) - #self.AuthorsListView.setShowGrid(False) self.AuthorsListView.setSortingEnabled(False) self.AuthorsListView.setAlternatingRowColors(True) - #self.AuthorsListView.horizontalHeader().setVisible(False) - #self.AuthorsListView.verticalHeader().setVisible(False) - #self.savebutton = self.ButtonBox.button(QtGui.QDialogButtonBox.Save) + self.TopicsListView.setSortingEnabled(False) + self.TopicsListView.setAlternatingRowColors(True) def initialise(self): self.loadAuthors() @@ -90,6 +85,15 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): for book in books: self.SongbookCombo.addItem(book.name) + def newSong(self): + self.song = Song() + self.TitleEditItem.setText(u'') + self.AlternativeEdit.setText(u'') + self.CopyrightEditItem.setText(u'') + self.VerseListWidget.clear() + self.AuthorsListView.clear() + self.TopicsListView.clear() + def loadSong(self, id): self.song = self.songmanager.get_song(id) self.TitleEditItem.setText(self.song.title) @@ -97,17 +101,29 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): if len(title) > 1: self.AlternativeEdit.setText(title[1]) self.CopyrightEditItem.setText(self.song.copyright) - #self.LyricsTextEdit.setText(self.song.lyrics) - verses = self.song.lyrics.split(u'\n\n') self.VerseListWidget.clear() - for verse in verses: - self.VerseListWidget.addItem(verse) + #lazy xml migration for now + if self.song.lyrics.startswith(u' 1: diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index ece90e1a2..76619ce80 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -21,8 +21,7 @@ import logging from PyQt4 import QtCore, QtGui -from openlp.core.lib import Plugin, Event -from openlp.core.lib import EventType +from openlp.core.lib import Plugin, Event, EventType, translate from openlp.plugins.songs.lib import SongManager, SongsTab, SongMediaItem from openlp.plugins.songs.forms import OpenLPImportForm, OpenSongExportForm, \ OpenSongImportForm, OpenLPExportForm @@ -54,55 +53,55 @@ class SongsPlugin(Plugin): def add_import_menu_item(self, import_menu): self.ImportSongMenu = QtGui.QMenu(import_menu) - self.ImportSongMenu.setObjectName("ImportSongMenu") + self.ImportSongMenu.setObjectName(u'ImportSongMenu') self.ImportOpenSongItem = QtGui.QAction(import_menu) - self.ImportOpenSongItem.setObjectName("ImportOpenSongItem") + self.ImportOpenSongItem.setObjectName(u'ImportOpenSongItem') self.ImportOpenlp1Item = QtGui.QAction(import_menu) - self.ImportOpenlp1Item.setObjectName("ImportOpenlp1Item") + self.ImportOpenlp1Item.setObjectName(u'ImportOpenlp1Item') self.ImportOpenlp2Item = QtGui.QAction(import_menu) - self.ImportOpenlp2Item.setObjectName("ImportOpenlp2Item") + self.ImportOpenlp2Item.setObjectName(u'ImportOpenlp2Item') # Add to menus self.ImportSongMenu.addAction(self.ImportOpenlp1Item) self.ImportSongMenu.addAction(self.ImportOpenlp2Item) self.ImportSongMenu.addAction(self.ImportOpenSongItem) import_menu.addAction(self.ImportSongMenu.menuAction()) # Translations... - self.ImportSongMenu.setTitle(QtGui.QApplication.translate("main_window", "&Song", None, QtGui.QApplication.UnicodeUTF8)) - self.ImportOpenSongItem.setText(QtGui.QApplication.translate("main_window", "OpenSong", None, QtGui.QApplication.UnicodeUTF8)) - self.ImportOpenlp1Item.setText(QtGui.QApplication.translate("main_window", "openlp.org 1.0", None, QtGui.QApplication.UnicodeUTF8)) - self.ImportOpenlp1Item.setToolTip(QtGui.QApplication.translate("main_window", "Export songs in openlp.org 1.0 format", None, QtGui.QApplication.UnicodeUTF8)) - self.ImportOpenlp1Item.setStatusTip(QtGui.QApplication.translate("main_window", "Export songs in openlp.org 1.0 format", None, QtGui.QApplication.UnicodeUTF8)) - self.ImportOpenlp2Item.setText(QtGui.QApplication.translate("main_window", "OpenLP 2.0", None, QtGui.QApplication.UnicodeUTF8)) - self.ImportOpenlp2Item.setToolTip(QtGui.QApplication.translate("main_window", "Export songs in OpenLP 2.0 format", None, QtGui.QApplication.UnicodeUTF8)) - self.ImportOpenlp2Item.setStatusTip(QtGui.QApplication.translate("main_window", "Export songs in OpenLP 2.0 format", None, QtGui.QApplication.UnicodeUTF8)) + self.ImportSongMenu.setTitle(translate(u'main_window', u'&Song')) + self.ImportOpenSongItem.setText(translate(u'main_window', u'OpenSong')) + self.ImportOpenlp1Item.setText(translate(u'main_window', u'openlp.org 1.0')) + self.ImportOpenlp1Item.setToolTip(translate(u'main_window', u'Export songs in openlp.org 1.0 format')) + self.ImportOpenlp1Item.setStatusTip(translate(u'main_window', u'Export songs in openlp.org 1.0 format')) + self.ImportOpenlp2Item.setText(translate(u'main_window', u'OpenLP 2.0')) + self.ImportOpenlp2Item.setToolTip(translate(u'main_window', u'Export songs in OpenLP 2.0 format')) + self.ImportOpenlp2Item.setStatusTip(translate(u'main_window', u'Export songs in OpenLP 2.0 format')) # Signals and slots - QtCore.QObject.connect(self.ImportOpenlp1Item, QtCore.SIGNAL("triggered()"), self.onImportOpenlp1ItemClick) - QtCore.QObject.connect(self.ImportOpenlp2Item, QtCore.SIGNAL("triggered()"), self.onImportOpenlp1ItemClick) - QtCore.QObject.connect(self.ImportOpenSongItem, QtCore.SIGNAL("triggered()"), self.onImportOpenSongItemClick) + QtCore.QObject.connect(self.ImportOpenlp1Item, QtCore.SIGNAL(u'triggered()'), self.onImportOpenlp1ItemClick) + QtCore.QObject.connect(self.ImportOpenlp2Item, QtCore.SIGNAL(u'triggered()'), self.onImportOpenlp1ItemClick) + QtCore.QObject.connect(self.ImportOpenSongItem, QtCore.SIGNAL(u'triggered()'), self.onImportOpenSongItemClick) def add_export_menu_item(self, export_menu): self.ExportSongMenu = QtGui.QMenu(export_menu) - self.ExportSongMenu.setObjectName("ExportSongMenu") + self.ExportSongMenu.setObjectName(u'ExportSongMenu') self.ExportOpenSongItem = QtGui.QAction(export_menu) - self.ExportOpenSongItem.setObjectName("ExportOpenSongItem") + self.ExportOpenSongItem.setObjectName(u'ExportOpenSongItem') self.ExportOpenlp1Item = QtGui.QAction(export_menu) - self.ExportOpenlp1Item.setObjectName("ExportOpenlp1Item") + self.ExportOpenlp1Item.setObjectName(u'ExportOpenlp1Item') self.ExportOpenlp2Item = QtGui.QAction(export_menu) - self.ExportOpenlp2Item.setObjectName("ExportOpenlp2Item") + self.ExportOpenlp2Item.setObjectName(u'ExportOpenlp2Item') # Add to menus self.ExportSongMenu.addAction(self.ExportOpenlp1Item) self.ExportSongMenu.addAction(self.ExportOpenlp2Item) self.ExportSongMenu.addAction(self.ExportOpenSongItem) export_menu.addAction(self.ExportSongMenu.menuAction()) # Translations... - self.ExportSongMenu.setTitle(QtGui.QApplication.translate("main_window", "&Song", None, QtGui.QApplication.UnicodeUTF8)) - self.ExportOpenSongItem.setText(QtGui.QApplication.translate("main_window", "OpenSong", None, QtGui.QApplication.UnicodeUTF8)) - self.ExportOpenlp1Item.setText(QtGui.QApplication.translate("main_window", "openlp.org 1.0", None, QtGui.QApplication.UnicodeUTF8)) - self.ExportOpenlp2Item.setText(QtGui.QApplication.translate("main_window", "OpenLP 2.0", None, QtGui.QApplication.UnicodeUTF8)) + self.ExportSongMenu.setTitle(translate(u'main_window', u'&Song')) + self.ExportOpenSongItem.setText(translate(u'main_window', u'OpenSong')) + self.ExportOpenlp1Item.setText(translate(u'main_window', u'openlp.org 1.0')) + self.ExportOpenlp2Item.setText(translate(u'main_window', u'OpenLP 2.0')) # Signals and slots - QtCore.QObject.connect(self.ExportOpenlp1Item, QtCore.SIGNAL("triggered()"), self.onExportOpenlp1ItemClicked) - QtCore.QObject.connect(self.ExportOpenSongItem, QtCore.SIGNAL("triggered()"), self.onExportOpenSongItemClicked) + QtCore.QObject.connect(self.ExportOpenlp1Item, QtCore.SIGNAL(u'triggered()'), self.onExportOpenlp1ItemClicked) + QtCore.QObject.connect(self.ExportOpenSongItem, QtCore.SIGNAL(u'triggered()'), self.onExportOpenSongItemClicked) def initialise(self): self.media_item.displayResults(self.songmanager.get_songs())